装备与物品

获取装备属性

读取指定装备位、QueryItemDlg 当前提交装备或 ItemBox 装备的属性,并跳转到后续标签处理结果。

命令用途

GetEquipProps 用于读取指定装备位上的装备属性,并把结果交给后续标签继续处理。

它常见于装备展示、锻造、鉴定属性读取、宝石系统、QueryItemDlg 提交流程和 ItemBox 流程,适合作为属性读取阶段的入口命令。

命令名

GetEquipProps 支持英雄 H.

调用格式

GetEquipProps <装备位置> [跳转标签]

参数说明

参数必填说明
装备位置是要读取的位置编号。常规装备位通常是 0~16;普通物品框或临时位置使用 10000;自定义 OK 框使用 20000~20019。扩展位置可参考 普通物品框与 ItemBox 扩展位置。
跳转标签否读取成功后跳转到的标签。0525-05-2 引擎后支持自定义跳转标签;更早的引擎通常只支持默认标签 [@OnGetEquipProps]。

返回或影响

  • 这是取值型命令,会触发后续标签,而不是直接在当前行返回布尔结果。
  • 读取成功后,可在跳转标签里通过 $PARAM(n) 和装备相关变量继续处理结果。
  • 常见临时参数包括 $PARAM(0) 物品 ID、$PARAM(1) stdmode、$PARAM(2) looks、$PARAM(3) 装备位置、$PARAM(4) 鉴定基础属性有效条数、$PARAM(5) 鉴定神秘属性有效条数。
  • 如果目标位置没有有效装备,通常不会得到你期望的属性结果,因此业务脚本里往往先配合 CheckUseItem 做前置判断。

跳转标签说明

  • 0525-05-2 引擎后,第二参数支持自定义跳转标签。
  • 0525-05-2 引擎前,通常只支持跳转到默认标签 [@OnGetEquipProps]。

临时参数

参数说明
$PARAM(0)物品 ID
$PARAM(1)StdMode
$PARAM(2)Looks
$PARAM(3)装备位置
$PARAM(4)鉴定基础属性有效条数
$PARAM(5)鉴定神秘属性有效条数

示例

基础用法

#ACT
GetEquipProps 1 @OnGetEquipProps

[@OnGetEquipProps]
#ACT
SendMsg 5 "当前读取的装备名:<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>"

这段写法用于读取指定装备位上的装备属性,并在回调标签中继续处理结果。

常见变体

#ACT
GetEquipProps 10000 @OnGetEquipProps

[@OnGetEquipProps]
#IF
CheckItemAddValue <$PARAM(3)> 16 ? 5
#ACT
UpgradeItemEx <$PARAM(3)> 16 100 1 2 0

这类写法用于先读取 QueryItemDlg 当前提交的装备,再把得到的位置继续交给属性判断和强化命令处理。

ItemBox 变体

#ACT
GetEquipProps 20004 @OnGetEquipProps

[@OnGetEquipProps]
#ACT
SendMsg 5 "当前读取的是 ItemBox4 中的装备。"

这类写法用于读取 ItemBox 中指定槽位的装备,和 QueryItemDlg 10000 不是同一套流程。

后续取值

GetEquipProps 读取成功后,常见做法是在后续标签里继续读取当前物品的名称、ID、数量、持久、Looks、价格等结果。

这组取值里的 位置 通常支持以下三类写法:

  • 常规装备位置:例如 0、1、3、16,可参考 装备位置
  • 普通物品框:10000,表示 QueryItemDlg 当前提交的 DlgItem
  • 自定义物品框:20000~20019,表示 ItemBox0~19

扩展位置的完整说明可参考 普通物品框与 ItemBox 扩展位置。

变量命名与取值格式

