Lua接口/服务端/LuaFnGemStackTransform

来自天龙知识库
Waylee​(留言 | 贡献)2026年10月24日 (六) 12:24的版本 (维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航跳到搜索

首页 · 服务端接口 · 生活技能与装备 · 调用约定

宝石堆的原子加工:跨堆取料并产出,可同时提交装备绑定。

Lua 调用

LuaFnGemStackTransform(sceneId, selfId, gemId, gemPos, count, material1, material2, productId, moneyCost, forceBind, equipPos)

服务端脚本中共出现 5 处调用,实参个数出现过:10 个(3 处)、11 个(2 处)。

实现位于 LuaFnTbl_Ability.h。

参数

序号 参数 / 类型 说明
1 sceneId
number
当前调用所在的场景 ID。
脚本中的实参:sceneId(5 处)
2 selfId
number
当前场景内的对象 ID;必须是本场景线程中的有效玩家,不是角色 GUID。
脚本中的实参:selfId(5 处)
3 gemId
number
宝石表编号,必须大于 0。
脚本中的实参:gemIdx(2 处)、gemId、GemItemID
4 gemPos
number
宝石所在格号;−1 表示跨堆取。
脚本中的实参:-1(2 处)、GemBagIndex(2 处)、GemItemPos
5 count
number
消耗颗数,必须大于 0。
脚本中的实参:1(3 处)、3、count
6 material1
number
第一种材料所在格号,不用时传 −1。
脚本中的实参:MatBagIndex1(2 处)、NeedItemPos(2 处)、materialPos
7 material2
number
第二种材料所在格号,不用时传 −1。
脚本中的实参:-1(3 处)、MatBagIndex2(2 处)
8 productId
number
产物编号,0 表示无产物。
脚本中的实参:product(3 处)、ProductID(2 处)
9 moneyCost
number
费用,必须不小于 0。
脚本中的实参:cost(2 处)、NeedMoney(2 处)、rule.MoneyCost
10 forceBind
number
强制绑定标志,取值 0 或 1。
脚本中的实参:0(4 处)、ProductNeedBind
11 equipPos
number
可选的装备位置:传入时把被消耗材料的绑定状态合并到该装备后一并提交。
脚本中的实参:EquipBagIndex(2 处)

返回值

返回 1 个 number:成功时是产物所在格号;产物在背包外生成时返回背包格数,作为成功哨兵;失败返回 −1。

脚本中的调用

以下是服务端脚本里的真实调用点,按实参形态去重后列出 4 条。这些调用取自随包发布的脚本,可用于确认参数顺序与实际传入的值;它们不代表该写法在当前版本仍然有效。

-- event/liveabilityevent/gem_compound.lua
LuaFnGemStackTransform(sceneId, selfId, gemId, -1, count, materialPos, -1, product, rule.MoneyCost, 0)

-- event/liveabilityevent/gem_embed.lua
LuaFnGemStackTransform(sceneId, selfId, gemIdx, GemBagIndex, 1, MatBagIndex1, MatBagIndex2, product, cost, 0, EquipBagIndex)

-- event/misc/GemCarve.lua
LuaFnGemStackTransform(sceneId, selfId, GemItemID, GemItemPos, 1, NeedItemPos, -1, ProductID, NeedMoney, ProductNeedBind)

-- event/misc/GemMelting.lua
LuaFnGemStackTransform(sceneId, selfId, GemItemID1, -1, 3, NeedItemPos, -1, ProductID, NeedMoney, 0)

注意事项

  • 可以只传前 10 个实参;省略第 11 个时按 −1 处理。
  • 正常概率失败但没有产物时也视为已提交,返回背包格数这个成功哨兵,不要把它当作物品位置。
  • 脚本中有只传 10 个实参的调用,少于实现体读取的 11 个位置;缺省位置按引擎对缺失值的转换处理(通常为 0),不能直接当作有效数据。