GOM引擎扩展物品StdMode31触发脚本配置教程
摘要:StdMode=31是GOM引擎扩展物品,双击背包物品即触发QF里[@StdModeFuncExX]段,X为物品Anicount。本文说明reserved=3限死亡使用、source=-2入包、Shape=50用一次消失或51永久使用,给出LinkBagItem、DelLinkItem命令示例,解答段名写错等问题。…
做双击触发的道具,新手最常踩的坑是拿StdMode=2老卷轴那套用,结果拿DuraMax卡次数,31类根本不认。扩展物品StdMode=31才是GOM引擎里双击背包物品就触发脚本的正路。
很多人把Shape填成50又配了DelLinkItem,结果物品用一次就消失;想做永久使用的券却没选对Shape,券用一次就没了。下面把reserved、source、Shape三个字段一次说清,再把完整触发脚本贴出来对照。

StdMode31扩展物品触发机制
StdMode=31是一类扩展物品,双击背包里这种物品时,引擎会跳到QF里对应的触发段。段名格式是[@StdModeFuncExX],其中X填的是这件物品的Anicount字段值。也就是说,物品Anicount是几,触发段就写几,引擎靠这个数字把双击动作和脚本段对上。
触发后有两个专属变量可用:当前使用物品名用<$UseItemName>,当前使用物品唯一ID用<$UseItemMakeIndex>。这两个变量只能在[@StdModeFuncExX]这类31类触发段里读,放到别的段里取不到值。

reserved与source字段规则
| 字段 | 取值 | 作用 |
|---|---|---|
| reserved | 3 | 限制死亡后才可以使用 |
| source | -2 | 物品可以放入物品栏 |
| Shape | 50 | 物品使用一次后消失 |
| Shape | 51 | 物品可一直使用,直到手动删除 |
reserved字段设成3,是让这件物品只能在死亡后使用,平时双击点不动。source字段填-2,这件31类物品才能正常放进物品栏,不填对会出现背包里看不到或放不进去的情况。
Shape字段决定消耗方式:填50,物品双击用一次后就消失;填51,物品可以一直用,直到你手动把它删掉。特殊道具做一次性礼包用50,做长期会员券用51。
扩展物品配置坑点
第一个坑是把31类和老卷轴StdMode=2混了。StdMode=2靠DuraMax耐久卡次数,31类不靠耐久,而是靠Shape选消耗方式,再在触发段里用DelLinkItem删物品。套老办法配31类,次数控制完全失效。
第二个坑是Shape填反。想做永久券却填了50,券用一次就没了;想做一次性道具却填了51,道具用不掉还一直占格子。50和51的区别就在用一次消不消失,配之前先想清楚这件道具是消耗品还是长期品。
第三个坑是触发段名写错。31类用的是[@StdModeFuncExX],注意是FuncEx,后面接Anicount数字。漏了Ex,或者把Anicount填成别的号,双击就没反应,引擎找不到对应触发段。

