本篇教程由作者设定使用 CC BY-NC-SA 协议。
zenutils提供的延时功能给多了一些脚本的整活的方向,由于本站没有人介绍,我就浅浅介绍一下
例子:
events.onPlayerLoggedIn(function(event as PlayerLoggedInEvent) {
val player as IPlayer = event.player;
if (event.player.world.remote) return; //这就不用说了吧))))
event.player.world.catenation() //创建一个新的连接
.run(function(world, context) {
print("the start of catenation");
context.data = world.time; //data是IData类型的,需要将int和long转为IData
})
.sleep(200) //此连接会"睡"200t后触发 20t为1s
// then方法和run方法近似
.then(function(world, context) {
player.sendMessage("The message is shown 10 seconds after the player logs in");
player.sendMessage("You logged at world time" ~ context.data.asString());
})
.sleepUntil(function(world, context) { //通过if判断的条件来决定接下来是否执行(true)
return world.raining; //判断是否下雨
})
.then(function(world, context) {
player.sendMessage("It is raining!");
})
.stopWhen(function(world, context) { //通过if判断的条件来决定接下来是否执行(false)
return !player.alive; //判断玩家是否活着
})
//开始本次连接,你创建了当然要开始,不然放在那干嘛?
.start();});
函数:
使用world.catenation()创建
导包:
mods.zenutils.ICatenationBuilder
方法:
ICatenationBuilder run(IWorldFunction function);
函数要干什么事情
ICatenationBuilder sleep(long ticks);
"睡眠"一段时间后触发
ICatenationBuilder sleepUntil(IWorldCondition condition);
一直不触发接下来的,直到满足条件
ICatenationBuilder stopWhen(IWorldCondition condition);
一直不触发接下来的,直到不满足条件
ICatenationBuilder then(IWorldFunction function)
与run相同
Catenation start();
创建或开始
题外话:
有了这玩意整活的地方也增多了~~~
此函数中的方法的逻辑必须正确
比如
.run(function(world, context) {
print("the start of catenation");
context.data = world.time;
})
.sleep(200)
这样就起不到延时的作用
要先 .sleep(200) 再.run(function(world, context) { ..........})才能延时10秒后再触发run里面的内容
我感觉我就是一个傻子,自己做教程教别人不要犯错,自己排查错误半天,才想起这个注意事项,,,
兄弟们,反面教程哈,别学我(哭)