欢迎光临本站!

NPC循环事件Loop讲解

来源:sa60    更新时间:2022-04-11 11:33    编辑:神奇    浏览:312

在石器时代LUA以往的教学里,循环事件我都是利用了NetLoopFunction来讲解案例等,NetLoopFunction是针对全局来循环,咱们可以理解为整个石器时代游戏系统的循环,他不需要任何索引进行循环,但有个不便之处就是这个内置的循环是按照分钟来进行计算。也就是每分钟才执行一次,但有时候我们需要精确到秒的时候,比如咱们需要一个按秒倒计时的功能,这个NetLoopFunction函数就没办法了。因为咱们需要一个用秒来计算的函数。

在石器代码里有系统循环和NPC/人物循环两种,我在之前某代码ABLUA循环事件BUG有提到这个循环,这个NPC/人物循环正是我今天要讲到的。这里我会通过LUA脚本代码的方式来讲述这个循环事件。

参考代码:


01 --循环函数
02 function Loop(meindex)
03     --循环可执行的代码,以秒为单位
04 end
05  
06 function Create(name, metamo, floor, x, y, dir)
07     npcindex = npc.CreateNpc(name, metamo, floor, x, y, dir)
08     char.setFunctionPointer(npcindex, "循环事件", "Loop", "")
09 end
10  
11 function main()
12     Create("神奇循环测试", 43651, 777, 17, 17, 7)
13 end
咱们可以从代码上看到在Create函数里给NPC增加了函数事件,而Loop正是这个函数,注意在Create函数里循环事件后面的那个Loop是对应上面的Loop(meindex),其中meindex表示的是这个NPC的索引。


然后Loop这个函数就跟NetLoopFunction功能是一样的了,只不过是按照秒的单位来计算,下面我们写一个简单的计时进行说话的功能。


01 --循环函数
02 function Loop(meindex)
03     --循环可执行的代码,以秒为单位
04     --当looptimer累计值达到60和以上时则开始执行说话功能
05     if looptimer >= 60 then
06         --对着服务器全员进行说话
07         char.talkToServer(-1, "欢迎来到神奇发布网,这里是神奇的牧羊人", "紫色")
08         --执行完毕后让looptimer归0后可以继续累计计算值
09         looptimer = 0
10     end
11     --下面这句的意思是每执行一次,looptimer这个值就累计+1
12     looptimer = looptimer + 1
13 end
14  
15  
16 function data()
17     --定义一个变量,让它通过Loop来计算数字,初始化为0
18     looptimer = 0
19 end
20  
21  
22 function Create(name, metamo, floor, x, y, dir)
23     npcindex = npc.CreateNpc(name, metamo, floor, x, y, dir)
24     char.setFunctionPointer(npcindex, "循环事件", "Loop", "")
25 end
26  
27 function main()
28     data()
29     Create("神奇循环测试", 43651, 777, 17, 17, 7)
30 end


通过代码咱们可以看到利用NPC的循环函数可以以秒单位来进行循环事件,也是非常方便的。这里运用到的计时变量是让计时变量达到判断的数值归0后再继续循环累计数值,其实也可以利用摩尔求余的方式进行计算,这里就不多讲,以后的教学里将会提到。

评论区

NPC循环事件Loop讲解---文章已关闭评论~

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

相关内容

点击排行

随机新闻