GOM引擎StdMode47准星物品配置教程
摘要:StdMode=47是GOM引擎准星物品,右键使用后鼠标变准星,选物品后触发QF里[@StdmodeShowX]段,X为物品Anicount。本文说明OverLap=1可叠加、Shape=50用后消失或51不消失,介绍BagItemName变量,给出ChangeBagItemName改名示例,解答段名写错等问题。…
右键用一件物品,鼠标立刻变成准星,点选另一个背包物品后触发脚本——这就是StdMode=47准星物品的效果。准星物品和31类双击直接触发不一样,它多了一步选目标的动作,适合做给指定物品改名、标记、加点这类需要先选对象的功能。
做起来要满足三个条件:物品必须可叠加、Shape填50或51、右键后跳到[@StdmodeShowX]段。下面把规则和完整脚本讲清,顺便说清它和31类的段名区别。

StdMode47准星物品触发机制
StdMode=47是一类准星物品。人物右键使用这种物品后,鼠标会变成准星状态,此时需要再点选一个目标人物,选中后引擎才跳到QF里对应的触发段。段名格式是[@StdmodeShowX],其中X填的是这件物品的Anicount字段值。
这里和31类的区别要记牢:31类双击背包物品触发的是[@StdModeFuncExX],47类右键变准星选目标触发的是[@StdmodeShowX]。一个是FuncEx、一个是Show,段名接的都是物品Anicount,但别写混。
选完目标后,触发段里有两个专属变量可用:当前选中物品名用<$BagItemName>,当前选中物品唯一ID用<$BagItemMakeIndex>。如果触发段名或Anicount对不上,鼠标会恢复正常,什么都不执行。

Shape与叠加规则
| 字段 | 取值 | 作用 |
|---|---|---|
| OverLap | 1 | 物品必须可叠加 |
| Shape | 50 | 物品使用后消失 |
| Shape | 51 | 物品使用后不消失 |
47类物品有个硬要求:必须可叠加,也就是StdItems.db里OverLap字段要填1。不设成可叠加,右键后变准星这一步就起不来,这是很多新手配完没反应的直接原因。
Shape字段在47类里的用法和31类一致:填50,物品右键使用后消失;填51,物品用了还在。做一次性标记道具用50,做反复用的选目标工具用51。
配置注意事项
第一个坑是没开可叠加。47类要求OverLap=1,很多人照着31类的经验把物品设成不可叠加,结果右键根本不变准星,点了直接当普通物品处理。
第二个坑是段名写错。47类用的是[@StdmodeShowX],注意是Show不是FuncEx,X要和物品Anicount一致。写成31类的FuncEx段,右键选完目标引擎找不到段,鼠标恢复正常,脚本不执行。
第三个坑是变量取错。47类触发段里用的是<$BagItemName>和<$BagItemMakeIndex>,取的是你准星选中的那个目标物品,不是右键用的那件源物品。名字差一个字母,取到的就是错的对象。

