使用lua制作一个GM命令(让指定宠物回炉并提升到140级,并且一定极品)
⑴. 建立函数main 并使用和定义GM命令接口
* 使用petreset字段作为GM指令(字段自定义) --例 [gm petreset 1] 把宠物栏第一个宠物回炉并提升至140
* 使用函数PetReSet作为执行函数
magic.addLUAListFunction
-- 括号里的参数
1.Gm命令字段 (自定义)
2.该接口所执行的函数 (自定义)
3.该函数的路径(默认为此lua文件)
4.GM等级(data目录下gmset.txt里设置的等级) --只限于大于该等级的GM账号使用
5.注解(无意义)
说明
当该账号为gm等级3且游戏中输入[gm petreset]时,会触发函数PetReSet
⑵. 建立函数PetReSet
该函数附带2个参数(固定)(参数名自定)
参数1:使用该命令的玩家索引
参数2:该命令的内容 --指[gm petresetXXXXXXX] 只包括红色部分内容--函数main创建的magic.addLUAListFunction定义的第一个参数名(不包括该字段)后面的内容如下图:
⑶. 完成函数PetReSet内容
1. 根据字段截取数字 --设定数字为宠物栏位置
2. 判断位置是否有宠物
3. 删除该宠物,建立相同编号宠物并获取该宠物索引
4. 设定该宠物索引能力值和等级
(请点击查看大图)总结
1.当玩家输入[gm petreset 1]时,检测该账号是否为GM等级3
2.如果该账号是GM等级3账号则执行函数PetReSet3.获取petreset之后第一个空格到第二个空格(或结束)的字符串,转化该字符串为数值型并赋值于局部变量petid
3.检测petid是否为大于0或小于6的数
4.让该数字减1得到实际对应的宠物栏位置后检测该位置是否有宠物
5.如果该位置有宠物则获取该宠物enemy编号
6.删除原宠物,再次创建一个新的相同编号的1级宠物,并设置宠物能力值
7.让该宠物升级139次,设定该宠物等级为140级
8.刷新宠物栏所有宠物 --刷新是显示最新的数值,如不刷新则显示原始的数值,不影响游戏实际操作(当储存,捡起,交易,进入战斗都会强制刷新)
*注意
上图在char.sendStatusString接口由0到4循环5次等于刷新所有宠物栏位置(服务器获取玩家宠物位置由0开始)
例:char.sendStatusString(abc,"K0") 数字0代表第一个宠物,4代表第5个宠物
在这里可以利用第一个局部变量petid直接刷新指定宠物
例:char.sendStatusString(abc,"K"..(petid-1))
但该逻辑存在的问题,就是当GM输入[gm petreset 3]时
首先删除宠物栏3号位置的宠物,然后创建一个新的宠物
如果GM宠物栏1或2没有其他宠物,则该宠物创立在宠物栏1或2的位置