切换风格

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

16

主题

52

帖子

382

积分

注册会员

Rank: 2

积分
382
人气
7 点
钻石粒
328 粒
贡献
0 点
论坛币
73 个
爱心
0 点

论坛注册会员

[1.12.2][ECMA]技能升级版(更自主的键位)[复制链接]
发表于 2020-3-19 17:19:27 | 显示全部楼层 |阅读模式
脚本例子
脚本版本: 1.0.1
适用版本: 1.12.2 
编写语言: ECMA
最后更新: 2020-03-19
代码版权: 强版权

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

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

x
指令部分:
function init(e) {
var key = new Command();
key.getCommandName=function(){
 return "keybind"
}
key.getCommandUsage=function(sender){
 return "/keybind 绑定"
}
key.getRequiredPermissionLevel=function(){
 return 0;
}
key.processCommand = function(server,sender,args){
 try{
  var EntityPlayerMP = Java.type("net.minecraft.entity.player.EntityPlayerMP");
  if(!sender instanceof EntityPlayerMP){
   return;
  }
  var ScriptPlayer = Java.type("noppes.npcs.api.wrapper.PlayerWrapper")
  var player = new ScriptPlayer(sender);
  player.message("绑定请技能键位。")
 e.npc.executeCommand("scoreboard players set "+player.name+" bind 1");
  return;
 }catch(err){
 e.npc.say(err)
 }
}

registerCommand(key)


/**
*@Author Hueihuea
*/

function Command(name,usage){
 this.getCommandName=function(){
  /*String getCommandName()
  *应返回指令的名字
  *如:ppes 则返回noppes
  */
 };
 this.getCommandUsage=function(sender){
  /*String getCommandUsage(ICommandSender sender)
  *应返回指令的用法
  *当玩家输入"/help 你的指令名" 的时候就会出现
  *sender:指令发送者 可能是玩家 控制台 命令方块 或者其他什么
  */
 };
 this.processCommand=function(sender,args){
  /*void processCommand(ICommandSender sender, String[] args)
  *在玩家使用该指令时会调用本函数
  *sender:指令发送者 可能是玩家 控制台 命令方块 或者其他什么
  *args:指令的参数
  */
 };
 this.addTabCompletionOptions=function(sender,args){
  return null;
  /*List addTabCompletionOptions(ICommandSender sender, String[] args)
  *用于tab自动补全
  *应返回补全后的参数
  *sender:指令发送者 可能是玩家 控制台 命令方块 或者其他什么
  *args:指令的参数
  */
 };
 this.getRequiredPermissionLevel=function(){
  return 4;
  /*int getRequiredPermissionLevel
  *指令所需的权限 0表示所有人可用 4表示OP可用
  *应返回权限等级
  */
 }
 this.canCommandSenderUseCommand=function(){
  return true;
 }
 //上方函数以1.7.10的方法为准
 //1.12.2修改函数时补全参数后通用。
 this.getMCCommand=function(){
  var CommandBase=Java.type("net.minecraft.command.CommandBase");
  var MCCommand=Java.extend(CommandBase,{
   func_71517_b:this.getCommandName,
   func_71518_a:this.getCommandUsage,
   func_71515_b:this.processCommand,
   func_71516_a:this.addTabCompletionOptions,
   func_82362_a:this.getRequiredPermissionLevel,
   func_71519_b:this.canCommandSenderUseCommand,
   /*下方是对1.12.2的兼容*/
   func_184881_a:this.processCommand,
   func_184883_a:this.addTabCompletionOptions,
   func_184882_a:this.canCommandSenderUseCommand
  });
  return new MCCommand();
 }
}
function registerCommand(command){
 var MinecraftServer=Java.type("net.minecraft.server.MinecraftServer");
 var server=e.npc.getWorld().getMCWorld().func_73046_m();
     if(!(command instanceof Command)){        
     return;
    }
    server.func_71187_D().func_71560_a(command.getMCCommand())
}
/**
*@Author Hueihuea
*著作权属于Hueihuea 2019/6/16起生效
*/
}


player钩子部分
function keyPressed(e){
var world = e.API.getIWorld(0);
var a = world.getScoreboard().getPlayerScore(e.player.name,"bind","dummy")
var b = world.getScoreboard().getPlayerScore(e.player.name,"key1","dummy")
var bindkey = world.getScoreboard().getPlayerScore(e.player.name,"bindkey1","dummy")

if(a != 1){
if(b != 1){
if(e.key == 47){//默认配置47,应该是你的v键
var time = Date.now()
var skillt = e.player.tempdata.get("time");
if(skillt < time){
e.player.addPotionEffect(5,10, 2, true)
e.player.addPotionEffect(10,10, 2, true)
e.player.tempdata.put("time",time+1000*60);
e.player.message("你使用了技能。")
}else{
        e.player.message("冷却时间未到请等待 "+Math.round(((skillt-time)/1000))+" 秒")
}
}
}else{
if(e.key == bindkey){//默认配置绑定,鬼知道是你的哪个键
var time = Date.now()
var skillt = e.player.tempdata.get("time");
if(skillt < time){
e.player.addPotionEffect(5,10, 2, true)
e.player.addPotionEffect(10,10, 2, true)
e.player.tempdata.put("time",time+1000*60);
e.player.message("你使用了技能。")
}else{
        e.player.message("冷却时间未到请等待 "+Math.round(((skillt-time)/1000))+" 秒")
}
}
}
}else{
e.API.executeCommand(e.player.world, "/scoreboard players set "+e.player.name+" bind 0");
e.API.executeCommand(e.player.world, "/scoreboard players set "+e.player.name+" key1 1");
e.API.executeCommand(e.player.world, "/scoreboard players set "+e.player.name+" bindkey1 "+e.key);
e.player.message("绑定成功键位id为"+e.key+".")
}
}

需要改的请联系作者(服务器player钩子出故障了)
QQ:1269006128
计分板
bind
key1
bindkey1 类型 dummy

版权声明:
1.您不能转载本帖
2.您不能声称作者是自己
小浩喜欢男孩子嘛!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2020-8-15 21:55 , Processed in 0.091002 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部