传奇HERO引擎自定义变量无效与M2报错全排查指南

来源: 作者: 点击:
一、核心原因:未在M2中“声明”变量

HERO引擎的自定义变量(非P、G等系统变量)必须先声明后使用。直接写脚本调用会导致M2报“未定义”错误。

1.声明位置:必须在Mir200\Envir\MapQuest_Def\QManage.txt的[@Login]段(个人变量)或[@Startup]段(全局变量)中预先定义。
2.正确格式:
[@Login]
#ACT
VARIntegerHUMAN我的变量;声明个人数字变量
VARStringHUMAN我的名字;声明个人字符变量
LOADVARHUMAN我的变量..\QuestDiary\数据\变量保存.txt;读取存档

未执行上述VAR命令直接使用CHECKVAR或CALCVAR,M2必报错。

二、命名规则与语法避坑

1.严禁使用保留前缀:变量名绝对不能以P、G、A、I、M、N、S、D、U、T开头。这些是引擎内置变量,自定义变量使用它们会导致内存冲突或报错。
2.大小写敏感:HERO引擎脚本指令通常强制大写。若使用小写指令(如checkvar)或大小写混用,M2可能报语法错误。
3.字符限制:变量名尽量使用中文或字母,避免特殊符号(如$、&),且长度不宜过长(建议15字符内)。

三、M2功能开关与配置检查

变量无效(不报错但数值不变)通常是因为M2的变量功能未开启或数据库未保存。
1.开启功能:打开M2Server→“选项”→“参数设置”→“变量设置”。必须勾选“启用用户自定义变量”和“启用全局自定义变量”。修改后必须重启M2,仅点“重读”无效。
2.保存机制:自定义变量需配合SAVEVAR命令手动存档。若脚本中漏写SAVEVAR,下线后数据会丢失,表现为“变量无效”。
[@Main]
#ACT
CALCVARHUMAN我的变量+1
SAVEVARHUMAN我的变量..\QuestDiary\数据\变量保存.txt;必须保存


四、报错信息速查与修复

M2报错关键词原因分析解决方案

UndefinedVariable变量未声明在QManage.txt的[@Login]中添加VAR声明语句

TypeMismatch类型不匹配检查VAR声明的是Integer(数字)还是String(文本),运算时不能混用

SyntaxError语法错误检查指令是否全大写,变量名是否含非法字符或保留字

无报错但数据归零未保存/未读取登录脚本补LOADVAR,修改脚本后补SAVEVAR

五、完整脚本示例(可直接套用)

目标:实现上线读取历史计数,点击NPC计数+1并保存。
1.声明变量(QManage.txt):
[@Login]
#ACT
VARIntegerHUMAN点击次数
LOADVARHUMAN点击次数..\QuestDiary\玩家数据\点击记录.txt

2.使用变量(NPC脚本):
[@Main]
你已经点击了:<$HUMAN(点击次数)>次。\
<点击我/@增加>\
[@增加]
#ACT
CALCVARHUMAN点击次数+1
SAVEVARHUMAN点击次数..\QuestDiary\玩家数据\点击记录.txt
SENDMSG6点击次数+1,当前为:<$HUMAN(点击次数)>


最后步骤:修改完脚本后,关闭M2Server并重新启动,否则变量声明可能不加载。
[顶部]