<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://www.waylee.net/index.php?action=history&amp;feed=atom&amp;title=Lua%E6%8E%A5%E5%8F%A3%2F%E8%BF%94%E5%9B%9E%E5%80%BC%E5%88%A4%E6%96%AD</id>
	<title>Lua接口/返回值判断 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://www.waylee.net/index.php?action=history&amp;feed=atom&amp;title=Lua%E6%8E%A5%E5%8F%A3%2F%E8%BF%94%E5%9B%9E%E5%80%BC%E5%88%A4%E6%96%AD"/>
	<link rel="alternate" type="text/html" href="https://www.waylee.net/index.php?title=Lua%E6%8E%A5%E5%8F%A3/%E8%BF%94%E5%9B%9E%E5%80%BC%E5%88%A4%E6%96%AD&amp;action=history"/>
	<updated>2026-09-07T13:49:18Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://www.waylee.net/index.php?title=Lua%E6%8E%A5%E5%8F%A3/%E8%BF%94%E5%9B%9E%E5%80%BC%E5%88%A4%E6%96%AD&amp;diff=1226&amp;oldid=prev</id>
		<title>雪舞：​维护服务端 Lua 接口：核对参数、返回值、边界条件与调用示例</title>
		<link rel="alternate" type="text/html" href="https://www.waylee.net/index.php?title=Lua%E6%8E%A5%E5%8F%A3/%E8%BF%94%E5%9B%9E%E5%80%BC%E5%88%A4%E6%96%AD&amp;diff=1226&amp;oldid=prev"/>
		<updated>2026-09-07T11:53:15Z</updated>

		<summary type="html">&lt;p&gt;维护服务端 Lua 接口：核对参数、返回值、边界条件与调用示例&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;div class=&amp;quot;lua-reference&amp;quot; style=&amp;quot;max-width:1200px;margin:0 auto;line-height:1.8;color:#29343a;font-family:Arial,&amp;#039;Microsoft YaHei&amp;#039;,sans-serif;letter-spacing:0;overflow-wrap:anywhere;&amp;quot;&amp;gt;&lt;br /&gt;
[[首页|首页]] · [[Lua接口/服务端函数索引|服务端接口]] · [[Lua接口/服务端调用约定|调用约定]]&lt;br /&gt;
&lt;br /&gt;
先查函数的返回约定，再判断值。0、负数、空字符串、nil 不能用同一条成功规则处理。&lt;br /&gt;
&lt;br /&gt;
== Lua 条件判断 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 值&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 在 if 中&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 注意事项&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;nil&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 假&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 可能是无返回值、未赋值，或多返回值中的缺失项。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 假&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | Lua 布尔值；不等同于数值 0。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 真&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 可以表示计数为零、有效位置或业务失败，需看接口。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;-1&amp;lt;/code&amp;gt; 等负数&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 真&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 可能是错误码或有效业务数值，不能只按正负判断。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | &amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 真&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 空字符串也会进入 if result then 分支。&lt;br /&gt;
|}&lt;br /&gt;
只有 nil 和 false 为假。&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;if result then&amp;lt;/code&amp;gt; 不能用来判断返回数字的接口是否成功；&amp;lt;code style=&amp;quot;white-space:normal;overflow-wrap:anywhere;&amp;quot;&amp;gt;result == true&amp;lt;/code&amp;gt; 也不会把数字 1 当作 true。&lt;br /&gt;
&lt;br /&gt;
== 按接口区分 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 接口&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;text-align:left;background:#edf3f2;padding:8px;&amp;quot; | 应如何理解&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | [[Lua接口/服务端/EndAddItem|EndAddItem]]&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 1 表示当前可接收列表，0 表示不能接收，-1 表示疲劳限制或对象无效等失败。检查通过后仍需发放。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | [[Lua接口/服务端/GetItemCount|GetItemCount]]&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 0 表示计数为零，不是函数不存在；-1 是对象无效等失败路径。计数范围包括已装备物品。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | [[Lua接口/服务端/GetBagPosByItemSn|GetBagPosByItemSn]]&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 0 是有效背包位置，-1 表示未找到或失败，判断位置用 &amp;gt;= 0。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | [[Lua接口/服务端/GetName|GetName]]&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 返回字符串，失败可返回空字符串。先确认类型，再检查是否为空。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | [[Lua接口/服务端/LuaFnIsItemLocked|LuaFnIsItemLocked]]&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 1 是交易锁，0 是未发现交易锁，-2 是位置越界，-1 是玩家无效等失败。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | [[Lua接口/服务端/LuaFnDelAvailableItem|LuaFnDelAvailableItem]]&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 正数量扣除流程报告成功为 1，失败为 0；非正数量直接返回 1 但不扣除，失败也可能已部分扣除。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | [[Lua接口/服务端/AddText|AddText]]、[[Lua接口/服务端/EndEvent|EndEvent]]&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 无返回值；赋值接收得到 nil，不表示函数不存在。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 计数与字符串示例 ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;&amp;quot;&amp;gt;local count = GetItemCount(sceneId, selfId, itemTypeSn)&lt;br /&gt;
if type(count) == &amp;quot;number&amp;quot; and count &amp;amp;gt;= 0 then&lt;br /&gt;
    -- count 为有效计数；0 表示没有计入的物品&lt;br /&gt;
