GOM引擎传奇脚本实现自动捡取与鉴定详细教程

来源: 作者: 点击:
在GOM引擎中实现角色自动捡取物品并触发鉴定功能,需结合QFunction事件、物品属性判断及NPC交互逻辑。以下步骤基于标准GOM1.50+版本,适用于单机或内网环境。

第一步:确认物品鉴定机制
GOM引擎中,未鉴定物品通常带有“[未鉴定]”前缀,或ItemName字段包含特定标识(如“#UnIden_”)。鉴定操作一般通过与特定NPC对话完成,例如“鉴定师”。

第二步:编写捡取触发脚本
在QManage.txt中添加[@PickUp]事件,该事件在玩家拾取任意物品时触发:

[@PickUp]
IF
EQUAL[未鉴定]铁剑
ACT
set[NEED_IDENTIFY]1
message捡到未鉴定物品,准备前往鉴定!

注意:为GOM内置变量,表示刚捡起的物品全名。若物品名含空格或特殊符号,建议用包含判断:

IF
contain[未鉴定]
ACT
set[UNID_ITEM]
goto@go_identify

第三步:设置自动寻路至鉴定NPC
假设鉴定师位于地图3(盟重省),坐标(330330)。在Npc_defIdentifyMaster.txt中配置:

[@main]
IF
checkitem[未鉴定]铁剑1
ACT
take[未鉴定]铁剑1
give铁剑1
message鉴定完成,获得铁剑!
break

但自动挂机需主动触发此NPC。因此在QFunction-0.txt中加入导航逻辑:

[@go_identify]
IF
checkmap3
ACT
goto@call_identify_npc
ELSEACT
mapmove3330330
delay2000
goto@wait_at_npc

[@wait_at_npc]
IF
checkmap3
ACT
goto@call_identify_npc

[@call_identify_npc]
;调用NPC对话(GOM支持直接触发)
ACT
npc_identify
set[UNID_ITEM]

第四步:创建鉴定专用NPC函数
在CustomFunc.txt(或自定义函数文件)中定义npc_identify:

[@npc_identify]
IF
checkitem[未鉴定]铁剑1
ACT
take[未鉴定]铁剑1
give铁剑1
SAY
鉴定成功!

IF
checkitem[未鉴定]魔法盾书1
ACT
take[未鉴定]魔法盾书1
give魔法盾书1

可扩展多物品判断,按优先级排列。

第五步:整合到挂机循环
若用于挂机脚本,在打怪后加入捡取检测:

[@after_attack]
delay1000
;此处不需手动捡取,游戏自动拾取后触发[@PickUp]
goto@next_monster

第六步:处理物品堆叠与背包满问题
GOM引擎在背包满时不会触发[@PickUp]。需提前检测空间:

IF
CHECKBAGGAGE1
ACT
;继续捡取
ELSEACT
message背包已满,停止捡取未鉴定物品。
set[STOP_PICK]1

关键注意事项:
未鉴定物品名称必须与ItemList.txt中定义完全一致,包括括号为中文字符;
GOM不支持正则匹配,多物品需逐条写IF判断;
鉴定过程不可逆,务必确保“未鉴定”与“已鉴定”物品ID不同;
若使用装备类未鉴定物品,需额外处理穿戴属性生效逻辑(通常鉴定后自动刷新属性)。

测试方法:
在地图放置[未鉴定]铁剑(可通过GM命令give);
角色走近自动捡取;
观察是否传送至鉴定师位置并完成交换;
检查背包是否出现已鉴定物品。

此方案可扩展至批量鉴定、按品质筛选(如仅鉴定绿色以上)、自动出售普通未鉴定物等场景,只需增加物品类型判断和分支跳转。
[顶部]