QManage.txt
文件作用
QManage.txt 是全局管理脚本文件。
当前项目中,这个文件位于:
Mir200\Envir\MapQuest_def\QManage.txt
这个文件常见承担下面几类职责:
- 人物登录时执行初始化逻辑
- 处理人物定时器标签
- 提供部分在线命令或功能入口标签
- 配合其他脚本文件做全局管理和状态初始化
如果玩家登录后初始化没有执行、定时器不触发、某些全局入口失效,通常都要先检查这里。
核心回调
当前已整理出的 QManage 核心回调包括下面这些:
| 标签 | 常见用途 |
|---|---|
[@OnStart] | 服务器启动触发 |
[@OnStop] | 服务器停止触发 |
[@OnInit] | 服务器初始化触发,执行时机通常早于 [@Login] |
[@Login] | 登录触发 |
[@Resume] | 离线登录触发 |
其他常见入口
除核心回调外,QManage.txt 里也常见下面这类入口:
[@OnTimer0]到[@OnTimer20][@Member]
这些标签不是每个项目都会全部使用,但它们也是 QManage.txt 中很常见的一组全局入口。
[@Login]
[@Login] 是登录触发入口,通常用于人物登录后的初始化处理。
这一段常见的处理内容包括:
- 设置或清理标记
- 加载硬盘变量
- 调用其他脚本文件
- 设置人物定时器
- 处理登录提示和初始化消息
可以直接这样理解:
- 玩家每次登录时,需要统一处理的逻辑,通常都会集中放在这里
- 如果登录后某个系统没有初始化,优先先查
[@Login]
[@OnStart]
[@OnStart] 是服务器启动触发入口,常用于脚本启动后的初始化逻辑。
这一段常被用来做全局系统启动时的准备动作,也常见对其他脚本的 #CALL 调用。
如果某套全局系统启动后就应该立即准备好,但没有进入正确状态,可以先检查这里。
[@OnStop]
[@OnStop] 是服务器停止触发入口,通常用于服务器停止前的收尾处理。
如果某些全局状态、统计信息或清理逻辑需要在停服前执行,通常会放在这里。
[@OnInit]
[@OnInit] 是服务器初始化触发入口,通常用于服务器初始化阶段的触发逻辑。
这个入口的执行时机通常早于 [@Login],更适合放启动后就要准备好的全局初始化内容。
[@Resume]
[@Resume] 是离线登录触发入口,通常用于离线登录后的处理逻辑。
如果项目里区分正常登录和离线恢复登录,这类差异处理通常会放在这里。
[@OnTimerX]
人物定时器脚本位于 QManage.txt,对应标签格式为:
[@OnTimer0]
[@OnTimer1]
...
[@OnTimer20]
常见用法是先在脚本中启动定时器,再由 QManage.txt 中的对应标签接收触发。
例如:
#ACT
SetScTimer 0 20
[@OnTimer0]
#ACT
SendMsg 5 "你目前位于 %m 的(%x:%y)"
如果定时器已经设置,但后续没有执行,优先检查两件事:
- 是否真的调用了
SetScTimer - QManage.txt 中是否存在对应编号的
[@OnTimerX]标签
[@Member]
QManage.txt 还可以提供 [@Member] 这类入口标签,用于承接部分在线命令弹出的对话或入口逻辑。
这类标签通常不是地图坐标触发,也不是 NPC 商人脚本,而是更接近“全局入口”。
与其他脚本文件的区别
这几个文件很容易混淆,可以直接这样理解:
- QManage.txt:登录、定时器、全局入口
- QFunction-0.txt:常规功能脚本入口
- QMapEvent-0.txt:地图事件相关脚本入口
- QChatMission-0.txt:聊天栏和任务导航相关脚本入口
如果问题出现在人物登录后、人物在线时或定时器周期内,优先看 QManage.txt;如果问题出现在地图事件或普通功能逻辑,再看对应脚本文件。
常见排查思路
如果 QManage.txt 相关逻辑不生效,可优先按下面顺序检查:
- 当前项目是否把 QManage.txt 放在
MapQuest_def目录下 - 入口标签名是否写对,例如
[@Login]、[@OnTimer0] - 是否有脚本通过
SetScTimer等命令真正触发了对应入口 #CALL指向的外部脚本文件是否真实存在- 登录初始化逻辑是否被前面的
BREAK、条件判断或地图判断提前截断
如果问题同时涉及地图任务或其他全局脚本联动,通常还要一起检查这些位置:
MapQuest_defQFunction-0.txtQMapEvent-0.txt
