传奇M2脚本报错361:最高属性NPC点击无响应修复

来源: 作者: 点击:
日志中频繁刷新的TNormNpc::GetValValueAnCMD=361异常,直接导致游戏内“最高攻击”、“最高魔法”等NPC选项点击无反应。此问题并非脚本语法错误,而是引擎全局变量缺失或脚本逻辑与引擎不兼容。道术能看而其他选项报错,说明脚本调用了引擎未定义的变量。

一、报错根源分析

错误日志显示脚本试图获取<$HIGHDCINFO>(最高攻击)和<$HIGHMCINFO>(最高魔法)变量的值,但引擎返回异常(nCMD=361通常表示“获取变量值”操作失败)。核心原因如下:

1.变量未定义:老版本引擎或部分改版引擎不支持<$HIGHDCINFO>和<$HIGHMCINFO>这两个全局统计变量,仅支持<$HIGHSCINFO>(最高道术)。脚本强行调用不存在的数据,触发M2保护机制并报错。
2.数据为空:服务器内无在线玩家,或所有玩家攻击/魔法力均为0,导致统计函数无法返回有效值,脚本逻辑中断。

二、修复方案:修改NPC脚本

最彻底的解决方法是重写NPC脚本,移除对未定义变量的直接调用。不要试图修复引擎,而是修改脚本以适应你的引擎版本。

步骤1:定位报错脚本
进入服务端MirServer\Mir200\Envir\Market_Def目录,根据NPC名称找到对应的.txt脚本文件(如风云排行榜-3.txt)。

步骤2:替换脚本内容(关键)
找到[@最高攻击]和[@最高魔法]标签,将原有代码替换为以下兼容性写法。此写法先检测变量是否存在,若不存在则显示“暂无数据”。
[@最高攻击]
#IF
CHECKVARLIST..\QuestDiary\全局变量.txt<$HIGHDCINFO>
#ACT
messagebox↓↓↓↓↓↓↓↓当前在线最高攻击力人物↓↓↓↓↓↓↓↓\<$HIGHDCINFO>
break
#ELSESAY
暂无最高攻击力人物数据。\
<关闭/@exit>

[@最高魔法]
#IF
CHECKVARLIST..\QuestDiary\全局变量.txt<$HIGHMCINFO>
#ACT
messagebox↓↓↓↓↓↓↓↓当前在线最高魔法力人物↓↓↓↓↓↓↓↓\<$HIGHMCINFO>
break
#ELSESAY
暂无最高魔法力人物数据。\
<关闭/@exit>


步骤3:降级方案(如果上述仍报错)
如果替换后M2仍报361错误,说明你的引擎完全不具备统计最高攻击/魔法的功能。必须彻底删除相关变量,改用普通文本提示。
[@最高攻击]
#ACT
messagebox本服暂未开放最高攻击查询。\
break

[@最高魔法]
#ACT
messagebox本服暂未开放最高魔法查询。\
break


三、临时应急处理

如果无法立即修改脚本,可通过以下操作暂时屏蔽报错:

1.清空统计:在游戏中确保至少有1个攻击力不为0的玩家在线,避免统计函数因空值报错。
2.禁用NPC:在MerChant.txt中暂时注释或删除该排行榜NPC,阻止玩家点击触发报错。
3.重启M2:修改脚本后,必须在M2Server界面点击“重读NPC”或直接重启M2,修改才能生效。

四、深度排查建议

若必须使用“最高属性”功能,需确认引擎版本:
•GOM/GEE引擎:通常完整支持<$HIGHDCINFO>系列变量。报错可能是插件冲突或脚本格式错误(如多余空格)。

*Hero/翎风引擎:部分老版本不支持,需升级引擎或使用自定义全局变量(G0-G999)配合定时器自行统计。

总结:此错误是“脚本功能超出引擎能力”导致的。最稳妥的解决方法是删除或注释掉脚本中调用<$HIGHDCINFO>和<$HIGHMCINFO>的代码段,改用静态文本或关闭该查询功能。
[顶部]