查传奇脚本错误,先分两类:一类是引擎直接报错的语法/加载问题,一类是能跑但能刷元宝、重复领奖、越权执行的逻辑漏洞。脚本查看器只是把问题标出来,真要处理还得人工看逻辑。
一、先抓日志,别上来就信查看器
服务端这几个地方比查看器更准:
• Mir200\Log\ScriptLog.txt:脚本错误、第几行、哪个文件
• M2Server 控制台:死循环、标签未定义、CALL 路径找不到
- 数据库/物品库:GIVE 的物品名和 Items 里对不上,也会表现成“脚本没反应”
• MerChant.txt / Market_Def:NPC 没挂上脚本,不是脚本错,是配置错
日志里常见提示:
• 第 132 行 未知命令 CHECKLEVE → 拼错,应是 CHECKLEVELEX
• 标签 [@GetAward] 未定义 → CALL 过去但目标文件没这个段
• 脚本死循环 NPC:泡点 命令:GOTO @Loop → 没终止条件
- 文件不存在:QuestDiary\活动\签到.txt → 路径改了但 CALL 没改
二、脚本查看器找到漏洞后,按这个顺序来
1. 备份
改之前把文件另存成 NPC_原版.txt、回收_20260927.txt。别在原件上直接梭。改炸了能回滚,比任何查看器都管用。
2. 看漏洞类型
查看器标红的一般是:
• 命令拼错(CHECITEM / CHECKLEVE / GIV)
• 缺 #IF/#ACT/#SAY 配对
• 括号、换行、\ 符号不对
• CALL 路径不存在
- 标签重名
查看器标黄的一般是:
• 变量没初始化
• 奖励没领过标记
• 循环没退出条件
• 背包满没处理
• 普通玩家能 CALL 到管理员段
3. 语法错:照引擎命令手册改
比如:
#IF
CHECITE 屠龙
#ACT
GIVE 屠龙 1
改成:
#IF
CHECKITEM 屠龙 1
#ACT
GIVE 屠龙 1
改完用查看器“重新校验”,再开 M2 脚本重载,别每次都重启整机。
4. 逻辑漏:补状态、补次数、补边界
典型“无限领礼包”:
[@Login]
#IF
CHECKLEVELEX > 1
#ACT
GIVE 新手礼包 1
修法:
[@Login]
#IF
EQUAL M80 0
#ACT
GIVE 新手礼包 1
MOV M80 1
#ELSEACT
SENDMSG 6 你已领取过新手礼包
M 变量按人物存,G 变量全服共享,别用 G 记“某人领没领”,会被别人覆盖。
5. 回收/发元宝类漏洞
回收脚本别只写:
TAKE 沃玛装备 1
GAMEGOLD + 500
要补:
• TAKE 前 CHECKITEM 沃玛装备 1
• TAKE 后确认扣除成功再发
• 背包空格 CHECKBAGSLOTS 1
• 绑定/非绑定分开
• 元宝类型分清:绑定元宝、非绑定元宝、游戏币不是一回事
6. 越权/CALL 绕过
很多版本把管理员功能写在一个公共段里,比如:
[@GMGive]
#ACT
GIVE 裁决之杖 1
别让玩家 NPC 也能 #CALL 到这段。修法:
• 段开头加 CHECKADMIN 或密码/权限判断
• 公共段内部再验一次人物状态
• 敏感命令(刷怪、删怪、发装备、改属性)不准从玩家 NPC 直接跳进去
7. 死循环
常见:
@Loop
GOTO @Loop
或者:
#IF
1 = 1
#ACT
GOTO @Main
修法:
• 加计数器:INC N1 1,N1 > 100 就 BREAK
• 加时间/次数/状态退出
• 一个 #ACT 里别写两个 GOTO
• Setup.txt 里 ScriptGotoCountLimit 只是兜底,不等于脚本写对
三、手动再搜一遍关键词
查看器漏掉的,用记事本/Everything/VS Code 搜:
• #CALL
• GOTO @
• GIVE
• GAMEGOLD
• GAMEPOINT
• MOBDELETE
• MAPMOVE
• CHECKADMIN
• MOV M
• MOV G
• SENDMSG
重点看:
• 发钱发物前有没有条件
• 领奖后有没有写“已领”
• 传送前有没有 CHECKMAP 存在
• 循环里有没有 BREAK / 次数上限
• 同一个 M 变量在登录、点击、击杀、下线里是不是被乱用
四、改完怎么验
别直接上正式服:
1. 开测试服
2. 建小号:背包满点回收、低等级点高级任务、连点 NPC 30 次
3. 建 GM 号:确认普通号 CALL 不到 GM 段
4. 看 ScriptLog 还有没有红字
5. M2 开“脚本调试/Call 日志”,跑一遍功能
6. 同功能点 50 次,确认不能刷、不能叠、不能越权
7. 再重载脚本;还稳再覆盖到正式服
五、新手最容易搞反的点
• 查看器说“无错误”≠没漏洞,语法对也能刷元宝
• 改了脚本不重载,进游戏还是老逻辑
• 用 G 变量记个人进度,全服串号
• NPC 不报错但没反应,是 MerChant.txt 没挂脚本,不是脚本坏
• 死循环后改大 ScriptGotoCountLimit 只是拖时间,不修根
• 加密脚本先备原文件,解密改完再按原加密方式封回去
六、真改不动就这么办
• 这段是下载来的破解包、变量满天飞:直接拿同版本原版脚本覆盖
• 只保留你要的功能,重写成小段 @ 标签
• 复杂功能拆开:登录判断一段、点击领奖一段、发物品一段、写状态一段
• 不用的 CALL、GOTO、管理员段全删,少一段少一个洞
一句话:查看器负责“指位置”,人负责“看逻辑”。语法错改拼写,逻辑错补判断,发奖补次数,敏感段补权限,循环补退出。改一个测一次,别一次性全改完再开机。

