Lua接口/货币相关:修订间差异
来自天龙知识库
跳到导航跳到搜索
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例 |
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例 |
||
| (未显示同一用户的2个中间版本) | |||
| 第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接口/服务端/GetMoney|GetMoney]] | |||
| <code>sceneId, selfId</code> → 玩家现金。 | |||
|- | |- | ||
| [[Lua接口/服务端/AddMoney|AddMoney]] | |||
| <code>sceneId, selfId, profit, arg4, arg5</code> → 5 个参数,后两项不可省略。 | |||
|- | |- | ||
| [[Lua接口/服务端/CostMoney|CostMoney]] | |||
| <code>sceneId, selfId, payment</code> → 扣除现金。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnCostMoneyWithPriority|LuaFnCostMoneyWithPriority]] | |||
| <code>sceneId, selfId, cost</code> → 按接口约定的优先级扣款;返回 1 或 2 个值。 | |||
|} | |} | ||
[[Lua接口/服务端/AddMoney|AddMoney]] 的签名是 5 个参数, | [[Lua接口/服务端/AddMoney|AddMoney]] 的签名是 5 个参数,'''不能省略 arg4、arg5''':缺参会让校验器按数量报错,运行时也按位置读取。[[Lua接口/服务端/CostMoney|CostMoney]] 只扣现金,金额不足时走失败路径,'''不会自动转扣交子''';要按优先级扣款应改用 [[Lua接口/服务端/LuaFnCostMoneyWithPriority|LuaFnCostMoneyWithPriority]],它可能返回 1 或 2 个值,少接收变量会丢掉第二项。 | ||
== 交子 == | == 交子 == | ||
{| class="wikitable | {| class="wikitable" | ||
! scope="col | ! scope="col" | 接口 | ||
! scope="col | ! scope="col" | 参数与返回 | ||
|- | |- | ||
| [[Lua接口/服务端/GetMoneyJZ|GetMoneyJZ]] | |||
| <code>sceneId, selfId</code> → 交子数量。 | |||
|- | |- | ||
| [[Lua接口/服务端/AddMoneyJZ|AddMoneyJZ]] | |||
| <code>sceneId, selfId, value</code> → 增加交子;返回 1 成功、0 失败。 | |||
|} | |} | ||
[[Lua接口/服务端/AddMoneyJZ|AddMoneyJZ]] 会同步世界服交子收入统计,返回 1 表示成功、0 表示失败,可用 <code | [[Lua接口/服务端/AddMoneyJZ|AddMoneyJZ]] 会同步世界服交子收入统计,返回 1 表示成功、0 表示失败,可用 <code>== 1</code> 判断。 | ||
== 银行与统计 == | == 银行与统计 == | ||
{| class="wikitable | {| class="wikitable" | ||
! scope="col | ! scope="col" | 接口 | ||
! scope="col | ! scope="col" | 参数与返回 | ||
|- | |- | ||
| [[Lua接口/服务端/AddBankMoney|AddBankMoney]] | |||
| <code>sceneId, selfId, value</code> → 增加银行金币并写入资金审计。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnGetHumanGoodBadValue|LuaFnGetHumanGoodBadValue]] | |||
| <code>sceneId, selfId</code> → 善恶值(与货币口径不同,单独维护)。 | |||
|} | |} | ||
[[Lua接口/服务端/AddBankMoney|AddBankMoney]] 会同时同步世界服金币系统总量,调用即记入资金审计,不能当作无副作用调试调用。善恶值是单独维护的数值,不能与现金、交子互换。 | [[Lua接口/服务端/AddBankMoney|AddBankMoney]] 会同时同步世界服金币系统总量,调用即记入资金审计,不能当作无副作用调试调用。善恶值是单独维护的数值,不能与现金、交子互换。 | ||
== 读取现金 == | == 读取现金 == | ||
<pre | <pre>local money = GetMoney(sceneId, selfId) | ||
if type(money) == "number" and money >= 0 then | if type(money) == "number" and money >= 0 then | ||
-- 取得现金数量 | -- 取得现金数量 | ||
| 第58行: | 第58行: | ||
== 扣款 == | == 扣款 == | ||
<pre | <pre>local ok = CostMoney(sceneId, selfId, 1000) | ||
if ok == 1 then | if ok == 1 then | ||
-- 现金扣除成功 | -- 现金扣除成功 | ||
| 第67行: | 第67行: | ||
== 按优先级扣款 == | == 按优先级扣款 == | ||
<pre | <pre>local ok, deducted = LuaFnCostMoneyWithPriority(sceneId, selfId, 1000) | ||
if type(ok) == "number" then | if type(ok) == "number" then | ||
-- ok 表示扣款结果;第二项视分支可能为 nil | -- ok 表示扣款结果;第二项视分支可能为 nil | ||
end</pre> | end</pre> | ||
[[Lua接口/服务端/LuaFnCostMoneyWithPriority|LuaFnCostMoneyWithPriority]] 返回数量可变,用两个变量接收并先判第一项类型;不要只接一项,也不要用 <code | [[Lua接口/服务端/LuaFnCostMoneyWithPriority|LuaFnCostMoneyWithPriority]] 返回数量可变,用两个变量接收并先判第一项类型;不要只接一项,也不要用 <code>if LuaFnCostMoneyWithPriority(...) then</code>,避免把 0 当假。 | ||
== 相关主题 == | == 相关主题 == | ||
| 第106行: | 第106行: | ||
[[Lua接口/函数不存在|函数不存在或提示 nil]] · [[Lua接口/参数类型与顺序|参数类型与顺序]] · [[Lua接口/返回值判断|返回值判断]] · [[Lua接口/对象ID与GUID|对象 ID 与 GUID]] | [[Lua接口/函数不存在|函数不存在或提示 nil]] · [[Lua接口/参数类型与顺序|参数类型与顺序]] · [[Lua接口/返回值判断|返回值判断]] · [[Lua接口/对象ID与GUID|对象 ID 与 GUID]] | ||
</div> | </div> | ||
2026年10月26日 (一) 17:29的最新版本
读写现金、交子与银行金币,以及扣款优先级。先看接口的货币口径:现金与交子是两类账户,部分接口会联动世界服统计。
现金
| 接口 | 参数与返回 |
|---|---|
| GetMoney | sceneId, selfId → 玩家现金。
|
| AddMoney | sceneId, selfId, profit, arg4, arg5 → 5 个参数,后两项不可省略。
|
| CostMoney | sceneId, selfId, payment → 扣除现金。
|
| LuaFnCostMoneyWithPriority | sceneId, selfId, cost → 按接口约定的优先级扣款;返回 1 或 2 个值。
|
AddMoney 的签名是 5 个参数,不能省略 arg4、arg5:缺参会让校验器按数量报错,运行时也按位置读取。CostMoney 只扣现金,金额不足时走失败路径,不会自动转扣交子;要按优先级扣款应改用 LuaFnCostMoneyWithPriority,它可能返回 1 或 2 个值,少接收变量会丢掉第二项。
交子
| 接口 | 参数与返回 |
|---|---|
| GetMoneyJZ | sceneId, selfId → 交子数量。
|
| AddMoneyJZ | sceneId, selfId, value → 增加交子;返回 1 成功、0 失败。
|
AddMoneyJZ 会同步世界服交子收入统计,返回 1 表示成功、0 表示失败,可用 == 1 判断。
银行与统计
| 接口 | 参数与返回 |
|---|---|
| AddBankMoney | sceneId, selfId, value → 增加银行金币并写入资金审计。
|
| LuaFnGetHumanGoodBadValue | sceneId, selfId → 善恶值(与货币口径不同,单独维护)。
|
AddBankMoney 会同时同步世界服金币系统总量,调用即记入资金审计,不能当作无副作用调试调用。善恶值是单独维护的数值,不能与现金、交子互换。
读取现金
local money = GetMoney(sceneId, selfId)
if type(money) == "number" and money >= 0 then
-- 取得现金数量
end
GetMoney 返回数值。先判类型再判范围,避免把异常返回当有效现金。
扣款
local ok = CostMoney(sceneId, selfId, 1000)
if ok == 1 then
-- 现金扣除成功
else
-- 现金不足或失败;不会自动扣交子
end
CostMoney 失败不自动转扣交子。需要按「先现金后交子」之类优先级扣款,改用 LuaFnCostMoneyWithPriority,并按 1 或 2 个返回值接收。
按优先级扣款
local ok, deducted = LuaFnCostMoneyWithPriority(sceneId, selfId, 1000)
if type(ok) == "number" then
-- ok 表示扣款结果;第二项视分支可能为 nil
end
LuaFnCostMoneyWithPriority 返回数量可变,用两个变量接收并先判第一项类型;不要只接一项,也不要用 if LuaFnCostMoneyWithPriority(...) then,避免把 0 当假。
相关主题
- 角色信息
- 属性读取与修改
- 等级与经验
- 货币相关
- 物品查询
- 物品发放与扣除
- 背包空间
- 装备操作
- 任务状态
- 任务变量
- NPC 对话
- 对话选项
- 技能相关
- 心法相关
- 状态效果
- 生活技能
- 珍兽查询
- 珍兽操作
- 场景查询
- 坐标与传送
- 副本相关
- 活动相关
- 时间与计时
- 怪物相关
- 队伍相关
- 帮会相关
- 消息与提示
- 聊天与公告
函数不存在或提示 nil · 参数类型与顺序 · 返回值判断 · 对象 ID 与 GUID