捡取鉴定功能依赖 QFunction-0.txt 中的 @PickUpItemEx 标签触发,配合 LINKPICKUPITEM 命令锁定物品并修改属性。以下是具体配置步骤。
一、M2引擎开启拾取触发
在配置脚本前,需先确保引擎支持拾取触发。打开 M2Server → 选项 → 功能设置 → 物品触发,勾选 “开启物品拾取触发脚本”。若不开启此选项,@PickUpItemEx 脚本将不会执行。
二、建立装备鉴定白名单
为避免金币、药品等垃圾物品触发鉴定,需建立白名单文件。在 Envir\QuestDiary 目录下新建 鉴定列表.txt,写入需要鉴定的装备名称(每行一个)。
裁决之杖
圣战宝甲
绿色项链
三、QFunction-0.txt 主触发脚本
在 Envir\Market_Def\QFunction-0.txt 中添加以下脚本。其逻辑为:捡取物品时绑定该物品,若物品名在鉴定列表中,则调用鉴定函数。
[@PickUpItemEx]
#ACT
LINKPICKUPITEM
#IF
CHECKTEXTLIST ..\QuestDiary\鉴定列表.txt <$CURRTEMNAME>
#ACT
#CALL [..\QuestDiary\鉴定脚本.txt] @装备鉴定
BREAK
- LINKPICKUPITEM:核心命令,将刚捡起的物品绑定到脚本上下文,后续的 CHANGEITEMADDVALUE 等命令才能修改它。
- CHECKTEXTLIST:检查当前物品名是否在 鉴定列表.txt 中。
四、鉴定脚本:随机附加属性
在 Envir\QuestDiary 目录下新建 鉴定脚本.txt,写入具体的属性随机逻辑。
[@装备鉴定]
;--- 随机决定属性类型 ---
#ACT
RANDOM 3
;--- 分支1:附加攻击属性 ---
#IF
EQUAL <$STR(R0)> 0
#ACT
MOVR N1 1 5
CHANGEITEMADDVALUE -1 0 + <$STR(N1)>
SENDMSG 6 鉴定成功!<$CURRTEMNAME> 攻击+<$STR(N1)>
BREAK
;--- 分支2:附加魔法属性 ---
#IF
EQUAL <$STR(R0)> 1
#ACT
MOVR N2 1 3
CHANGEITEMADDVALUE -1 1 + <$STR(N2)>
SENDMSG 6 鉴定成功!<$CURRTEMNAME> 魔法+<$STR(N2)>
BREAK
;--- 分支3:附加道术属性 ---
#IF
EQUAL <$STR(R0)> 2
#ACT
MOVR N3 1 3
CHANGEITEMADDVALUE -1 2 + <$STR(N3)>
SENDMSG 6 鉴定成功!<$CURRTEMNAME> 道术+<$STR(N3)>
BREAK
- RANDOM 3:生成 0-2 的随机数,决定走哪条属性分支。
- MOVR N1 1 5:生成 1-5 的随机数,作为属性加成点数。
- CHANGEITEMADDVALUE -1 0 + <$STR(N1)>:为绑定的物品(-1代表当前链接物品)增加属性。参数说明:
- 属性编号 0:通常代表攻击下限(具体需查看引擎说明书)。
- 属性编号 1:通常代表魔法下限。
- 属性编号 2:通常代表道术下限。
五、防重复鉴定机制
为防止玩家丢地上再捡起来重复刷属性,需添加“已鉴定”标记。利用物品的 自定义属性值(CustomItemValue) 实现。
1. 修改鉴定脚本(增加标记检测)
在 鉴定脚本.txt 的 [@装备鉴定] 开头加入判断:
[@装备鉴定]
;--- 检测是否已鉴定(CustomItemValue[0] 为 1 则已鉴定) ---
#IF
CHECKCUSTOMITEMVALUE -1 0 = 1
#ACT
BREAK
;--- 未鉴定则执行鉴定逻辑 ---
#IF
EQUAL <$STR(R0)> 0
#ACT
...(原有属性添加代码)
;--- 鉴定完成后标记 ---
SETCUSTOMITEMVALUE -1 0 = 1
SENDMSG 6 鉴定成功!...
BREAK
• CHECKCUSTOMITEMVALUE -1 0 = 1:检测该物品的自定义属性0是否为1(已鉴定)。
• SETCUSTOMITEMVALUE -1 0 = 1:鉴定完成后,将自定义属性0设置为1。
六、生效与调试
1. 重载脚本:修改 QFunction-0.txt 后,在M2上点击 “重载QF脚本”;修改 鉴定脚本.txt 后,点击 “重载NPC脚本”。
2. 调试技巧:若捡取无反应,先在M2的 查看 → 调试信息 中检查是否有脚本报错。常见错误包括:
◦ 路径错误:..\QuestDiary\鉴定列表.txt 文件不存在。
◦ 命令拼写错误:如 LINKPICKUPITEM 写错。
◦ 物品名称不匹配:鉴定列表.txt 中的名字与 StdItems.DB 中的名字不一致。
通过以上配置,玩家捡起“裁决之杖”时,系统会自动为其随机附加 1-5 点攻击(或魔法/道术),且仅生效一次。

