“传奇脚本问题”覆盖范围很广,从NPC无响应、定时器失灵到角色卡死、M2报错,均属于脚本逻辑故障。按问题特征分类定位,比泛泛问“怎么解决”有效得多。
### 报错类:M2引擎弹出红色脚本错误
这是最容易处理的脚本问题。M2Server窗口报错通常会直接给出错误类型与具体行号。常见报错包括“变量未声明”,这是因为脚本中调用了未在`!Setup.txt`或变量文件中声明的全局变量,需在文件头部补充`VAR`声明语句。“不存在地图编号”或“不存在物品名称”,则是在脚本命令中引用了`MapInfo.txt`或`Item.DB`中未定义的名称,只需更正为有效名称即可。“跳转标签不存在”,即脚本中使用了`GOTO @标签`,但当前脚本文件内没有对应的`[@标签]`段,需添加该段或将跳转指令指向正确位置。
### 卡死类:角色交互或执行后无反应
NPC点击无响应或对话无法进入下一页,通常是由于`[@main]`段末尾缺少`CLOSE`命令,或`#SAY`内容未正确关闭。在`[@main]`的末尾补充`CLOSE`即可释放对话资源。脚本执行到中途无任何反馈,则是`#ACT`段中的命令语法错误,比如`GIVE`命令缺少数量参数。检查引擎报错定位具体命令,补充缺失的参数。
### 循环类:角色原地转圈或服务器CPU飙升
死循环判定机制触发时,M2窗口会强制终止脚本并提示“脚本死循环”。最简单的处理方式是调整`!Setup.txt`中的`ScriptGotoCountLimit`数值,但这只是暂时绕行。根本解决方案是在`#ACT`中添加循环退出条件,比如限定搜索次数。还可将引发循环的`GOTO`替换为`DELAYGOTO`,或额外引入计时器。
### 定时器类:个人定时器冲突或重复触发
当QManage.txt或QFunction-0.txt中存在多个`SetOnTimer`同时运行时,若`定时器编号`重复则后一个会覆盖前一个。排查时逐一核对编号,确保每个编号全局唯一,并在`[@Login]`段中统一配置初始化定时器。定时器触发后执行了需要等待的命令也会导致响应迟缓,该类命令不应放在定时器段中。
### 变量类:变量不清理导致数据继承错误
角色购买物品或升级后数据异常,原因是`S`、`N`、`T`类型变量在操作完成后未被清理,下一次被调用时仍然继承上一次的数值。在`#ACT`操作结尾处,对使用过的变量执行`MOV S0`(清空字符变量)或`MOV N0 0`(重置数值变量)。人为修正角色数据的途径是:进入M2的“查看-在线玩家”功能,点击目标角色,在“变量”标签页中手动重置有问题的变量值。
传奇脚本报错与死循环:常见问题类型及排查路径
来源:
作者:
点击:

