
PlayerExp(服务器端)
添加一个.expmulti命令,允许管理员向特定玩家授予临时的经验倍数(2倍至5倍)。激活期间,玩家会在聊天中收到自动的基础/加成经验分解通知,并在过期时收到最终提示。轻量级——仅当倍数激活时才运行轮询。
查看大图PlayerExp
一个用于《幻兽帕鲁》专用服务器的 UE4SS 模组,为特定玩家添加临时经验倍率系统——非常适合服务器活动、抽奖奖励或管理员授予的增益效果。
功能
.expmulti <玩家> <2-5> <时间>
为一名玩家激活指定时长的经验倍率。生效期间,该玩家每次获得经验(击杀幻兽、制作、建造等)时,都会自动在聊天中收到一条明细消息:
[SYSTEM]: 基础经验: 12 | 额外经验: 24
额外经验会实际加到玩家的经验值中(不仅仅是显示)——总获得经验 = 基础经验 × 倍率。
时间结束后,玩家会收到一条最终通知,系统自动停止:
[SYSTEM]: 经验倍率 3x 已结束。
参数:
<玩家>— 玩家名称(必须在线,区分大小写)。示例:Jawa<2-5>— 倍率数值,2 至 5。示例:3<时间>— 时长:数字 + 单位(s=秒,m=分钟,h=小时,d=天)。示例:10m、1h、1d
示例:
.expmulti Player01 3 10m
为玩家 "Player01" 激活 3 倍经验倍率,持续 10 分钟。
注意:此命令仅限管理员使用(会检查执行命令的玩家的管理员状态)。
运行要求
- 幻兽帕鲁专用服务器
- UE4SS — 版本:v3.0.1
- 幻兽帕鲁专用服务器版本:本模组开发与测试时所运行的版本(2026 年 8 月)。如果此后幻兽帕鲁有重大更新导致模组失效,很可能是游戏内部结构发生了变化——请查看是否有模组更新或提交问题报告。
安装方法
- 将 PlayerExp 文件夹解压到
Pal/Binaries/Win64/Mods/ - 在
Mods/文件夹中的mods.txt中添加以下一行:PlayerExp : 1 - 重启服务器
工作原理(供好奇者/贡献者参考)
- 聊天命令通过
PalPlayerController:EnterChat_Receive进行钩取(而非委托广播,后者在本游戏中已被证明不可靠)。 - 经验检测使用轮询方式(每隔几秒读取
GetExp()并与之前的数值比对),而非事件钩子,因为当前游戏版本中未找到可靠的经验获取事件钩子。轮询仅在玩家当前有活跃倍率时运行,因此在无人使用该功能时不会增加服务器负载。 - 给予额外经验使用
PalUtility:GiveExpToAroundPlayerCharacter,这是找到的唯一可手动给予经验的函数。该函数基于半径(参见下方的“已知问题”)。
已知问题 / 限制
- 额外经验是半径判定,并非精确定位到单个玩家。 未找到无需半径即可向单个特定玩家授予经验的游戏 API 函数。本模组使用最小可行半径(1 单位)来尽量降低恰好站在同一位置的另一名玩家也获得额外经验的可能性。模组也会自动检测并记录(到服务器控制台)此类情况,但无法 100% 避免。
- 检测通过轮询进行(最多约 2 秒延迟),而非即时生效,因为该游戏版本中未找到可靠的经验事件钩子。
- 如果玩家在倍率仍处于激活状态时下线,一旦服务器检测到其 PlayerController 不再有效,对该玩家的追踪将静默停止。
致谢
本模组在作者自己的服务器上直接开发与测试,并使用《幻兽帕鲁》的 SDK 导出输出(RE-UE4SS)来查找本模组所依赖的钩子与内部函数。
部分实现技术(通过 EnterChat_Receive 钩取聊天、通过 GetPlayerListDisplayMessages 查找玩家的模式、使用 SendSystemToPlayerChat 发送个人消息)受到 UE4SS 模组社区中流传的另一个幻兽帕鲁管理员命令模组的启发。感谢为该研究铺平道路的社区作者们。
更新日志
1.0.0
- 初始发布:
.expmulti功能,带自动的基础/额外经验通知。
还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。