2014-02-23 13:06| 查看: 25756 |作者: 小雪
实践与应用:我的第一个插件 学习他人的知识是进步的不二渠道,融汇与贯通后成为自己的东西再来应用,就算是学会了。在编写插件的过程中常常会需要小退来重载插件,各种的纠结。在思考着拿什么插件作为第一个例子的同时,我突然就想到了自己所面临的窘境:频繁的小退,手动导出错误日志。是不是能够有个像魔兽那样的重载插件界面并且导出错误日志的功能呢?抱着兴奋的心情去寻找游戏里面源文件后发现都是被编译的。好吧,于是Cube插件成为了调试错误的一个平台,但是由于没有高亮语法,排版也很辛苦,又不能将整段代码放进去(太长了),不过至少比小退来得好吧。嗯,虽然Lua文件不能重载,但是窗口文件却是可以重载的,这大大的节省了我们编辑界面插件的时间。第一个插件教学就以实用为主,如何实现重载窗口文件以及导出错误日志。 由于这是第一个插件的制作,所以以下内容将进行详细的解说,后续插件教学不会如此啰嗦。 编写插件的一些注意事项 1.大小写问题 插件文件是大小写敏感的,Ab、ab、aB、AB是完全不同的概念。 2.关闭语言块 很多时候由于健忘会忘记关闭语言块,比如说忘记关括号:{}、()、[],忘记放end,忘记放关引号等等,这些对于新手来说是很常见的事情,养成一个先写框架再写内容的习惯可以避免这类事情导致的时间浪费。 3.中文标点符号 Lua只接受英文标点符号,所以要非常注意编写过程中逗号、句号、引号、括号等等不要用中文的标点,建议切换到英文后编写。注:中文字符在lua文件中占两个字符,删除时请尤其注意。 4.空格 关于空格,这是个很致命的问题,不该空格的地方不要空格,因为有些时候空格是隐形的,这是因为中文字的空格占两个字符。 5.排版 很多人可能会觉得很奇怪,为什么代码要进行排版。代码都跟">"的形状差不多,难道是为了美观?这并不只是为了美观,主要是为了方便阅读以及差错。在每一个判断句式或者函数后,下一行比前一行靠右一个tab的位置,方便解决第二点的语句块问题,也使得看起来比较舒服,差错时不麻烦。在每一个语句块完成的时候,留一行空格作为分割线。 6.调试 有些时候我们的语法没有错误,Lua自带的漏洞检测查不出错误在哪里,但插件就是不加载。这样的问题通常是因为某些值在与系统交换的时候为空,或者是判断时直接被拒绝了,这时候用Output()这个万能导出的命令来查错。在你觉得可能出错的地方,导出一下,看看在哪一步出错。 比如说: 我们想写个类似开关的判断式,如果a等于0则a=1 local a if a==0 then a=1 else a=0end 这样的句子在语法上是正确的,但是在执行上却达不到我们的要求,这是一个判断上的错误的,因为a值为空。 调试方式如下: local a Output(a) if a==0 then a=1 Output("a=1") else a=0 Output("a=0") end 然后发现a值为空。 7.先后顺序 由于代码是从上往下执行的,所以先后顺序尤其重要。 例: local a=0 a=1 a=0 a=1 a=0 if a==1 then Output(a) end 这样是没有打印结果的,因为最后一次给a赋值是0,所以判断式不成立。 |