4060586 发表于 2025-10-7 22:17:20

关于伤害显示的求助

大佬们,由于对客户端不改动不太懂,求助一下。
问题:我改了服务器上MagicDamageHandler.handlePacket中的攻击计算方式,
例子:角色原伤害100W,我在服务端改为1000.但是客户端还是显示原来的100W伤害,怪物实际掉血确是1000。 怎么同步客户端也显示1000的伤害呢?

江奈Mizuki 发表于 2025-10-7 22:45:18


你好~我也是新人,我按照我的理解回答一下,不一定完全准确。
冒险岛伤害的计算,是“客户端先计算并显示”了之后,信息传递到服务端,服务端做了校验以后进行扣血结算的。
你只改服务端算法,会影响到伤害的校验和真实的扣血结算,但是不会影响到你客户端如何显示。
你如果想真实地改伤害计算方式,只能想办法去修改客户端。

不过,一般大家需要调整伤害的话,会直接去改wz的damage节点(客户端的.wz/.img和服务端的.xml一定要一起改。可以用写轮眼改了前者以后直接导出.xml进行同步),直接调整技能的伤害,既不需要改服务端也不需要改客户端,非常容易。你是想改变伤害计算公式吗?为什么想要从底层来走呢?

4060586 发表于 2025-10-7 22:53:26

江奈Mizuki 发表于 2025-10-7 22:45
你好~我也是新人,我按照我的理解回答一下,不一定完全准确。
冒险岛伤害的计算,是“客户端先计算并显示 ...

按照目前显示应该就是你这说的这样了,应该是客户端单独计算了伤害,然后显示。怪物血量结算是从服务端获取的。

4060586 发表于 2025-10-7 22:55:09

江奈Mizuki 发表于 2025-10-7 22:45
你好~我也是新人,我按照我的理解回答一下,不一定完全准确。
冒险岛伤害的计算,是“客户端先计算并显示 ...

谢了。我修改的原因是应为,比如我把魔力激化给到了牧师,牧师不生效,因为攻击计算公式里这个技能没有牧师。看来只能单独加强技能伤害了。

leevccc 发表于 2025-10-7 23:06:51

就像你们讨论的,有些伤害是客户端本地计算完直接显示,然后发封包给服务端校验的。服务端可以追加额外的伤害并让客户端显示,但是并不能修改前面客户端已经显示了的伤害,要改的话需要在客户端上进行。

你可以让牧师的魔力激化效果,变成追加一段伤害,追加的伤害就是你要提升的伤害,这个服务端可以独立完成。

4060586 发表于 2025-10-8 07:55:23

leevccc 发表于 2025-10-7 23:06
就像你们讨论的,有些伤害是客户端本地计算完直接显示,然后发封包给服务端校验的。服务端可以追加额外的伤 ...

大佬你说的追加,是不改wz的情况下,只改服务端追加伤害吗?那追加的伤害怎么显示呢?

江奈Mizuki 发表于 2025-10-8 09:58:21

4060586 发表于 2025-10-8 07:55
大佬你说的追加,是不改wz的情况下,只改服务端追加伤害吗?那追加的伤害怎么显示呢? ...


按我的理解,是让服务端再发一个“角色对怪物造成魔法伤害”的封包,可以只对服务端源码进行修改来实现。
论坛里有自定义收发包教程,你可以参考一下。

foggy 发表于 2025-10-8 14:46:37

4060586 发表于 2025-10-7 22:55
谢了。我修改的原因是应为,比如我把魔力激化给到了牧师,牧师不生效,因为攻击计算公式里这个技能没有牧 ...

我记得客户端里魔力激化实现是比较直观的,基本是在耗蓝和伤害那边直接调用一个 get_amplification ,你可以沿着这个路径研究一下,然后在牧师那边也找节点hook一下调用,大概率可以直接实现你想要的功能

leevccc 发表于 2025-10-8 15:30:41

江奈Mizuki 发表于 2025-10-8 09:58
按我的理解,是让服务端再发一个“角色对怪物造成魔法伤害”的封包,可以只对服务端源码进行修改来实现。 ...

不用自定义封包,自带的封包就可以了,可以参考圣骑士的圣域技能,这个技能就是纯服务端计算伤害发给客户端显示的,客户端本身是不计算不显示的
页: [1]
查看完整版本: 关于伤害显示的求助