Files
metin2-client/tools/server/autohunt-pull

自动狩猎的披风式引怪

用户授权的玩法扩展:自动狩猎自带,不需要或消耗隐月披风;选项为关、3 组、10 组、20 组。 客户端不移动怪物或伪造命中,服务端使用披风 AggregateMonster 中的 BeginFight 路径建立追击。 原披风的道具消耗和随机拉怪行为保持不变;本功能按距离确定性选择最多 N 个队伍。

“组”是服务端实际的怪物 CParty,没有队伍的单只怪物算一组。同一队伍在范围内的成员一起拉取。 不足所选组数时拉取实际可用的组数。范围使用自动狩猎的范围设置,上限 5000 cm。 安全区、死亡/眩晕、低于 50% HP 或不能操作道具时不引怪;默认不拉首领。 队伍在范围内存在首领或正在攻击其他玩家的成员时,整组跳过。

请求 /autohunt_pull <3|10|20> <500..5000> <boss:0|1> <request-id> 走现有 CG_CHAT。 服务端每次发 AutoHuntGather <id> mob <vid>,最后发 AutoHuntGather <id> done <groups>, 走现有 CHAT_TYPE_COMMAND。每个消息很短,不受一条聊天封包长度限制。 客户端只接受当前请求的回包;停用、手动暂停后旧回包不生效。 双方有 10 秒冷却,服务端冷却以角色任务标记保存,重新登录或开关狩猎不能绕过。 客户端原地等待追击怪物进入近战距离,最多等待 8 秒;3 秒无回包则继续普通狩猎。

构建和回滚

server.patch 以 40250 的 /usr/metin2/src 为根,patch -p1 应用。 autohunt_pull.h 和 group_select.h 是补丁中两份新增头文件的源文件。 ../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 已重新构建。