传奇脚本添加后变量报错三步搞定MOV/INC命令错误

来源: 作者: 点击:

根据报错日志:
MOV A551 法师 错误

原因:字符串参数 法师 未加引号,引擎无法识别非数字内容。

修正:需改为 MOV A551 "法师"(字符串必须用英文双引号包裹)。
INC G507 2 错误

原因:变量 G507 未预先声明或类型冲突(G开头为全局数字变量,不可直接操作字符串)。

修正:需检查变量是否定义,并确保为整数类型。

📂 添加脚本的正确步骤

✅ 1. 定位NPC脚本文件
文件路径:D:\MirServer\Mir200\Envir\market_def\竞价地图-3.txt

(根据报错中的 NPC名称竞价地图+地图编号3 确定)。
操作:用记事本打开此文件,搜索报错坐标 (330:321) 找到问题脚本段。

✅ 2. 修正脚本命令格式

在对应位置修改命令:
错误原命令:

MOV A551 法师 → 修正为 → MOV A551 "法师" # 字符串加引号
INC G507 2 → 保留但需检查G507是否定义 # 若未定义需初始化

关键检查:
声明变量(若G507为全局变量):

在服务端 Mir200\GlobalVal.ini 中添加 G507=0 初始化。
字符串处理:所有非数字参数(如职业名称、物品名)必须加引号。

✅ 3. 解决引擎兼容性问题

若修正后仍报错:
更新引擎:老引擎(如0328版)不支持新命令,需升级到 1108引擎。

添加插件支持:

打开 Mir200\PlugList.txt,添加 945Engine.dll 并重启服务端。

⚠️ 避坑指南
变量命名规范

G0-G499:全局数字变量(需在GlobalVal.ini初始化)。

A0-A499:全局字符变量(保存字符串)。

禁止使用 P/D/M/N/S 开头的变量名(易引发冲突)。
新脚本添加流程

graph LR
A[新脚本放入 market_def 文件夹] --> B[检查变量声明]
--> C[字符串参数加引号]

--> D[用引擎工具测试语法]

--> E[重启服务端验证]


高频错误预防

字符串引号缺失 → 用文本工具批量搜索 MOV A 检查未加引号的参数。

变量未初始化 → 在 GlobalVal.ini 预定义所有 G 变量。

❓ 常见问题解答
Q:A551 和 G507 应该定义在哪里?

- A551 是全局字符变量,在脚本中直接使用(无需预定义);

- G507 是全局数字变量,需在 Mir200\GlobalVal.ini 中设置初始值(如 G507=0)。

Q:添加脚本后M2报“脚本死循环”怎么办?

- 修改 !setup.txt 中的 ScriptGotoCountLimit=1000(默认10太低)并重启。

Q:更新脚本后登录器黑屏?

- 补丁未生效:将 NewopUI.Pak 复制到客户端 Data 文件夹,并检查登录器配置器的 PAK 密码。

最终建议:修正后重启服务端,在游戏中触发NPC对话测试。若仍报错,需检查 M2Server 控制台输出的详细错误行号(如 QFunction-0.txt 第2078行)。