思望文宣 发表于 2019-8-17 19:19:48

[1.7.10][ECMA]可在脚本中使用的选择器

是不是有新入坑的小伙伴很迷茫,对那些doc感觉很迷茫,看不懂,之类的对吧。
相信在此之前已经有不少小伙伴接触过指令了,觉得里面的选择器很方便,直接就选中了,不像脚本那么麻烦。
所以,这次我带来的一个脚本就是自制选择器,由于变量名无法以@开头,所以我这里用的是Q,比如Qa,Qp
话不多说直接上代码,下面的注释也有介绍,自己仔细看看吧。
顺带一提由于水平有限,只做出来了@a(就是获取世界玩家,水),@p(获取最近玩家),@s(获取随机玩家)

worldPlayer(world.getAllServerPlayers());
function worldPlayer(Qa) {
this.Qa = Qa;
var ranKing = [];
for (var a in Qa) {
    var x = Qa.getX();
    var y = Qa.getY();
    var z = Qa.getZ();
    var q = Math.sqrt((x - npc.getX()) * (x - npc.getX()) + (y - npc.getY()) * (y - npc.getY()) + (z - npc.getZ()) * (z - npc.getZ()));
    var m = new distance(Qa, q);
    ranKing.push(m);
}
var ju = bubbleSortPlus(ranKing);
this.Qp = ju.player
//设置最大值
var Max = Qa.length;
//设置最小值
var Min = 0;
var i = Math.floor(Math.random() * (Max - Min) + Min)
//测试
this.Qs = Qa;
function distance(player, m) {
    this.player = player;
    this.m = m;
}
function bubbleSortPlus(arr) {
    var len = arr.length;
    for (var i = 0; i < len; i++) {
      for (var j = 0; j < len - 1 - i; j++) {
      if (arr.m > arr.m) {      //相邻元素两两对比
          var temp = arr;      //元素交换
          arr = arr;
          arr = temp;
      }
      }
    }
    return arr;
}
}
{
//代码块
}
/*
*使用说明:
*Qa:全部玩家(需要遍历)
*示例:
*for(var x in Qa){
*npc.say(Qa.getName())
*}
*Qp:距离NPC最近的玩家
*Qs:随机玩家
*示例:npc.say(Qp.getName())
*版权归思望文宣所有
*2019\8\17
*/


版权声明:
1.您不能转载本帖
2.您不能声称作者是自己

奈何晴空 发表于 2019-8-17 22:13:35

nb6666666666

妖神 发表于 2020-3-14 10:10:28

萌新报道
页: [1]
查看完整版本: [1.7.10][ECMA]可在脚本中使用的选择器