NPC循环事件Loop讲解
来源:sa60 更新时间:2022-04-11 11:33 编辑:神奇 浏览:465
在石器时代LUA以往的教学里,循环事件我都是利用了NetLoopFunction来讲解案例等,NetLoopFunction是针对全局来循环,咱们可以理解为整个石器时代游戏系统的循环,他不需要任何索引进行循环,但有个不便之处就是这个内置的循环是按照分钟来进行计算。也就是每分钟才执行一次,但有时候我们需要精确到秒的时候,比如咱们需要一个按秒倒计时的功能,这个NetLoopFunction函数就没办法了。因为咱们需要一个用秒来计算的函数。
在石器代码里有系统循环和NPC/人物循环两种,我在之前某代码ABLUA循环事件BUG有提到这个循环,这个NPC/人物循环正是我今天要讲到的。这里我会通过LUA脚本代码的方式来讲述这个循环事件。
参考代码:
02
|
function Loop(meindex)
|
06
|
function Create(name, metamo, floor, x, y, dir)
|
07
|
npcindex = npc.CreateNpc(name, metamo, floor, x, y, dir)
|
08
|
char.setFunctionPointer(npcindex, "循环事件", "Loop", "")
|
12
|
Create("神奇循环测试", 43651, 777, 17, 17, 7)
|
咱们可以从代码上看到在Create函数里给NPC增加了函数事件,而Loop正是这个函数,注意在Create函数里循环事件后面的那个Loop是对应上面的Loop(meindex),其中meindex表示的是这个NPC的索引。
然后Loop这个函数就跟NetLoopFunction功能是一样的了,只不过是按照秒的单位来计算,下面我们写一个简单的计时进行说话的功能。
02
|
function Loop(meindex)
|
04
|
--当looptimer累计值达到60和以上时则开始执行说话功能
|
05
|
if looptimer >= 60 then
|
07
|
char.talkToServer(-1, "欢迎来到神奇发布网,这里是神奇的牧羊人", "紫色")
|
08
|
--执行完毕后让looptimer归0后可以继续累计计算值
|
11
|
--下面这句的意思是每执行一次,looptimer这个值就累计+1
|
12
|
looptimer = looptimer + 1
|
17
|
--定义一个变量,让它通过Loop来计算数字,初始化为0
|
22
|
function Create(name, metamo, floor, x, y, dir)
|
23
|
npcindex = npc.CreateNpc(name, metamo, floor, x, y, dir)
|
24
|
char.setFunctionPointer(npcindex, "循环事件", "Loop", "")
|
29
|
Create("神奇循环测试", 43651, 777, 17, 17, 7)
|
通过代码咱们可以看到利用NPC的循环函数可以以秒单位来进行循环事件,也是非常方便的。这里运用到的计时变量是让计时变量达到判断的数值归0后再继续循环累计数值,其实也可以利用摩尔求余的方式进行计算,这里就不多讲,以后的教学里将会提到。
NPC循环事件Loop讲解---文章已关闭评论~