<?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%E5%AF%B9%E8%B1%A1ID%E4%B8%8EGUID</id>
	<title>Lua接口/对象ID与GUID - 版本历史</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%E5%AF%B9%E8%B1%A1ID%E4%B8%8EGUID"/>
	<link rel="alternate" type="text/html" href="https://www.waylee.net/index.php?title=Lua%E6%8E%A5%E5%8F%A3/%E5%AF%B9%E8%B1%A1ID%E4%B8%8EGUID&amp;action=history"/>
	<updated>2026-09-07T13:45:30Z</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/%E5%AF%B9%E8%B1%A1ID%E4%B8%8EGUID&amp;diff=1227&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/%E5%AF%B9%E8%B1%A1ID%E4%B8%8EGUID&amp;diff=1227&amp;oldid=prev"/>
		<updated>2026-09-07T11:53:16Z</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;
对象 ID 用于定位当前场景内的运行对象；GUID 用于标识具体角色或珍兽。两者都可能以 number 传给 Lua，但不能互换。&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;
! 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;sceneId&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; | 与场景对象 ID 配合，指明在哪个场景调用。&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;selfId / targetId / objId&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 运行中的场景对象 ID。&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | GetLevel 的玩家对象、DispatchEventList 的玩家与 NPC 对象。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 角色 GUID&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; | GetHumanGUID 返回；LuaFnGuid2ObjId 接收。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | 珍兽 GUID 高段、低段&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; | LuaFnGetCurrentPetGUID 返回；LuaFnIsPetAvailableByGUID 接收。&lt;br /&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; | 物品类型，不是某个背包格或某一件物品的 GUID。&lt;br /&gt;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | GetItemCount、DelItem 的物品参数。&lt;br /&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;
| style=&amp;quot;padding:8px;vertical-align:top;overflow-wrap:anywhere;&amp;quot; | EraseItem、GetItemTableIndexByIndex 的位置参数。&lt;br /&gt;
|}&lt;br /&gt;
参数叫 selfId 不保证一定是玩家；怪物或珍兽接口可能要求其他对象类型。先看该函数的对象要求，再使用回调传入的标识。&lt;br /&gt;
&lt;br /&gt;
== 角色对象 ID 与 GUID 转换 ==&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 guid = GetHumanGUID(sceneId, selfId)&lt;br /&gt;
if type(guid) ~= &amp;quot;number&amp;quot; or guid == -1 then&lt;br /&gt;
    return&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local objId = LuaFnGuid2ObjId(sceneId, guid)&lt;br /&gt;
if type(objId) == &amp;quot;number&amp;quot; and objId &amp;amp;gt;= 0 then&lt;br /&gt;
    local level = GetLevel(sceneId, objId)&lt;br /&gt;
    if type(level) == &amp;quot;number&amp;quot; and level &amp;amp;gt;= 0 then&lt;br /&gt;
        -- 成功读取该场景玩家的等级&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Lua接口/服务端/GetHumanGUID|GetHumanGUID]] 接收有效玩家的场景对象 ID，返回角色 GUID；对象无效等失败路径为 -1。[[Lua接口/服务端/LuaFnGuid2ObjId|LuaFnGuid2ObjId]] 只有找到的对象是玩家且仍在传入场景时才返回对象 ID，否则为 -1。它不是跨场景寻人或传送接口，也不用于转换珍兽 GUID。&lt;br /&gt;
&lt;br /&gt;
不能把 guid 直接传给 GetLevel 的第二项。即使碰巧与某个对象 ID 数值相同，也不能证明两者是同一个对象。[[Lua接口/服务端/LuaFnGetGUID|LuaFnGetGUID]] 和 [[Lua接口/服务端/LuaFnObjId2Guid|LuaFnObjId2Guid]] 同样要求传入玩家对象 ID，不能只凭函数名认为支持任何对象。&lt;br /&gt;
&lt;br /&gt;
== 珍兽 GUID 按高段、低段传递 ==&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 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;
    local available = LuaFnIsPetAvailableByGUID(&lt;br /&gt;
        sceneId, selfId, petGuidHigh, petGuidLow)&lt;br /&gt;
    if available == 1 then&lt;br /&gt;
        -- 当前召唤珍兽通过交易锁和密码锁检查&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
高段在第三位、低段在第四位，第二项仍是拥有者的玩家对象 ID。没有召唤珍兽等路径没有两个返回值，先检查结果再传参；不要只接第一项，也不要调换顺序。&lt;br /&gt;
&lt;br /&gt;
两段一起构成珍兽标识，单独一段为 0 不足以判定无效。保持原有分段传递，避免自行拼成一个大整数或字符串后再传给数值参数；其他 GUID 类型的布局必须按对应接口核对。&lt;br /&gt;
&lt;br /&gt;
== 场景变化后重新取得对象 ==&lt;br /&gt;
对象 ID 不能当成跨下线、跨场景的持久标识，背包位置也不能跨整理或移动长期缓存。延时回调前后，玩家可能已经离开场景；需要在业务允许的上下文中重新定位并验证对象。GUID 并不保证角色当前在线或处于指定场景，跨场景业务的具体入口和效果需要实测。&lt;br /&gt;
&lt;br /&gt;
== 相关问题 ==&lt;br /&gt;
* [[Lua接口/函数不存在|函数不存在或提示 nil]]&lt;br /&gt;
* [[Lua接口/参数类型与顺序|参数类型与传入顺序]]&lt;br /&gt;
* [[Lua接口/返回值判断|返回值为 0、负数或空字符串]]&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>