Lua接口/服务端/LuaFnGemStackTransform
来自天龙知识库
宝石堆的原子加工:跨堆取料并产出,可同时提交装备绑定。
Lua 调用
LuaFnGemStackTransform(sceneId, selfId, gemId, gemPos, count, material1, material2, productId, moneyCost, forceBind, equipPos)
服务端脚本中共出现 5 处调用,实参个数出现过:10 个(3 处)、11 个(2 处)。
实现位于 LuaFnTbl_Ability.h。
参数
| 序号 | 参数 / 类型 | 说明 |
|---|---|---|
| 1 | sceneIdnumber
|
当前调用所在的场景 ID。 脚本中的实参: sceneId(5 处)
|
| 2 | selfIdnumber
|
当前场景内的对象 ID;必须是本场景线程中的有效玩家,不是角色 GUID。 脚本中的实参: selfId(5 处)
|
| 3 | gemIdnumber
|
宝石表编号,必须大于 0。 脚本中的实参: gemIdx(2 处)、gemId、GemItemID
|
| 4 | gemPosnumber
|
宝石所在格号;−1 表示跨堆取。 脚本中的实参: -1(2 处)、GemBagIndex(2 处)、GemItemPos
|
| 5 | countnumber
|
消耗颗数,必须大于 0。 脚本中的实参: 1(3 处)、3、count
|
| 6 | material1number
|
第一种材料所在格号,不用时传 −1。 脚本中的实参: MatBagIndex1(2 处)、NeedItemPos(2 处)、materialPos
|
| 7 | material2number
|
第二种材料所在格号,不用时传 −1。 脚本中的实参: -1(3 处)、MatBagIndex2(2 处)
|
| 8 | productIdnumber
|
产物编号,0 表示无产物。 脚本中的实参: product(3 处)、ProductID(2 处)
|
| 9 | moneyCostnumber
|
费用,必须不小于 0。 脚本中的实参: cost(2 处)、NeedMoney(2 处)、rule.MoneyCost
|
| 10 | forceBindnumber
|
强制绑定标志,取值 0 或 1。 脚本中的实参: 0(4 处)、ProductNeedBind
|
| 11 | equipPosnumber
|
可选的装备位置:传入时把被消耗材料的绑定状态合并到该装备后一并提交。 脚本中的实参: 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),不能直接当作有效数据。