切换风格

默认晚霞 雪山 粉色心情 伦敦 花卉 绿野仙踪 加州 白云 星空 薰衣草 城市 简约黑色 龙珠
回复 3

6

主题

10

帖子

87

积分

论坛萌新

Rank: 1

积分
87
人气
2 点
钻石粒
125 粒
贡献
0 点
论坛币
12 个
爱心
0 点

论坛注册会员

[1.7.10][ECMA]服务器指令一件套zh1.4[复制链接]
发表于 2020-4-2 14:02:14 | 显示全部楼层 |阅读模式
脚本例子
脚本版本: 1.7.10
适用版本: 1.7.10 
编写语言: ECMA
最后更新: 2020-04-02
代码版权: 强版权

请注册论坛会员,已便查看高清图片!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
闲的没事
弄了一大堆指令
  1. //@kemo14331
  2. //允许以某些代价(包括但不仅限于丧失父母,丧失寿命,精神消减...)私自修改产生商业利益
  3. //添加了warp
  4. //开源脚本
  5. //需要hotnpc
  6. var zx = -894
  7. var zy = 4
  8. var zz = -32
  9. //这里填主城坐标
  10. npc.executeCommand("scoreboard objectives add hx dummy")
  11. npc.executeCommand("scoreboard objectives add hy dummy")
  12. npc.executeCommand("scoreboard objectives add hz dummy")
  13. var HotNPC = Java.type("mchhui.hotnpc.HotNPC");
  14. var Tempdata = Java.type("mchhui.hotnpc.utlis.Tempdata");
  15. var tempdata = HotNPC.tempdata;
  16. var StoreddataManager = Java.type("mchhui.hotnpc.utlis.StoreddataManager");
  17. if (!tempdata.has("yunxi.eg")) {
  18.         tempdata.set("yunxi.eg", StoreddataManager.getStoreddata("yunxi.eg"));
  19. }
  20. var eg = tempdata.get("yunxi.eg");
  21. var EntityPlayerMP=Java.type("net.minecraft.entity.player.EntityPlayerMP");
  22. listenEvent("net.minecraftforge.event.ServerChatEvent","HIGH",
  23.     function(event){
  24.       var player=getPlayer(event.username);
  25.       if(player==null){
  26.        return;
  27.       }
  28.           if(npc.getStoredData(player.getName()+"jy") != "true"){
  29.            return;
  30.           }
  31.       event.setCanceled(true);
  32.     }
  33. );
  34. function getPlayer(playerName){
  35. var MinecraftServer=Java.type("net.minecraft.server.MinecraftServer");
  36. var ScriptController=Java.type("noppes.npcs.controllers.ScriptController");
  37. var playerList=MinecraftServer.func_71276_C().func_71203_ab().field_72404_b;
  38. var player;
  39.     for (var i=0;i<playerList.size();i++) {
  40.       player=ScriptController.Instance.getScriptForEntity(playerList.get(i));
  41.         if(player.getName()==playerName){
  42.          return player;
  43.         }
  44.     }
  45. }
  46. function isOp(playerName){
  47. var MinecraftServer=Java.type("net.minecraft.server.MinecraftServer");
  48. var ops=MinecraftServer.func_71276_C().func_71203_ab().func_152606_n();
  49. for(var x in ops){
  50.     if(ops[x]==playerName){
  51.      return true;
  52.     }
  53. }
  54. return false;
  55. }
  56. function Listener(eventType,listener,bus){
  57. this.eventType=eventType;
  58. this.listener=listener;
  59. this.bus=(bus==null)?MinecraftForge.EVENT_BUS:bus;
  60. this.getEventType=function(){
  61.   return this.eventType;
  62. }
  63. this.getListener=function(){
  64.   return this.listener;
  65. }
  66. this.getBus=function(){
  67.   return this.bus;
  68. }
  69. }
  70. /**
  71. *EventListener listenEvent(String eventType,String priority,function listener)
  72. *-eventType:你要监听的事件的类路径 如net.minecraftforge.event.ServerChatEvent
  73. *-priority:你的事件优先级 从低到高LOW LOWEST NORMAL HIGHEST HIGH
  74. *-listener:事件方法
  75. *Return:
  76. *-EventListener:事件监听者
  77. *监听事件并返回监听对象
  78. */
  79. function listenEvent(eventType,priority,listener,bus){
  80. var Event=Java.type(eventType);
  81.     try{
  82.      var IEventListener=Java.type("net.minecraftforge.fml.common.eventhandler.IEventListener");
  83.      var EventPriority=Java.type("net.minecraftforge.fml.common.eventhandler.EventPriority");
  84.     }catch(err){
  85.      var IEventListener=Java.type("cpw.mods.fml.common.eventhandler.IEventListener");
  86.      var EventPriority=Java.type("cpw.mods.fml.common.eventhandler.EventPriority");
  87.     }
  88. var MinecraftForge=Java.type("net.minecraftforge.common.MinecraftForge");
  89. var event=new Event();
  90.     if(priority=="LOW"){
  91.      priority=EventPriority.LOW;
  92.     }
  93.     if(priority=="HIGH"){
  94.      priority=EventPriority.HIGH;
  95.     }
  96.     if(priority=="NORMAL"){
  97.      priority=EventPriority.NORMAL;
  98.     }
  99.     if(priority=="LOWEST"){
  100.      priority=EventPriority.LOWEST;
  101.     }
  102.     if(priority=="HIGHEST"){
  103.      priority=EventPriority.HIGHEST;
  104.     }
  105. var EventListener=Java.extend(IEventListener,{
  106.   invoke:listener
  107. });
  108. listener=new EventListener();
  109. var bus=(bus==null)?MinecraftForge.EVENT_BUS:bus;
  110. var busID=bus.class.getDeclaredField("busID");
  111. busID.setAccessible(true);
  112. busID=busID.getInt(bus);
  113. event.getListenerList().register(busID,priority,listener);
  114. return new Listener(eventType,listener,bus);
  115. }
  116. /**
  117. *void unListenEvent(IEventListener listener)
  118. *-listener:事件方法
  119. *取消监听事件
  120. */
  121. function unListenEvent(eventType,listener,bus){
  122. var Event=Java.type(eventType);
  123. var MinecraftForge=Java.type("net.minecraftforge.common.MinecraftForge");
  124. var event=new Event();
  125. var bus=(bus==null)?MinecraftForge.EVENT_BUS:bus;
  126. var busID=bus.class.getDeclaredField("busID");
  127. busID.setAccessible(true);
  128. busID=busID.getInt(bus);
  129. event.getListenerList().unregister(busID,listener);
  130. }
  131. /**
  132. *@Author Hueihuea
  133. *著作权属于Hueihuea 2019/6/16起生效
  134. */
  135. function Command(name,usage){
  136. this.getCommandName=function(){
  137.   /*String getCommandName()
  138.   *应返回指令的名字
  139.   *如:ppes 则返回noppes
  140.   */
  141. };
  142. this.getCommandUsage=function(sender){
  143.   /*String getCommandUsage(ICommandSender sender)
  144.   *应返回指令的用法
  145.   *当玩家输入"/help 你的指令名" 的时候就会出现
  146.   *sender:指令发送者 可能是玩家 控制台 命令方块 或者其他什么
  147.   */
  148. };
  149. this.processCommand=function(sender,args){
  150.   /*void processCommand(ICommandSender sender, String[] args)
  151.   *在玩家使用该指令时会调用本函数
  152.   *sender:指令发送者 可能是玩家 控制台 命令方块 或者其他什么
  153.   *args:指令的参数
  154.   */
  155. };
  156. this.addTabCompletionOptions=function(sender,args){
  157.   return null;
  158.   /*List addTabCompletionOptions(ICommandSender sender, String[] args)
  159.   *用于tab自动补全
  160.   *应返回补全后的参数
  161.   *sender:指令发送者 可能是玩家 控制台 命令方块 或者其他什么
  162.   *args:指令的参数
  163.   */
  164. };
  165. this.getRequiredPermissionLevel=function(){
  166.   return 0;
  167.   /*int getRequiredPermissionLevel
  168.   *指令所需的权限 0表示所有人可用 4表示OP可用               
  169.   *应返回权限等级
  170.   */
  171. }
  172. this.canCommandSenderUseCommand=function(){
  173.   return true;
  174. }
  175. //上方函数以1.7.10的方法为准
  176. //1.12.2修改函数时补全参数后通用。
  177. this.getMCCommand=function(){
  178.   var CommandBase=Java.type("net.minecraft.command.CommandBase");
  179.   var MCCommand=Java.extend(CommandBase,{
  180.    func_71517_b:this.getCommandName,
  181.    func_71518_a:this.getCommandUsage,
  182.    func_71515_b:this.processCommand,
  183.    func_71516_a:this.addTabCompletionOptions,
  184.    func_82362_a:this.getRequiredPermissionLevel,
  185.    func_71519_b:this.canCommandSenderUseCommand,
  186.    /*下方是对1.12.2的兼容*/
  187.    func_184881_a:this.processCommand,
  188.    func_184883_a:this.addTabCompletionOptions,
  189.    func_184882_a:this.canCommandSenderUseCommand
  190.   });
  191.   return new MCCommand();
  192. }
  193. }
  194. function registerCommand(command){
  195. var MinecraftServer=Java.type("net.minecraft.server.MinecraftServer");
  196. var server=MinecraftServer.func_71276_C();
  197.      if(!(command instanceof Command)){
  198.      return;
  199.     }
  200.     server.func_71187_D().func_71560_a(command.getMCCommand())
  201. }

  202. var EntityPlayerMP=Java.type("net.minecraft.entity.player.EntityPlayerMP");
  203. var command=new Command();
  204. command.getCommandName=function(){
  205. return "zh";
  206. }
  207. //创建指令的名字,不需要加"/"
  208. command.getCommandUsage=function(sender){
  209. return "/zh";
  210. }
  211. //获取指令的使用
  212. command.canCommandSenderUseCommand=function(sender){
  213.         return true;
  214. }
  215. //指令是否允许玩家使用
  216. command.addTabCompletionOptions=function(sender,args){
  217. return ["help","suicide","sethome","home","xz","kill","qc","hc","hat","warp"];
  218. }
  219. //新增一个指令的参数
  220. command.processCommand=function(sender,args){
  221. var ScriptPlayer=Java.type("noppes.npcs.scripted.ScriptPlayer");
  222.     if(!(sender instanceof EntityPlayerMP)){
  223.      return;
  224.     }
  225. var player=new ScriptPlayer(sender);
  226. //将玩家转成npc脚本的玩家
  227. try{
  228. if(args[0] == "help"){
  229. player.sendMessage("§a----------服务器帮助----------");
  230. player.sendMessage("§c§lkemo出品,禁止倒卖");
  231. player.sendMessage("§a红色代表管理员指令");
  232. player.sendMessage("§a/zh suicide 自杀");
  233. player.sendMessage("§a/zh sethome 设置家");
  234. player.sendMessage("§a/zh home 回到家");
  235. player.sendMessage("§a/zh xz 打开末影箱");
  236. player.sendMessage("§a/zh warp 地标名 传送到某地标");
  237. player.sendMessage("§a/zh hc 回城");
  238. player.sendMessage("§a/zh hat 将手中物品戴到头上");
  239. player.sendMessage("§c/zh kill 玩家名 击杀某玩家");
  240. player.sendMessage("§c/zh qc 玩家名 骑在某玩家的头上");
  241. player.sendMessage("§c/zh warp add 地标名 在你的位置创造一个地标");
  242. player.sendMessage("§c/zh warp remove 地标名 删除某地标");
  243. player.sendMessage("§c§lkemo出品,禁止倒卖");
  244. player.sendMessage("§a----------服务器帮助----------");
  245. }
  246. if(args[0] == "suicide"){
  247. player.setHealth(-1)
  248. npc.executeCommand("tellraw @a §6"+player.name+"结束了他的生命")
  249. }
  250. if(args[0] == "hc"){
  251. npc.executeCommand("tp "+player.name+" "+zx+" "+zy+" "+zz+" ")
  252. player.sendMessage("§b成功回城")
  253. }
  254. if(args[0] == "sethome"){
  255. player.sendMessage("&6你成功设置了家,输入/zh home回家");
  256. var hx=player.getX();
  257.                                  var hy=player.getY();
  258.                                  var hz=player.getZ();
  259.                                  //获取玩家的坐标
  260.                                  world.getScoreboard().setPlayerScore(player.name,"hx",hx,'dummy')
  261.                                  world.getScoreboard().setPlayerScore(player.name,"hy",hy,'dummy')
  262.                                  world.getScoreboard().setPlayerScore(player.name,"hz",hz,'dummy')
  263. }
  264. if(args[0] == "home"){
  265. var hx=world.getScoreboard().getPlayerScore(player.getName(),"hx","dummy");
  266. var hy=world.getScoreboard().getPlayerScore(player.getName(),"hy","dummy");
  267. var hz=world.getScoreboard().getPlayerScore(player.getName(),"hz","dummy");
  268. player.sendMessage("&6你成功回家");
  269. npc.executeCommand("tp "+player.name+" "+hx+" "+hy+" "+hz+" ")
  270. }
  271. if(args[0] == "xz"){
  272.   player.getMCEntity().func_71007_a(player.getMCEntity().func_71005_bN());
  273.   player.sendMessage("§d你打开了末影箱")
  274. }
  275. if(args[0] == "kill"){
  276. if(isOp(player.getName()) == true){
  277. var Name = world.getPlayer(args[1]);
  278. if(Name != null){
  279. var aplayer = world.getPlayer(Name.name);
  280. aplayer.setHealth(-1)
  281. npc.executeCommand("tellraw @a §c"+aplayer.name+"被管理员处决了")
  282. }else{player.sendMessage("§5该玩家不在线")}
  283. }else{
  284. player.sendMessage("§4您没有权限使用该指令")}
  285. }
  286. if(args[0] == "qc"){
  287. if(isOp(player.getName()) == true){
  288. var aplayer = world.getPlayer(args[1]);
  289. if(aplayer != null){
  290. var ame = player.getName();
  291. var bme = aplayer.getName();
  292. if(bme != ame){
  293. aplayer.setRider(player)
  294. aplayer.sendMessage("§c"+player.name+"骑在了你的头上")
  295. player.sendMessage("§a你骑在了"+aplayer.name+"的头上")
  296. }else{
  297. player.sendMessage("§4你不能骑在自己头上!")}
  298. }else{player.sendMessage("§5该玩家不在线")}
  299. }else{
  300. player.sendMessage("§4您没有权限使用该指令")}
  301. }
  302. if(args[0] == "hat"){
  303.   if(player.getHeldItem() != null){
  304.   if(player.getArmor(3)==null){
  305.   player.setArmor(3,player.getHeldItem())
  306. player.removeItem (player.getHeldItem(),1)
  307.   player.sendMessage("§d你成功将手上物品戴到头上")
  308.   }else{
  309.   player.sendMessage("§c你头上已经有物品了!")
  310.   }
  311.   }else{
  312.   player.sendMessage("§c你手上没有物品!")
  313.   }
  314. }
  315. if(args[0] == "warp"){
  316. if(args[1] == "add"){
  317. if(args[2].length>1){
  318. if(isOp(player.getName()) == true){
  319. var add1 = args[2]
  320. var x = player.getX();
  321. var y = player.getY();
  322. var z = player.getZ();
  323. eg.set(""+add1+"",""+x+" "+y+" "+z+"")
  324. player.sendMessage("§a成功设置了地标 "+add1+"")
  325. }else{
  326. player.sendMessage("§4你没有权限使用该指令")
  327. }
  328. }else{
  329. player.sendMessage("参数不足")
  330. }
  331. }else{
  332. if(args[1] == "remove"){
  333. if(args[2].length>1){
  334. if(isOp(player.getName()) == true){
  335. var remo1 = args[2]
  336. var remo = eg.get(""+remo1+"")
  337. if(remo != null){
  338. eg.remove(""+remo1+"")
  339. player.sendMessage("§a成功删除了地标 "+remo1+"")
  340. }else{
  341. player.sendMessage("§c没有检测到该地标")
  342. }
  343. }else{
  344. player.sendMessage("§c你没有权限使用该指令")
  345. }
  346. }else{
  347. player.sendMessage("§c参数不足")
  348. }
  349. }else{
  350. var db = args[1];
  351. var xyz = eg.get(""+db+"")
  352. if(xyz != null){
  353. npc.executeCommand("tp "+player.name+" "+xyz+"")
  354. player.sendMessage("§a成功传送到地标 "+db+"")
  355. }else{
  356. player.sendMessage("§c没有检测到该地标")
  357. }
  358. }
  359. }
  360. }
  361. }catch(e){player.sendMessage("§6未知指令")}
  362. return;
  363. }

  364. registerCommand(command);
  365. npc.say("zh指令注册成功!")
复制代码
没了,以后会更新的
回复

使用道具 举报

16

主题

53

帖子

390

积分

注册会员

Rank: 2

积分
390
人气
7 点
钻石粒
335 粒
贡献
0 点
论坛币
75 个
爱心
0 点

论坛注册会员

发表于 2020-4-2 17:10:08 | 显示全部楼层
穷举大佬kemo牛逼
小浩喜欢男孩子嘛!
回复

使用道具 举报

0

主题

19

帖子

126

积分

论坛萌新

Rank: 1

积分
126
人气
0 点
钻石粒
107 粒
贡献
0 点
论坛币
33 个
爱心
0 点

论坛注册会员

发表于 2020-4-15 02:26:08 | 显示全部楼层
本帖最后由 丨小学妹丨小舞 于 2020-4-15 02:27 编辑

shabkemo东拼西凑,很多地方明明不需要创建变量你创建个jb
而且,能不用指令的你tm最好别用,会卡服
比如tp,换成setPosition就不卡

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|自定义NPC脚本中文论坛 ( 蜀ICP备17005795号-3 )

GMT+8, 2020-9-19 07:48 , Processed in 0.077488 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部