在 GOM 引擎传奇架设中,“捡取鉴定” 功能是提升玩法趣味性的关键 —— 玩家捡取指定装备后,系统自动为装备附加随机属性(如攻击力、防御力加成),需通过脚本配置实现触发逻辑。以下为具体操作步骤、脚本代码示例及常见问题解决方案,全程基于 GOM 引擎原生功能,无需额外插件。
一、前期准备:确认文件路径与工具
核心文件位置:找到 GOM 引擎服务端目录,核心脚本文件存于「服务端 \Mir200\Envir\QuestDiary」,需用到两类文件:
物品触发脚本:用于设置 “捡取装备时触发鉴定” 的条件,通常在「QuestDiary」下新建或修改「PickUpItem.txt」(若无则手动创建,文件名需与引擎触发规则一致);
属性配置文件:「服务端 \Mir200\Envir\ItemParam.txt」,用于定义鉴定可附加的属性类型(如 MaxAttack、MinDefense)及数值范围。
工具准备:使用 GOM 引擎自带的 “脚本编辑器”(路径:「服务端 \GOM 引擎工具 \ 脚本编辑器.exe」),或记事本直接编辑,避免格式错乱(需保存为 ANSI 编码,否则脚本无法识别)。
前提设置:打开 GOM 引擎核心程序「M2Server.exe」,进入「选项设置 — 功能设置」,勾选 “开启装备鉴定功能”,设置 “鉴定属性生效范围” 为 “所有捡取装备”,点击保存后重启 M2,确保引擎支持鉴定功能基础开关已开启。
二、捡取鉴定脚本具体实现步骤
步骤 1:配置 “捡取触发鉴定” 脚本
打开「PickUpItem.txt」,添加 “捡取装备触发鉴定” 的核心逻辑,脚本结构分 “触发条件”“执行动作” 两部分,以下为通用示例(以 “捡取所有武器类装备触发鉴定” 为例):
#IF
CheckItemType 武器 ;触发条件:捡取的物品类型为“武器”(可改为“首饰”“盔甲”,或指定物品名称如“CheckItemName 屠龙”)
#ACT
SendMsg 6 你捡取了可鉴定装备,正在自动鉴定... ;发送系统提示(6为提示颜色,0-255可调)
CallFunc IdentifyEquip ;调用鉴定函数,执行属性附加
#ELSEACT
;若捡取非武器类装备,无操作(可留空或添加其他提示,如SendMsg 6 该物品无需鉴定)
关键说明:若需指定仅某类地图捡取触发(如 “猪洞地图捡取才鉴定”),需在 #IF 后添加地图条件:CheckMapName 猪洞七层(地图名称需与「服务端 \Mir200\Envir\MapInfo.txt」中一致)。
步骤 2:编写 “鉴定属性附加” 函数脚本
在「QuestDiary」下新建「IdentifyEquip.txt」,编写鉴定逻辑函数,实现 “随机属性生成 + 装备附加”,代码示例如下:
;函数名:IdentifyEquip(需与步骤1中CallFunc调用的名称一致)
#ACT
;1. 随机生成属性类型(0=攻击力,1=防御力,2=魔法力,可扩展)
Random 3 ;生成0-2的随机数,存入变量<RandomNum>
#IF
CheckVarEqual <RandomNum> 0
#ACT
;附加攻击力:1-3点随机加成
Random 3 ;生成1-3的随机值(第一个数为最小值,第二个为最大值,此处用Random 3代表1-3)
SetItemParam MaxAttack + <Random> ;为当前捡取的装备附加“最大攻击力+随机值”
SendMsg 6 鉴定成功!获得攻击力+<Random>
#ELSEIF
CheckVarEqual <RandomNum> 1
#ACT
;附加防御力:1-2点随机加成
Random 2
SetItemParam MaxDefense + <Random>
SendMsg 6 鉴定成功!获得防御力+<Random>
#ELSEIF
CheckVarEqual <RandomNum> 2
#ACT
;附加魔法力:1-2点随机加成
Random 2
SetItemParam MaxMagic + <Random>
SendMsg 6 鉴定成功!获得魔法力+<Random>
#ENDIF
;2. 标记装备为“已鉴定”,避免重复鉴定
SetItemFlag Identify 1 ;为装备添加“Identify=1”的标记
自定义调整:若需增加属性种类(如生命值加成),可在「ItemParam.txt」中添加MaxHP参数,再在脚本中增加CheckVarEqual <RandomNum> 3的分支,设置SetItemParam MaxHP + <Random>。
步骤 3:设置 “重复鉴定防护”
为避免玩家丢弃装备后重新捡取再次鉴定,需在「PickUpItem.txt」的触发条件中增加 “已鉴定装备不重复触发” 的判断,修改后的触发脚本如下:
#IF
CheckItemType 武器
CheckItemFlag Identify 0 ;条件:装备未标记“已鉴定”(Identify=0)
#ACT
SendMsg 6 你捡取了可鉴定装备,正在自动鉴定...
CallFunc IdentifyEquip
#ELSEACT
CheckItemFlag Identify 1
SendMsg 6 该装备已鉴定,无需重复操作
步骤 4:测试脚本有效性
启动服务端:依次开启「DBServer.exe」「LoginSrv.exe」「M2Server.exe」,确保 M2 中 “脚本加载状态” 显示「PickUpItem.txt」「IdentifyEquip.txt」加载成功(路径:M2— 脚本管理 — 查看加载列表);
游戏内测试:创建角色进入游戏,前往可掉落武器的地图(如新手村),捡取任意武器:
正常情况:系统弹出 “正在自动鉴定” 提示,装备属性栏新增随机加成(如 “攻击力 + 2”);
异常情况:若无提示或无属性,需检查脚本编码(必须为 ANSI)、M2 鉴定开关是否开启、函数名是否一致。
三、常见脚本问题及解决方案
问题 1:捡取装备不触发鉴定(无系统提示)
原因 1:脚本触发条件错误,如物品类型写错(如 “武器” 写成 “兵器”,需与「ItemParam.txt」中 “ItemType” 字段一致);
解决:打开「ItemParam.txt」,查看目标装备的 “ItemType” 值(如武器对应 “1”,盔甲对应 “2”),修改脚本中CheckItemType为正确类型,或改用CheckItemName 装备名称(如 “CheckItemName 木剑”)。
原因 2:M2 未加载脚本;
解决:在 M2 中进入「脚本管理 — 手动加载」,选择「PickUpItem.txt」「IdentifyEquip.txt」,点击 “加载”,重启 M2 后生效。
问题 2:鉴定后装备无属性加成
原因 1:属性参数名错误(如 “攻击力” 写成 “Attack”,GOM 引擎标准参数为 “MaxAttack”“MinAttack”);
解决:参考「ItemParam.txt」中 “ParamName” 字段,确认参数名(如最大攻击力 = MaxAttack,最小防御力 = MinDefense),修改脚本中SetItemParam后的参数名。
原因 2:随机数值范围设置错误(如 “Random 3” 写成 “Random 0-3”,GOM 脚本仅支持 “Random 数值”,代表 1 - 该数值的范围);
解决:将数值范围改为 “Random 最大值”,如 “1-5 点加成” 写为 “Random 5”。
问题 3:重复捡取同一装备多次鉴定
原因:未添加 “已鉴定标记” 判断,或SetItemFlag Identify 1语句位置错误;
解决:确保「PickUpItem.txt」中 #IF 条件包含CheckItemFlag Identify 0,且「IdentifyEquip.txt」中SetItemFlag Identify 1语句在属性附加后执行(避免标记早于属性设置,导致属性未附加却无法重复触发)。
问题 4:系统提示弹窗位置异常(如显示在屏幕外)
原因:GOM 引擎提示坐标默认值不匹配分辨率;
解决:在 M2 中进入「选项设置 — 界面设置」,找到 “系统提示坐标”,设置为 “X:200,Y:300”(1080P 分辨率通用值),点击保存后重启游戏客户端。
四、脚本优化与扩展建议
属性分级鉴定:若需按装备品质区分鉴定效果(如 “神器级装备鉴定加成更高”),可在 #IF 条件中添加CheckItemQuality 神器(需先在「ItemParam.txt」中设置装备品质字段),再在 #ACT 中调整随机数值范围(如 “Random 10” 实现 1-10 点加成);
消耗品鉴定:若需 “消耗鉴定卷轴才能鉴定”,可在 #IF 条件中添加CheckItemCount 鉴定卷轴 1,#ACT 中增加TakeItem 鉴定卷轴 1(扣除 1 个卷轴);
日志记录:在「IdentifyEquip.txt」中添加WriteLog ..\Log\IdentifyLog.txt 玩家<%USERNAME%>鉴定装备<%ITEMNAME%>获得属性:<%ParamName%>+<%Random%>,便于查看玩家鉴定记录,排查异常。
GOM 引擎下的捡取鉴定脚本核心在于 “触发条件精准 + 属性配置正确”,只要确保脚本编码、参数名称、M2 设置三者一致,即可稳定实现功能。遇到问题时,优先检查 M2 脚本加载状态与参数名匹配度,多数问题可快速解决。

