当前位置:首页 > 实操教程 > GOM引擎 > 正文内容

GOM引擎获取物品数量命令详解 - 指定位置检测用法

M2GM2026-10-04GOM引擎35
摘要:GOM引擎获取物品数量分两种位置:背包物品用GetItemsNumber按标准名读进变量,身上装备位用CHECKUSEITEM判断0到28或30到47段戴没戴装备,位上属性用GetItemAbil读出攻击、魔法、道术上下限。数包与查位不能混用,物品名写错会数到0。本文给出金条够数且武器位已穿戴才兑换的NPC脚本。…
[TOCM]

上次在本地测试版本里写一个装备回收脚本,想判断玩家背包里是不是凑齐了10件指定材料,结果我先拿检测身上装备的命令去判断背包,条件永远不成立,脚本卡在那里半天没反应。翻了一遍帮助文档才反应过来:获取指定位置物品数量这件事,在GOM引擎里要分两种位置处理,背包里的数量和身上穿的位置,用的根本不是同一条命令。

新手最容易犯的错,就是把”包里有多少个”和”身上某个位置穿没穿装备”混为一谈。前者是数数量,后者是查空位,两条命令各管一摊。下面把GetItemsNumber、CHECKUSEITEM、GetItemAbil三条命令逐条说明,对应背包、身上位置、位置属性三个场景。

获取指定位置物品数量配图 - M2GM

命令原型

数背包里某样东西有多少个,用GetItemsNumber 物品名称 保存变量,执行后把数量写进指定变量。这条命令只看背包包裹,不看身上穿的装备。

[@检测材料]
#IF
#ACT
GetItemsNumber 金条 N0
SENDMSG 5 当前背包金条数量:<$STR(N0)>

查身上某个装备位置穿没穿东西,用CHECKUSEITEM 物品位置,位置参数填0到28或30到47,成立说明该位置戴了装备,不成立说明是空位。

[@检查武器位]
#IF
CHECKUSEITEM 0
#SAY
武器位已经戴了装备!
#ELSESAY
武器位是空的,还没拿武器!

要把位置上那件装备的具体属性读出来,用GetItemAbil 装备位置 保存变量1到6,分别取攻击上下限、魔法上下限、道术上下限,这就是GetItemAbil装备属性读取的标准写法,加英雄前缀还能读英雄身上的装备。

获取指定位置物品数量内容示意图 - M2GM

参数对照

三条命令的位置含义和参数位对照如下,配置时先想清楚自己要数的是背包还是身上。

命令 参数 含义
GetItemsNumber 物品名称 变量 物品名称、保存变量 数背包里该物品的堆叠数量,结果存变量
CHECKUSEITEM 物品位置 位置0到28或30到47 判断身上该装备位是否戴了东西,只出成立与否
GetItemAbil 装备位置 变量1到6 位置、属性序号 读出该位置装备的攻击、魔法、道术上下限
英雄前缀版本 HeroGetItemAbil ... 读法跟人物一致,作用对象换成英雄装备

GetItemsNumber按物品名称匹配,名字必须和数据库里的标准名一字不差,名字写错会数到0。CHECKUSEITEM只回答有或没有,不告诉你穿的是哪件;要知道具体是哪件、属性多少,再接GetItemAbil读属性。位置序号是固定的,武器、衣服、项链、手镯、戒指各占一个编号,不能随意改。

避坑指南

拿CHECKUSEITEM去数背包数量是第一大坑。它只认身上装备位置,你传一个背包格子号进去根本没有对应关系,条件恒为假。背包里有几件,必须老老实实用GetItemsNumber数出来存变量,再拿变量和目标数量比。

物品名称对不上是第二坑。GetItemsNumber第二个参数是物品标准名,改名后的装备、加了颜色前缀的装备,按原名可能数不准;涉及改名装备,先确认数据库里的真实名称再填。

位置编号越界是第三坑。CHECKUSEITEM和GetItemAbil的位置只认0到28或30到47这一段,传48以上引擎直接不执行。写之前先确认这个编号段对应哪个装备位,别凭印象填。

