SaliCkera
本帖最后由 瑾枫£F.P 于 2019-7-10 01:36 编辑

手持"回城"shift3秒传送,冷却1分钟冷却完毕说出"冷却完毕"

求帮忙233



版本:1.7.10



粘兽
本帖最后由 粘兽sama 于 2019-7-10 04:00 编辑

下面这串代码放在Init接口中
  1. npc.clearTempData();
  2. npc.setTempData('backHome-count',{});
  3. npc.setTempData('backHome-cooldown',{});
复制代码


下面这串代码放在Update接口中
  1. // 冷却时长毫秒
  2. var cd = 5000;
  3. // 传送到的坐标
  4. var pos = '~ ~3 ~';

  5. players = world.getAllServerPlayers();
  6. for(var i in players){
  7.     var player = world.getPlayer(players[i].name);
  8.     if(player != null && player.isSneaking() && player.getHeldItem() != null){
  9.         var held = player.getHeldItem().getDisplayName();
  10.         if(held.indexOf('回城') > -1){
  11.             if(player.name in npc.getTempData('backHome-count')){
  12.                 var now = npc.getTempData('backHome-count')[player.name] += 0.5;
  13.                 if(now > 2.5){
  14.                     var time = new Date().getTime();
  15.                     delete npc.getTempData('backHome-count')[player.name];
  16.                     if(player.name in npc.getTempData('backHome-cooldown') && time < npc.getTempData('backHome-cooldown')[player.name]){
  17.                         player.sendMessage('回城冷却中···');
  18.                     }else{
  19.                         var cmd = 'tp {name} {pos}';
  20.                         npc.executeCommand(cmd.replace('{name}',player.name).replace('{pos}',pos));
  21.                         npc.getTempData('backHome-cooldown')[player.name] = time + cd;
  22.                         cooldown(player);
  23.                     }
  24.                 }
  25.             }else{
  26.                 npc.getTempData('backHome-count')[player.name] = 0.5;
  27.             }
  28.         }
  29.     }else if(players[i].name in npc.getTempData('backHome-count')){
  30.         delete npc.getTempData('backHome-count')[players[i].name];
  31.     }
  32. }

  33. function cooldown(player){
  34.     var Thread = Java.type("java.lang.Thread");
  35.     var Runnable = Java.extend(Java.type("java.lang.Runnable"),{
  36.         run: function(){
  37.             try{
  38.                 Thread.sleep(cd);
  39.                 player.sendMessage('冷却完毕');
  40.                 delete npc.getTempData('backHome-cooldown')[player.name];
  41.             }catch(e){}
  42.         }
  43.     });
  44.     new Thread(new Runnable()).start();
  45. }
复制代码


以上代码放入对应的接口中,请让npc处于一直被加载的状态。
手持带有"回城"关键词的物品潜行3秒会执行命令将玩家传送到指定的坐标。

cnpc脚本教程贴 如何搭建脚本环境与使用脚本都在这里看吧↓
[NSS][BGM][NPC][图文][干货]RE:CNPC-自定义NPC 脚本教程[复活连载]
http://www.mcbbs.net/thread-816677-1-1.html

奈何晴空
这个是什么版本的

j1612480068
那个坐标~ ~3 ~是什么意思