Files

56 lines
4.6 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.
# 自动狩猎的披风式引怪
用户授权的玩法扩展:自动狩猎自带,不需要或消耗隐月披风;选项为关、3 组、10 组、20 组。
客户端不移动怪物或伪造命中,服务端使用披风 `AggregateMonster` 中的 `BeginFight` 路径建立追击。
原披风的道具消耗和随机拉怪行为保持不变;本功能按距离确定性选择最多 N 个队伍。
“组”是服务端实际的怪物 `CParty`,没有队伍的单只怪物算一组。同一队伍在范围内的成员一起拉取。
不足所选组数时拉取实际可用的组数。狩猎边界、披风引怪半径和扩展追击距离跟随 35/100/150 米设置。
服务端支持 500..15000 cm,并搜索半径覆盖的全部地图分区。普通怪物原有的 40 米追击限制保持不变;
被本命令选中的怪物获得对应玩家专属的临时追击距离,并同步扩展原有 50 米离巢返回限制。
每次引怪刷新 180 秒有效期,停止狩猎或修改范围/引怪选项会取消本玩家的扩展追击距离。
安全区、死亡/眩晕、低于 50% HP 或不能操作道具时不引怪;默认不拉首领。
队伍在范围内存在首领或正在攻击其他玩家的成员时,整组跳过。
请求 `/autohunt_pull <3|10|20> <500..15000> <boss:0|1> <request-id>` 走现有 CG_CHAT。
组数为 0 时取消本玩家的扩展追击距离,不重置冷却。
服务端每次发 `AutoHuntGather <id> mob <vid>`,最后发 `AutoHuntGather <id> done <groups>`,
走现有 CHAT_TYPE_COMMAND。每个消息很短,不受一条聊天封包长度限制。
客户端只接受当前请求的回包;停用、手动暂停后旧回包不生效。
双方有 10 秒冷却,服务端冷却以角色任务标记保存,重新登录或开关狩猎不能绕过。
客户端搜索时原地等待追击怪物进入近战距离,最多等待 8 秒;3 秒无回包则继续普通狩猎。
战斗中也会在 10 秒冷却后补拉,不必先杀完整批怪物;补拉不打断当前攻击。
尚未进入客户端视野的服务端确认 VID 按距离保留 35/100/150 秒,给怪物时间接近玩家。
界面显示本轮服务端确认的实际组数/设置组数,附近不足 20 组时不会产生额外怪物。
“优先石头”优先选择狩猎范围内的石头,没有石头再攻击普通怪物;石头不受首领开关过滤。
战斗中更改选项或出现石头时可以切换目标,优先攻击石头期间不发起新的引怪。
## 构建和回滚
`server.patch` 以 40250 的 `/usr/metin2/src` 为根,`patch -p1` 应用。
`group_select.h` 是基础补丁中新增的队伍选择头文件,`autohunt_pull.h` 保存当前扩展版本。
基础补丁保持不变,范围扩展在 `../autohunt-pull-range/server.patch`,须按顺序应用。
`../rebuild.sh` 已加入这两个补丁,沿用 build / deploy 流程,并处理基础头文件被后续补丁更新的状态检查。
2026-09-30 已在 192.168.21.203 编译并部署。原 `cmd.cpp`、`cmd_general.cpp`、旧 game
备份在 `/root/autohunt-pull-20260930/`(旧程序为 `game.before`)。回滚时停 game、恢复旧程序后启动;
不需要改数据库结构。原披风物品逻辑没有改动。
验证:`host.autohunt_pull` 直接编译本命令,检查 3/10/20 组、队伍成员数、排序、冷却、安全区、
低血量和其他玩家目标过滤。`port.login_flow` 通过真实 Python 设置和聊天封包验证请求、回包及原地等待,
桌面和移动模式均通过。真服临时角色实测回包为 **3 组、9 只怪物**,随后进入自动战斗。
临时角色、账号和关联数据已在刷新对应 DB 缓存后清理;auth/game/db 监听已检查。
macOS 原生包及 Android debug APK 已重新构建。
## 2026-09-30 修正
修复了石头与首领等级过滤混用、普通怪物优先于石头、必须清空旧怪物批次才再次引怪、
远处尚未同步的怪物 VID 被立即删除,以及近距离范围让 20 组请求只搜索很小区域的问题。
狩猎边界增加至 35/100/150 米,旧设置低于 35 米会提升到 35 米;3/10/20 组按当前狩猎半径选择最近队伍。
狩猎边界用于已同步角色的目标选择,超过当前视野的怪物需要先进入服务器同步范围。
范围扩展需要重新构建和部署服务端。
回归测试 `port.login_flow` 使用真实 Python 配置和消息链,覆盖较远石头优先于近处已引来的怪物、
关闭优先石头、战斗中开启优先石头、没有石头时回退打怪,以及 35/100/150 米设置和 20 组随狩猎距离拉怪。
`host.autohunt_pull` 继续验证服务端 3/10/20 个真实队伍、冷却和队伍过滤。