PvPRates - 服务器端 PvP 缩放

PvPRates - 服务器端 PvP 缩放

调整专用服务器上的PvP伤害、护甲效果以及帕鲁对玩家的伤害。连接的客户端无需安装任何内容。此模组替换了较旧模组所依赖的ApplyDamageForHP钩子,而该钩子已在游戏版本0.6.0中被Pocketpair移除。

功能说明

PvPRates 可在专用服务器上调整玩家对战(PvP)的数值:

  • PvP 伤害:玩家对彼此造成的伤害
  • 护甲效果:玩家伤害中的护甲效能——调低数值可降低装备影响
  • 武器威力:PvP 中的武器强度
  • 帕鲁对玩家伤害

每项设置都是游戏原始数值的乘数,因此 1.0 表示完全保留原版数值

本模组为 仅服务端 版本。连接的客户端无需安装此模组。

为何存在

大多数旧版 PvP 伤害模组通过挂钩以下函数来缩放伤害:

/Script/Pal.PalDamageReactionComponent:ApplyDamageForHP

并在回调中重写 DamageResult.Damage。

该 UFunction 已不复存在。 Pocketpair 在游戏版本 0.6.0 中移除了它,连同 PalDamageReactionComponent:ProcessDamage_ToServer。在 1.0 版本中,挂钩完全无法注册,UE4SS 启动时会记录错误,伤害缩放功能静默失效:

Tried to register a hook with Lua function 'RegisterHook' but no UFunction
with the specified name was found.
Function Name: /Script/Pal.PalDamageReactionComponent:ApplyDamageForHP

已在 v1.0.1.100619 版本通过运行时枚举类(UStruct:ForEachFunction)验证。PalDamageReactionComponent 上保留了 26 个函数(如 SlipDamage、PlayDamageReaction、MulticastDamageReact 等),但 ApplyDamageForHP 和 ApplyDamageForMP 均不存在。

1.0 版本转而将 PvP 缩放功能暴露为 BP_PalGameSetting_C 上的普通属性,本模组直接写入这些属性,无需挂钩伤害路径。

给其他模组作者的注意事项

  • CDO 路径 /Script/Pal.Default__PalGameSetting 报告的 PlayerVsPlayer_DamageRate = 1.0。这不是 游戏实际使用的数值。实时 BP_PalGameSetting_C 实例保存的是真实值 0.3。请写入实例,而非 CDO。
  • 1.0 版本测得的原始数值:PlayerVsPlayer_DamageRate 0.3、PlayerVsPlayer_DefensePower 0.25、PlayerVsPlayer_WeaponPower 1.0、PalToPlayerDamageRate 0.5。
  • 在专用服务器上,ClientRestart 永远不会触发。请使用 ServerAcknowledgePossession,并为尚未有玩家加入的服务器设置定时回退机制。
  • 模组会捕获每个原始数值一次,并始终基于该基线计算,因此多次触发不会导致数值积累。

安装方法

  1. 为《幻兽帕鲁》安装 UE4SS。
  2. 将 PvPRates 文件夹放入 Pal/Binaries/Win64/ue4ss/Mods/ 目录。
  3. 编辑 PvPRates/Scripts/config.lua 文件。
  4. 重启服务器。

在 Pal/Binaries/Win64/ue4ss/UE4SS.log 中确认成功:

[PvPRates] PlayerVsPlayer_DamageRate: 0.3000 -> 0.6000  (x2.0000)
[PvPRates] applied 4 setting(s) via NotifyOnNewObject

要求

仅需 UE4SS(幻兽帕鲁版本),无需其他依赖。

许可协议

MIT 许可。可随意拆分、重用,无需询问。