传奇装备鉴定脚本错误排查与修正方法

来源: 作者: 点击:
装备鉴定功能异常通常表现为点击鉴定后无反应、提示脚本错误或物品属性未更新。问题根源集中在QFunction-0.txt、QManage.txt及客户端补丁配置不匹配,需逐项核查。

首先检查QFunction-0.txt中[@InPutString]段落是否包含鉴定触发逻辑。标准写法应为:
[@InPutString]
IF
EQUAL STR(%1) 鉴定
ACT
OPENMERCHANT 1001
其中1001为NPC编号,若该编号在Merchant.txt中不存在或路径错误,将导致调用失败。确认Merchant.txt第1001行定义了有效NPC,并指向正确的对话脚本文件(如Npc_defJianDing.txt)。

其次验证鉴定NPC脚本内容。打开Npc_defJianDing.txt,确保包含[@main]和[@buy]标签。常见错误是缺失[@buy]段或物品编号超出StdItems.txt范围。例如:
[@buy]
IF
CHECKITEM 1005 1
ACT
TAKE 1005 1
GIVE 2001
此处1005为未鉴定装备ID,2001为鉴定后ID,两者必须在StdItems.txt中存在且字段完整。若StdItems.txt缺少MaxDC、MaxMC等属性字段,服务端会拒绝生成装备。

客户端方面,检查Patch目录下是否存在与鉴定相关的NPC图片和对话框资源。若使用自定义UI,需确认npcdef.ini中NPC编号与服务端一致。部分版本要求鉴定按钮绑定特定字符串(如“鉴定”),若客户端语言包修改了该关键词,会导致STR(%1)判断失效。

若使用DBC2000管理数据库,还需核对HeroDB中Magic表是否包含鉴定技能。部分系统通过技能触发鉴定,需在Hum表关联角色技能列表。缺失技能ID将使鉴定指令无法执行。

临时解决方案:在QFunction-0.txt顶部添加调试语句,如SENDMSG 7 测试鉴定触发,通过游戏内消息判断脚本是否被读取。若无消息输出,说明InputString未捕获到指令,需检查客户端发送的字符串格式。

最后清理缓存。删除客户端Cache目录及服务端Log文件夹中的临时日志,重启LoginSrv与M2Server。避免旧缓存干扰脚本加载。