幽冥冥灬
本帖最后由 幽冥冥灬 于 2023-2-14 10:52 编辑

RT

spigot 1.12.2,服务器为 RPG,安装了 AttributePlus 作为属性插件。
目前的情况是:玩家走路或切换地图都有极低几率卡假死(这个很难复现),以及切换装备时若同时回血和扣血,依旧会卡假死。

目前BBS上的插件均无效果,因为我这里的玩家的 NBT 数据 getFloat("AbsorptionAmount") 和 getFloat("Health") 均为正常数字,而非 NaN




副耳机
本帖最后由 副耳机 于 2023-2-14 11:02 编辑

你装的假死修复插件 都会有一个NBT前置插件 你需要先装前置插件启动服务器  才能装假死修复插件 不然没效果
可以安装NaNHealthFix  先加入NBTLibrary启动服务器 然后关服 再加入NaNHealthFix


幽冥冥灬
本帖最后由 幽冥冥灬 于 2023-2-14 11:06 编辑
副耳机 发表于 2023-2-14 10:58
你装的假死修复插件 都会有一个NBT前置插件 你需要先装前置插件启动服务器  才能装假死修复插件 不然没效果 ...

没用,事实上就是人物抽搐,NBT数据中的 AbsorptionAmount 为非NaN
什么都不装的情况下,重进就行了


副耳机
幽冥冥灬 发表于 2023-2-14 11:05
没用,事实上就是人物抽搐,NBT数据中的 AbsorptionAmount 为非NaN什么都不装的情况下,重进就行了
...

删除原先的NBTLibrary文件

幽冥冥灬
本帖最后由 幽冥冥灬 于 2023-2-14 11:13 编辑
副耳机 发表于 2023-2-14 11:06
删除原先的NBTLibrary文件

我现在用的是PowerNBT调出玩家NBT数据,之前已经试过NaNHealthFix了,那个无效。

目前一直都是 Float.valueOf(PowerNBT.getApi().read(player).getFloat("AbsorptionAmount")) 输出为正常数值,而非 NaN
除了人物抽搐外,其余什么都不影响,依旧会被正常击杀、可拾取掉落物品、打开箱子等

我目前想解决的就是这卡假死一样的抽搐问题


结冰的离季
看你的描述,所谓的同时设置导致异常很像线程安全问题,但是否导致该问题无法确定,如果你是开发者请尝试 同步设置数值的方法,如果不是反馈作者吧

幽冥冥灬
结冰的离季 发表于 2023-2-14 13:10
看你的描述,所谓的同时设置导致异常很像线程安全问题,但是否导致该问题无法确定,如果你是开发者请尝试  ...

就是死亡的瞬间恢复血量到正值,就会卡出假死状态

Neige
你说的是玩家呈现一个死亡的模型,但是并不像传统假死一样呈现无敌状态,是这个意思吗

幽冥冥灬
Neige 发表于 2023-2-14 18:03
你说的是玩家呈现一个死亡的模型,但是并不像传统假死一样呈现无敌状态,是这个意思吗 ...

yep。
实际上这样并不会触发任何伤害和死亡事件。

Neige
本帖最后由 Neige 于 2023-2-14 19:20 编辑
幽冥冥灬 发表于 2023-2-14 18:39
yep。
实际上这样并不会触发任何伤害和死亡事件。

我曾经操作healthscale(血条长度)时遇到过这种情况。
比如原版20血,血条长度为10心,我通过setHealthScale将其改变为1心,然后再设置回10心,再设置回1心。
这样客户端方面接收到的信息是:玩家受到9心伤害,玩家受到9心伤害。
从1心变10心的“加血”不会被客户端认知。于是最终客户端认为玩家承受了18心伤害,已经死亡,便呈现出了死亡模型,甚至还会弹一个死亡提示。
但客户端心里知道玩家还是活的,所以玩家运行正常。
你可以从这个方面入手进行研究,具体解决你问题的方法我并不知晓。

名副其实
尝试自行编写插件,当有玩家受到的伤害符合Neige所述的情况时将玩家强制击杀或请出服务器。
此条回复仅作为抛砖引玉,若答案符合要求,请给予 Neige 最佳答案而不是我。不要给我评分。

第一页 上一页 下一页 最后一页