网易我的世界论坛

标题: 在联机客户端监听到事件时,加入了游戏的主机都会监听到该事件 [打印本页]

作者: 恋雪喵    时间: 2020-8-15 23:33
标题: 在联机客户端监听到事件时,加入了游戏的主机都会监听到该事件
我使用的联机方式如下:
我开启了两个游戏,这里称A和B吧
A游戏通过mc studio的开发测试功能直接创建好地图并加载好组件
B游戏通过mod pc开发包的好友选项,进入A的游戏
我在客户端的监听中,监听了玩家捡起掉落物的事件,也就是ActorAcquiredItemServerEvent事件,随后在该事件的回调函数中输出了获得物品的玩家实体id和捡起的物品identifier
开启了两个客户端后会出现两个脚本测试日志,分别对应A游戏和B游戏
这之后某些奇怪的事情出现了
在A游戏里捡起一个物品后(例如捡起一个红石),A游戏的脚本测试日志正常的输出了A游戏内玩家的实体id以及红石的物品identifier
但是同时B游戏的脚本测试日志内也出现了B游戏内玩家的实体id以及红石的物品identifier
问题是B根本就没有捡起东西,只是因为A捡起了物品,B就同样认为B内的玩家也捡到了物品,并且B的脚本测试日志中显示捡起物品的玩家实体id是B中的玩家,被捡起的物品同样是红石
我希望知道这是怎么回事,当然,这也有可能是因为我用一个台电脑开了两个游戏导致的(可能上述两种启动游戏的方法调用的是一个游戏的文件,两个游戏用同一个游戏的文件导致出现了某些问题)
如果是因为我用一台电脑开了两个游戏导致的,那只要确定这一点就够了
感谢各位大神!
而如果不是因为这个原因,我希望得到具体的解答
在服务端没有出现这种情况,这肯定是由于加入游戏的主机不会加载服务端的组件

作者: cslhjdlh    时间: 2020-8-16 09:42
?ActorAcquiredItemServerEvent是服务的的事件啊
作者: cslhjdlh    时间: 2020-8-16 09:46
看错了,客户端也有,但是这是只要有一个玩家触发就会执行的事件啊,你要判断actor是否等于clientApi.GetLocalPlayerId()
作者: 恋雪喵    时间: 2020-8-16 16:22
好像确实打错了,打成了服务端的事件,但是为什么会出现这种只要有一个玩家触发,所有的客户端都会触发的事件呢,这是什么原理我蛮好奇的




欢迎光临 网易我的世界论坛 (http://mc.netease.com/) Powered by Discuz! X3.3