Lua接口/货币相关:修订间差异

来自天龙知识库
跳到导航跳到搜索
雪舞​(留言 | 贡献)
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
Waylee​(留言 | 贡献)
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
 
(未显示同一用户的2个中间版本)
第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接口/服务端/GetMoney|GetMoney]]
| [[Lua接口/服务端/GetMoney|GetMoney]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 玩家现金。
| <code>sceneId, selfId</code> → 玩家现金。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/AddMoney|AddMoney]]
| [[Lua接口/服务端/AddMoney|AddMoney]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, profit, arg4, arg5</code> → 5 个参数,后两项不可省略。
| <code>sceneId, selfId, profit, arg4, arg5</code> → 5 个参数,后两项不可省略。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/CostMoney|CostMoney]]
| [[Lua接口/服务端/CostMoney|CostMoney]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, payment</code> → 扣除现金。
| <code>sceneId, selfId, payment</code> → 扣除现金。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnCostMoneyWithPriority|LuaFnCostMoneyWithPriority]]
| [[Lua接口/服务端/LuaFnCostMoneyWithPriority|LuaFnCostMoneyWithPriority]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, cost</code> → 按接口约定的优先级扣款;返回 1 或 2 个值。
| <code>sceneId, selfId, cost</code> → 按接口约定的优先级扣款;返回 1 或 2 个值。
|}
|}
[[Lua接口/服务端/AddMoney|AddMoney]] 的签名是 5 个参数,**不能省略 arg4、arg5**:缺参会让校验器按数量报错,运行时也按位置读取。[[Lua接口/服务端/CostMoney|CostMoney]] 只扣现金,金额不足时走失败路径,**不会自动转扣交子**;要按优先级扣款应改用 [[Lua接口/服务端/LuaFnCostMoneyWithPriority|LuaFnCostMoneyWithPriority]],它可能返回 1 或 2 个值,少接收变量会丢掉第二项。
[[Lua接口/服务端/AddMoney|AddMoney]] 的签名是 5 个参数,'''不能省略 arg4、arg5''':缺参会让校验器按数量报错,运行时也按位置读取。[[Lua接口/服务端/CostMoney|CostMoney]] 只扣现金,金额不足时走失败路径,'''不会自动转扣交子''';要按优先级扣款应改用 [[Lua接口/服务端/LuaFnCostMoneyWithPriority|LuaFnCostMoneyWithPriority]],它可能返回 1 或 2 个值,少接收变量会丢掉第二项。


== 交子 ==
== 交子 ==
{| 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接口/服务端/GetMoneyJZ|GetMoneyJZ]]
| [[Lua接口/服务端/GetMoneyJZ|GetMoneyJZ]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 交子数量。
| <code>sceneId, selfId</code> → 交子数量。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/AddMoneyJZ|AddMoneyJZ]]
| [[Lua接口/服务端/AddMoneyJZ|AddMoneyJZ]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, value</code> → 增加交子;返回 1 成功、0 失败。
| <code>sceneId, selfId, value</code> → 增加交子;返回 1 成功、0 失败。
|}
|}
[[Lua接口/服务端/AddMoneyJZ|AddMoneyJZ]] 会同步世界服交子收入统计,返回 1 表示成功、0 表示失败,可用 <code style="white-space:normal;overflow-wrap:anywhere;">== 1</code> 判断。
[[Lua接口/服务端/AddMoneyJZ|AddMoneyJZ]] 会同步世界服交子收入统计,返回 1 表示成功、0 表示失败,可用 <code>== 1</code> 判断。


== 银行与统计 ==
== 银行与统计 ==
{| 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接口/服务端/AddBankMoney|AddBankMoney]]
| [[Lua接口/服务端/AddBankMoney|AddBankMoney]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, value</code> → 增加银行金币并写入资金审计。
| <code>sceneId, selfId, value</code> → 增加银行金币并写入资金审计。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetHumanGoodBadValue|LuaFnGetHumanGoodBadValue]]
| [[Lua接口/服务端/LuaFnGetHumanGoodBadValue|LuaFnGetHumanGoodBadValue]]
| 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接口/服务端/AddBankMoney|AddBankMoney]] 会同时同步世界服金币系统总量,调用即记入资金审计,不能当作无副作用调试调用。善恶值是单独维护的数值,不能与现金、交子互换。
[[Lua接口/服务端/AddBankMoney|AddBankMoney]] 会同时同步世界服金币系统总量,调用即记入资金审计,不能当作无副作用调试调用。善恶值是单独维护的数值,不能与现金、交子互换。


== 读取现金 ==
== 读取现金 ==
<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 money = GetMoney(sceneId, selfId)
<pre>local money = GetMoney(sceneId, selfId)
if type(money) == "number" and money &gt;= 0 then
if type(money) == "number" and money &gt;= 0 then
     -- 取得现金数量
     -- 取得现金数量
第58行: 第58行:


== 扣款 ==
== 扣款 ==
<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 = CostMoney(sceneId, selfId, 1000)
<pre>local ok = CostMoney(sceneId, selfId, 1000)
if ok == 1 then
if ok == 1 then
     -- 现金扣除成功
     -- 现金扣除成功
第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, deducted = LuaFnCostMoneyWithPriority(sceneId, selfId, 1000)
<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 style="white-space:normal;overflow-wrap:anywhere;">if LuaFnCostMoneyWithPriority(...) then</code>,避免把 0 当假。
[[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 style="margin-top:20px;padding-top:10px;border-top:1px solid #dbe3e6;color:#657078;font-size:12px;">本页函数签名与返回约定依据当前服务端注册表整理;sceneId、selfId 由实际回调提供,业务枚举、属性类型编号与运行效果需要实测。</div>


</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 当假。

相关主题

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

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