切换风格

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

5

主题

23

帖子

358

积分

注册会员

Rank: 2

积分
358
人气
7 点
钻石粒
263 粒
贡献
0 点
论坛币
96 个
爱心
0 点

论坛注册会员

[1.7.10][ECMA]自制憨逼替身-勿喷![复制链接]
发表于 2019-9-21 20:04:37 | 显示全部楼层 |阅读模式
脚本例子
脚本版本: 1.7.10
适用版本: 1.7.10 
编写语言: ECMA
最后更新: 2019-09-21
代码版权: 弱版权

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

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

x
大家好,我是辣鸡黎明,最近论坛好无聊,发个脚本玩玩
脚本为我做的憨逼替身,里面包含了灰佬的方法
使用教程:将下面一段放入对话右键npc
  1. <blockquote>npc.setTempData("替身",""+player.getName()+"");
复制代码
接下来再将下面代码放入更新即可:
  1. /*更新钩子*/
  2. var Substitute = npc.getTempData("替身");
  3. var release = npc.getTempData("释放");
  4. var player = world.getPlayer("" + Substitute + "");
  5. var Hunger = player.getMCEntity().func_71024_bL().func_75116_a();
  6. var ItemDive = world.createItem("minecraft:nether_star", 0, 1);
  7. if (player.getHeldItem() !== null) {
  8.   if (player.getHeldItem().getDisplayName() == "释放替身" && player.isSneaking()) {
  9.     if (release == "true") {
  10.       npc.setTempData("释放", "false");
  11.     } else {
  12.       npc.setTempData("释放", "true");
  13.     }
  14.   }
  15. }
  16. if (release == "true") {
  17.   var distance = Math.sqrt((player.getX() - npc.getX()) * (player.getX() - npc.getX()) + (player.getY() - npc.getY()) * (player.getY() - npc.getY()) + (player.getZ() - npc.getZ()) * (player.getZ() - npc.getZ()));
  18.   if (distance >= 5) {
  19.     npc.setPosition(player.getX(), player.getY(), player.getZ());
  20.   }
  21.   npc.setRotation(player.getRotation());
  22.   npc.setVisibleType(0)
  23.   npc.setHome(player.getX(), player.getY(), player.getZ());
  24.   var target = player.getAttackTarget();
  25.   try {
  26.     npc.setAttackTarget(target);
  27.     target.setBurning(3);
  28.   } catch (err){}
  29.   if (player.getHeldItem() !== null) {
  30.     var Item = player.getHeldItem().getDisplayName();
  31.     if (Item == "§c§l离火" && player.isSneaking()) {
  32.       if (Hunger >= 3) {
  33.         player.getMCEntity().func_71024_bL().func_75114_a(Hunger - 3);
  34.         player.setHeldItem(null);
  35.         npc.setTempData("技能", "true");
  36.         npc.setTempData("time", Date.now() + 3000);
  37.         player.sendMessage("&b&l[替身]&f&l使用成功!");
  38.       } else {
  39.         player.sendMessage("&b&l[替身]&f&l你的体力值不够!");
  40.       }
  41.     }
  42.     if (Item == "§4§l炎界" && player.isSneaking()) {
  43.       if (Hunger >= 8) {
  44.         player.getMCEntity().func_71024_bL().func_75114_a(Hunger - 8);
  45.         npc.setTempData("技能2", "true");
  46.                 player.setHeldItem(null);
  47.         npc.setTempData("time2", Date.now() + 5000);
  48.         player.sendMessage("&b&l[替身]&f&l使用成功!");
  49.       } else {
  50.         player.sendMessage("&b&l[替身]&f&l你的体力值不够!");
  51.       }
  52.     }
  53.   }
  54.     var 技能 = npc.getTempData("技能");
  55.     var time = npc.getTempData("time");
  56.     if (技能 == "true") {
  57.       if (time >= Date.now()) {
  58.         npc.getJob().setRotationX(2, 0);
  59.         npc.getJob().setRotationY(3, 50);
  60.         npc.setPosition(player.getX(), player.getY(), player.getZ());
  61.         for (var i = 0; i < 3; i++) {
  62.          shoot(player, world.createItem("fire", 0, 1), player.getRotation(), 1, 0, 3, 5, true, false, true, true, true, true, player.getX()-2+i, player.getZ()-2+i);
  63.           world.spawnParticle("lava", player.x, player.y, player.z, 3, 3, 3, 0, 0);
  64.         }
  65.       } else {
  66.         npc.getJob().setRotationX(2, 180);
  67.         npc.getJob().setRotationX(3, 180);
  68.         npc.removeTempData("time");
  69.         npc.removeTempData("技能");
  70.         ItemDive.setCustomName("§c§l离火");
  71.         npc.giveItem(player,ItemDive);
  72.         player.sendMessage("&b&l[替身]&f&l时限已到!");
  73.       }
  74.     }
  75.     var time2 = npc.getTempData("time2");
  76.     var 技能2 = npc.getTempData("技能2");
  77.     if (技能2 == "true") {
  78.           if (time2 >= Date.now()) {
  79.                         npc.getJob().setRotationX(2, 0);
  80.                         npc.getJob().setRotationY(2, 240);
  81.             var entity = npc.getSurroundingEntities(5);
  82.             for (a in entity) {
  83.               var EntityX = entity[a].getX();
  84.               var EntityZ = entity[a].getZ();
  85.               var sum = 60;
  86.               var r = 2;
  87.               for (var angle = 0; angle < 60; angle++) {
  88.                 var rad = (360 * (angle / sum)) * Math.PI / 180;
  89.                 var spawnX = EntityX + Math.sin(rad) * r;
  90.                 var spawnZ = EntityZ - Math.cos(rad) * r;
  91.                 if (entity[a] !== player) {
  92.                   for (b = 0; b < 12; b++) {
  93.                     world.spawnParticle("flame", spawnX, entity[a].y + b - 0.5, spawnZ, 0, 0, 0, 0, 5);
  94.                     world.spawnParticle("lava", player.x, player.y, player.z, 3, 3, 3, 0, 0);
  95.                   }
  96.                                   try{
  97.                   entity[a].addPotionEffect(2, 5, 255, true);
  98.                   entity[a].setBurning(20);
  99.                   entity[a].addPotionEffect(19, 0, 2, true);
  100.                                   }catch(err){}
  101.                 }
  102.               }
  103.             }
  104.           } else {
  105.             npc.removeTempData("time2");
  106.             npc.removeTempData("技能2");
  107.             ItemDive.setCustomName("§4§l炎界");
  108.             npc.giveItem(player,ItemDive);
  109.                                    npc.getJob().setRotationX(2, 180);
  110.             player.sendMessage("&b&l[替身]&f&l时限已到!");
  111.           }
  112.         }
  113. } else {
  114.   npc.setPosition(player.getX(), player.getY(), player.getZ());
  115.   npc.setAttackTarget(null);
  116.   npc.setVisibleType(1);
  117. }

  118. function shoot(player, Item, yaw, speed, pitch, damage, size, Is3D, Gravity, StickInWall, Rotating, notDestroyedOnEntityHit, glow, x, z) {
  119.   Byte = Java.type("java.lang.Byte")
  120.   EntityProjectile = Java.type("noppes.npcs.entity.EntityProjectile");
  121.   ScriptEntity = Java.type("noppes.npcs.scripted.ScriptEntity");

  122.   coordinate = dotForYPR(1, yaw, pitch, 0);
  123.   f = coordinate[0];
  124.   f1 = coordinate[1];
  125.   f2 = coordinate[2];

  126.   Projectile = new EntityProjectile(world.getMCWorld(), player.getMCEntity(), Item.getMCItemStack(), false);
  127.   Projectile.field_70159_w = f * speed;
  128.   Projectile.field_70181_x = f1 * speed;
  129.   Projectile.field_70179_y = f2 * speed;
  130.   Projectile.damage = damage;
  131.   Projectile.func_70096_w().func_75692_b(23, size)
  132.   Projectile.setIs3D(Is3D) //3D
  133.   Projectile.setHasGravity(Gravity) //重力
  134.   Projectile.setStickInWall(StickInWall) //插墙
  135.   Projectile.setRotating(Rotating) //旋转
  136.   if (notDestroyedOnEntityHit == true) {
  137.     Projectile.destroyedOnEntityHit = false //穿透
  138.   }
  139.   if (glow == true) {
  140.     Projectile.func_70096_w().func_75692_b(24, Byte.valueOf(1)) //发光
  141.   }
  142.   Projectile = new ScriptEntity(Projectile);
  143.   Projectile.setPosition(x, player.getY() + player.getMCEntity().func_70047_e(), z);
  144.   world.getMCWorld().func_72838_d(Projectile.getMCEntity());
  145.   return Projectile;
  146.   /*
  147.    *发射一个物品
  148.    *仅适用于1.7.10
  149.    *这不是一个独立方法
  150.    *ScriptItemStack Item:要发射的物品
  151.    *double yaw:yaw度数(-180~180)
  152.    *double pitch:pitch度数(-90~90)
  153.    *double damage:伤害点数
  154.    *double speed:速度
  155.    *String[] data:附加值
  156.    *返回抛射物对象
  157.    */
  158. }

  159. function dotForYPR(r, yawAngle, pitchAngle, rollAngle) {
  160.   JavaMath = Java.type("java.lang.Math");
  161.   coordinate = [0, 0, r] //新建向量 不要问我为什么向量取名coordinate
  162.   function rotateAroundAxisX(v, angle) {
  163.     angle = JavaMath.toRadians(angle);
  164.     cos = JavaMath.cos(angle);
  165.     sin = JavaMath.sin(angle);
  166.     y = v[1] * cos - v[2] * sin;
  167.     z = v[1] * sin + v[2] * cos;
  168.     return [y, z];
  169.   } //让向量绕X轴转angle度
  170.   function rotateAroundAxisY(v, angle) {
  171.     angle = -angle;
  172.     angle = JavaMath.toRadians(angle);
  173.     cos = JavaMath.cos(angle);
  174.     sin = JavaMath.sin(angle);
  175.     x = v[0] * cos + v[2] * sin;
  176.     z = v[0] * -sin + v[2] * cos;
  177.     return [x, z];
  178.   } //让向量绕Y轴转angle度
  179.   function rotateAroundAxisZ(v, angle) {
  180.     angle = JavaMath.toRadians(angle);
  181.     cos = JavaMath.cos(angle);
  182.     sin = JavaMath.sin(angle);
  183.     x = v[0] * cos - v[1] * sin;
  184.     y = v[0] * sin + v[1] * cos;
  185.     return [x, y];
  186.   } //让向量绕Z轴转angle度
  187.   temp = rotateAroundAxisY(coordinate, yawAngle)
  188.   coordinate[0] = temp[0];
  189.   coordinate[2] = temp[1];
  190.   temp = rotateAroundAxisX(coordinate, pitchAngle)
  191.   coordinate[1] = temp[0];
  192.   coordinate[2] = temp[1];
  193.   temp = rotateAroundAxisZ(coordinate, rollAngle)
  194.   coordinate[0] = temp[0];
  195.   coordinate[1] = temp[1];
  196.   //设置向量(繁琐 懒得优化了XD)
  197.   return coordinate;
  198.   //参考开源代码:https://github.com/Slikey/EffectLib/blob/master/src/main/java/de/slikey/effectlib/util/VectorUtils.java
  199.   /*
  200.    *根据yaw、pitch、roll求球上一点
  201.    *double r:半径
  202.    *double yawAngle:yaw角度
  203.    *double pitchAngle:pitch角度
  204.    *double rollAngle:roll角度
  205.    */
  206. }
  207. /*
  208. *主体部分
  209. *@Author Heer
  210. *著作权属于Heer Kaisair 2019/8/25起生效
  211. */
