切换风格

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

4

主题

22

帖子

454

积分

注册会员

Rank: 2

积分
454
人气
7 点
钻石粒
644 粒
贡献
1 点
论坛币
101 个
爱心
0 点

论坛注册会员

[1.7.10][ECMA]真隐身——让你完全人间蒸发[复制链接]
发表于 2020-4-3 18:09:31 | 显示全部楼层 |阅读模式
脚本例子
脚本版本: 1.0
适用版本: 1.7.10 
编写语言: ECMA
最后更新: 2020-04-03
代码版权: 弱版权

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

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

x
本帖最后由 star丶星 于 2020-4-3 18:24 编辑

呐,这里是星星,最近闲的没事更新了一下More Event,发现销量并不可观,就写了个脚本让带火更新更新。
原版的隐身药水并没有什么用处,穿一身装备连瞎子都能看见你。
而这个隐身脚本,可以让你完全人间蒸发,除了你自己以外,谁也看不见你,而且也打不到你。
你可以用它来坑你服务器里的玩家,也可以用来魔改一个隐藏其他玩家的功能。
在版权这边不做过多限制,只要改两个字你就可以拿去倒卖了,葱葱葱。

方法1
直接将玩家从其他玩家的客户端删除
var S13PacketDestroyEntities = Java.type("net.minecraft.network.play.server.S13PacketDestroyEntities");
sendPacketToPlayersExcept(player, new S13PacketDestroyEntities(player.getMCEntity().func_145782_y()));
//发包让其他玩家从客户端中删除隐身玩家
function sendPacketToPlayersExcept(player, packet) {
 var players = world.getAllServerPlayers();
 for(var x = 0 in players) {
  if(players[x].getName() == player.getName()) {
   continue;
  }
  players[x].getMCEntity().field_71135_a.func_147359_a(packet);
 }
}