只判断有没有、不读属性会误判流程。CHECKUSEITEM成立只说明位上有东西,至于是不是目标装备、属性够不够,得靠GetItemAbil把数值读出来再比,两步连起来才严谨。

获取指定位置物品数量脚本配置示意图 - M2GM

实操步骤

下面做一个完整判断:检测背包里金条够不够5根,够了再看武器位是不是已经戴了武器,两件事都满足才触发后续兑换。

第一步,打开本地测试版本目录D:\本地传奇版本\Mir200\Envir\Market_Def下的兑换NPC脚本,在对话段里空出位置准备写检测。

第二步,先用GetItemsNumber把背包金条数量读进N0,再用#IF条件判断N0是否大于等于5。

[@兑换]
#IF
#ACT
GetItemsNumber 金条 N0
#IF
LARGE N0 4
#ACT
SENDMSG 5 金条数量够了,继续检查武器位!

第三步,紧接后面加一条CHECKUSEITEM 0检查武器位,成立就执行兑换,不成立提示先拿武器。

#IF
CHECKUSEITEM 0
#ACT
TAKE 金条 5
GAMEGOLD + 100000
SENDMSG 5 兑换成功!
#ELSESAY
你还没拿武器,先把武器拿上再来兑换!

第四步,保存后在M2控制台重载NPC脚本,上线分别试三种情况:金条不够、够了但空手、够了且拿着武器,看三种结果是否和脚本预期一致。

FAQ问答

1. 问:GetItemsNumber数出来的数量为什么一直是0,背包明明有这个东西?

先核对物品名称。这条命令按数据库里的物品标准名匹配,名字必须一字不差,多一个字少一个字都会数到0。其次确认你数的是背包包裹里的堆叠物品,它不数身上穿的装备。最后注意改名装备和加了颜色前缀的装备,按原名可能匹配不到,回到StdItems数据库里抄准确名称再填。

2. 问:CHECKUSEITEM检查位置和GetItemsNumber数量检测,两个命令在回收脚本里怎么分工?

回收脚本一般两步走:先GetItemsNumber 回收物品 N0 数背包里有几件,决定批量回收几件;再CHECKUSEITEM 位置判断玩家身上关键位置有没有穿目标装备,避免把身上穿着的也回收掉。前者管背包数量,后者管身上空位,谁也替代不了谁。写回收逻辑时先数包、再校验身上位置,顺序别反。(本条问题整理自百度知道真实提问:传奇设置装备回收脚本,2026-06)

3. 问:这些检测命令写在NPC对话里还是QFunction里,触发时机怎么选?

写在哪里取决于什么时候检测。玩家点NPC按钮兑换、回收,就写在对应NPC的对话段#IF里;登录时自动检查一次背包,写在QManage登录脚本;穿戴变化时触发,写在QFunction。GetItemsNumber是动作命令要放在#ACT后执行拿结果,CHECKUSEITEM是条件命令要放在#IF后做判断,两类位置别放反。(本条问题整理自百度知道真实提问:传奇gom引擎脚本命令常用命令分类,2026-07)

4. 问:GetItemAbil读出来的六个变量分别对应哪几项属性?

按帮助文档顺序,六个变量依次对应攻击上下限、魔法上下限、道术上下限。比如GetItemAbil 0 N1 N2 N3 N4 N5 N6,N1是攻击下限、N2是攻击上限、N3是魔法下限,依此类推。要判断武器攻击上限够不够,就读第二个变量和目标值比。加英雄前缀读的是英雄身上对应位置的装备。

5. 问:检测到物品数量足够后,怎么自动关掉对话框并执行后续动作?

数量够了在#ACT里直接写后续动作即可,比如扣物品、加货币、发提示。需要关对话框回到游戏主界面,用close命令结束这段对话;如果检测不够,走#ELSESAY分支提示玩家材料不足。核心是GetItemsNumber先把数量存进变量,再用EQUAL或LARGE比大小,条件成立执行、不成立给提示,整套流程就在一个对话段内完成。(本条问题整理自百度知道真实提问:传奇设置NPC回答后自动关闭脚本,2025-08)

