粘兽 发表于 2019-4-15 16:59:00

[1.12.2][ECMA]使用脚本中的玩家监听制作升级特效

本帖最后由 粘兽 于 2019-4-21 15:31 编辑

声明:
[*]你不能转载本帖。
[*]你不能声称作者是自己。


在高版本中,脚本可以监听玩家事件。
今天就来整一个监听玩家事件的脚本。

效果:


代码:
// 粒子播放回
var particle_max = 10;
// 粒子位移量
var particle_offset = ;
// 粒子の设定 (粒子名,三动量,速度,数量)
var particle = ['reddust',0,1,0,0.5,0]
// 脚本方块坐标 (用于执行播放音效的命令)
var block_pos =

function levelUp(e){
    // 判断等级变动是否大于零
    if(-e.change > 0){
      // 找到脚本方块并执行音效命令
      var cmd = e.player.getWorld().getBlock(block_pos,block_pos,block_pos);
      // 开启计时器生成粒子特效
      e.player.timers.forceStart(415,0,true);
    }
}

function timer(e){
    // 判断计时器id是否为之前调起的
    if(e.id == 415){
      // 获取粒子播放进度
      var now = e.player.tempdata.has('levelUp_particle') ? e.player.tempdata.get('levelUp_particle') : 0;
      // 进度大于或等于最大值则停止
      if(now >= particle_max){
            e.player.timers.stop(415);
            e.player.tempdata.remove('levelUp_particle');
      // 不大于 继续放粒子
      }else{
            // 生成粒子特效
            for(var i = 0;i < 180;i++){
                var a = Math.cos(i);
                var b = Math.sin(i);
                var x = e.player.x + a + particle_offset * now;
                var y = e.player.y + 0 + particle_offset * now;
                var z = e.player.z + b + particle_offset * now;
                e.player.world.spawnParticle(particle,x,y,z,particle,particle,particle,particle,particle);
            }
            // 增加播放进度
            e.player.tempdata.put('levelUp_particle',now + 1);
      }
    }
}

本杰明i 发表于 2019-4-15 17:23:52

粘兽真帅
页: [1]
查看完整版本: [1.12.2][ECMA]使用脚本中的玩家监听制作升级特效