一、准备工作
首先要确认你的服务端文件结构完整,特别是脚本文件夹下的 QFunction-0.txt 文件,这是我们主要操作的脚本文件。另外,建议在 QuestDiary 文件夹下创建一个 "拾取鉴定" 目录,用于存放各类鉴定相关的子脚本,这样能让代码结构更清晰。
你还需要准备好物品数据库,明确需要进行鉴定的物品 IDX(物品索引),后续设置触发规则时会用到这些信息。
二、配置物品触发规则
要让物品被捡起时触发鉴定脚本,需要先设置物品的触发规则:
打开服务端的物品数据库编辑器,找到你想要设置鉴定功能的物品
在物品的 "规则" 设置中,找到 "触发 ID" 选项并勾选
记录下这些物品的 IDX 值,后续编写脚本时会用到
这样设置后,当玩家捡起这些物品时,服务端就会触发对应的脚本事件。
三、编写捡取触发脚本
接下来需要在 QFunction-0.txt 文件中编写触发脚本,用于响应物品捡取事件:
打开 QFunction-0.txt 文件,在末尾添加以下内容:
(@PickUpItemsX)
#CALL (\QuestDiary\拾取鉴定\前置检查.txt) @检查鉴定条件
#IF
CHECKCUSTOMITEMVALUE -1 0 = 1
#SAY
#CALL (\QuestDiary\拾取鉴定\执行鉴定.txt) @随机属性生成
SENDMSG 6 恭喜,你捡到的<$PICKDROPITEMNAME>已自动鉴定!
#ELSE
SENDMSG 6 你捡到了<$PICKDROPITEMNAME>,该物品无需鉴定
注意将上面的 X 替换为实际的物品 IDX 值,如果你有多个需要鉴定的物品,可以复制多份该代码并修改对应的 X 值。
四、制作前置检查脚本
在 QuestDiary\ 拾取鉴定目录下创建 "前置检查.txt" 文件,用于判断物品是否需要鉴定:
(@检查鉴定条件)
; 初始化变量
MOV S$当前物品名称 <$PICKDROPITEMNAME>
MOV S$物品位置 -1
; 检查物品是否已鉴定
CHECKCUSTOMITEMVALUE -1 0 = 1
#IF
TRUE
MOV S$是否已鉴定 1
#ELSE
MOV S$是否已鉴定 0
#ENDIF
; 检查物品类型是否需要鉴定
checktextlist ..\QuestDiary\拾取鉴定\装备分级\1级装备.txt
#IF
TRUE
MOV S$需要鉴定 1
#ELSE
checktextlist ..\QuestDiary\拾取鉴定\装备分级\2级装备.txt
#IF
TRUE
MOV S$需要鉴定 1
#ELSE
MOV S$需要鉴定 0
#ENDIF
#ENDIF
这段脚本的作用是检查捡起的物品是否属于需要鉴定的类型,以及是否已经鉴定过,避免重复鉴定。你需要在装备分级目录下创建相应的装备列表文件,将需要鉴定的物品名称按等级分类存放。
五、编写鉴定属性生成脚本
创建 "执行鉴定.txt" 文件,用于生成随机属性并更新物品:
(@随机属性生成)
; 武器鉴定
checktextlist ..\QuestDiary\拾取鉴定\分类\武器.txt
#IF
TRUE
#CALL (\QuestDiary\拾取鉴定\几率设置\武器鉴定几率.txt) @计算属性
SETITEMADDVALUE <$PICKDROPITEM> 攻击 <$STR(R1)>
SETITEMADDVALUE <$PICKDROPITEM> 魔法 <$STR(R2)>
SETITEMADDVALUE <$PICKDROPITEM> 道术 <$STR(R3)>
#ENDIF
; 首饰鉴定
checktextlist ..\QuestDiary\拾取鉴定\分类\首饰.txt
#IF
TRUE
#CALL (\QuestDiary\拾取鉴定\几率设置\首饰鉴定几率.txt) @计算属性
SETITEMADDVALUE <$PICKDROPITEM> 防御 <$STR(R4)>
SETITEMADDVALUE <$PICKDROPITEM> 魔防 <$STR(R5)>
#ENDIF
; 标记为已鉴定
SETITEMADDVALUE <$PICKDROPITEM> 0 1
; 显示鉴定结果
SENDMSG 7 攻击:<$STR(R1)> 魔法:<$STR(R2)> 道术:<$STR(R3)>
SENDMSG 7 防御:<$STR(R4)> 魔防:<$STR(R5)>
这段脚本会根据物品类型(武器或首饰)生成不同的随机属性,并将物品标记为已鉴定。你需要创建相应的几率设置脚本,用随机数生成函数来定义属性的范围和概率。
六、测试与调整
完成脚本编写后,需要进行测试确保功能正常:
重启服务端,使脚本生效
进入游戏,找到设置了鉴定功能的物品并捡起
检查是否收到鉴定成功的提示,以及属性是否正确显示
如果出现不触发或属性异常的情况,可在脚本中加入更多 SENDMSG 命令输出变量值,帮助定位问题
如果捡取时出现频繁触发导致的卡顿,可以适当优化脚本,减少不必要的检查,或增加触发间隔判断。
通过以上步骤,就能在 GOM 引擎中实现物品捡取自动鉴定的功能。这种方法通过模块化的脚本设计,既方便维护,又能灵活调整不同类型物品的鉴定规则,你可以根据自己服务器的特色,进一步丰富鉴定系统的玩法。