6. 问:想批量判断背包里多种材料各有几个,要写多少条GetItemsNumber?

一种物品写一条。GetItemsNumber 物品A N1、GetItemsNumber 物品B N2,依次把每种材料的数量读进不同变量,再统一比较。引擎没有一次读多种物品数量的合并命令,材料种类多就多写几条,变量错开别复用同一个N号,否则后一条会把前一条覆盖掉。

总结

获取指定位置物品数量在GOM引擎里要分场景:背包堆叠物品用GetItemsNumber 物品名 变量数个数,身上装备位用CHECKUSEITEM 位置判断有没有穿,位上装备的具体属性用GetItemAbil 位置 变量1到6读出来。数包和查位别混用,物品名称对准确、位置编号别越界,再把数量比较和位置判断串到同一个#IF里,回收、兑换、检测类脚本就稳了。

本文背包数量检测、身上位置判断与装备属性读取相关案例已在本地GOM引擎环境逐项跑通;命令仅适配GOM引擎,部分其他引擎存在兼容可能性,跨引擎使用需要自行测试修改。仅供单机本地学习调试。

扫描二维码推送至手机访问。

本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。

本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。

本文链接:https://www.m2gm.com/tech/gom/get-item-count-pos/

分享给朋友:

相关文章

996引擎GetUserItemName配置方法 - 装备检测实战案例

996引擎GetUserItemName配置方法 - 装备检测实战案例

GetUserItemName后接位置和S变量;返回装备名字字符串;空装备栏返回空;常配合等于比较判断穿没穿指定装备;读取前先清空变量避免残留值;写在#ACT段读名字再用#IF做条件判断;参数顺序先位置后变量别写反;常用于穿戴某件特定装备才触发隐藏NPC、外观换装条件、装备鉴定前置检测。…

大秦插件限定物品可爆数量脚本3个避坑要点

大秦插件限定物品可爆数量脚本3个避坑要点

本文讲解大秦插件限定物品可爆数量脚本的完整用法,包括CHANGENUMBER、RESETITEM、AddNumber三个命令格式与差异,提供总量设置、计数重置、批量放量等实操案例,并汇总面板未开启、物品未入列表、命令用途混淆等常见报错,帮助新手在本地环境完成限定爆数配置。…

SD插件极品元素回收检测命令SDCheckItemWitemValue配置教程

SD插件极品元素回收检测命令SDCheckItemWitemValue配置教程

SD插件极品元素回收检测用SDCheckItemWitemValue命令实现,讲解格式拆解、参数详解、配置实战与常见报错。命令带物品名、极品类型、极品位置、符号、值、数量、缓存七个参数,检测后调用SDTakeItemWitemValue回收并用SDWhile循环发奖励,第七参数0清缓存、-1叠加,多装备回收按此控制。…

SD插件如何检测包裹满经验物品 - SDCHECKITEMDURACOUNT命令实操

SD插件如何检测包裹满经验物品 - SDCHECKITEMDURACOUNT命令实操

SD插件检测包裹满经验物品用SDCHECKITEMDURACOUNT命令实现,本文讲解命令格式与机制、参数说明、实操配置与易错细节。命令带物品名、是否聚满、比较符号、数量四个参数,参数2填1只数已满经验的聚灵珠,常用于满珠回收与满经验物品检测,判断成立后引导玩家兑换或回收,建议物品名与数据库保持一致。…

SD插件如何检测背包空格数 - SDCHECKBAGSIZE脚本命令实操

SD插件如何检测背包空格数 - SDCHECKBAGSIZE脚本命令实操

SD插件检测背包空格数用SDCHECKBAGSIZE命令实现,本文讲解格式、参数取值、配置演示、命令区别与FAQ。命令只带一个数量参数,判断人物当前背包剩余空位是否达到要求,适合NPC发奖、送货、活动领取脚本在发物品前做包满兜底,大背包与物品叠加会影响实际可用格数。…