装备与物品
获取装备属性
读取指定装备位、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]:常见位置是10000Take 物品名 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,后面又手动改成别的位置。
