本文将从解包开始,一步一步指导初学者建立一个完整的插件编辑环境。
一.解压客户端中的ui脚本&图片
由于金山没有提供任何插件接口资料,所以我们必须自己研究剑 3 的吭爹的脚本来找
接口。所以想学习插件制作,必须会解包。
解包工具:
JX3PakReader 作者是: ranbochen 下载地址:http://bbs.duowan.com/thread-18088333-1-1.html 作者少发了一个文件 ,在 6 楼有补充
Jx3Unpack 作者是我 (这真的不是广告) 下载地址: http://bbs.duowan.com/thread-19314750-1-1.html
1.获取文件列表:
由于剑 3 的 pak 文件中不存在文件路径信息,所以需要自行获得文件路径列表来解压。路径列表可以用 JX3PakReader 中附带的 Jx3FileSniffer.dll 注入游戏主程序来获得:
首先将 JX3PakReader 中的 Injector.exe (注意由于这是一个注入器,所以你的杀软可能会报毒)和 Jx3FileSniffer.dll 解压到游戏目录中,我的剑 3 安装目录是 E:\JX3 ,所以我把他们解压到 E:\JX3\bin\zhcn 。
运行 Injector.exe (如果你启用了 UAC ,请右键以管理员模式运行),界面如下(我偷懒,用了作者提供的界面说明):
请按照这张图自行设置参数,我设置的参数是这样的:
App 路径: E:\JX3\bin\zhcn\JX3Client.exe
启动参数: DOTNOTSTARTGAMEBYJX3CLIENT.EXE
Dll 路径: E:\JX3\bin\zhcn\Jx3FileSniffer.dll
设置完以后点击 StartApp ,剑三就会开始读条加载运行了。
进入游戏以后,请尽可能的打开一遍所有能打开的窗口(这样可以获得各界面的 ini 和图片资源),之后关闭游戏,这时在游戏目录下会出现一个 Jx3Files.txt 文件,这就是截取到的文件列表。
2.使用文件列表解包
解包工具可以使用 JX3PakReader 或者 Jx3Unpack ,这里将介绍我的 Jx3Unpack 的使用方法。这里以新版正式服客户端为例。
首先将压缩包中的 unpack.exe 解压到剑 3 的 pak 目录中,我这里是 E:\JX3\pak ,然后将 E:\JX3\bin\zhcn 中的 package.ini 复制到 E:\JX3\ 下(即游戏根目录,这一步很重要,不这样做 unpack 程序会提示找不到 package.ini 文件)。然后把刚才截到的 Jx3Files.txt 复制到 pak 目录中并改名为 filelist.txt ,确认无误后即可运行 unpack.exe 开始解包。
等待一会,程序会提示解包完毕,解压出的文件都放在 pak 目录中,如图:
ui 文件夹中,就是插件开发需要的各种脚本 & 图片资源了,为了方便,可以将该文件夹复制到其他方便的地方。
二.安装Lua语言环境
访问 google 的 luaforwindows 项目站点( http://code.google.com/p/luaforwindows/ ),下载 LuaForWindows_v5.1.4-40.exe
安装过程可以一路 next ,没什么好说的,安装完毕后会在开始菜单生成 lua 程序组:
其中的 Lua 5.1 reference manual 是 lua 的参考手册,可以当成字典来用。这个安装包还提供了基于 SciTE 的 lua 编辑环境。但是我并不推荐用 SciTE 作为剑 3 插件的编辑器,原因是:这个软件的配置太复杂了,我至今也无法研究明白……
下面,我推荐使用 UltraEdit 作为剑三插件的编辑器。
三.建立剑三插件编辑环境
需要的工具:
UltraEdit 17.0 中文版 (这个请自行谷歌)
南宫妹子的作品: UltraEdit 语法高亮文件 下载地址: http://bbs.duowan.com/thread-18227841-1-6.html
1. 配置语法高亮和自动完成
首先安装 UltraEdit (这个就不说了),然后找到 ue 的安装目录(我的是 C:\Program Files\IDM Computer Solutions\UltraEdit )下面的的 wordfiles 文件夹,把南宫的 lua.uew 放进去。
之后打开 UE ,点击菜单栏的“高级”——“配置”,在左边的导航中找到“编辑器显示”——“语法着色”,如下图:
将 ” 文档的完整目录名称 ” 路径指向你的 UE 安装目录下的 wordfiles 文件夹(我的是 C:\Program Files\IDM Computer Solutions\UltraEdit\wordfiles ),点击应用。
然后在导航栏找到“编辑器”——“自动完成”,把右边第一项的钩去掉,并将第二项打钩,如图:
然后点击确定。这样 lua 的语法高亮和自动完成功能就配置好了。
2.配置lua编译器(用于排除语法错误)
点击菜单栏的“高级”——“工具配置”,新建一项“ Lua 编译”,如图所示:
命令行: luac -o "%n.luac" "%n%e"
工作目录: %p
工具栏图标可以任选或者留空
“选项”选项卡中选中“ dos 程序”,勾选“保存活动文件”。
“输出”选项卡中选中“输出到列表框”、“不替换”,勾选“捕获输出”。
最后点击确定保存设置。
这样, UE 的“高级”菜单下就会出现“ Lua 编译”选项,写完插件之后即可用该选项检查脚本中是否有语法错误,如果提示有错误,直接双击错误提示即可跳转到指定行。
3.UE的批量查找功能
UE 有一个非常方便的功能:在文件夹中查找,这个功能可以在一个文件夹中的所有文件中(包括子目录)查找关键字,并输出结果。
在下例中。我想查找客户端中 KG_Table 函数的调用情况:
点击菜单栏的“搜索”——“在文件中查找” , 出现如下界面:
将“目录”设置为刚刚解包的ui目录,例如我的是:E:\JX3TF\pak\ui\,勾选“搜索子目录”,在“查找”框内输入关键字:KG_Table。
稍等一会,在下方的输出窗口,就会显示所有找到的文件内容,如图:
双击输出窗口中的内容,即可快速打开并定位到指定位置。
本次的教程就写到这里,我们下次再见。
一.解压客户端中的ui脚本&图片
由于金山没有提供任何插件接口资料,所以我们必须自己研究剑 3 的吭爹的脚本来找
接口。所以想学习插件制作,必须会解包。
解包工具:
JX3PakReader 作者是: ranbochen 下载地址:http://bbs.duowan.com/thread-18088333-1-1.html 作者少发了一个文件 ,在 6 楼有补充
Jx3Unpack 作者是我 (这真的不是广告) 下载地址: http://bbs.duowan.com/thread-19314750-1-1.html
1.获取文件列表:
由于剑 3 的 pak 文件中不存在文件路径信息,所以需要自行获得文件路径列表来解压。路径列表可以用 JX3PakReader 中附带的 Jx3FileSniffer.dll 注入游戏主程序来获得:
首先将 JX3PakReader 中的 Injector.exe (注意由于这是一个注入器,所以你的杀软可能会报毒)和 Jx3FileSniffer.dll 解压到游戏目录中,我的剑 3 安装目录是 E:\JX3 ,所以我把他们解压到 E:\JX3\bin\zhcn 。
运行 Injector.exe (如果你启用了 UAC ,请右键以管理员模式运行),界面如下(我偷懒,用了作者提供的界面说明):
![1.jpg 1.jpg](http://att.bbs.duowan.com/forum/month_1105/1105071200593b2cb48b976670.jpg)
请按照这张图自行设置参数,我设置的参数是这样的:
App 路径: E:\JX3\bin\zhcn\JX3Client.exe
启动参数: DOTNOTSTARTGAMEBYJX3CLIENT.EXE
Dll 路径: E:\JX3\bin\zhcn\Jx3FileSniffer.dll
设置完以后点击 StartApp ,剑三就会开始读条加载运行了。
进入游戏以后,请尽可能的打开一遍所有能打开的窗口(这样可以获得各界面的 ini 和图片资源),之后关闭游戏,这时在游戏目录下会出现一个 Jx3Files.txt 文件,这就是截取到的文件列表。
2.使用文件列表解包
解包工具可以使用 JX3PakReader 或者 Jx3Unpack ,这里将介绍我的 Jx3Unpack 的使用方法。这里以新版正式服客户端为例。
首先将压缩包中的 unpack.exe 解压到剑 3 的 pak 目录中,我这里是 E:\JX3\pak ,然后将 E:\JX3\bin\zhcn 中的 package.ini 复制到 E:\JX3\ 下(即游戏根目录,这一步很重要,不这样做 unpack 程序会提示找不到 package.ini 文件)。然后把刚才截到的 Jx3Files.txt 复制到 pak 目录中并改名为 filelist.txt ,确认无误后即可运行 unpack.exe 开始解包。
等待一会,程序会提示解包完毕,解压出的文件都放在 pak 目录中,如图:
![2.jpg 2.jpg](http://att.bbs.duowan.com/forum/month_1105/1105071200679f1c136d37e726.jpg)
ui 文件夹中,就是插件开发需要的各种脚本 & 图片资源了,为了方便,可以将该文件夹复制到其他方便的地方。
二.安装Lua语言环境
访问 google 的 luaforwindows 项目站点( http://code.google.com/p/luaforwindows/ ),下载 LuaForWindows_v5.1.4-40.exe
安装过程可以一路 next ,没什么好说的,安装完毕后会在开始菜单生成 lua 程序组:
![3.jpg 3.jpg](http://att.bbs.duowan.com/forum/month_1105/1105071200259a25149f9caeab.jpg)
其中的 Lua 5.1 reference manual 是 lua 的参考手册,可以当成字典来用。这个安装包还提供了基于 SciTE 的 lua 编辑环境。但是我并不推荐用 SciTE 作为剑 3 插件的编辑器,原因是:这个软件的配置太复杂了,我至今也无法研究明白……
![](http://att.bbs.duowan.com/static/image/smiley/ali/ali80.gif)
下面,我推荐使用 UltraEdit 作为剑三插件的编辑器。
三.建立剑三插件编辑环境
需要的工具:
UltraEdit 17.0 中文版 (这个请自行谷歌)
南宫妹子的作品: UltraEdit 语法高亮文件 下载地址: http://bbs.duowan.com/thread-18227841-1-6.html
1. 配置语法高亮和自动完成
首先安装 UltraEdit (这个就不说了),然后找到 ue 的安装目录(我的是 C:\Program Files\IDM Computer Solutions\UltraEdit )下面的的 wordfiles 文件夹,把南宫的 lua.uew 放进去。
之后打开 UE ,点击菜单栏的“高级”——“配置”,在左边的导航中找到“编辑器显示”——“语法着色”,如下图:
![4.jpg 4.jpg](http://att.bbs.duowan.com/forum/month_1105/1105071200d7a95fa1a32b2060.jpg)
将 ” 文档的完整目录名称 ” 路径指向你的 UE 安装目录下的 wordfiles 文件夹(我的是 C:\Program Files\IDM Computer Solutions\UltraEdit\wordfiles ),点击应用。
然后在导航栏找到“编辑器”——“自动完成”,把右边第一项的钩去掉,并将第二项打钩,如图:
![5.jpg 5.jpg](http://att.bbs.duowan.com/forum/month_1105/11050712008b650b56f5a424a9.jpg)
然后点击确定。这样 lua 的语法高亮和自动完成功能就配置好了。
2.配置lua编译器(用于排除语法错误)
点击菜单栏的“高级”——“工具配置”,新建一项“ Lua 编译”,如图所示:
![6.jpg 6.jpg](http://att.bbs.duowan.com/forum/month_1105/11050712006eb5fa38b0a26cce.jpg)
命令行: luac -o "%n.luac" "%n%e"
工作目录: %p
工具栏图标可以任选或者留空
“选项”选项卡中选中“ dos 程序”,勾选“保存活动文件”。
“输出”选项卡中选中“输出到列表框”、“不替换”,勾选“捕获输出”。
最后点击确定保存设置。
这样, UE 的“高级”菜单下就会出现“ Lua 编译”选项,写完插件之后即可用该选项检查脚本中是否有语法错误,如果提示有错误,直接双击错误提示即可跳转到指定行。
3.UE的批量查找功能
UE 有一个非常方便的功能:在文件夹中查找,这个功能可以在一个文件夹中的所有文件中(包括子目录)查找关键字,并输出结果。
在下例中。我想查找客户端中 KG_Table 函数的调用情况:
点击菜单栏的“搜索”——“在文件中查找” , 出现如下界面:
![7.jpg 7.jpg](http://att.bbs.duowan.com/forum/month_1105/1105071200c940131afc3a7896.jpg)
将“目录”设置为刚刚解包的ui目录,例如我的是:E:\JX3TF\pak\ui\,勾选“搜索子目录”,在“查找”框内输入关键字:KG_Table。
稍等一会,在下方的输出窗口,就会显示所有找到的文件内容,如图:
![8.jpg 8.jpg](http://att.bbs.duowan.com/forum/month_1105/1105071200f9eb036cecea8e4f.jpg)
双击输出窗口中的内容,即可快速打开并定位到指定位置。
本次的教程就写到这里,我们下次再见。