属性类变量里的占位符含义如下:

  • p:普通属性位置,取值 0~30;具体编号解释见 装备属性位置。
  • i:鉴定属性编号,取值 1~30。
  • IDX{1~4} / SLOT{1~4}:一件装备可以有 4 条相同的属性(例如“攻击+1 攻击+3 攻击+3 攻击+3”),这里用来指定取第几条;SLOT 取到的属性值非 0 才算有效。
  • 一组属性字符串统一写成 1=5,3=5,28=7,28=8 这样的格式:等号左边是属性编号(普通属性为 0~30,鉴定基础属性与鉴定神秘属性为 1~30),右边是数值。整组字符串适合再配合 StrTok 一类命令拆分。

常见取值写法

#ACT
GetEquipProps 10000 @OnGetEquipProps

[@OnGetEquipProps]
#ACT
SendMsg 5 "数量:<$STR(M_EQUIP[<$PARAM(3)>]_COUNT)>"
SendMsg 5 "持久:<$STR(M_EQUIP[<$PARAM(3)>]_DURA)>"
SendMsg 5 "Looks:<$STR(M_EQUIP[<$PARAM(3)>]_LOOKS)>"
SendMsg 5 "名称:<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>"

这类写法适合先确定当前读取的是哪个位置,再继续输出数量、持久和 Looks 等结果。

基础字段

变量读取内容适合怎么用
M_EQUIP[位置]_COUNT当前物品数量用于显示数量、判断提交物品是否为堆叠物品
M_EQUIP[位置]_DURA当前物品持久用于显示耐久、维修前判断或状态提示
M_EQUIP[位置]_LOOKS当前物品 Looks用于按外观编号做显示分支或条件判断
M_EQUIP[位置]_SHAPE当前物品 Shape用于区分同一大类下的细分类型
M_EQUIP[位置]_STDMODE当前物品 StdMode用于先判断物品大类,再继续细分处理
M_EQUIP[位置]_ANICOUNT当前物品 AniCount用于判断附加编号、等级档位或扩展含义
S_EQUIP[位置]_NAME当前物品名称用于回显名称、提示玩家当前提交的是哪件物品
S_EQUIP[位置]_ID当前物品 ID用于需要继续和数据库物品 ID 对照的流程
M_EQUIP[位置]_PRICE当前物品 HeroDB 价格用于读取当前物品的内部价格字段
M_EQUIP[位置]_BUYING_PRICE商店购买价用于显示从商店购买该物品时的价格。执行 NPC 需要是商人,且价格倍率已正确生效,否则常见结果为 0
M_EQUIP[位置]_SELLING_PRICE商店出售价用于显示把该物品卖给商店时的价格。执行 NPC 需要是商人,否则常见结果为 0
M_EQUIP[位置]_OVERLAP_TYPE重叠物品类型用于判断当前物品是否属于可重叠或特定重叠类型。0 表示非重叠,1 或 2 表示重叠物品

属性与鉴定字段

变量读取内容适合怎么用
M_EQUIP[位置]_NORM_PROPS{属性}单条普通属性值用于按属性位置读取一条普通属性,属性编号可参考 装备属性位置
S_EQUIP[位置]_NORM_PROPS一组普通属性字符串用于一次取出整组普通属性,再交给后续字符串处理
S_EQUIP[位置]_EVAL_BASE_PROPS一组鉴定基础属性字符串用于取出整组鉴定基础属性,常见格式如 1=5,3=5
S_EQUIP[位置]_EVAL_MYST_PROPS一组鉴定神秘属性字符串用于取出整组鉴定神秘属性,常见格式如 1=5,3=5
S_EQUIP[位置]_EVAL_BASE_PROP_SLOT{1~4}单条鉴定基础属性字符串用于按第 1~4 条读取单条鉴定基础属性,常见格式如 1=5
S_EQUIP[位置]_EVAL_MYST_PROP_SLOT{1~4}单条鉴定神秘属性字符串用于按第 1~4 条读取单条鉴定神秘属性,常见格式如 1=5
M_EQUIP[位置]_EVAL_BASE_PROPS{属性}单条鉴定基础属性值用于按鉴定属性编号读取一条基础属性值
M_EQUIP[位置]_EVAL_MYST_PROPS{属性}单条鉴定神秘属性值用于按鉴定属性编号读取一条神秘属性值
M_EQUIP[位置]_EVAL_SPEC_PROPS鉴定特殊属性用于读取当前物品的鉴定特殊属性结果
M_EQUIP[位置]_EVAL_SKILL_PROPS鉴定神技用于读取当前物品的鉴定神技结果
M_EQUIP[位置]_EVAL_TIMES_PROPS鉴定次数用于读取当前物品已经鉴定了几次
M_EQUIP[位置]_HAS_EVAL_BASE_PROPS是否有鉴定基础属性=0 表示没有,>0 表示有
M_EQUIP[位置]_HAS_EVAL_MYST_PROPS是否有鉴定神秘属性=0 表示没有,>0 表示有

