5.6 KiB
自动狩猎:寻路、复活和独立技能配置
2026-10-01 用户授权的 PORT 玩法扩展。自动狩猎继续使用客户端状态机,攻击、施法、拾取、复活和骑乘通过原有接口与封包完成。
使用
F8 或移动端自动狩猎设置打开面板,选择已学会的技能。选择记录的是技能 ID,移动、删除、换页快捷栏不会改变自动施法选择。
- 自动复活:默认关闭。开启后死亡进入等待状态,10 秒后请求
/restart_here,未复活则每 10 秒重试;服务端保留复活限制。只有真实角色存活后才进入恢复,至少等待 5 秒且 HP 达到 70% 后继续。启用了自动红药时,恢复阶段临时将喝药阈值提高到 70%,不修改保存的正常战斗阈值;关闭红药则等待自然恢复。 - 下马施法:默认开启。普通技能在马上就绪时,请求
/ride下马,等待角色骑乘状态确实变为下马,施放选中的可用技能,等待技能动画结束后请求/ride骑乘。一次下马尽量施放多项就绪技能;马战技能保持在马上使用。 - 下马/骑乘确认最多等待 8 秒,不反复发送切换命令。下马失败后暂缓 30 秒再尝试;完成一次施法骑乘后至少间隔 10 秒再开启下一轮下马。
- 手动移动、世界点击或攻击会取消正在进行的自动骑乘流程并暂停狩猎。复活/恢复期间的这些手动操作会停止自动狩猎。停止、换地图和退出游戏清理自动动作。
骑乘依赖服务端原有 /ride 逻辑:普通马需要仍可骑乘;其他坐骑需要相应道具仍可用。原有命令可能优先选择已召唤的马或背包中第一件可用坐骑道具,不能保证恢复不同种类坐骑中的指定一种。
路径与目标
AutoHuntNavigation.h 提供自动狩猎专用、100 cm 网格的有界 A*,8 个方向移动,并对边、转角和简化后的路径逐段采样,禁止穿墙和切过封闭墙角。
运行时查询已经加载的 attr.atr 阻挡属性和场景对象碰撞体,使用 25 cm 的通行余量;未加载的格子视为不可通行。先尝试直达,不能直达时寻找绕障路径。普通目标和引怪目标均按优先级检查可达性,每轮最多检查 4 个候选,每个搜索最多扩展 3500 个节点。没有找到路径的候选短暂跳过 5 秒;实际移动无进展仍使用原有超时和较长黑名单。
追怪、拾取和返回挂机点都沿路径节点移动,最终攻击和拾取仍走原有流程。绕障时实际位置变化会更新进展时间,避免因为暂时远离目标而误判卡住;攻击技能施放前还检查当前直达路径,防止目标移动到墙后仍施法。
这是有界、基于当前加载数据的规划:很长的绕行、过窄通道、临时角色阻挡或场景数据不完整仍可能找不到路线。不会因找不到路径而退回穿墙直走。原有手动移动没有修改。
配置和代码
autohunt.cfg 升级为 AUTOHUNT2 格式,保存复活开关、下马施法开关和独立技能 ID。旧 7/8 字段格式仍可读取;进入游戏后将旧勾选快捷栏的技能迁移一次。技能界面只列出已学会且可主动使用的职业/马战技能,不列被动技能。
src/port/UserInterface/PythonPlayerAutoHunt.cpp:状态机、地图查询、复活和骑乘流程。src/port/UserInterface/AutoHuntNavigation.h:路径规划。src/platform/ScriptLib/AutoHuntScript.inc:设置面板、按技能名称勾选和状态显示。src/port/UserInterface/PythonPlayerModule.cpp:独立技能选择接口。
验证
host.autohunt_navigation:直达、绕墙、封闭墙、近距离隔墙、墙角、搜索预算、未加载数据、异常坐标。port.login_flow/MT_TEST_MOBILE=1 port.login_flow:真实 Python 面板和接口;技能选择不受快捷栏变化影响;关闭下马施法不发送骑乘命令;手动操作取消待确认的流程;模拟服务端角色重建确认下马后施法、施法后重新骑乘;默认死亡停止、可选原地复活请求和 HP 恢复门槛。- macOS
mt_native_render和 Android arm64main构建。
集成测试使用假服并模拟骑乘/存活确认;真实服务器拒绝条件、复杂地图上的长期寻路和真机长时间挂机尚需实测。
中文面板已用原生 Vulkan 渲染器检查手机布局,截图位于 build/qa/autohunt-enhance-ui/settings.png;截图使用模拟的可选技能列表,实际已学技能过滤由上述集成测试覆盖。
2026-10-02:拥堵与拾取抢占
自动狩猎检测近身且无静态阻挡的合法怪物。拾取期间出现这类怪物立即清除物品预约和路径,转为战斗;近身有两只以上怪物,或追击 1.5 秒没有进展时,也优先清理近身目标。保留当前近身目标,避免频繁换向。拥堵期间及解除后的 3 秒不补拉、不被外围石头抢占;首领过滤仍生效。暂缓的物品跳过 2 秒,后续重新扫描。
已处于原有可攻击距离且直线无静态阻挡时,直接进入攻击流程,不再要求走到固定 100 cm 站位。攻击进展由本地碰撞命中回调更新,不再由攻击动画刷新;这是客户端命中证据,并非服务器伤害确认。施法和眩晕期间保留等待。移动进展按到当前路点的最佳距离减少或通过路点更新,横向绕圈不刷新。物品尝试另有 15 秒总期限,超时清除路径和移动。
新增假服回归覆盖拾取转战斗和威胁消失后的重新拾取。真实密集怪群、骑乘和墙边拥堵需真机验证。本次不加入动态 A* 怪物障碍,也不修改服务端。