方法2
让其他玩家不加载隐身的玩家
PS:此方法需要1.2.4及更高版本的More Event
var HotNPC = Java.type("mchhui.hotnpc.HotNPC");
var Tempdata = Java.type("mchhui.hotnpc.utlis.Tempdata");
var tempdata = HotNPC.tempdata;
var listeners;
var listenerName = ["Invisible-SendPacketListener"];
var StoreddataManager = Java.type("mchhui.hotnpc.utlis.StoreddataManager");
if (!tempdata.has("listeners")) {
  tempdata.set("listeners", new Tempdata());
}
listeners = tempdata.get("listeners");
if (!listeners.has(listenerName[0])) {
//监听发包事件
 listeners.set(listenerName[0], listenEvent("star.moreevent.event.network.PacketEvent.Send", "HIGHEST",
  function (event) {
   try{
    var S0CPacketSpawnPlayer = Java.type("net.minecraft.network.play.server.S0CPacketSpawnPlayer");
    //判断包是不是生成玩家
    if(event.packet instanceof S0CPacketSpawnPlayer) {
     var gameprofile = event.packet.getClass().getDeclaredField("field_148955_b");
     gameprofile.setAccessible(true);
     gameprofile = gameprofile.get(event.packet);
     //判断玩家ID
     if(gameprofile.getName() == "所有人的爹_星星" && event.handler.field_147369_b.func_70005_c_() != "所有人的爹_星星")
      //取消事件
      event.setCanceled(true);
    }
   }catch(e){npc.say(e)}
  }
 ))
 npc.say("§7[隐身]§f发包监听注册成功")
}
//unListenEvent(listeners.get(listenerName[0]).getEventType(),listeners.get(listenerName[0]).getListener(),listeners.get(listenerName[0]).getBus());
//listeners.remove(listenerName[0]);[/font][/backcolor][/color]
[color=#008000][backcolor=rgb(255, 255, 255)][font=MicroSoft Yahei,Tahoma,Helvetica,]function Listener(eventType, listener, bus) {
  var MinecraftForge = Java.type("net.minecraftforge.common.MinecraftForge");
  this.eventType = eventType;
  this.listener = listener;
  this.bus = (bus == null) ? MinecraftForge.EVENT_BUS : bus;
  this.getEventType = function () {
    return this.eventType;
  }
  this.getListener = function () {
    return this.listener;
  }
  this.getBus = function () {
    return this.bus;
  }
}
/**
*EventListener listenEvent(String eventType,String priority,function listener)
*-eventType:你要监听的事件的类路径 如net.minecraftforge.event.ServerChatEvent
*-priority:你的事件优先级 从低到高LOWEST LOW NORMAL HIGH HIGHEST
*-listener:事件方法
*-bus:你可以指定EventBus
*Return:
*-Listener:监听器
*监听事件并返回监听对象
*/
function listenEvent(eventType, priority, listener, bus) {
  var Event = Java.type(eventType);
  try {
    var IEventListener = Java.type("net.minecraftforge.fml.common.eventhandler.IEventListener");
    var EventPriority = Java.type("net.minecraftforge.fml.common.eventhandler.EventPriority");
  } catch (err) {
    var IEventListener = Java.type("cpw.mods.fml.common.eventhandler.IEventListener");
    var EventPriority = Java.type("cpw.mods.fml.common.eventhandler.EventPriority");
  }
  var MinecraftForge = Java.type("net.minecraftforge.common.MinecraftForge");
  var event = new Event();
  if (priority == "LOW") {
    priority = EventPriority.LOW;
  }
  if (priority == "HIGH") {
    priority = EventPriority.HIGH;
  }
  if (priority == "NORMAL") {
    priority = EventPriority.NORMAL;
  }
  if (priority == "LOWEST") {
    priority = EventPriority.LOWEST;
  }
  if (priority == "HIGHEST") {
    priority = EventPriority.HIGHEST;
  }
  var EventListener = Java.extend(IEventListener, {
    invoke: listener
  });
  listener = new EventListener();
  var bus = (bus == null) ? MinecraftForge.EVENT_BUS : bus;
  var busID = bus.class.getDeclaredField("busID");
  busID.setAccessible(true);
  busID = busID.getInt(bus);
  event.getListenerList().register(busID, priority, listener);
  return new Listener(eventType, listener, bus);
}
/**
*void unListenEvent(String eventType,IEventListener listener,EventBus bus)
*-eventType:事件的类路径 如net.minecraftforge.event.ServerChatEvent
*-listener:事件方法
*-bus:你可以指定EventBus
*取消监听事件
*/
function unListenEvent(eventType, listener, bus) {
  var Event = Java.type(eventType);
  var MinecraftForge = Java.type("net.minecraftforge.common.MinecraftForge");
  var event = new Event();
  var bus = (bus == null) ? MinecraftForge.EVENT_BUS : bus;
  var busID = bus.class.getDeclaredField("busID");
  busID.setAccessible(true);
  busID = busID.getInt(bus);
  event.getListenerList().unregister(busID, listener);
}[/font][/backcolor][/color]
[color=#008000][backcolor=rgb(255, 255, 255)][font=MicroSoft Yahei,Tahoma,Helvetica,]


版权声明:
1.你可以随意转载此贴,但请注明出处
2.只要你进行了一些修改,你就可以说自己是作者

附件:
More Event-1.2.4.zip (9.65 KB, 下载次数: 10)

评分

参与人数 2人气 +3 钻石粒 +40 收起 理由
1802059294 + 1 赞一个!
Guai_Shou + 2 + 40 赞一个!

查看全部评分

我是憨批
回复

使用道具 举报

1

主题

5

帖子

47

积分

论坛萌新

Rank: 1

积分
47
人气
-1 点
钻石粒
57 粒
贡献
0 点
论坛币
14 个
爱心
0 点

论坛注册会员

发表于 2020-4-3 18:10:37 | 显示全部楼层
NB大佬NB

评分

参与人数 1人气 +1 钻石粒 +1 收起 理由
star丶星 + 1 + 1

查看全部评分

回复

使用道具 举报

0

主题

1

帖子

6

积分

论坛萌新

Rank: 1

积分
6
人气
0 点
钻石粒
14 粒
贡献
0 点
论坛币
1 个
爱心
0 点
发表于 2020-4-5 14:32:34 | 显示全部楼层
more event里面会有对应开启功能的选项么,建议做一个
回复

使用道具 举报

4

主题

22

帖子

454

积分

注册会员

Rank: 2

积分
454
人气
7 点
钻石粒
644 粒
贡献
1 点
论坛币
101 个
爱心
0 点

论坛注册会员

发表于 2020-4-6 20:13:10 | 显示全部楼层
2248994140 发表于 2020-4-5 14:32
more event里面会有对应开启功能的选项么,建议做一个

?不是很懂你在说什么
我是憨批
回复

使用道具 举报

4

主题

22

帖子

454

积分

注册会员

Rank: 2

积分
454
人气
7 点
钻石粒
644 粒
贡献
1 点
论坛币
101 个
爱心
0 点

论坛注册会员

发表于 2020-4-8 08:28:24 | 显示全部楼层
2248994140 发表于 2020-4-5 14:32
more event里面会有对应开启功能的选项么,建议做一个

可以详细说一下是什么东西吗
我是憨批
回复

使用道具 举报

5

主题

23

帖子

358

积分

注册会员

Rank: 2

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

论坛注册会员

发表于 2020-4-11 21:56:46 | 显示全部楼层
本帖最后由 1370698539 于 2020-4-11 22:01 编辑

星星NB!!!
回复

使用道具 举报

5

主题

23

帖子

358

积分

注册会员

Rank: 2

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

论坛注册会员

发表于 2020-4-11 22:00:36 | 显示全部楼层
星星NB!!!!!
回复

使用道具 举报

0

主题

19

帖子

126

积分

论坛萌新

Rank: 1

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

论坛注册会员

发表于 2020-4-24 00:50:41 | 显示全部楼层
用了之后还能交互对吧?
回复

使用道具 举报

4

主题

22

帖子

454

积分

注册会员

Rank: 2

积分
454
人气
7 点
钻石粒
644 粒
贡献
1 点
论坛币
101 个
爱心
0 点

论坛注册会员

发表于 2020-4-24 08:54:27 | 显示全部楼层
丨小学妹丨小舞 发表于 2020-4-24 00:50
用了之后还能交互对吧?

用了之后能碰别人,别人碰不到你
我是憨批
回复

使用道具 举报

0

主题

2

帖子

114

积分

论坛萌新

Rank: 1

积分
114
人气
0 点
钻石粒
23 粒
贡献
0 点
论坛币
3 个
爱心
10 点

论坛注册会员

发表于 2020-5-4 21:18:49 | 显示全部楼层
这个还是蛮牛批的,1.12可以用吗
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2020-9-20 03:28 , Processed in 0.090864 second(s), 32 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部