宝石字段

变量读取内容适合怎么用
M_EQUIP[位置]_GEMSTONE[p]_TYPE宝石类型用于读取第 p 个宝石孔的宝石类型,常见范围 1~31
M_EQUIP[位置]_GEMSTONE[p]_LEVEL宝石等级用于读取第 p 个宝石孔的等级。0 未开孔,1~6 已镶嵌宝石,7 表示已开孔但未镶嵌
S_EQUIP[位置]_GEMSTONE[p]_NAME宝石名称用于读取第 p 个宝石孔当前宝石名称
M_EQUIP[位置]_GEMSTONE[p]_VALUE宝石属性值用于读取第 p 个宝石孔的属性值
M_EQUIP[位置]_GEMSTONE_INLAY_CNT已镶宝石数用于读取当前装备已经镶嵌了多少颗宝石
M_EQUIP[位置]_GEMSTONE_SOCKET_CNT已开启孔数用于读取当前装备已经开了多少个孔
S_EQUIP[位置]_GEMSTONE_PROPS宝石总属性字符串用于一次取出总的宝石属性,常见格式类似 位置1,类型1=等级1|位置2,类型2=等级2

这些字段共用同一套位置写法:常规装备位、普通物品框 10000、ItemBox 自定义物品框 20000~20019。

属性字段说明

  • M_EQUIP[位置]_NORM_PROPS{属性} 里的 属性 指的是普通属性位置编号,通用装备和武器的编号解释并不一样,可参考 装备属性位置。
  • S_EQUIP[位置]_NORM_PROPS 适合一次取出整组普通属性,再配合字符串处理命令拆分。
  • S_EQUIP[位置]_EVAL_BASE_PROPS、S_EQUIP[位置]_EVAL_MYST_PROPS 取出的是整组鉴定属性字符串,常见格式类似 1=5,3=5,28=8。
  • S_EQUIP[位置]_EVAL_BASE_PROP_SLOT{1~4}、S_EQUIP[位置]_EVAL_MYST_PROP_SLOT{1~4} 适合按第几条鉴定属性逐条读取;一件装备可以同时出现 4 条相同类型属性。
  • M_EQUIP[位置]_EVAL_BASE_PROPS{属性}、M_EQUIP[位置]_EVAL_MYST_PROPS{属性} 适合按鉴定属性编号直接取单条数值;如果同一属性重复出现,这类单条取值通常不适合继续判断整组结果。
  • M_EQUIP[位置]_HAS_EVAL_BASE_PROPS、M_EQUIP[位置]_HAS_EVAL_MYST_PROPS 适合先判断当前装备是否带有对应鉴定属性,再决定要不要继续展开读取。

