Files
metin2-client/tools/server/autohunt-pull/README.md
T

4.6 KiB
Raw Blame History

自动狩猎的披风式引怪

用户授权的玩法扩展:自动狩猎自带,不需要或消耗隐月披风;选项为关、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 个真实队伍、冷却和队伍过滤。