mt_boss lists the server's timed boss regens from the MTF1 "bosses" query: alive/max, countdown, map-local position and period, paged by 8, with per-boss spawn reminders that only fire on a fresh alive snapshot. Teleport is left out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.5 KiB
3.5 KiB
AVA2 世界 Boss 追踪进度(v1)
2026-10-15。参考 AVA2 uitrack 的世界 Boss 页,只读。服务端见 metin2-server docs/FEATURE-BOSS-TRACK.md。没有移植 AVA2 的传送按钮(它会改变游戏进程);副本页已经由 mt_dungeons 实现。
与 AVA2 的差异
| 项目 | AVA2 | 本实现 |
|---|---|---|
| 数据来源 | 专用封包 | 原有 /mt_features 查询,种类 bosses(能力位 256) |
| 跨核心 | 不明(AVA2 服务端源码不在本机) | 每个核心用原 HEADER_GG_RELAY 广播自己的 Boss 刷新点,旧核心会忽略 |
| 传送 | 有 | 无 |
| 提醒 | 有 | 有:刷新后在聊天框提示,以服务器快照为准 |
窗口
- 入口:小地图左侧按钮列中的“Boss”(换线按钮下方)。
- 标题“世界Boss”,有“刷新”“上一页/下一页”按钮,每页 8 行。
- 每行显示:
[CHn]或[共享](频道 99)、Boss 名、地图名;- 状态(存活 a/m、刷新倒计时、即将刷新、不再刷新)、坐标(地图内坐标 /100,
ANYWHERE显示“随机位置”)、刷新周期; - “提醒:开/关”按钮,只能对未存活、有计时的 Boss 打开。
- 窗口打开时每 30 秒刷新一次。倒计时按服务器时间和本地经过时间计算。
- 名称:
- Boss 名取自
nonplayer.GetMonsterName; - 地图名用服务端地图编号 → 地图目录(
MAPS,取自服务端map/index)在localeInfo.MINIMAP_ZONE_NAME_DICT中查找; - 找不到时显示“地图N”。
- Boss 名取自
提醒
- 提醒的键是 (vnum, 地图, 频道, x, y)。
- 窗口关闭时,提醒过的 Boss 计时到期 2 秒后,客户端会主动查询一次。
- 只有新快照显示它存活时,聊天框才提示“X 已在 Y 刷新”,然后清除这条提醒;只到计时不提示。
- 服务器不再列出的 Boss 会被移出提醒。
- 离开游戏(换线、换角色)时,清空快照和提醒。
客户端
- 模块
mt_boss(src/platform/ScriptLib/BossScript.inc),在PythonBoot.cpp中安装,挂接game.GameWindow.Open/Close。 FeatureServiceScript.inc:- 新增
bosses种类和boss行解析(13 项,X/Y 有符号); - 校验 vnum/地图/周期非 0、频道 ≤ 255、alive ≤ max ≤ 255;
- 一次最多 128 行。
- 新增
证据
tests/wiki/test_boss.py(CTest:port.boss)共 5 项通过,覆盖:- 入口位置、各状态文字、坐标、分页;
- 只在确认刷新后提示;
- 未启用和空列表的提示;
- 关闭时复位;
- 地图表。
tests/wiki/test_service.py新增boss行和旧服务端(cap 255)返回 unsupported 的测试。- 2026-10-15 联机测试(203,macOS 原生客户端,账号 admin):
- 临时开了两个 channel5 核心:13040 放地图 1/21/41/68,13041 放地图 72/5。
- 从任一核心进入游戏,窗口都列出两个核心的 5 个 Boss(海盗 5001 ×2、2307、1192、5161),倒计时一致。
- 截图确认布局正常。测试后 channel5 已恢复原配置。
限制和未完成
- 只列出有定时刷新的 Boss 刷新点(regen 文件里
time > 0);由任务或事件刷出的 Boss 不在列表中。 - 共享频道(game99)的 Boss 要等 game99 换上新服务端才会出现。
- 副本内地图(如 5、72)在
MINIMAP_ZONE_NAME_DICT中没有名称,显示“地图N”。 - macOS 桌面客户端没有中文字体,窗口文字显示为
?。 - Android 真机测试未做。