宝石字段说明

  • 宝石相关变量中的 p 表示宝石孔位置,写脚本时应替换成实际孔位编号。
  • M_EQUIP[位置]_GEMSTONE[p]_TYPE 是宝石类型,常见范围 1~31;M_EQUIP[位置]_GEMSTONE[p]_VALUE 读取宝石属性值,常见取值到 21 亿。
  • M_EQUIP[位置]_GEMSTONE[p]_LEVEL 中,0 表示未开孔,1~6 表示已经镶嵌宝石,7 表示已经开孔但还没镶嵌。
  • S_EQUIP[位置]_GEMSTONE_PROPS 适合一次取出整组宝石属性,再交给后续字符串处理流程。

常见字段组合

基础字段组合

  • 先看 M_EQUIP[位置]_STDMODE,确认当前物品属于哪一大类。
  • 需要继续细分时,再结合 M_EQUIP[位置]_SHAPE 或 M_EQUIP[位置]_ANICOUNT。
  • 需要展示或回显时,再读取 S_EQUIP[位置]_NAME、M_EQUIP[位置]_COUNT、M_EQUIP[位置]_DURA、M_EQUIP[位置]_LOOKS。
  • 需要算价格或商店提示时,可继续读取 M_EQUIP[位置]_PRICE、M_EQUIP[位置]_BUYING_PRICE、M_EQUIP[位置]_SELLING_PRICE。

属性与鉴定组合

  • 需要读取普通属性时,可先用 M_EQUIP[位置]_NORM_PROPS{属性} 按编号取值;需要一次取完整组时,再用 S_EQUIP[位置]_NORM_PROPS。
  • 需要处理鉴定属性时,可先用 M_EQUIP[位置]_HAS_EVAL_BASE_PROPS、M_EQUIP[位置]_HAS_EVAL_MYST_PROPS 判断是否存在,再决定读取整组字符串还是单条数值。
  • 如果你关心的是第几条鉴定属性,再继续读取 S_EQUIP[位置]_EVAL_BASE_PROP_SLOT{1~4} 或 S_EQUIP[位置]_EVAL_MYST_PROP_SLOT{1~4}。

宝石字段组合

  • 需要处理宝石时,可先读取 M_EQUIP[位置]_GEMSTONE_SOCKET_CNT、M_EQUIP[位置]_GEMSTONE_INLAY_CNT,再继续读取各孔位的类型、等级、名称和属性值。
  • 如果要一次回显整组宝石信息,可直接读取 S_EQUIP[位置]_GEMSTONE_PROPS,再按字符串格式继续拆分。

常见取值来源

除了人物或英雄身上常规装备位,这组取值还常见于下面这些流程:

  • 人物或英雄身上:位置通常是 0~16
  • 普通 OK 框:位置通常是 10000
  • 自定义 OK 框:位置通常是 20000~20019
  • [@PickupItem]:常见位置是 10000
  • Take 物品名 1 "" 0 @OnTakeItem 这类流程:资料中常见写法为位置 1000,且这类写法通常不支持回调
  • [@EvalEquipSucceed]:常见位置是 10000
  • [@RefineItem_Succeed]:常见位置是 10000;这里读到的普通属性配置为 0~25、鉴定属性配置为 0~19,扩展部分涉及二进制计算
  • [@CREATEEQUIPSOCKETOK]:常见位置是 10000

注意事项

  • GetEquipProps 不是简单的条件判断命令,它的重点是读取属性并触发后续标签。
  • 如果你需要稳定读取结果,最好先确认目标装备位、QueryItemDlg 或 ItemBox 上确实有装备。
  • 读取后的装备相关变量和 $PARAM(n) 只应在对应回调流程里立即使用,不要把它们当作长期稳定状态。
  • 10000 表示 QueryItemDlg 当前提交的 DlgItem,20000~20019 表示 ItemBox0~19;这两套扩展位置不是一回事。
  • RetBoxItem 只对应 ItemBox0~19,不能因为 GetEquipProps 10000 也能读到提交装备,就把它当成 ItemBox 流程。
  • 后续取值时,优先保持和 GetEquipProps 实际读取目标一致,不要前面读 10000,后面又手动改成别的位置。

相关命令