脚本命令MOV和INC出现参数错误通常由变量未定义、类型不匹配或语法不规范导致。具体表现为给字符型变量赋予非法值或对未声明的变量进行操作。
错误原因分析
根据错误信息,参数1:A551被赋值为"法师",参数1:G507被增加数值2。问题根源在于变量使用不符合规范:
• 变量类型混淆:A系列变量为全局字符型变量,只能存储字符串,而"法师"属于字符串值,但A551可能未被正确定义。
• 变量未声明:G507作为全局数字型变量,若未在环境中声明或初始化,直接执行INC操作会触发异常。
• 变量作用域错误:私人变量与全局变量混用,或变量超出了其有效作用域。
脚本变量使用规则
变量类型及特性:
• 全局变量(G0-G999):数字型,服务器重启后仍保存,存储在Mir200/GlobalVal.ini。
• 全局变量(A0-A999):字符型,适用于字符串数据存储,同样全局可读。
• 私人变量(P/D/M/N/S系列):仅在当前对话或特定条件下有效,下线或小退后重置。
变量命名与操作规范:
1. 变量使用前需确保其存在且类型匹配。字符变量赋值需用引号包围,例如MOV A551 "法师"。
2. 数字变量操作需确认变量已初始化,如INC G507 2前应存在MOV G507 0之类的初始化命令。
3. 避免变量名重复或与系统保留字冲突。自定义变量不宜以P、G、M、I、D、N、S、A开头。
错误修正步骤
检查变量定义状态:
• 在脚本文件中搜索"G507"和"A551",确认是否已预先定义。若未定义,需在使用前进行初始化。
• 对于全局变量,检查Mir200/GlobalVal.ini文件中是否存在对应变量记录。
修正语法与参数:
• 将字符赋值命令修改为:MOV A551 "法师",确保值为字符串格式。
• 在INC操作前添加初始化命令:MOV G507 0,防止对未定义变量进行数学运算。
验证脚本逻辑:
• 在QFunction-0.txt或相关NPC脚本中确认变量调用逻辑是否合理。
• 若变量需跨NPC使用,应优先采用G/U系列可保存变量,避免因作用域失效导致错误。
测试与调试:
• 在本地测试环境中逐行运行脚本,观察变量值变化是否符合预期。
• 利用M2引擎的脚本调试功能查看实时变量状态,定位具体报错环节。
脚本文件添加位置
根据错误信息中提到的"竞价地图"NPC,相关脚本应添加到以下目录:
• 主NPC脚本文件:MirServer/Mir200/Envir/Market_Def/下的对应文本文件。
• 功能脚本补充:若涉及地图交互,需在MapQuest_def目录下添加配套触发脚本。
• 全局变量声明:如需持久化存储变量,应在机器人脚本或初始化脚本中定义G507等变量。
关键注意事项:
• 修改前备份原始脚本文件,防止错误修改导致服务端无法启动。
• 严格按照变量作用域选择变量类型,临时数据使用私人变量,持久化数据使用全局变量。
遵循上述规则与步骤,可系统解决变量类型错误及脚本加载问题。若仍报错,需检查整个脚本逻辑链是否闭合。

