感谢http://bbs.cgmsv.com/thread-871-1-1.html的帖子
用了之后发现battle变量没有声明,修复后发现哪怕用了table依然无法同时多人发送各自自己的战斗id,然后实现多人、多场战斗
被玩家有选择性的观战功能
所以我重做了...最让我裂开的是!原先几百行代码都是失败,最后待我优化成功的代码,才几行就可以了...
以下代码加入到ng.lua中如:/5之后即可
- if msg == "/15" or msg == "、15" then
- local gzzt = Char.GetBattleIndex(player);--获取自己战斗状态
- local gzmz = Char.GetData(player,%对象_名字%)
- local gzcdk = Char.GetData(player,%对象_CDK%)
- local players = nil--被观战玩家
- if gzzt == -1 then
- NLG.SystemMessage(player,"你目前没有在战斗中!");
- else
- players = player
- NLG.Say(-1,-1,""..gzmz.."邀请您输入/16"..players.."观战!",1,3)--通告全服你的专属观战编号
- end
- end
-
- if check_msg(msg,"/16") then
- local gzmsg = string.sub(msg,4)--从第4个字节开始收入变量
- local gzzt2 = Char.GetBattleIndex(player);--获取自己战斗状态
- local gzzt3 = Char.GetBattleIndex(tonumber(gzmsg));--获取目标玩家战斗状态
- --print (gzmsg)
- --NLG.SystemMessage(player,"调试参数:"..gzmsg.."")
- if gzzt2 ~= -1 then
- NLG.SystemMessage(player,"你当前正在观战或战斗中,退出后可以继续观战!");
- elseif gzzt3 == -1 then
- NLG.SystemMessage(player,"目标玩家战斗已经结束!");
- else
- NLG.WatchBattle(player,tonumber(gzmsg))
- end
- elseif check_msg(msg,"、16") then
- local gzmsg = string.sub(msg,5)--从第5个字节开始收入变量
- local gzzt2 = Char.GetBattleIndex(player);--获取自己战斗状态
- local gzzt3 = Char.GetBattleIndex(tonumber(gzmsg));--获取目标玩家战斗状态
- --print (gzmsg)
- --NLG.SystemMessage(player,"调试参数:"..gzmsg.."")
- if gzzt2 ~= -1 then
- NLG.SystemMessage(player,"你当前正在观战或战斗中,退出后可以继续观战!");
- elseif gzzt3 == -1 then
- NLG.SystemMessage(player,"目标玩家战斗已经结束!");
- else
- NLG.WatchBattle(player,tonumber(gzmsg))
- end
- end
复制代码
值得注意的是,之前总是写不出,是因为自己被数字坑了
变量=player的时候,哪怕print调试显示是数字,它tm其实是字符
花了我好几个小时才想明白,原来需要用tonumber把字符变成真正的数字
由于我内挂已经做到/十几了。。。所以如果你搬运到你sf的话
若改为/单数(如:/8),那么string.sub(msg,4)中的4要改为3
|