Lua接口/物品查询:修订间差异

来自天龙知识库
跳到导航跳到搜索
雪舞​(留言 | 贡献)
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
Waylee​(留言 | 贡献)
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
第1行: 第1行:
__NOTOC__
__NOTOC__
<div class="lua-reference" style="max-width:1200px;margin:0 auto;line-height:1.8;color:#29343a;font-family:Arial,'Microsoft YaHei',sans-serif;letter-spacing:0;overflow-wrap:anywhere;">
<div class="lua-reference">
[[首页|首页]] · [[Lua接口/服务端函数索引|服务端接口]] · [[Lua接口/服务端调用约定|调用约定]]
[[首页|首页]] · [[Lua接口/服务端函数索引|服务端接口]] · [[Lua接口/服务端调用约定|调用约定]]


第6行: 第6行:


== 数量统计 ==
== 数量统计 ==
{| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;"
{| class="wikitable"
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 接口
! scope="col" | 接口
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 参数与返回
! scope="col" | 参数与返回
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetItemCount|GetItemCount]]
| [[Lua接口/服务端/GetItemCount|GetItemCount]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, itemTypeSn</code> → 累计数量(含已装备与背包);找不到 0、失败 -1。
| <code>sceneId, selfId, itemTypeSn</code> → 累计数量(含已装备与背包);找不到 0、失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetAvailableItemCount|LuaFnGetAvailableItemCount]]
| [[Lua接口/服务端/LuaFnGetAvailableItemCount|LuaFnGetAvailableItemCount]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, itemTypeSn</code> → 未加交易锁和密码锁的数量;失败 -1。
| <code>sceneId, selfId, itemTypeSn</code> → 未加交易锁和密码锁的数量;失败 -1。
|}
|}
[[Lua接口/服务端/GetItemCount|GetItemCount]] 统计已装备与背包中的同编号物品总量;[[Lua接口/服务端/LuaFnGetAvailableItemCount|LuaFnGetAvailableItemCount]] 只统计未加锁的,用于判断能否交易或扣除。
[[Lua接口/服务端/GetItemCount|GetItemCount]] 统计已装备与背包中的同编号物品总量;[[Lua接口/服务端/LuaFnGetAvailableItemCount|LuaFnGetAvailableItemCount]] 只统计未加锁的,用于判断能否交易或扣除。


== 位置查找 ==
== 位置查找 ==
{| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;"
{| class="wikitable"
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 接口
! scope="col" | 接口
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 参数与返回
! scope="col" | 参数与返回
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetBagPosByItemSn|GetBagPosByItemSn]]
| [[Lua接口/服务端/GetBagPosByItemSn|GetBagPosByItemSn]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, itemTableIndex</code> → 首个匹配格子位置(0 有效);未找到 -1。
| <code>sceneId, selfId, itemTableIndex</code> → 首个匹配格子位置(0 有效);未找到 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetItemBagPos|GetItemBagPos]]
| [[Lua接口/服务端/GetItemBagPos|GetItemBagPos]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, itemTableIndex, findUnlock</code> → 首个匹配格子位置;可排除交易锁;未找到 -1。
| <code>sceneId, selfId, itemTableIndex, findUnlock</code> → 首个匹配格子位置;可排除交易锁;未找到 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetItemTableIndexByIndex|GetItemTableIndexByIndex]]
| [[Lua接口/服务端/GetItemTableIndexByIndex|GetItemTableIndexByIndex]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, itemIndex</code> → 该格物品配置编号;失败 -1。
| <code>sceneId, selfId, itemIndex</code> → 该格物品配置编号;失败 -1。
|}
|}
0 是有效格子位置,不能只靠 <code style="white-space:normal;overflow-wrap:anywhere;">&gt;= 0</code> 判断是否找到,要同时排除 -1。
0 是有效格子位置,不能只靠 <code>&gt;= 0</code> 判断是否找到,要同时排除 -1。


