M2报脚本错误先不要重装端,按报错文件名和行号修最快。控制台红字通常带Scriptfile、Line、Unknowncommand、Missing#ACT、labelnotfound之类信息;同时看Mir200\Log下的M2Server日期.log、ScriptError.log、ErrorLog.txt,提取三样:哪个文件、第几行、什么命令或标签。常见文件归属:Market_Def下是NPC对话和商人,QuestDiary下是任务/登录/升级/活动,QFunction-0.txt、QManage.txt是全局触发,MonItems是怪物爆率,MapInfo/MapEvent是地图事件。锁定文件后再动手,别全目录瞎改。
编码和换行是隐形高发问题。所有Envir下txt脚本用ANSI/GBK保存,不用UTF-8、不用UTF-8BOM;用记事本另存为选ANSI,用Notepad++用“转换为ANSI”并确认换行是WindowsCRLF,不用LF。中文标点全换成英文半角,逗号、分号、括号、引号都按英文写;行尾隐藏空格、全角空格、零宽字符用Notepad++“显示所有字符”清掉。[@标签]必须顶格独占一行,前面不空格不Tab,例如[@main]、[@领取];#IF下一行写条件,#ACT下一行写执行,#SAY下一行写对话,#ELSEACT/#ELSESAY处理不满足分支,结束用#ENDIF。Hero/Blue里#IF与#ACT之间不插空行,#IF里只放检测命令不写执行命令,#ACT里只写执行不写条件。
结构错误按这几类改。缺#ACT:#IF下面直接写GIVE/TAKE/MAPMOVE会报Missing#ACT,补#ACT。缺#ENDIF:多条件分支只写#IF不写收尾,M2加载到后段会断,每个#IF配一个#ENDIF。标签跳转丢失:GOTO@xxx或#CALL[路径\文件.txt]@xxx,全文必须有对应[@xxx];CALL路径用相对Envir,例如[\QuestDiary\功能\奖励.txt]@领取,文件实际在Market_Def就会找不到。同目录多个文件都写[@Main]会跳转错乱,按功能加前缀如[@Rev_Main]、[@Shop_Main]。死循环报“脚本死循环”去看!Setup.txt的ScriptGotoCountLimit,默认可能很低,复杂跳转改大或用#CALL替代多层GOTO;根因还是循环没有终止条件。
命令按引擎对,不混用。Hero发物品用GIVE物品名数量、收物品用TAKE、检货币用CHECKGAMEGOLD、发货币按本端命令;GOM/GEE很多扩展命令、变量运算、插件命令老Hero/Blue不认,反过来Hero的老书写法直接搬GEE也可能参数不对。报Unknowncommand先查本引擎命令手册,再核对大小写和空格:GIVE屠龙1不能写GIVE屠龙1,MOVD0100不能写MOVD0100,CHECKITEM金币1000000参数个数按手册来。变量先声明后使用,HUMAN个人、GLOBAL全局、P0-P9临时、D0-D9/N持久、S字符串按引擎作用域走;跨天跨下线数据别用临时P变量,需要保存用SAVEVAR/LOADVAR并放对QuestDiary子目录。
物品、地图、怪物名必须和库一致。GIVE屠龙1但StdItems.DB里叫“屠龙刀”,M2报物品不存在;MAPMOVE0330330但MapInfo.txt没有地图号0或坐标越界,进图事件报错;MonItems里写“祖玛教主”但MonGen.txt刷怪名是“祖玛大教主”,爆率不生效。改脚本前直接抄数据库字段,不凭记忆写中文;有条件用物品数字ID、地图号数字更稳。NPC不显示或点开空白,还查Merchant.txt/MerChant.txt挂载:格式大体是NPC名地图号XY脚本文件初始标签,脚本文件放Market_Def且文件名、标签名、坐标、地图号四者对应;文件改了但NPC不变,是挂载行没重载或路径写错。
启动期脚本错误和运行时脚本错误分开处理。启动就报、M2起不来:关M2,按日志把报错文件逐行修;若不知道改了什么,先把整个Envir备份替换成原版Envir启动,能起说明是后期脚本冲突,再把原版Envir与自己改的用WinMerge/手工对比,按Market_Def、QuestDiary、QFunction、QManage、Robot、MonItems分段还原。进游戏点NPC才报:只修对应NPC文件,M2控制台重读NPC脚本、重读QF;QFunction/QManage改动建议整服重启。改完不生效看缓存:关M2删Mir200\Log下ScriptCache.dat(存在才删),再起M2;GOM类可在控制台重加载脚本,Hero/Blue老旧端直接重启最稳。
机器人脚本单独注意。Robot.txt、AutoRunRobot.txt、RobotManage.txt格式严格,自动执行段放QuestDiary\RobotManage,时间写00:00这种两位;CALL外部变量文件用相对路径,不用D:\绝对路径,绝对路径部分引擎直接拦。定时不触发先查M2“机器人设置”是否启用、间隔是否过小、标签是否在RobotManage目录;报变量作用域就把HUMAN改GLOBAL或按在线遍历写。
排错顺序收成一条:看M2红字和Log拿文件行号→Notepad++转ANSI、CRLF、清全角空格→查#IF/#ACT/#ENDIF、[@标签]、GOTO/#CALL→核对命令是否本引擎支持→核对物品/地图/怪物名与DB、MapInfo、MonGen一致→核对Merchant挂载路径→删ScriptCache重启或重读脚本→仍不行用原版Envir替换比对、分段注释定位。每次只改一个文件、改前备Envir整体压缩包,比一次性大改后满屏红字容易恢复。
编码和换行是隐形高发问题。所有Envir下txt脚本用ANSI/GBK保存,不用UTF-8、不用UTF-8BOM;用记事本另存为选ANSI,用Notepad++用“转换为ANSI”并确认换行是WindowsCRLF,不用LF。中文标点全换成英文半角,逗号、分号、括号、引号都按英文写;行尾隐藏空格、全角空格、零宽字符用Notepad++“显示所有字符”清掉。[@标签]必须顶格独占一行,前面不空格不Tab,例如[@main]、[@领取];#IF下一行写条件,#ACT下一行写执行,#SAY下一行写对话,#ELSEACT/#ELSESAY处理不满足分支,结束用#ENDIF。Hero/Blue里#IF与#ACT之间不插空行,#IF里只放检测命令不写执行命令,#ACT里只写执行不写条件。
结构错误按这几类改。缺#ACT:#IF下面直接写GIVE/TAKE/MAPMOVE会报Missing#ACT,补#ACT。缺#ENDIF:多条件分支只写#IF不写收尾,M2加载到后段会断,每个#IF配一个#ENDIF。标签跳转丢失:GOTO@xxx或#CALL[路径\文件.txt]@xxx,全文必须有对应[@xxx];CALL路径用相对Envir,例如[\QuestDiary\功能\奖励.txt]@领取,文件实际在Market_Def就会找不到。同目录多个文件都写[@Main]会跳转错乱,按功能加前缀如[@Rev_Main]、[@Shop_Main]。死循环报“脚本死循环”去看!Setup.txt的ScriptGotoCountLimit,默认可能很低,复杂跳转改大或用#CALL替代多层GOTO;根因还是循环没有终止条件。
命令按引擎对,不混用。Hero发物品用GIVE物品名数量、收物品用TAKE、检货币用CHECKGAMEGOLD、发货币按本端命令;GOM/GEE很多扩展命令、变量运算、插件命令老Hero/Blue不认,反过来Hero的老书写法直接搬GEE也可能参数不对。报Unknowncommand先查本引擎命令手册,再核对大小写和空格:GIVE屠龙1不能写GIVE屠龙1,MOVD0100不能写MOVD0100,CHECKITEM金币1000000参数个数按手册来。变量先声明后使用,HUMAN个人、GLOBAL全局、P0-P9临时、D0-D9/N持久、S字符串按引擎作用域走;跨天跨下线数据别用临时P变量,需要保存用SAVEVAR/LOADVAR并放对QuestDiary子目录。
物品、地图、怪物名必须和库一致。GIVE屠龙1但StdItems.DB里叫“屠龙刀”,M2报物品不存在;MAPMOVE0330330但MapInfo.txt没有地图号0或坐标越界,进图事件报错;MonItems里写“祖玛教主”但MonGen.txt刷怪名是“祖玛大教主”,爆率不生效。改脚本前直接抄数据库字段,不凭记忆写中文;有条件用物品数字ID、地图号数字更稳。NPC不显示或点开空白,还查Merchant.txt/MerChant.txt挂载:格式大体是NPC名地图号XY脚本文件初始标签,脚本文件放Market_Def且文件名、标签名、坐标、地图号四者对应;文件改了但NPC不变,是挂载行没重载或路径写错。
启动期脚本错误和运行时脚本错误分开处理。启动就报、M2起不来:关M2,按日志把报错文件逐行修;若不知道改了什么,先把整个Envir备份替换成原版Envir启动,能起说明是后期脚本冲突,再把原版Envir与自己改的用WinMerge/手工对比,按Market_Def、QuestDiary、QFunction、QManage、Robot、MonItems分段还原。进游戏点NPC才报:只修对应NPC文件,M2控制台重读NPC脚本、重读QF;QFunction/QManage改动建议整服重启。改完不生效看缓存:关M2删Mir200\Log下ScriptCache.dat(存在才删),再起M2;GOM类可在控制台重加载脚本,Hero/Blue老旧端直接重启最稳。
机器人脚本单独注意。Robot.txt、AutoRunRobot.txt、RobotManage.txt格式严格,自动执行段放QuestDiary\RobotManage,时间写00:00这种两位;CALL外部变量文件用相对路径,不用D:\绝对路径,绝对路径部分引擎直接拦。定时不触发先查M2“机器人设置”是否启用、间隔是否过小、标签是否在RobotManage目录;报变量作用域就把HUMAN改GLOBAL或按在线遍历写。
排错顺序收成一条:看M2红字和Log拿文件行号→Notepad++转ANSI、CRLF、清全角空格→查#IF/#ACT/#ENDIF、[@标签]、GOTO/#CALL→核对命令是否本引擎支持→核对物品/地图/怪物名与DB、MapInfo、MonGen一致→核对Merchant挂载路径→删ScriptCache重启或重读脚本→仍不行用原版Envir替换比对、分段注释定位。每次只改一个文件、改前备Envir整体压缩包,比一次性大改后满屏红字容易恢复。

