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接口/服务端/BeginAddItem|BeginAddItem]]
| [[Lua接口/服务端/BeginAddItem|BeginAddItem]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId</code> → 无返回值。清空待发列表,开始构造一批。
| <code>sceneId</code> → 无返回值。清空待发列表,开始构造一批。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/AddItem|AddItem]]
| [[Lua接口/服务端/AddItem|AddItem]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, itemTypeSn, count</code> → 无返回值。加入待发列表。
| <code>sceneId, itemTypeSn, count</code> → 无返回值。加入待发列表。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/AddItemWithQuality|AddItemWithQuality]]
| [[Lua接口/服务端/AddItemWithQuality|AddItemWithQuality]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, itemSerial, count, reason</code> → 无返回值。带生成原因。
| <code>sceneId, itemSerial, count, reason</code> → 无返回值。带生成原因。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/AddItemBonus|AddItemBonus]]
| [[Lua接口/服务端/AddItemBonus|AddItemBonus]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, itemTypeSn, count</code> → 无返回值。追加奖励物品。
| <code>sceneId, itemTypeSn, count</code> → 无返回值。追加奖励物品。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/EndAddItem|EndAddItem]]
| [[Lua接口/服务端/EndAddItem|EndAddItem]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 1 可接收、0 不可、-1 失败。
| <code>sceneId, selfId</code> → 1 可接收、0 不可、-1 失败。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/AddItemListToHuman|AddItemListToHuman]]
| [[Lua接口/服务端/AddItemListToHuman|AddItemListToHuman]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 无返回值。实际发放。
| <code>sceneId, selfId</code> → 无返回值。实际发放。
|}
|}
[[Lua接口/服务端/BeginAddItem|BeginAddItem]]、[[Lua接口/服务端/AddItem|AddItem]]、[[Lua接口/服务端/AddItemWithQuality|AddItemWithQuality]]、[[Lua接口/服务端/AddItemBonus|AddItemBonus]] 都无返回值,赋值接收得到 nil。[[Lua接口/服务端/EndAddItem|EndAddItem]] 检查能否接收但**不发放**;[[Lua接口/服务端/AddItemListToHuman|AddItemListToHuman]] 实际发放但**无返回值**,不能据此判断全部到账。
[[Lua接口/服务端/BeginAddItem|BeginAddItem]]、[[Lua接口/服务端/AddItem|AddItem]]、[[Lua接口/服务端/AddItemWithQuality|AddItemWithQuality]]、[[Lua接口/服务端/AddItemBonus|AddItemBonus]] 都无返回值,赋值接收得到 nil。[[Lua接口/服务端/EndAddItem|EndAddItem]] 检查能否接收但**不发放**;[[Lua接口/服务端/AddItemListToHuman|AddItemListToHuman]] 实际发放但**无返回值**,不能据此判断全部到账。


== 扣除 ==
== 扣除 ==
{| 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接口/服务端/DelItem|DelItem]]
| [[Lua接口/服务端/DelItem|DelItem]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, itemIndex, delCount</code> → 1 成功、0 失败、-1 异常。
| <code>sceneId, selfId, itemIndex, delCount</code> → 1 成功、0 失败、-1 异常。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/EraseItem|EraseItem]]
| [[Lua接口/服务端/EraseItem|EraseItem]]
| 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接口/服务端/LuaFnDelAvailableItem|LuaFnDelAvailableItem]]
| [[Lua接口/服务端/LuaFnDelAvailableItem|LuaFnDelAvailableItem]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, itemTypeSn, delCount</code> → 1 成功、0 失败、-1 异常。
| <code>sceneId, selfId, itemTypeSn, delCount</code> → 1 成功、0 失败、-1 异常。
|}
|}
[[Lua接口/服务端/DelItem|DelItem]] 返回 0 时可能已部分扣除,不能据此认定背包未变化。[[Lua接口/服务端/LuaFnDelAvailableItem|LuaFnDelAvailableItem]] 只扣未加锁的物品,delCount 不大于 0 时直接返回 1 不扣除。[[Lua接口/服务端/EraseItem|EraseItem]] 删除整格物品(全部堆叠数量)。
[[Lua接口/服务端/DelItem|DelItem]] 返回 0 时可能已部分扣除,不能据此认定背包未变化。[[Lua接口/服务端/LuaFnDelAvailableItem|LuaFnDelAvailableItem]] 只扣未加锁的物品,delCount 不大于 0 时直接返回 1 不扣除。[[Lua接口/服务端/EraseItem|EraseItem]] 删除整格物品(全部堆叠数量)。


