鉴定装备脚本出错表现就几种:点NPC没反应、M2刷红字「脚本错误第X行」、扣了材料没出属性、属性不加角色面板、随机属性固定不变、提示物品不存在。根子不在引擎坏了,多在命令拼错、#IF/#ACT结构断、物品名跟数据库对不上、编码存成UTF-8、改完没重载。按下面顺序修最快。
一、先看M2红字和日志定位行号
别盲翻脚本。M2Server控制台红字一般会带文件名和行号,类似:
Scriptfile'QFunction-0.txt'line105:Syntaxerror
Scriptfile'Market_Def\沙城\鉴定师-3.txt'line22:Commandnotfound
服务端Log目录里翻ScriptError.log或ErrorLog.txt,搜「鉴定」「Identify」也能定位到具体文件和行。
记下三样东西再去改:
哪个文件
第几行
报错类型(命令未定义/参数不足/变量未声明/编码错误)
二、编码必须存ANSI
这是隐性杀手。用记事本另存成UTF-8,中文命令名、路径、标签都可能解析失败,表现就是整段脚本不生效或满屏红字。
改法:
Notepad++打开脚本
编码切到ANSI或GBK
保存
别用Word、WPS改脚本
三、#IF/#ACT结构错了必报
鉴定脚本标准骨架:
[@main]
IF
CHECKITEM鉴定符1
CHECKITEMW裁决之杖
ACT
TAKE鉴定符1
.....属性附加命令
SENDMSG6鉴定成功
ELSESAY
材料不足或装备不在身上
常见结构错误:
IF后没跟条件,直接写文本
ACT写成ACT(老引擎有的认,但别偷懒)
IF和#ACT中间混了空行或全角空格
条件块没闭合,后面标签全乱
if写成小写(部分引擎不认,命令建议全大写)
调试时把#IF段先清空,只留:
IF
ACT
SENDMSG6触发成功
进游戏点一下,有提示说明NPC链路通了,再一步步加条件。
四、装备检测命令用错
鉴定分「背包里鉴定」和「穿在身上鉴定」,命令不一样。
背包检测
CHECKITEM物品名数量
只判断有没有,不判断穿没穿
穿戴检测
CHECKWEAR物品名
或CHECKITEMW物品名(部分引擎)
鉴定身上装备要用这个,用CHECKITEM会判空,脚本直接走#else
属性检测
CHECKITEMATTR物品名属性类型数值
属性类型按引擎手册:攻击/魔法/道术/防御等编号各引擎不完全一样
错误例子:
想鉴定身穿武器,却写CHECKITEM裁决之杖1
→武器在手上不在包里,条件不成立
→表现就是点鉴定没反应、不扣材料
五、物品名必须跟数据库Name一字不差
脚本里写「屠龙」,数据库里是「屠龙(鉴定)」,直接不匹配。
物品ID也一样,CheckItem/TakeItem/Give用的ID必须在StdItems或Item.DB里存在。
核对位置:
DBC2000→StdItems
或Mir200\DB\Item.DB
或MySQL的items表
顺手检查:
鉴定符ID对不对
鉴定后装备ID有没有建
物品「可鉴定」字段/StdMode对不对
装备名别带多余空格
六、材料扣除数量和检测数量不一致
典型写法错误:
IF
CHECKITEM鉴定符1
ACT
TAKE鉴定符2
检测1个扣2个,玩家包里只有1个时条件过了但扣除失败,部分引擎直接中断脚本。
正确是两边一致:
IF
CHECKITEM鉴定符1
ACT
TAKE鉴定符1
多材料就同步改:
CHECKITEM灵魂宝石3
TAKE灵魂宝石3
七、属性附加命令按引擎来,别乱抄
不同引擎鉴定命令不是通用的,GOM、GEE、HERO、BLUE、SKYM2各自有各自写法。
网上抄的ITEMIDENTIFY、REPAIRITEM、ChangeEquipAttr、AddItemAttr不一定你端里认。
排查顺序:
1.看M2报不报「Commandnotfound」
2.翻开你引擎包里的命令手册或脚本示例
3.对照StdItems字段名(MaxDC/MaxAttack/DC等)
4.GOM里属性参数名是MaxAttack不是「攻击力」
鉴定完属性面板不变,一般是少刷属性包:
GOM/GEE可加REFITEM或RECALCPLAYER类重算命令
HERO看是否走QF触发重算
不加刷新,数据库写了但客户端不显示
八、随机属性不随机
写死数值当然不随机:
ChangeEquipAttr攻击3
要用随机变量或引擎Random:
Random5→1~5
部分GOM脚本不支持Random0-5这种写法,只能Random最大值
多档位鉴定常见结构:
IF
Random10
ACT
.....附加属性A
ELSEIF
Random10
ACT
.....附加属性B
ELSE
ACT
.....保底属性
注意#ELSEIF和#ELSE别混用错,条件块要闭合。
九、鉴定标记防重复触发
捡物自动鉴定或双击鉴定卷,不加标记会反复触发。
GOM类常见:
IF
CHECKITEMFLAGIDENTIFY0
ACT
.....属性附加
SETITEMFLAGIDENTIFY1
标记语句放属性附加之后,别放前面,不然属性还没写就锁了。
十、脚本文件位置和重载
NPC鉴定脚本
路径:Mir200\Envir\Market_Def\NPC名-地图号.txt
Merchant.txt里NPC名、地图号、脚本路径要对上,不然点NPC读不到脚本。
触发类(捡物鉴定、使用鉴定卷)
多在QFunction-0.txt的[@PickUp]、[@UseItem]段
改完别直接信「生效了」,去M2点:
控制→重新加载NPC
控制→重新加载QF脚本
或聊天框@reloadnpc/@reloadqf
还不行就关M2删ScriptCache.dat重启。
十一、常见报错对照
M2红字「命令未定义」
→命令你引擎不认,换成本引擎命令
「第X行语法错误」
→全角空格、中文冒号、#IF缺#ACT
点NPC没反应
→脚本没重载/Merchant路径错/编码UTF-8
扣材料不出属性
→属性命令拼错/没REFRESH/物品ID错
鉴定后属性不显示
→没发刷新包/客户端补丁不匹配
随机属性固定
→没用Random/变量没写
重复鉴定同件装备
→缺Identify标记
提示物品不存在
→脚本物品名跟DB的Name不一致
十二、最小调试模板(先跑通再写逻辑)
NPC脚本里先放这段:
[@main]
IF
ACT
SENDMSG6鉴定NPC触发正常
能出黄字,再改:
[@main]
IF
CHECKITEM鉴定符1
CHECKWEAR裁决之杖
ACT
TAKE鉴定符1
SENDMSG6条件通过
ELSESAY
条件不满足
条件通过后再把属性附加命令填进去。哪一步没反应,问题就在那一层。
十三、改脚本安全顺序
备份原脚本文件
Notepad++开,确认ANSI
按M2红字行号改
物品名去数据库抄
命令对照引擎手册
保存
M2重载NPC/QF
小退角色重进点NPC测
别一边游戏跑着一边改QF,容易锁文件
鉴定脚本别追求一次写复杂。先能扣材料、能给固定属性,再加随机、加档位、加标记、加失败返还。多数「脚本错误」就是一行全角空格或CHECKITEM用成了穿戴检测,红字行号对着改基本十分钟以内能好。
一、先看M2红字和日志定位行号
别盲翻脚本。M2Server控制台红字一般会带文件名和行号,类似:
Scriptfile'QFunction-0.txt'line105:Syntaxerror
Scriptfile'Market_Def\沙城\鉴定师-3.txt'line22:Commandnotfound
服务端Log目录里翻ScriptError.log或ErrorLog.txt,搜「鉴定」「Identify」也能定位到具体文件和行。
记下三样东西再去改:
哪个文件
第几行
报错类型(命令未定义/参数不足/变量未声明/编码错误)
二、编码必须存ANSI
这是隐性杀手。用记事本另存成UTF-8,中文命令名、路径、标签都可能解析失败,表现就是整段脚本不生效或满屏红字。
改法:
Notepad++打开脚本
编码切到ANSI或GBK
保存
别用Word、WPS改脚本
三、#IF/#ACT结构错了必报
鉴定脚本标准骨架:
[@main]
IF
CHECKITEM鉴定符1
CHECKITEMW裁决之杖
ACT
TAKE鉴定符1
.....属性附加命令
SENDMSG6鉴定成功
ELSESAY
材料不足或装备不在身上
常见结构错误:
IF后没跟条件,直接写文本
ACT写成ACT(老引擎有的认,但别偷懒)
IF和#ACT中间混了空行或全角空格
条件块没闭合,后面标签全乱
if写成小写(部分引擎不认,命令建议全大写)
调试时把#IF段先清空,只留:
IF
ACT
SENDMSG6触发成功
进游戏点一下,有提示说明NPC链路通了,再一步步加条件。
四、装备检测命令用错
鉴定分「背包里鉴定」和「穿在身上鉴定」,命令不一样。
背包检测
CHECKITEM物品名数量
只判断有没有,不判断穿没穿
穿戴检测
CHECKWEAR物品名
或CHECKITEMW物品名(部分引擎)
鉴定身上装备要用这个,用CHECKITEM会判空,脚本直接走#else
属性检测
CHECKITEMATTR物品名属性类型数值
属性类型按引擎手册:攻击/魔法/道术/防御等编号各引擎不完全一样
错误例子:
想鉴定身穿武器,却写CHECKITEM裁决之杖1
→武器在手上不在包里,条件不成立
→表现就是点鉴定没反应、不扣材料
五、物品名必须跟数据库Name一字不差
脚本里写「屠龙」,数据库里是「屠龙(鉴定)」,直接不匹配。
物品ID也一样,CheckItem/TakeItem/Give用的ID必须在StdItems或Item.DB里存在。
核对位置:
DBC2000→StdItems
或Mir200\DB\Item.DB
或MySQL的items表
顺手检查:
鉴定符ID对不对
鉴定后装备ID有没有建
物品「可鉴定」字段/StdMode对不对
装备名别带多余空格
六、材料扣除数量和检测数量不一致
典型写法错误:
IF
CHECKITEM鉴定符1
ACT
TAKE鉴定符2
检测1个扣2个,玩家包里只有1个时条件过了但扣除失败,部分引擎直接中断脚本。
正确是两边一致:
IF
CHECKITEM鉴定符1
ACT
TAKE鉴定符1
多材料就同步改:
CHECKITEM灵魂宝石3
TAKE灵魂宝石3
七、属性附加命令按引擎来,别乱抄
不同引擎鉴定命令不是通用的,GOM、GEE、HERO、BLUE、SKYM2各自有各自写法。
网上抄的ITEMIDENTIFY、REPAIRITEM、ChangeEquipAttr、AddItemAttr不一定你端里认。
排查顺序:
1.看M2报不报「Commandnotfound」
2.翻开你引擎包里的命令手册或脚本示例
3.对照StdItems字段名(MaxDC/MaxAttack/DC等)
4.GOM里属性参数名是MaxAttack不是「攻击力」
鉴定完属性面板不变,一般是少刷属性包:
GOM/GEE可加REFITEM或RECALCPLAYER类重算命令
HERO看是否走QF触发重算
不加刷新,数据库写了但客户端不显示
八、随机属性不随机
写死数值当然不随机:
ChangeEquipAttr攻击3
要用随机变量或引擎Random:
Random5→1~5
部分GOM脚本不支持Random0-5这种写法,只能Random最大值
多档位鉴定常见结构:
IF
Random10
ACT
.....附加属性A
ELSEIF
Random10
ACT
.....附加属性B
ELSE
ACT
.....保底属性
注意#ELSEIF和#ELSE别混用错,条件块要闭合。
九、鉴定标记防重复触发
捡物自动鉴定或双击鉴定卷,不加标记会反复触发。
GOM类常见:
IF
CHECKITEMFLAGIDENTIFY0
ACT
.....属性附加
SETITEMFLAGIDENTIFY1
标记语句放属性附加之后,别放前面,不然属性还没写就锁了。
十、脚本文件位置和重载
NPC鉴定脚本
路径:Mir200\Envir\Market_Def\NPC名-地图号.txt
Merchant.txt里NPC名、地图号、脚本路径要对上,不然点NPC读不到脚本。
触发类(捡物鉴定、使用鉴定卷)
多在QFunction-0.txt的[@PickUp]、[@UseItem]段
改完别直接信「生效了」,去M2点:
控制→重新加载NPC
控制→重新加载QF脚本
或聊天框@reloadnpc/@reloadqf
还不行就关M2删ScriptCache.dat重启。
十一、常见报错对照
M2红字「命令未定义」
→命令你引擎不认,换成本引擎命令
「第X行语法错误」
→全角空格、中文冒号、#IF缺#ACT
点NPC没反应
→脚本没重载/Merchant路径错/编码UTF-8
扣材料不出属性
→属性命令拼错/没REFRESH/物品ID错
鉴定后属性不显示
→没发刷新包/客户端补丁不匹配
随机属性固定
→没用Random/变量没写
重复鉴定同件装备
→缺Identify标记
提示物品不存在
→脚本物品名跟DB的Name不一致
十二、最小调试模板(先跑通再写逻辑)
NPC脚本里先放这段:
[@main]
IF
ACT
SENDMSG6鉴定NPC触发正常
能出黄字,再改:
[@main]
IF
CHECKITEM鉴定符1
CHECKWEAR裁决之杖
ACT
TAKE鉴定符1
SENDMSG6条件通过
ELSESAY
条件不满足
条件通过后再把属性附加命令填进去。哪一步没反应,问题就在那一层。
十三、改脚本安全顺序
备份原脚本文件
Notepad++开,确认ANSI
按M2红字行号改
物品名去数据库抄
命令对照引擎手册
保存
M2重载NPC/QF
小退角色重进点NPC测
别一边游戏跑着一边改QF,容易锁文件
鉴定脚本别追求一次写复杂。先能扣材料、能给固定属性,再加随机、加档位、加标记、加失败返还。多数「脚本错误」就是一行全角空格或CHECKITEM用成了穿戴检测,红字行号对着改基本十分钟以内能好。