else&lt;br /&gt;
    -- 本次查询未取得有效计数&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local name = GetName(sceneId, selfId)&lt;br /&gt;
if type(name) == &amp;quot;string&amp;quot; and name ~= &amp;quot;&amp;quot; then&lt;br /&gt;
    -- name 为非空名称&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
itemTypeSn 必须来自已确认有效的物品配置。不能只写 name ~= &amp;quot;&amp;quot;：nil 也不等于空字符串，类型检查可以避免误判。&lt;br /&gt;
&lt;br /&gt;
== 多个返回值按位置接收 ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;&amp;quot;&amp;gt;local x, z = GetWorldPos(sceneId, selfId)&lt;br /&gt;
if type(x) == &amp;quot;number&amp;quot; and type(z) == &amp;quot;number&amp;quot;&lt;br /&gt;
    and x ~= -1 and z ~= -1 then&lt;br /&gt;
    -- x、z 是场景平面坐标&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local petGuidHigh, petGuidLow = LuaFnGetCurrentPetGUID(sceneId, selfId)&lt;br /&gt;
if type(petGuidHigh) == &amp;quot;number&amp;quot; and type(petGuidLow) == &amp;quot;number&amp;quot; then&lt;br /&gt;
    -- 取得当前召唤珍兽的 GUID 高段、低段&lt;br /&gt;
else&lt;br /&gt;
    -- 无召唤珍兽或未取得结果&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Lua接口/服务端/GetWorldPos|GetWorldPos]] 失败返回 -1、-1；[[Lua接口/服务端/LuaFnGetCurrentPetGUID|LuaFnGetCurrentPetGUID]] 在没有召唤珍兽等路径不返回值，此时两个变量都是 nil。少接收变量会丢掉后面的结果；给函数调用外面加一对括号，也可能把多返回值收缩成第一项。&lt;br /&gt;
&lt;br /&gt;
== 返回成功不等于整段业务完成 ==&lt;br /&gt;
[[Lua接口/服务端/EndAddItem|EndAddItem]] 只检查能否接收，[[Lua接口/服务端/AddItemListToHuman|AddItemListToHuman]] 才执行发放且无返回值。扣除、发放、保存领取记录是不同步骤，不能只看其中一次返回 1 就推断整段业务成功。&lt;br /&gt;
&lt;br /&gt;
未注明的枚举、异常后的背包变化和完整业务结果需要实测。失败后自动重试可能造成重复扣除，先核对具体接口的副作用，见 [[Lua接口/服务端调用示例#扣除可用物品|扣除可用物品示例]]。&lt;br /&gt;
&lt;br /&gt;
== 相关问题 ==&lt;br /&gt;
* [[Lua接口/函数不存在|函数不存在或提示 nil]]&lt;br /&gt;
* [[Lua接口/参数类型与顺序|参数类型与传入顺序]]&lt;br /&gt;
* [[Lua接口/对象ID与GUID|对象 ID 与 GUID 的区别]]&lt;br /&gt;
* [[Lua接口/服务端与客户端调用范围|服务端与客户端的调用范围]]&lt;br /&gt;
&lt;br /&gt;
[[Lua接口/服务端调用约定|服务端调用约定]] · [[Lua接口/服务端调用示例|服务端调用示例]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px;padding-top:10px;border-top:1px solid #dbe3e6;color:#657078;font-size:12px;&amp;quot;&amp;gt;示例依据当前服务端注册名称和参数读取顺序核对；sceneId、selfId 等上下文及业务编号由实际回调提供。Lua 语法检查不能代替游戏内实测。&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>雪舞</name></author>
	</entry>
</feed>