== 锁定与绑定 ==
== 锁定与绑定 ==
{| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;"
{| class="wikitable"
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 接口
! scope="col" | 接口
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 参数与返回
! scope="col" | 参数与返回
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnIsItemAvailable|LuaFnIsItemAvailable]]
| [[Lua接口/服务端/LuaFnIsItemAvailable|LuaFnIsItemAvailable]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, bagIndex</code> → 未加锁 1、已加锁 0、失败 -1。
| <code>sceneId, selfId, bagIndex</code> → 未加锁 1、已加锁 0、失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnIsItemLocked|LuaFnIsItemLocked]]
| [[Lua接口/服务端/LuaFnIsItemLocked|LuaFnIsItemLocked]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, bagIndex</code> → 交易锁 1、无锁 0、越界 -2、失败 -1。
| <code>sceneId, selfId, bagIndex</code> → 交易锁 1、无锁 0、越界 -2、失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetItemBindStatus|LuaFnGetItemBindStatus]]
| [[Lua接口/服务端/LuaFnGetItemBindStatus|LuaFnGetItemBindStatus]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, bagIndex</code> → 未绑定 0、已绑定 1、位置无效 2、失败 -1。
| <code>sceneId, selfId, bagIndex</code> → 未绑定 0、已绑定 1、位置无效 2、失败 -1。
|}
|}
[[Lua接口/服务端/LuaFnIsItemAvailable|LuaFnIsItemAvailable]] 检查交易锁和密码锁;[[Lua接口/服务端/LuaFnIsItemLocked|LuaFnIsItemLocked]] 只检查运行时交易锁。[[Lua接口/服务端/LuaFnGetItemBindStatus|LuaFnGetItemBindStatus]] 返回 2 表示位置无效,不是已绑定。
[[Lua接口/服务端/LuaFnIsItemAvailable|LuaFnIsItemAvailable]] 检查交易锁和密码锁;[[Lua接口/服务端/LuaFnIsItemLocked|LuaFnIsItemLocked]] 只检查运行时交易锁。[[Lua接口/服务端/LuaFnGetItemBindStatus|LuaFnGetItemBindStatus]] 返回 2 表示位置无效,不是已绑定。


== 物品属性 ==
== 物品属性 ==
{| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;"
{| class="wikitable"
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 接口
! scope="col" | 接口
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 参数与返回
! scope="col" | 参数与返回
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetItemName|GetItemName]]
| [[Lua接口/服务端/GetItemName|GetItemName]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, itemIndex</code> → 名称字符串或 -1。
| <code>sceneId, itemIndex</code> → 名称字符串或 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetBagItemLevel|GetBagItemLevel]]
| [[Lua接口/服务端/GetBagItemLevel|GetBagItemLevel]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, BagIndex</code> → 装备需求等级;非装备返回 255、失败 -1。
| <code>sceneId, selfId, BagIndex</code> → 装备需求等级;非装备返回 255、失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetItemApt|GetItemApt]]
| [[Lua接口/服务端/GetItemApt|GetItemApt]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, bagIndex, nAptitudeType</code> → 资质加成百分比整数;失败 -1。
| <code>sceneId, selfId, bagIndex, nAptitudeType</code> → 资质加成百分比整数;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetGemEmbededCount|GetGemEmbededCount]]
| [[Lua接口/服务端/GetGemEmbededCount|GetGemEmbededCount]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, BagPos</code> → 已镶嵌宝石数量;失败 -1。
| <code>sceneId, selfId, BagPos</code> → 已镶嵌宝石数量;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetBagItemDur|GetBagItemDur]]
| [[Lua接口/服务端/GetBagItemDur|GetBagItemDur]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, BagPos</code> → 耐久度;失败 -1。
| <code>sceneId, selfId, BagPos</code> → 耐久度;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetBagItemParam|GetBagItemParam]]
| [[Lua接口/服务端/GetBagItemParam|GetBagItemParam]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, BagPos, StartPos, Type</code> → 参数值;失败 -1。
| <code>sceneId, selfId, BagPos, StartPos, Type</code> → 参数值;失败 -1。
|}
|}
[[Lua接口/服务端/GetBagItemLevel|GetBagItemLevel]] 非装备返回 255(哨兵值),不能把 255 当正常等级。[[Lua接口/服务端/GetItemApt|GetItemApt]] 返回的是百分比整数(如 16 表示 +16%),不是原始资质点。
[[Lua接口/服务端/GetBagItemLevel|GetBagItemLevel]] 非装备返回 255(哨兵值),不能把 255 当正常等级。[[Lua接口/服务端/GetItemApt|GetItemApt]] 返回的是百分比整数(如 16 表示 +16%),不是原始资质点。


