cgmsv引擎论坛

 找回密码
 注册/Sign up
搜索
12
返回列表 发新帖
楼主: ahsin

[LUA] 原地自动遇敌+步步遇敌

[复制链接]

Rank: 1

 楼主| 发表于 2021-5-2 03:29:53 | 显示全部楼层
由于全局变量会导致全体玩家步伐方向统计错误,遂请各位删除老的代码。
接下来是新代码

1、删除老代码,头部声明去除(未参考1楼代码的,跳过此步)
  1. --去除此行local walkmark = 1--/1方向统计变量
复制代码


2、ng.lua中,内挂部分,把老的/1全部注释或者删除,然后替换新的/1如下
  1. if(msg == "/1" or msg == "、1") then
  2.                 local zizou1 = Char.GetData(player,%对象_香步数%);
  3.                 if Char.GetData(player,%对象_不遇敌开关%) == 1 then
  4.                 NLG.SystemMessage(player,"你正在使用驱魔香水,无法使用步步遇敌");
  5.                 elseif zizou1 == 0 then
  6.                 Char.SetData(player,%对象_香步数%,999);
  7.                 Char.SetData(player,%对象_香上限%,999);
  8.                 NLG.SystemMessage(player,"步步遇敌+自动遇敌开始了,每10秒尝试一次。");
  9.                 NLG.SystemMessage(player,"注意:如果在地图版边使用可能会掉线。");
  10.                 Char.SetLoopEvent(nil,"yd_LoopEvent",player,10000)
  11.                 --local dir= math.random(0,7);
  12.                 --NLG.SetAction(player,1);
  13.                 --NLG.WalkMove(player,dir);
  14.                 else
  15.                 Char.SetLoopEvent(nil,"yd_LoopEvent",player,nil)
  16.                 Char.SetData(player,%对象_香步数%,0);
  17.                 Char.SetData(player,%对象_香上限%,0);
  18.                 NLG.SystemMessage(player,"步步遇敌+自动遇敌关闭了!");
  19.                 end
  20.         end
复制代码


3、ng.lua底部,老的代码注释或删除(未参考过1楼代码的,跳过此步)
  1. function yd_LoopEvent(player)
  2.         --local CdKey = Char.GetData(player,%对象_CDK%)
  3.         local CdKey = Char.GetData(player,%对象_CDK%)
  4.         local Name = Char.GetData(player,%对象_名字%)
  5.         --local pluskg = Char.GetData(player,%对象_香步数%);
  6.         local pluskg = Char.GetData(player,%对象_香步数%);
  7.         local dir= math.random(1,19);--生成随机动作,0为战力,去除
  8.         if pluskg == 0 then
  9.                 Char.SetLoopEvent(nil,"yd_LoopEvent",player,nil)
  10.         else
  11.                 if walkmark == 1 then
  12.                         NLG.SystemMessage(player,"步步遇敌+自动遇敌中,每10秒尝试一次。");
  13.                         NLG.SystemMessage(player,"注意:如果走到地图版边可能会掉线。");
  14.                         --NLG.SetAction(player,3);--走路动作
  15.                         NLG.WalkMove(player,2);--方向2走一步
  16.                         NLG.SetAction(player,dir);--遇敌了,摆个随机pose
  17.                         walkmark = 2
  18.                 else
  19.                         NLG.SystemMessage(player,"步步遇敌+自动遇敌中,每10秒尝试一次。");
  20.                         NLG.SystemMessage(player,"注意:如果走到地图版边可能会掉线。");
  21.                         --NLG.SetAction(player,3);--走路动作
  22.                         NLG.WalkMove(player,6);--方向6走一步
  23.                         NLG.SetAction(player,dir);--遇敌了,摆个随机pose
  24.                         walkmark = 1
  25.                 end
  26.         end
  27. end
复制代码

4、ng.lua底部最后一行添加
  1. function yd_LoopEvent(player)
  2.         --local CdKey = Char.GetData(player,%对象_CDK%)
  3.         local CdKey = Char.GetData(player,%对象_CDK%)
  4.         local Name = Char.GetData(player,%对象_名字%)
  5.         --local pluskg = Char.GetData(player,%对象_香步数%);
  6.         local pluskg = Char.GetData(player,%对象_香步数%);
  7.         local dir= math.random(1,19);--生成随机动作,0为战立,去除
  8.         local walkmark = Char.GetData(player,%对象_名片开关%)--由于全局变量影响全服步伐统计,遂借用player常量的0和1反馈,来调整步伐方向
  9.         if pluskg == 0 then
  10.                 Char.SetLoopEvent(nil,"yd_LoopEvent",player,nil)
  11.         else
  12.                 if walkmark == 1 then
  13.                         NLG.SystemMessage(player,"步步遇敌+自动遇敌中,每10秒尝试一次。");
  14.                         NLG.SystemMessage(player,"注意:如果走到地图版边可能会掉线。");
  15.                         --NLG.SetAction(player,3);--走路动作
  16.                         NLG.WalkMove(player,2);--方向2走一步
  17.                         NLG.SetAction(player,dir);--遇敌了,摆个随机pose
  18.                         --walkmark = 2
  19.                         Char.SetData(player,%对象_名片开关%,0)
  20.                 else
  21.                         NLG.SystemMessage(player,"步步遇敌+自动遇敌中,每10秒尝试一次。");
  22.                         NLG.SystemMessage(player,"注意:如果走到地图版边可能会掉线。");
  23.                         --NLG.SetAction(player,3);--走路动作
  24.                         NLG.WalkMove(player,6);--方向6走一步
  25.                         NLG.SetAction(player,dir);--遇敌了,摆个随机pose
  26.                         --walkmark = 1
  27.                         Char.SetData(player,%对象_名片开关%,1)
  28.                 end
  29.         end
  30. end
复制代码




补充内容 (2022-3-20 22:35):
补充一个,
所有Char.SetLoopEvent(nil,"yd_LoopEvent",player,nil)
改成Char.SetLoopEvent(nil,"yd_LoopEvent",player,0)

Rank: 1

发表于 2021-5-9 11:54:06 | 显示全部楼层
好东西,感谢分享

Rank: 1

发表于 2021-5-9 12:07:07 | 显示全部楼层
好东西,感谢大大的分享
您需要登录后才可以回帖 登录 | 注册/Sign up

本版积分规则

手机版|cgmsv引擎论坛

GMT+8, 2024-11-21 22:32 , Processed in 0.163378 second(s), 6 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表