== 物品箱 ==
== 物品箱 ==
{| 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接口/服务端/AddItemToBox|AddItemToBox]]
| [[Lua接口/服务端/AddItemToBox|AddItemToBox]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, ItemBoxID, iQualityType, iBoxItemCount</code> → 所有路径返回 -1。
| <code>sceneId, ItemBoxID, iQualityType, iBoxItemCount</code> → 所有路径返回 -1。
|}
|}
[[Lua接口/服务端/AddItemToBox|AddItemToBox]] 所有结束路径都返回 -1,包括已添加物品的路径,不能据此判断是否执行了添加。
[[Lua接口/服务端/AddItemToBox|AddItemToBox]] 所有结束路径都返回 -1,包括已添加物品的路径,不能据此判断是否执行了添加。


== 发放物品 ==
== 发放物品 ==
<pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">BeginAddItem(sceneId)
<pre>BeginAddItem(sceneId)
AddItem(sceneId, itemTypeSn, 1)
AddItem(sceneId, itemTypeSn, 1)
local ok = EndAddItem(sceneId, selfId)
local ok = EndAddItem(sceneId, selfId)
第67行: 第67行:


== 扣除物品 ==
== 扣除物品 ==
<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 ok = DelItem(sceneId, selfId, itemIndex, 1)
<pre>local ok = DelItem(sceneId, selfId, itemIndex, 1)
if ok == 1 then
if ok == 1 then
     -- 扣除流程报告成功
     -- 扣除流程报告成功
第109行: 第109行:
[[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的版本

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

发放物品需要三步:构造待发列表 → 检查可接收 → 实际发放。扣除物品按编号或格子位置删除。

发放流程

接口 参数与返回
BeginAddItem sceneId → 无返回值。清空待发列表,开始构造一批。
AddItem sceneId, itemTypeSn, count → 无返回值。加入待发列表。
AddItemWithQuality sceneId, itemSerial, count, reason → 无返回值。带生成原因。
AddItemBonus sceneId, itemTypeSn, count → 无返回值。追加奖励物品。
EndAddItem sceneId, selfId → 1 可接收、0 不可、-1 失败。
AddItemListToHuman sceneId, selfId → 无返回值。实际发放。

BeginAddItem、AddItem、AddItemWithQuality、AddItemBonus 都无返回值,赋值接收得到 nil。EndAddItem 检查能否接收但**不发放**;AddItemListToHuman 实际发放但**无返回值**,不能据此判断全部到账。

扣除

接口 参数与返回
DelItem sceneId, selfId, itemIndex, delCount → 1 成功、0 失败、-1 异常。
EraseItem sceneId, selfId, bagIndex → 1 已删除、0 失败、-1 异常。
LuaFnDelAvailableItem sceneId, selfId, itemTypeSn, delCount → 1 成功、0 失败、-1 异常。

DelItem 返回 0 时可能已部分扣除,不能据此认定背包未变化。LuaFnDelAvailableItem 只扣未加锁的物品,delCount 不大于 0 时直接返回 1 不扣除。EraseItem 删除整格物品(全部堆叠数量)。

物品箱

接口 参数与返回
AddItemToBox sceneId, ItemBoxID, iQualityType, iBoxItemCount → 所有路径返回 -1。

AddItemToBox 所有结束路径都返回 -1,包括已添加物品的路径,不能据此判断是否执行了添加。

发放物品

BeginAddItem(sceneId)
AddItem(sceneId, itemTypeSn, 1)
local ok = EndAddItem(sceneId, selfId)
if ok == 1 then
    AddItemListToHuman(sceneId, selfId)
    -- 无返回值;要确认到账应改读 GetItemCount 回比
end

EndAddItem 返回 1 表示可接收,但实际发放在 AddItemListToHuman,后者无返回值。要确认物品到账,应在发放后用 GetItemCount 读回比较。

扣除物品

local ok = DelItem(sceneId, selfId, itemIndex, 1)
if ok == 1 then
    -- 扣除流程报告成功
elseif ok == 0 then
    -- 可能已部分扣除;不能认定背包未变化
end

DelItem 返回 0 时可能已部分扣除。LuaFnDelAvailableItem 同理。要确认实际数量应改读 GetItemCount 或 LuaFnGetAvailableItemCount 回比。

相关主题

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

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

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