== 物品编号解析 ==
== 物品编号解析 ==
{| class="wikitable" style="width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;"
{| class="wikitable"
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 接口
! scope="col" | 接口
! scope="col" style="text-align:left;background:#edf3f2;padding:8px;" | 参数与返回
! scope="col" | 参数与返回
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetItemQuality|GetItemQuality]]
| [[Lua接口/服务端/GetItemQuality|GetItemQuality]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">itemIndex</code> → 品质编号或 -1。
| <code>itemIndex</code> → 品质编号或 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetCommonItemGrade|GetCommonItemGrade]]
| [[Lua接口/服务端/GetCommonItemGrade|GetCommonItemGrade]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">itemTableIndex</code> → 品级或 -1。
| <code>itemTableIndex</code> → 品级或 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetItemClass|GetItemClass]]
| [[Lua接口/服务端/GetItemClass|GetItemClass]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">itemTableIndex</code> → 物品类别或 -1。
| <code>itemTableIndex</code> → 物品类别或 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetItemEquipPoint|GetItemEquipPoint]]
| [[Lua接口/服务端/GetItemEquipPoint|GetItemEquipPoint]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">itemTableIndex</code> → 穿戴部位;非装备 -1。
| <code>itemTableIndex</code> → 穿戴部位;非装备 -1。
|}
|}
这组接口只传物品编号(不传 sceneId / selfId),从配置表直接读取静态属性。
这组接口只传物品编号(不传 sceneId / selfId),从配置表直接读取静态属性。


== 统计可交易物品 ==
== 统计可交易物品 ==
<pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">local count = LuaFnGetAvailableItemCount(sceneId, selfId, itemTypeSn)
<pre>local count = LuaFnGetAvailableItemCount(sceneId, selfId, itemTypeSn)
if type(count) == "number" and count &gt; 0 then
if type(count) == "number" and count &gt; 0 then
     -- 有未加锁的物品可交易或扣除
     -- 有未加锁的物品可交易或扣除
end</pre>
end</pre>
[[Lua接口/服务端/LuaFnGetAvailableItemCount|LuaFnGetAvailableItemCount]] 失败返回 -1,不能直接 <code style="white-space:normal;overflow-wrap:anywhere;">if count then</code> 判断(见 [[Lua接口/返回值判断|返回值判断]])。
[[Lua接口/服务端/LuaFnGetAvailableItemCount|LuaFnGetAvailableItemCount]] 失败返回 -1,不能直接 <code>if count then</code> 判断(见 [[Lua接口/返回值判断|返回值判断]])。


== 查找物品位置 ==
== 查找物品位置 ==
<pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">local bagIndex = GetItemBagPos(sceneId, selfId, itemTableIndex, 1)
<pre>local bagIndex = GetItemBagPos(sceneId, selfId, itemTableIndex, 1)
if type(bagIndex) == "number" and bagIndex ~= -1 then
if type(bagIndex) == "number" and bagIndex ~= -1 then
     -- 取得首个未加交易锁的格子位置
     -- 取得首个未加交易锁的格子位置
第142行: 第142行:
[[Lua接口/函数不存在|函数不存在或提示 nil]] · [[Lua接口/参数类型与顺序|参数类型与顺序]] · [[Lua接口/返回值判断|返回值判断]] · [[Lua接口/对象ID与GUID|对象 ID 与 GUID]]
[[Lua接口/函数不存在|函数不存在或提示 nil]] · [[Lua接口/参数类型与顺序|参数类型与顺序]] · [[Lua接口/返回值判断|返回值判断]] · [[Lua接口/对象ID与GUID|对象 ID 与 GUID]]


<div style="margin-top:20px;padding-top:10px;border-top:1px solid #dbe3e6;color:#657078;font-size:12px;">本页函数签名与返回约定依据当前服务端注册表整理;sceneId、selfId 由实际回调提供,业务枚举、属性类型编号与运行效果需要实测。</div>
<div class="lua-note">本页函数签名与返回约定依据当前服务端注册表整理;sceneId、selfId 由实际回调提供,业务枚举、属性类型编号与运行效果需要实测。</div>