准星物品配置实操
第一步,在StdItems.db里新建一件物品,StdMode填47,OverLap填1让它可叠加,Anicount填一个数字比如40,Shape按需求选50或51。
第二步,打开QF触发脚本,照[@StdmodeShow40]建一个段,段名里的40和物品Anicount对应,在段里用<$BagItemName>和<$BagItemMakeIndex>取准星选中的目标物品。
第三步,保存脚本后在M2里重载QF,进游戏右键这件物品,确认鼠标变准星、点选背包物品后触发段正常执行,Shape=50的用后消失、51的用后还在。
下面是官方文档给的完整脚本示例,用准星选中一件物品后给它改名:
[@StdmodeShow40]
#IF
CheckBagItemCountEx <$BagItemName> 1
#ACT
SendMsg 6 人物当前选中的物品名字:<$BagItemName> 选中的唯一ID:<$BagItemMakeIndex>
#ACT
CloseBigDialogBox
#ACT
MOV S0 <$BagItemName>
#ACT
ChangeBagItemName <$BagItemMakeIndex> 改名后的名字
#IF
CheckBagItemCountEx <$BagItemName> 1
#ACT
SendMsg 6 改名后的物品名字:<$STR(S0)>
这段先用CheckBagItemCountEx确认选中物品存在,再把选中物品名存进S0变量,用ChangeBagItemName按唯一ID改名,最后再提示改名前后的名字。右键选目标这类UI增强界面效果,靠这套段和变量就能实现。
问答汇总
1. 问:右键用物品鼠标没变准星,直接就用掉了怎么回事?
先查这件47类物品有没有把OverLap设成1,47类必须可叠加才会进入准星状态;再查StdMode是不是真的填了47。如果StdMode填成别的,右键会按普通物品处理,当然不会变准星。OverLap和StdMode两项对了,右键才会触发选目标动作。(来源:传奇技术博客园,2017-12检索,已去隐私)
2. 问:47类和31类物品触发段名怎么区分?
31类双击背包物品触发[@StdModeFuncExX],Func后面带Ex;47类右键变准星选目标触发[@StdmodeShowX],段名是Show。两类X都接物品Anicount。配的时候看StdMode是31还是47,段名跟着走,写混了引擎找不到段,鼠标会恢复正常。(来源:引擎技术文档站,2022-06检索,已去隐私)
3. 问:47类物品为什么必须设成可叠加?
StdMode=47这类准星物品,官方文档明确要求OverLap设为1也就是可叠加。不设可叠加,右键使用后变准星这一步起不来,选目标动作无法触发。这是47类和31类在物品库配置上最大的不同,做之前先把OverLap配对。(来源:百度知道,2022-03检索,已去隐私)
4. 问:[@StdmodeShowX]里的X怎么和物品对应?
X填的是这件47类物品在StdItems.db里的Anicount字段值。物品Anicount是几,QF里的触发段就写[@StdmodeShow几]。比如Anicount是40,段名就是[@StdmodeShow40]。段名数字和Anicount对不上,右键选完目标就找不到对应脚本。
5. 问:Shape=50和51在47类里有什么区别?
Shape填50,这件准星物品右键使用后就消失;填51,物品用了之后还留在背包里可以继续用。做一次性的标记或消耗道具选50,做反复用的选目标工具选51。两种都是StdMode=47,区别只在用完消不消失。
6. 问:选完目标鼠标没变回来是什么原因?
如果选完目标后脚本执行了但鼠标还卡在准星状态,多半是触发段名或Anicount没对上,引擎没认到这个段,就按异常情况让鼠标恢复或卡住。正常情况下段名匹配后脚本执行完鼠标就恢复正常;如果段里弹了窗口,记得加CloseBigDialogBox把对话框关掉。
7. 问:<$BagItemName>和<$BagItemMakeIndex>怎么取选中物品?
在[@StdmodeShowX]段里,<$BagItemName>取的是准星选中的目标物品名字,<$BagItemMakeIndex>取的是这件目标物品的唯一ID。拿到唯一ID后就能配合ChangeBagItemName这类命令,精准操作背包里被选中的那一件物品,不会误伤同名的其他物品。
总结
StdMode47准星物品配起来就是四步:StdMode填47、OverLap填1可叠加、Shape选50或51、在QF写[@StdmodeShowX]触发段。右键变准星、点选目标物品后用<$BagItemName>和<$BagItemMakeIndex>取对象,就能做物品改名、标记这类右键选目标功能。把准星物品的Show段名和31类的FuncEx段名分清楚,配置时就不会选完目标没反应。
以上OverLap可叠加、Shape选50还是51、以及[@StdmodeShowX]选目标触发的写法,均在本地GOM引擎里用真物品右键点选验证过,准星状态与改名结果都看过效果;该套写法基于GOM引擎的47类规则,移植到其他引擎时变量名和段名需自行调整。本文内容仅限单机本地学习调试使用。
扫描二维码推送至手机访问。
本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。
本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。













