Lua接口/物品发放与扣除:修订间差异
来自天龙知识库
跳到导航跳到搜索
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例 |
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例 |
||
| 第1行: | 第1行: | ||
__NOTOC__ | __NOTOC__ | ||
<div class="lua-reference | <div class="lua-reference"> | ||
[[首页|首页]] · [[Lua接口/服务端函数索引|服务端接口]] · [[Lua接口/服务端调用约定|调用约定]] | [[首页|首页]] · [[Lua接口/服务端函数索引|服务端接口]] · [[Lua接口/服务端调用约定|调用约定]] | ||
| 第6行: | 第6行: | ||
== 发放流程 == | == 发放流程 == | ||
{| class="wikitable | {| class="wikitable" | ||
! scope="col | ! scope="col" | 接口 | ||
! scope="col | ! scope="col" | 参数与返回 | ||
|- | |- | ||
| [[Lua接口/服务端/BeginAddItem|BeginAddItem]] | |||
| <code>sceneId</code> → 无返回值。清空待发列表,开始构造一批。 | |||
|- | |- | ||
| [[Lua接口/服务端/AddItem|AddItem]] | |||
| <code>sceneId, itemTypeSn, count</code> → 无返回值。加入待发列表。 | |||
|- | |- | ||
| [[Lua接口/服务端/AddItemWithQuality|AddItemWithQuality]] | |||
| <code>sceneId, itemSerial, count, reason</code> → 无返回值。带生成原因。 | |||
|- | |- | ||
| [[Lua接口/服务端/AddItemBonus|AddItemBonus]] | |||
| <code>sceneId, itemTypeSn, count</code> → 无返回值。追加奖励物品。 | |||
|- | |- | ||
| [[Lua接口/服务端/EndAddItem|EndAddItem]] | |||
| <code>sceneId, selfId</code> → 1 可接收、0 不可、-1 失败。 | |||
|- | |- | ||
| [[Lua接口/服务端/AddItemListToHuman|AddItemListToHuman]] | |||
| <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 | {| class="wikitable" | ||
! scope="col | ! scope="col" | 接口 | ||
! scope="col | ! scope="col" | 参数与返回 | ||
|- | |- | ||
| [[Lua接口/服务端/DelItem|DelItem]] | |||
| <code>sceneId, selfId, itemIndex, delCount</code> → 1 成功、0 失败、-1 异常。 | |||
|- | |- | ||
| [[Lua接口/服务端/EraseItem|EraseItem]] | |||
| <code>sceneId, selfId, bagIndex</code> → 1 已删除、0 失败、-1 异常。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnDelAvailableItem|LuaFnDelAvailableItem]] | |||
| <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 | {| class="wikitable" | ||
! scope="col | ! scope="col" | 接口 | ||
! scope="col | ! scope="col" | 参数与返回 | ||
|- | |- | ||
| [[Lua接口/服务端/AddItemToBox|AddItemToBox]] | |||
| <code>sceneId, ItemBoxID, iQualityType, iBoxItemCount</code> → 所有路径返回 -1。 | |||
|} | |} | ||
[[Lua接口/服务端/AddItemToBox|AddItemToBox]] 所有结束路径都返回 -1,包括已添加物品的路径,不能据此判断是否执行了添加。 | [[Lua接口/服务端/AddItemToBox|AddItemToBox]] 所有结束路径都返回 -1,包括已添加物品的路径,不能据此判断是否执行了添加。 | ||
== 发放物品 == | == 发放物品 == | ||
<pre | <pre>BeginAddItem(sceneId) | ||
AddItem(sceneId, itemTypeSn, 1) | AddItem(sceneId, itemTypeSn, 1) | ||
local ok = EndAddItem(sceneId, selfId) | local ok = EndAddItem(sceneId, selfId) | ||
| 第67行: | 第67行: | ||
== 扣除物品 == | == 扣除物品 == | ||
<pre | <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 | <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 回比。
相关主题
- 角色信息
- 属性读取与修改
- 等级与经验
- 货币相关
- 物品查询
- 物品发放与扣除
- 背包空间
- 装备操作
- 任务状态
- 任务变量
- NPC 对话
- 对话选项
- 技能相关
- 心法相关
- 状态效果
- 生活技能
- 珍兽查询
- 珍兽操作
- 场景查询
- 坐标与传送
- 副本相关
- 活动相关
- 时间与计时
- 怪物相关
- 队伍相关
- 帮会相关
- 消息与提示
- 聊天与公告
函数不存在或提示 nil · 参数类型与顺序 · 返回值判断 · 对象 ID 与 GUID
本页函数签名与返回约定依据当前服务端注册表整理;sceneId、selfId 由实际回调提供,业务枚举、属性类型编号与运行效果需要实测。