自定义NPC脚本论坛

搜索
查看: 45|回复: 1

[1.12.2]不灭之握

[复制链接]

6

主题

7

帖子

232

积分

Lv.5 深海明珠

Rank: 8Rank: 8

积分
232
发表于 2021-4-29 23:07:07 | 显示全部楼层 |阅读模式
//粘贴至Players中
var exDamage=0.5;//造成的魔法伤害,大于0小于1则为最大生命百分比
var heal=0.9;//治疗血量,大于0小于1则为最大生命百分比
var time=6000;//最大间隔时间
var cd=60000;//冷却时间

var canAttackFriendlyNpc=false;//是否可以对友方npc使用
var canAttackNeutralNpc=false;//是否可以对中立npc使用
var canAttackAggressiveNpc=true;//是否可以对敌对npc使用
var canAttackPlayer=true;//是否可以对玩家使用
var canAttackFriendlyPlayer=true;//是否可以对队友使用
var canOp=false;//是否仅Op允许使用
var gamemode={};//能够造成伤害的模式

var useMessage=true;//是否启用攻击提示
function timer(e){
        if(e.id==885){
                var player=e.player;
                var store=player.getStoreddata();
                var Count=store.get("countGrasp");
                var Time=store.get("timeGrasp");
                var Cd=store.get("cdGrasp");
                var canCd=store.get("canCdGrasp");
                var date=new Date().getTime();
                if(Cd<date && eval(canCd)){
                        message(player,"§5§l[不灭之握]§6不灭之握 §2结束冷却完毕");
                        store.put("cdGrasp",0);
                        store.put("canCdGrasp","false");
                        return;
                }
                if(date>Time && Count>0){
                        message(player,"§5§l[不灭之握]§6不灭之握 §4效果结束冷却 §6"+cd/1000+" §4秒");
                        store.put("countGrasp",0);
                        store.put("cdGrasp",date+cd);
                        store.put("canGrasp","false");
                        store.put("canCdGrasp","true");
                        return;
                }
        }
}
function draw(player,maxAngle,range,name){
 var x=player.getX(),z=player.getZ();
        var mcplayer=player.getMCEntity();
 for(var angle=0;angle<maxAngle;angle++){
  var h=2*Math.PI/360*6*angle;
  var x1 = x + Math.sin(h)*range;
  var z1 = z - Math.cos(h)*range;
  player.world.spawnParticle(name,x1,player.y+0.5,z1,0,0,0,1,1);
        }
}
function attack(e){
        if(e.type==1){
                var IEntityLivingBase=Java.type("noppes.npcs.api.entity.IEntityLivingBase");
                var ICustomNpc=Java.type("noppes.npcs.api.entity.ICustomNpc");
                var IPlayer=Java.type("noppes.npcs.api.entity.IPlayer");
                var target=e.target;
                var player=e.player;
                var mcplayer=player.getMCEntity();
                if(!new myCase().isOp(mcplayer,canOp)){
                        return;
                }
                if(!new myCase().isLivingBase(target)){
                        return;
                }
         if(new myCase().isNpc(target,mcplayer,canAttackFriendlyNpc,canAttackNeutralNpc,canAttackAggressiveNpc)){
          return;
                }
                if(new myCase().isPlayer(target,mcplayer,canAttackPlayer,canAttackFriendlyPlayer,gamemode)){
                 return;
                }
                var store=player.getStoreddata();
         player.timers.forceStart(885,1,true);
         if(!store.has("canGrasp")){
                 store.put("canGrasp","false");
         }
         if(!store.has("timeGrasp")){
                 store.put("timeGrasp",0);
         }
         if(!store.has("cdGrasp")){
                 store.put("cdGrasp",0);
         }
         if(!store.has("canCdGrasp")){
                 store.put("canCdGrasp","false");
         }
         if(!store.has("countGrasp")){
                 store.put("countGrasp",0);
         }
                var date=new Date().getTime();
                var Cd=store.get("cdGrasp");
                var Count=store.get("countGrasp");
                var Time=store.get("timeGrasp");
                var Can=store.get("canGrasp");
                var canCd=store.get("canCdGrasp");
                if(eval(canCd)){
                        return;
                }
                if(eval(Can)){
                        var DamageSource=Java.type("net.minecraft.util.DamageSource");
                        var temp_heal=heal>0 && heal<1?player.getMaxHealth()*heal:heal;
                        player.getMCEntity().func_70691_i(temp_heal);
                        var temp_exDamage=exDamage>0 && exDamage<1?target.getMaxHealth()*exDamage:exDamage;
                        target.getMCEntity().func_70097_a(DamageSource.field_76376_m,temp_exDamage);
                        store.put("timeGrasp",0);
                        store.put("canGrasp","false");
                        return;
                }
                var add=15;//每次攻击增加圆弧
                Count++;
                var maxAngle=Count*add;
                maxAngle=maxAngle>60?60:maxAngle;
                draw(player,maxAngle,1,"happyVillager");
                store.put("timeGrasp",date+time);
                store.put("countGrasp",Count);
                if(maxAngle==60){
                        var temp_exDamage=exDamage>0 && exDamage<1?"击中生物最大血量"+(exDamage*100)+"%%":exDamage;
                        var temp_heal=heal>0 && heal<1?"最大血量"+(heal*100)+"%%":heal;
                 message(player,"§5§l[不灭之握]§2下次攻击造成 §6"+temp_exDamage+" §2点魔法伤害,恢复 §6"+temp_heal+" §2点血量");
                        store.put("canGrasp","true");
                        return;
                }
                message(player,"§5§l[不灭之握]§2还需攻击 §6"+(Math.ceil(60/add)-Count)+" §2次触发");
        }
}
function message(player,mess){
        if(useMessage){
                player.message(mess);
        }
}
/*Soys的配置变量
*case1,case2,case3等等都属于顶层代码中配置变量所需,正常使用请填true
*各个case如何使用请参考 君油酱的油酱打不 的更多示例!
*/
function myCase(){
        var IEntityLivingBase=Java.type("noppes.npcs.api.entity.IEntityLivingBase");
        var ICustomNpc=Java.type("noppes.npcs.api.entity.ICustomNpc");
        var IPlayer=Java.type("noppes.npcs.api.entity.IPlayer");
        /* mcplayer 是否为 Op */
        this.isOp=function(mcplayer,case1){
         var NoppesUtilServer=Java.type("noppes.npcs.NoppesUtilServer");
                if(NoppesUtilServer.isOp(mcplayer)){
          return true;
                }
                if(!case1){
                 return true;
         }
                return false;
        }
 /* target 是否有继承 IEntityLivingBase */
        this.isLivingBase=function(target){
                if((target instanceof IEntityLivingBase)){
                        return true;
                }
                return false;
        }
 /* target 是否有继承 ICustomNpc */
        this.isNpc=function(target,mcplayer,case1,case2,case3){
                if(target instanceof ICustomNpc){
                        var faction=target.faction;
                        if(faction.isFriendlyToPlayer(mcplayer)){
                         if(!case1){
                          return true;
                         }
                                return false;
                        }
                        if(faction.isNeutralToPlayer(mcplayer)){
                         if(!case2){
                                 return true;
                         }
                                return false;
                        }
                        if(faction.isAggressiveToPlayer(mcplayer)){
                         if(!case3){
                                 return true;
                         }
                                return false;
                        }else if(mcplayer.field_71075_bZ.field_75098_d){
                                return false;
                        }
                        return true;
                }
                return false;
 }
        /* target 是否有继承 IPlayer   case3 应填入Object */
        this.isPlayer=function(target,mcplayer,case1,case2,case3){
         if(target instanceof IPlayer){
                        if(!case1){
                                return false;
                        }
                        var target_p=target;
                        if(case2){
                         var team_p=mcplayer.func_96124_cp();
                  var team_t=target_p.getMCEntity().func_96124_cp();
                  if(team_p!=null && team_t!=null){
                                 if(team_p.func_96661_b()==team_t.func_96661_b() && !team_p.func_96665_g()){
                           return true;
                                 }
                         }
                                return false;
                        }
                        if(Object.keys(case3).length>0){
                                if(!case3[target_p.getGamemode()]){
                                        return true;
                                }
                                return false;
                        }
                        return true;
                }
                return false;
        }
}

评分

参与人数 1人气 +5 贡献 +1 收起 理由
小明 + 5 + 1

查看全部评分

回复

使用道具 举报

2

主题

15

帖子

172

积分

Lv.4 地上月影

Rank: 6Rank: 6

积分
172
发表于 2021-4-30 10:11:05 | 显示全部楼层
好!虽然是1.12的脚本我用不着,但还是要说句牛逼!
回复

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表