本篇教程由作者设定使用 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里面的内容

我感觉我就是一个傻子,自己做教程教别人不要犯错,自己排查错误半天,才想起这个注意事项,,,

兄弟们,反面教程哈,别学我(哭)