当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇装备鉴定脚本配置与报错修复指南

热度:
传奇装备鉴定脚本通常包含“拾取触发”与“NPC鉴定”两类逻辑,常见于GOM、GEE引擎。脚本错误多由触发条件缺失、变量冲突或文件路径错误导致。以下为完整脚本结构与排错方案。

一、鉴定脚本核心逻辑与存放路径

鉴定功能需配合物品数据库(StdItems.DB)与触发脚本共同实现。脚本文件必须存放于服务端Mir200\Envir目录下,具体路径取决于触发方式:

脚本类型存放路径触发条件

拾取自动鉴定QuestDiary\拾取鉴定\AutoIdentify.txt玩家拾取装备瞬间触发

NPC手动鉴定Market_Def\鉴定大师.txt点击NPC对话触发

全局触发Market_Def\QFunction-0.txt物品双击事件(@StdModeFunc)

二、拾取自动鉴定脚本示例(GOM引擎)

以下为标准的拾取鉴定脚本结构,需在M2引擎中开启“全局拾取触发”选项。
;拾取鉴定脚本(保存为AutoIdentify.txt)
[@PickUpItem]
#IF
;条件1:仅鉴定武器、衣服、首饰(StdMode1/2/3)
CheckItemType1
CheckItemType2
CheckItemType3
;条件2:检测装备是否已鉴定(自定义标志)
CheckItemFlagIdentify0
#ACT
;调用鉴定子程序
GOTO@DoIdentify
BREAK

[@DoIdentify]
#ACT
;随机生成品质(1-100)
Random100
;极品概率10%
#IF
Random<10
#ACT
SetItemParamMaxAttack+Random5
SetItemParamMaxDefense+Random3
SetItemParamLuck+1
SetItemFlagIdentify1
SENDMSG6恭喜!【<$CURRTEMNAME>】鉴定为极品!
BREAK
;优秀概率30%
#IF
Random<30
#ACT
SetItemParamMaxAttack+Random3
SetItemFlagIdentify1
SENDMSG6【<$CURRTEMNAME>】鉴定为优秀。
BREAK
;普通概率60%
#ACT
SetItemFlagIdentify1
SENDMSG6【<$CURRTEMNAME>】鉴定为普通。
BREAK


三、NPC手动鉴定脚本示例

在Market_Def目录下创建NPC脚本,提供单件或全身鉴定服务。
;NPC鉴定脚本(鉴定大师.txt)
[@main]
欢迎使用鉴定服务,请选择:\
<鉴定身上装备/@IdentifyAll>费用:1000金币\
<鉴定手中武器/@IdentifyWeapon>费用:500金币\

[@IdentifyAll]
#IF
CheckGold1000
#ACT
Take金币1000
;遍历装备栏(1-13为装备位)
SetIdentifyItem1
SetIdentifyItem2
...
SetIdentifyItem13
SENDMSG6全身装备鉴定完成!
BREAK

[@IdentifyWeapon]
#IF
CheckGold500
CheckItemWear1;检测武器栏是否有装备
#ACT
Take金币500
SetIdentifyItem1
SENDMSG6武器鉴定完成!
BREAK


四、常见脚本错误与修正方案

1.拾取不触发鉴定

•原因:M2未加载全局脚本,或@PickUpItem标签被其他脚本覆盖。

•解决:在M2控制台勾选“启用全局拾取脚本”,并检查QuestDiary目录下是否有同名脚本冲突。

2.鉴定后无属性加成

•原因:属性参数名错误(如将MaxAttack误写为Attack),或StdItems.DB中未定义该字段。

•解决:核对数据库字段名,确保SetItemParam后的参数与数据库严格一致。使用RandomN而非Random1-N格式。

3.重复鉴定同一装备

•原因:未设置鉴定标记,导致脚本每次拾燃执行。

•解决:在鉴定逻辑末尾必须添加SetItemFlagIdentify1,并在触发条件中检测CheckItemFlagIdentify0。

4.脚本报错“Notavalidcommand”

•原因:命令拼写错误(如CheckItemType写成CheckItemTpye),或引擎版本不支持该命令。

•解决:使用Notepad++等工具检查语法,GOM1108引擎需使用老版本命令格式。

5.变量冲突导致属性错乱

•原因:多个鉴定脚本共用全局变量(如P0-P9),导致数值覆盖。

•解决:改用私有变量(如S0-S9)或自定义变量(如MOVN$鉴定数值<$STR(N0)>),避免跨脚本冲突。

五、调试与重载流程

1.修改脚本:使用ANSI编码保存文件,避免UTF-8乱码。
2.重载脚本:在M2点击“重载NPC脚本”或“重载全局脚本”,无需重启服务端。
3.查看日志:若报错,检查Mir200\Log目录下的ScriptError.log,定位错误行数。

注意:若鉴定涉及新属性(如元素伤害),需先在M2\查看\列表信息二\物品规则中启用对应参数,否则脚本生效但客户端不显示。
[顶部]