</div>
</div>

2026年9月19日 (六) 16:59的版本

首页 · 服务端接口 · 调用约定

查询背包中物品的数量、位置、锁定状态与属性。物品配置编号(itemTypeSn / itemTableIndex)来自物品表,不是背包格子编号;背包格子编号(bagIndex / BagPos)是 0 起的位置。

数量统计

接口 参数与返回
GetItemCount sceneId, selfId, itemTypeSn → 累计数量(含已装备与背包);找不到 0、失败 -1。
LuaFnGetAvailableItemCount sceneId, selfId, itemTypeSn → 未加交易锁和密码锁的数量;失败 -1。

GetItemCount 统计已装备与背包中的同编号物品总量;LuaFnGetAvailableItemCount 只统计未加锁的,用于判断能否交易或扣除。

位置查找

接口 参数与返回
GetBagPosByItemSn sceneId, selfId, itemTableIndex → 首个匹配格子位置(0 有效);未找到 -1。
GetItemBagPos sceneId, selfId, itemTableIndex, findUnlock → 首个匹配格子位置;可排除交易锁;未找到 -1。
GetItemTableIndexByIndex sceneId, selfId, itemIndex → 该格物品配置编号;失败 -1。

0 是有效格子位置,不能只靠 >= 0 判断是否找到,要同时排除 -1。

锁定与绑定

接口 参数与返回
LuaFnIsItemAvailable sceneId, selfId, bagIndex → 未加锁 1、已加锁 0、失败 -1。
LuaFnIsItemLocked sceneId, selfId, bagIndex → 交易锁 1、无锁 0、越界 -2、失败 -1。
LuaFnGetItemBindStatus sceneId, selfId, bagIndex → 未绑定 0、已绑定 1、位置无效 2、失败 -1。

LuaFnIsItemAvailable 检查交易锁和密码锁;LuaFnIsItemLocked 只检查运行时交易锁。LuaFnGetItemBindStatus 返回 2 表示位置无效,不是已绑定。

物品属性

接口 参数与返回
GetItemName sceneId, itemIndex → 名称字符串或 -1。
GetBagItemLevel sceneId, selfId, BagIndex → 装备需求等级;非装备返回 255、失败 -1。
GetItemApt sceneId, selfId, bagIndex, nAptitudeType → 资质加成百分比整数;失败 -1。
GetGemEmbededCount sceneId, selfId, BagPos → 已镶嵌宝石数量;失败 -1。
GetBagItemDur sceneId, selfId, BagPos → 耐久度;失败 -1。
GetBagItemParam sceneId, selfId, BagPos, StartPos, Type → 参数值;失败 -1。

GetBagItemLevel 非装备返回 255(哨兵值),不能把 255 当正常等级。GetItemApt 返回的是百分比整数(如 16 表示 +16%),不是原始资质点。

物品编号解析

接口 参数与返回
GetItemQuality itemIndex → 品质编号或 -1。
GetCommonItemGrade itemTableIndex → 品级或 -1。
GetItemClass itemTableIndex → 物品类别或 -1。
GetItemEquipPoint itemTableIndex → 穿戴部位;非装备 -1。

这组接口只传物品编号(不传 sceneId / selfId),从配置表直接读取静态属性。

统计可交易物品

local count = LuaFnGetAvailableItemCount(sceneId, selfId, itemTypeSn)
if type(count) == "number" and count > 0 then
    -- 有未加锁的物品可交易或扣除
end

LuaFnGetAvailableItemCount 失败返回 -1,不能直接 if count then 判断(见 返回值判断)。

查找物品位置

local bagIndex = GetItemBagPos(sceneId, selfId, itemTableIndex, 1)
if type(bagIndex) == "number" and bagIndex ~= -1 then
    -- 取得首个未加交易锁的格子位置
end

0 是有效格子位置,要排除 -1 但不排除 0。

相关主题

服务端调用约定 · 服务端调用示例 · 服务端函数索引

函数不存在或提示 nil · 参数类型与顺序 · 返回值判断 · 对象 ID 与 GUID

本页函数签名与返回约定依据当前服务端注册表整理;sceneId、selfId 由实际回调提供,业务枚举、属性类型编号与运行效果需要实测。