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

传奇服务端脚本错误排查与变量修正教程

热度:
一、错误定位与变量含义解析

报错信息解读

第一条错误信息表明,NPC“竞价地图”在执行MOV命令时出现问题。该NPC位于地图编号3(坐标330:321)。脚本试图将一个文本字符串“法师”赋值给变量A551,但变量类型或上下文不匹配导致失败。

第二条错误信息是INC命令错误。脚本试图将个人变量G507的数值增加2,但变量可能未被正确定义或初始化。

脚本变量命名规则

•A变量:全局变量,用于全服范围记录数据。命名格式为字母A+数字(如A551)。

•G变量:个人变量,与角色绑定,随角色保存。命名格式为字母G+数字(如G507)。

•S变量:脚本内部使用的临时变量,重启后清零。

二、变量初始化与脚本执行流程修正

变量初始化检查

在使用变量前,必须先进行初始化定义。查找QuestDiary文件夹下的变量初始化文件(如变量初始化.txt或#AutoRunNPC.txt)。在其中加入以下行,确保变量在服务器启动时被正确创建:
[@AutoRun]
#IF
#ACT
MOVA551
MOVG507

这将变量A551和G507初始化为空或0。重启服务器后变量生效。

MOV命令正确用法

MOV命令用于给变量赋值。你的脚本意图是给A551赋值为“法师”,但必须确认该变量是用于存储字符串。在脚本中应写为:
[@主流程]
#IF
#ACT
MOVA551法师
SENDMSG6已将A551设为:<$STR(A551)>

如果A551是数值变量,则不能赋值为“法师”,需改为数字。

INC命令使用前提

INC命令用于数字变量自增。变量G507必须是已存在的数字变量。在增加前,必须先通过MOV或CALCVAR命令为其赋予初始数值。正确脚本段落如下:
[@增加数值]
#IF
#ACT
MOVG5070;确保G507有初始值
INCG5072
SENDMSG6当前G507的值为:<$STR(G507)>

如果变量未初始化或类型错误,INC命令会报错。

三、文件位置与调用关系

NPC脚本存放位置

NPC脚本文件位于MirServer\Mir200\Envir\Market_Def文件夹。根据报错信息,你需要找到名为“竞价地图-3.txt”的文件(其中“3”是地图编号)。用记事本打开,查找包含MOVA551法师和INCG5072的命令行。

脚本调用顺序检查

在脚本中,变量的使用必须遵循“先定义,后使用”的原则。检查脚本逻辑,确保在INCG5072之前,G507已经被MOV命令赋予了初始数值。错误的顺序是常见报错原因。

修改脚本示例

假设你的原脚本段落有误,修正后应如下所示:
;原错误写法
MOVA551法师
INCG5072

;修正后写法
MOVA551法师
MOVG5070
INCG5072
;或者,如果G507已有值,则直接INC
;MOVA551法师
;INCG5072


修改完成后,保存文件。然后,在M2Server引擎的管理界面,依次点击“控制→重新加载→NPC脚本”,使修改立即生效,无需重启服务器。

四、高级调试与验证

输出变量值验证

在脚本中,在MOV和INC命令后添加提示信息,查看变量实际值:
#ACT
MOVA551法师
SENDMSG6A551赋值成功,值为:<$STR(A551)>
MOVG5070
INCG5072
SENDMSG6G507增加成功,值为:<$STR(G507)>

发送到聊天框的信息可验证脚本是否按预期执行。

变量文件检查

检查文件MirServer\Mir200\GlobalVal.ini(全局变量)和角色数据文件,确认变量A551和G507的实际存储值是否与脚本预期一致。若文件内变量值为乱码或格式错误,需手动清理。

脚本语法全面检查

使用M2Server自带的“脚本错误检查”功能(通常在“管理→文件管理”中),可批量扫描Market_Def和QuestDiary文件夹下的所有脚本,提前发现语法、参数和变量错误。

五、常见错误与解决方案对照表

错误现象根本原因解决方案

变量不存在未在启动脚本中初始化在#AutoRunNPC.txt中初始化变量

赋值类型不匹配给数值变量赋字符串值修改变量值为数字,或修改变量用途

变量值未刷新脚本执行后未重载在M2中重载NPC脚本

脚本逻辑错误顺序或条件判断有误逐段检查#IF和#ACT语句

若问题仍未解决,请提供完整的脚本段落,以便进一步分析条件判断、跳转命令与变量的相互作用。
[顶部]