复制代码
好了就这么多由于太憨逼了,勿喷!

声明:你不能转载该帖你不能声称你是作者

回复

使用道具 举报

5

主题

23

帖子

358

积分

注册会员

Rank: 2

积分
358
人气
7 点
钻石粒
263 粒
贡献
0 点
论坛币
96 个
爱心
0 点

论坛注册会员

发表于 2019-9-21 20:05:20 | 显示全部楼层
???为什么第一段出问题了
回复

使用道具 举报

5

主题

23

帖子

358

积分

注册会员

Rank: 2

积分
358
人气
7 点
钻石粒
263 粒
贡献
0 点
论坛币
96 个
爱心
0 点

论坛注册会员

发表于 2019-9-21 20:06:50 | 显示全部楼层
赶紧补上:
npc.setTempData("替身",""+player.getName()+"");
npc.setTempData("释放","true");
ItemDive.setCustomName("§4§l炎界");
npc.giveItem(player,ItemDive);
ItemDive.setCustomName("§c§l离火");
npc.giveItem(player,ItemDive);
回复

使用道具 举报

14

主题

39

帖子

501

积分

大区版主

Rank: 7Rank: 7Rank: 7

积分
501
人气
14 点
钻石粒
651 粒
贡献
0 点
论坛币
87 个
爱心
0 点
发表于 2019-9-21 20:11:35 | 显示全部楼层
可还行,看得我眼花缭乱,用的不是随从么?
莫得
回复

使用道具 举报

5

主题

23

帖子

358

积分

注册会员

Rank: 2

积分
358
人气
7 点
钻石粒
263 粒
贡献
0 点
论坛币
96 个
爱心
0 点

论坛注册会员

发表于 2019-9-21 22:12:54 | 显示全部楼层
思望文宣 发表于 2019-9-21 20:11
可还行,看得我眼花缭乱,用的不是随从么?

并不是,只有设置一个副职业木偶
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2020-9-20 10:50 , Processed in 0.078251 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部