Files

46 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 自动狩猎范围与服务器加成状态
2026-09-30 用户要求:引怪追击距离跟随狩猎距离;游戏左上角补充服务器经验、金币等加成。
本补丁在 `autohunt-pull/server.patch` 之后应用,基础补丁保持字节不变。
`../rebuild.sh check/build/deploy` 已处理增量补丁,并强制重新编译包含命令头文件的 `cmd_general.cpp`。
引怪支持 35/100/150 米,地图分区按半径完整遍历并使用快照;不扫描整张地图。
只有本命令引来的怪物获得指定玩家的临时追击距离,原有 40 米战斗目标限制和 50 米离巢限制
在这一上下文中扩展。停止狩猎取消扩展,180 秒不刷新自动过期,换目标/地图后恢复正常追击。
原披风道具及其他怪物 AI 保持不变;寻路仍受地图阻挡和怪物自身移动规则约束。
客户端每 15 秒请求 `/server_bonuses`;服务器按角色限制查询频率为至少 2 秒。
响应 `ServerBonuses <经验倍率> <金币数量倍率> <金币掉落倍率> <物品掉落倍率> <经验活动加成> <物品活动加成> <金币活动加成> <金币礼包活动加成>`。
前四项来自 `CHARACTER_MANAGER` 的全局实际倍率,后四项来自 `CPrivManager::GetPriv`,
与奖励结算使用的活动数据来源一致,包含适用于当前角色的国家、公会和角色特权。
全局 200% 与活动额外 +200% 分别显示,不假定它们相同,也不伪造持续时间。
标准 100% 倍率和零活动加成不显示;活动结束、变化和重新登录会更新图标。
客户端通过 `ServerBonusScript.inc` 的 PORT 模块向原有增益栏添加独立图标及中文提示。
原版角色/技能增益不被覆盖,打包的 `uiaffectshower.py` 和 `game.py` 保持不变。
Android 点击图标可看到提示,macOS 悬停显示;FPS 移到顶部中间避免遮挡图标。
203 源文件备份:`/root/autohunt-range-20260930/`,隔离构建:`/root/rebuild/20261001-074644/`。
部署及二进制回滚使用 `rebuild.sh`,不需要数据库迁移。
旧停服脚本可能使用缺失的 PID 文件:重建脚本对剩余进程补发 TERM 并等待正常退出,未使用强制终止。
验证:`host.autohunt_pull` 覆盖远处分区、100/150 米边界、指定玩家追击、取消及过期。
`port.login_flow` 覆盖真实 Python 配置和聊天封包链、石头优先与回退、加成图标新增/更新/移除;
桌面及 `MT_TEST_MOBILE=1` 均通过。Mi 8 Lite 真机在模拟服务器场景显示图标和“服务器经验 200%”提示。
macOS app 与 Android Release native/debug APK 已构建;APK 已安装到 63c36adb。
## 加成查询崩溃修正
首次部署后,真实角色执行 `server_bonuses` 导致地图进程 SIGSEGV:
`GetMobItemRate(NULL)` 在当前地区规则中调用 `CHARACTER::IsOverTime` 并解引用空角色。
最初的模拟服务器显示测试没有执行真实服务端的地区分支,因此未覆盖这一故障。
修正增加 `CHARACTER_MANAGER::GetGlobalMobItemRate()`,直接读取全局倍率;
奖励结算使用的角色倍率接口及地区规则保持不变。其余三个倍率接口原本就支持空角色。
`host.autohunt_pull` 现在直接执行实际的 `server_bonuses.h` 命令,模拟地区接口拒绝空角色,
检查全局物品倍率、四项活动加成、非玩家过滤和查询冷却。
故障期间已回滚到 `/root/backup-bin/20261001-075226/` 恢复服务,崩溃栈和 core 保存在
`/root/autohunt-range-20260930/`;修复构建目录为 `/root/rebuild/20261001-080615/`。