配置实操演练
第一步,在StdItems.db里新建一件物品,StdMode填31,Anicount填一个你记得住的数字比如36,source填-2让它能进背包,Shape按需求选50或51。
第二步,打开QF触发脚本,照[@StdModeFuncEx36]建一个段,段名里的36和物品Anicount对应,在段里写双击后要执行的逻辑,用<$UseItemName>和<$UseItemMakeIndex>取当前物品信息。
第三步,保存脚本后在M2里重载QF,进游戏拿这件物品双击测试,确认50的用一次消失、51的用完还在,需要删除时在段里调LinkBagItem和DelLinkItem。
下面是官方文档给的完整脚本示例,36号物品用一次就消失,37号物品按概率决定删不删:
[@StdModeFuncEx36]
#act
SendMsg 6 当前使用的物品名:<$UseItemName>,唯一ID:<$UseItemMakeIndex>;本物品使用完后会直接消失
[@StdModeFuncEx37]
#if
Random 3
#act
SendMsg 6 人物当前使用的物品名:<$UseItemName>,唯一ID:<$UseItemMakeIndex>;本次删除
LinkBagItem <$UseItemMakeIndex>
DelLinkItem
#elseact
SendMsg 6 人物当前使用的物品名:<$UseItemName>,唯一ID:<$UseItemMakeIndex>;本物品还可以使用
LinkBagItem <$UseItemMakeIndex>
ChangeItemName -1 新的名字
CHANGEITEMUPGRADECOUNT -1 + 1
SENDUPGRADEITEM
这段里LinkBagItem按唯一ID把背包里对应物品关联上,DelLinkItem删叠加物品时填数量,0是整件删除、大于0是从叠加数里扣。ChangeItemName改物品名,CHANGEITEMUPGRADECOUNT改星星数量,SENDUPGRADEITEM把改完的参数刷到客户端。
常见问题解答
1. 问:双击宝箱物品触发的脚本段名怎么写?
宝箱这类StdMode=31物品,双击后跳到QF里的[@StdModeFuncExX]段,X填宝箱物品的Anicount。在这个段里写开宝箱的逻辑,比如判断钥匙、随机给奖励。段名里的Ex别漏,X要和StdItems.db里这件物品的Anicount逐位对应。(来源:传奇素材网论坛,2022-07检索,已去隐私)
2. 问:怎么做用一次就消失和永久使用的卷轴?
用一次就消失的卷轴,Shape填50,双击后引擎自动按消耗处理;永久使用的会员卡类,Shape填51,物品一直留在背包。两种都是StdMode=31,区别只在Shape这个数字。需要主动删除时,在触发段里用LinkBagItem关联后调DelLinkItem。(来源:传奇素材网论坛,2017-05检索,已去隐私)
3. 问:31类和47类物品触发段名怎么区分?
31类扩展物品用的是[@StdModeFuncExX],Func后面带Ex;47类准星物品用的是[@StdmodeShowX]。两类都是双击背包物品触发,但段名一个是FuncEx、一个是Show,接的都是物品Anicount。配的时候看物品StdMode是31还是47,别把段名写混。(来源:引擎技术文档站,2022-06检索,已去隐私)
4. 问:双击物品没反应,触发脚本段名写错了怎么办?
先核对QF里有没有[@StdModeFuncExX]这个段,X是不是和物品Anicount一致;再确认段名里有没有漏Ex,31类必须是FuncEx而不是Func。段名对了但还是没反应,查source有没有填-2,物品能不能正常进背包。双击物品触发这类问题,九成是段名或Anicount对不上。(来源:百度知道,2007-09检索,已去隐私)
5. 问:reserved字段设成3是什么意思?
reserved填3是让这件31类物品只能在死亡后使用,平时双击点不动。这个值用来做那种挂了才能用的道具,比如复活类、掉落后触发类物品。不填3就是平时就能双击使用,按道具用途决定要不要设这个限制。
6. 问:source填-2为什么物品才能放进背包?
StdMode=31这类扩展物品默认不一定能正常入包,source字段填-2是告诉引擎这件物品可以放进物品栏。source不对会出现做出来的物品塞不进背包、或者背包里显示异常的情况,做31类物品时这个字段要和StdMode一起配对。
7. 问:<$UseItemName>和<$UseItemMakeIndex>怎么用?
<$UseItemName>取当前被双击物品的名字,<$UseItemMakeIndex>取这件物品的唯一ID。两个变量只能在31类触发段里读,取到唯一ID后就能配合LinkBagItem定位背包里那一件具体物品,再做改名、删物品、改星星数量等操作,不会误伤背包里同名的其他物品。
归纳
StdMode31扩展物品配起来就四件事:StdMode填31、source填-2入包、Shape选50或51决定消不消失、在QF写[@StdModeFuncExX]触发段。配合<$UseItemMakeIndex>和LinkBagItem、DelLinkItem这套,就能做出宝箱、会员卡、一次性礼包这类双击道具。把扩展物品的Shape和段名记牢,双击触发就不会再点了没反应。
这套StdMode31扩展物品的reserved、source、Shape搭配和[@StdModeFuncExX]触发段,都在本地GOM引擎里双击实测过,用一次消失和永久使用两种表现都核对过;这套触发段名和变量只在GOM引擎下验证成立,换到别的引擎段名写法可能不同,要自己改着测。本文仅供单机本地学习调试。
扫描二维码推送至手机访问。
本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。
本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。













