剑网三插件入门教程(2):在游戏中调试Lua代码

来源:互联网 发布:ubuntu 不可用分区 编辑:程序博客网 时间:2024/04/27 19:57
本篇教程主要介绍了在游戏中运行和调试Lua代码的方法

先说一下关于Lua语法的学习
剑三的插件是用LUA脚本语言编写的,所以想要会写插件,必须要学会Lua。写插件并不需要用到Lua的高级技巧,所以只要掌握基本的语法即可,如果你已经有了计算机语言的基础(例如CC++JavaC#),你会发现 Lua真的很好学。Lua的语法讲起来就是长篇大论了,我就不写了(事实上我也写不出),在这里我只能给大家推荐几个教程,如果你想学写插件,最好花时间看看这些资料:
Lua参考手册  Lua5.1参考手册.chm(74.9 KB, 下载次数: 1489) 这是由云风翻译的Lua 5.1 Reference Manual中文版,跟其它的许多参考手册一样,这份文档比较枯燥,如果是初学者,建议看下面这本。
lua程序设计  lua程序设计.doc(991.5 KB, 下载次数: 1216) 权威教程Programming inLua的中文版,网上只能找到这本书的第一版,第二版目前只有实体书,个人建议想学好插件的话还是去当当买一本吧。
魔兽世界编程宝典 这本书目前只能在网上找到英文原版的pdf,想要中文版只能去书店买,100块多一本……不过这确实是一本好书

建议在有了一定Lua基础之后再开始学习插件的编写,当然,边学习边研究也是可以的(就象我一样)


在介绍调试方法之前,先介绍一个很多人不知道的命令:/showerrmsg
在聊天栏输入这条命令以后,聊天窗口中就会以系统信息形式显示Lua脚本的出错提示,有了这个就不用摸黑找脚本错误了。

1.jpg
(注意:在最新更新的体服客户端中,Lua出错提示被和谐掉了,不知道是否是金山故意的,如果真的是和谐了,那就只能用我改写的Cube来看出错提示了)

1.最简单的脚本执行接口 /script

直接在聊天栏输入/script 要执行的代码即可执行这一条lua代码
例如我输入/script Output(0)
聊天窗口显示执行结果:
2.jpg
当然,这样你一次只能执行一条语句,如果想执行多条语句该怎么办呢?这就要用到宏了。
在游戏的宏面板新建一个这样的宏:

  1. /script do
  2. 第一条语句
  3. 第二条语句
  4. End
复制代码
保存并运行,即可执行多条语句了,例如我新建一个这样的宏:

  1. /script do
  2. Output("这是第一条语句")
  3. Output("这是第二条语句")
  4. End
复制代码
执行效果:
3.jpg
/ showerrmsg/script的定义都在客户端的ui\script\macro.lua脚本中,在学习深入之后你可以自己去看这些命令的运作原理。

上面介绍的这条命令只适用于测试一些简单的语句,如果要编写插件,就需要用到调试器了,下面将介绍Cube调试器插件。

2.Cube代码调试器
Cube是一个相当古老的插件,作者是kurapica,第一版是09年发布的。它几乎见证了剑三插件的整个发展史,中间历经几次金山的和谐,经过了很多作者的修改完善,一直用到了现在。前一阵子我学习剑三的窗体结构,用了这个插件练手,把它的窗口整个换了个颜色(某人:你闲得无聊么?),加入了一些新功能,后来我觉得可能有人很需要这个东西,就把它发到了论坛上。在这里,我就以我这个版本为例,介绍一下Cube的用法。
关于这个插件,可能会有人抱怨:“为什么这个插件编译了呢?你不是支持开源的么?”我编译这个插件并不是为了所谓“技术保密”,而是为了保护一些敏感的接口。由于需要编译、执行代码以及设定环境,这个插件用到了一些反和谐接口。这些接口流传开来的话,会对游戏造成很不好的影响。其实在进一步学习深入之后,你肯定也能掌握一些“ 反和谐”的技术,但是我希望你也能像我一样不要让它们流传开来,为了有一个好的游戏环境,请不要打开这个潘多拉魔盒。

插件下载地址http://bbs.duowan.com/viewthread.php?tid=19146894
请按照帖子中的使用方法安装插件。


按快捷键打开插件,主界面是这样的:
4.jpg
使用方法见上图,很简单吧~\(≧▽≦)/~

我在中间编辑区复制进去一段代码:

  1. local nTotal = 6*60*60 -GetLogicFrameCount()/16%(6*60*60)
  2. local nHours = math.floor(nTotal/(60*60))
  3. local nMinutes = math.floor(nTotal/60%60)
  4. local l nSeconds = math.floor(nTotal%60)
  5. OutputMessage("MSG_SYS", "距离下次刷新还有"..nHours.."时"..nMinutes.."分"..nSeconds.."秒\n")
复制代码

点击运行,看到效果了吧?
5.jpg
如果代码有错误会怎么样呢?我把后面的nSeconds改成nSecond,点运行,下面就会输出错误提示啦:
6.jpg
如果你喜欢这段代码,还可以把它保存起来,并且可以让它在每次进入游戏之后自动运行,方法图上都有,我就不详细说明了。



今天就先讲到这里吧,在下一篇教程中,我将指导大家建立第一个属于你自己的插件。
我们下次再见~~

原创粉丝点击