当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇与传奇世界脚本运行机制与执行顺序全解

热度:
脚本运行的核心逻辑:事件驱动

传奇(Mir2)与传奇世界(Woool)的服务端脚本本质是事件驱动。引擎(M2Server)监控游戏事件(如登录、升级、对话),触发对应的脚本文件,按从上到下、先检测后执行的顺序逐行解析。

单脚本内部执行顺序

在任何一个脚本文件(.txt)内,引擎遵循严格的线性解析规则:
1.顺序执行:从[@标签]开始,按行向下读取。先执行#IF条件判断,条件成立则执行#ACT动作,最后执行#SAY对话显示。
2.逻辑块结构:标准的#IF(条件)→#ACT(执行)→#SAY(对话)必须完整。若#IF不成立,则跳过#ACT执行#ELSEACT(否则执行)或进入下一段。
3.流程控制:BREAK用于结束当前段,阻止继续向下执行;GOTO@标签用于跳转到指定段落。

全局脚本文件的加载与触发顺序

不同功能的脚本文件在服务端启动和游戏过程中的执行优先级不同。以下是标准的触发链条:

触发时机/类型核心脚本文件(Mir2路径)核心脚本文件(传世路径)执行顺序与作用

服务端启动Robot.txt/AutoRunRobot.txtRobot.txt最先加载。初始化全服定时器,用于定时刷怪、全服公告等全局循环任务。

玩家登录QManage.txt(MapQuest_Def)LoginManage.txt(MapQuest_Def)第二步执行。角色进入游戏瞬间触发,用于初始化变量、发放首充、加载封号。

事件触发QFunction-0.txt(Envir)UserEvent.txt(Envir)第三步执行。响应升级、死亡、使用物品、穿戴装备等系统事件。

NPC交互Market_Def\*.txtMarket_Def\*.txt被动触发。当玩家点击NPC时,根据Merchant.txt配置加载对应脚本。

地图事件MapEvent.txtMapEvent.txt坐标触发。当玩家移动到特定地图坐标时自动触发。

注意:传奇世界脚本的架构与传奇Mir2高度相似,主要区别在于文件名(如传世多用LoginManage.txt代替QManage.txt)。

传奇(Mir2)脚本执行全流程

1.服务端启动阶段:Robot机器人

服务端启动时,优先读取Mir200\Envir\Robot.txt(或Robot_def\AutoRunRobot.txt)。
•作用:设定按秒(SEC)、分(MIN)、小时(HOUR)循环执行的任务。

•示例:#AutoRunNPCSEC10@每10秒,会每10秒执行一次RobotManage.txt中的[@每10秒]段。

2.玩家登录瞬间:QManage.txt

角色选择界面点击“开始”后,引擎立即执行Mir200\Envir\MapQuest_Def\QManage.txt中的[@Login]段。
•核心任务:

◦检测新人(ISNEWHUMAN)并发放新手装备。

◦加载保存的变量(LOADVAR)。

◦调用子脚本(CALL)进行封号设置。

3.游戏过程事件:QFunction-0.txt

该文件是全局事件监听器,根据不同的触发标签执行对应段落:
•升级触发:[@LevelUp],升级瞬间执行。

•死亡触发:[@PlayDie],被击杀后执行。

•使用物品:[@StdModeFuncX](X为物品库中的Anicount字段值)。

•挖矿/采集:[@Gather]。

4.NPC与任务脚本:Market_Def

当玩家点击NPC时,引擎根据Merchant.txt中的配置路径,加载Market_Def目录下的对应.txt文件。
•交互流程:从[@main]开始→玩家点击按钮(如<点我传送/@传送>)→跳转到[@传送]段→执行#ACT动作(如MAPMOVE)。

传奇世界(Woool)脚本运行差异

传奇世界引擎的逻辑与传奇Mir2基本一致,主要差异在于核心文件名:
•登录脚本:传世通常使用LoginManage.txt(路径:MapQuest_Def\LoginManage.txt)作为登录入口,功能同QManage.txt。

•事件脚本:传世使用UserEvent.txt处理升级、死亡等事件,功能同QFunction-0.txt。

•机器人脚本:同样使用Robot.txt进行定时任务调度。

脚本冲突与优先级规则

当多个脚本同时触发时(如登录时同时触发QManage和QFunction),引擎按固定优先级处理:
1.系统级脚本优先:Robot.txt(定时任务)>QManage.txt(登录)>QFunction-0.txt(事件)。
2.同文件内按标签顺序:在QFunction-0.txt中,若多个标签同时满足(如升级同时触发了[@LevelUp]和某个任务标签),则按文件内的物理顺序从上到下执行。
3.NPC交互最后:NPC脚本属于被动触发,优先级最低,需等待玩家主动点击。

调试技巧:如何查看执行顺序

若脚本不生效,可通过以下方法排查执行顺序:
1.加入调试信息:在怀疑未执行的脚本段开头加入SENDMSG6提示:已执行到XXX段,上线观察聊天框提示。
2.检查编码:所有脚本文件必须保存为ANSI编码,UTF-8编码会导致引擎无法解析,脚本直接不运行。
3.查看M2报错:若脚本语法错误(如括号不匹配),M2Server控制台会直接报“ScriptError”,并指出错误文件和行号。

掌握“Robot→Login→Event→NPC”这一核心链条,就能准确预判脚本的运行时机,避免变量未初始化或功能冲突的问题。
[顶部]