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接口/服务端/GetSceneName|GetSceneName]]
| [[Lua接口/服务端/GetSceneName|GetSceneName]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId</code> → 场景名称;不存在返回空串。
| <code>sceneId</code> → 场景名称;不存在返回空串。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetSceneType|LuaFnGetSceneType]]
| [[Lua接口/服务端/LuaFnGetSceneType|LuaFnGetSceneType]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId</code> → 场景类型(见 SceneInfo.ini 的 Type 字段)。
| <code>sceneId</code> → 场景类型(见 SceneInfo.ini 的 Type 字段)。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetSceneClientResID|LuaFnGetSceneClientResID]]
| [[Lua接口/服务端/LuaFnGetSceneClientResID|LuaFnGetSceneClientResID]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId</code> → 客户端资源编号;失败 -1。
| <code>sceneId</code> → 客户端资源编号;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetWorldID|LuaFnGetWorldID]]
| [[Lua接口/服务端/LuaFnGetWorldID|LuaFnGetWorldID]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">()</code> → 当前游戏世界编号(无参);失败 -1。
| <code>()</code> → 当前游戏世界编号(无参);失败 -1。
|}
|}
[[Lua接口/服务端/GetSceneName|GetSceneName]] 不存在时返回**空串**,不是 -1;[[Lua接口/服务端/LuaFnGetWorldID|LuaFnGetWorldID]] 不接受参数。
[[Lua接口/服务端/GetSceneName|GetSceneName]] 不存在时返回'''空串''',不是 -1;[[Lua接口/服务端/LuaFnGetWorldID|LuaFnGetWorldID]] 不接受参数。


== 安全等级 ==
== 安全等级 ==
{| 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接口/服务端/LuaFnGetSceneSafeLevel|LuaFnGetSceneSafeLevel]]
| [[Lua接口/服务端/LuaFnGetSceneSafeLevel|LuaFnGetSceneSafeLevel]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId</code> → 安全等级限制;失败 -1。
| <code>sceneId</code> → 安全等级限制;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnSetSceneSafeLevel|LuaFnSetSceneSafeLevel]]
| [[Lua接口/服务端/LuaFnSetSceneSafeLevel|LuaFnSetSceneSafeLevel]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, safeLevel</code>;无返回值。
| <code>sceneId, safeLevel</code>;无返回值。
|}
|}
[[Lua接口/服务端/LuaFnSetSceneSafeLevel|LuaFnSetSceneSafeLevel]] 无返回值,需要确认生效应改读 [[Lua接口/服务端/LuaFnGetSceneSafeLevel|LuaFnGetSceneSafeLevel]] 回比。
[[Lua接口/服务端/LuaFnSetSceneSafeLevel|LuaFnSetSceneSafeLevel]] 无返回值,需要确认生效应改读 [[Lua接口/服务端/LuaFnGetSceneSafeLevel|LuaFnGetSceneSafeLevel]] 回比。


== 天气 ==
== 天气 ==
{| 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接口/服务端/LuaFnGetSceneWeather|LuaFnGetSceneWeather]]
| [[Lua接口/服务端/LuaFnGetSceneWeather|LuaFnGetSceneWeather]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId</code> → 当前天气编号;未设置返回 -1。
| <code>sceneId</code> → 当前天气编号;未设置返回 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnSetSceneWeather|LuaFnSetSceneWeather]]
| [[Lua接口/服务端/LuaFnSetSceneWeather|LuaFnSetSceneWeather]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, weather, leftTime</code>;无返回值。leftTime 为剩余毫秒。
| <code>sceneId, weather, leftTime</code>;无返回值。leftTime 为剩余毫秒。
|}
|}
[[Lua接口/服务端/LuaFnSetSceneWeather|LuaFnSetSceneWeather]] 无返回值,第三个参数 leftTime 是持续时间(毫秒)。
[[Lua接口/服务端/LuaFnSetSceneWeather|LuaFnSetSceneWeather]] 无返回值,第三个参数 leftTime 是持续时间(毫秒)。


== 场景属性 ==
== 场景属性 ==
{| 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接口/服务端/LuaFnGetSceneAttr_CanCreateRascalKiller|LuaFnGetSceneAttr_CanCreateRascalKiller]]
| [[Lua接口/服务端/LuaFnGetSceneAttr_CanCreateRascalKiller|LuaFnGetSceneAttr_CanCreateRascalKiller]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId</code> → 是否允许创建惩罚恶人 NPC;缺配置返回 0。
| <code>sceneId</code> → 是否允许创建惩罚恶人 NPC;缺配置返回 0。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetSceneAttr_RandomMonsterDataID|LuaFnGetSceneAttr_RandomMonsterDataID]]
| [[Lua接口/服务端/LuaFnGetSceneAttr_RandomMonsterDataID|LuaFnGetSceneAttr_RandomMonsterDataID]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId</code> → 候选怪物中随机一个数据编号。
| <code>sceneId</code> → 候选怪物中随机一个数据编号。
|}
|}
[[Lua接口/服务端/LuaFnGetSceneAttr_CanCreateRascalKiller|LuaFnGetSceneAttr_CanCreateRascalKiller]] 缺少配置时返回 0,与失败 -1 不同。
[[Lua接口/服务端/LuaFnGetSceneAttr_CanCreateRascalKiller|LuaFnGetSceneAttr_CanCreateRascalKiller]] 缺少配置时返回 0,与失败 -1 不同。


== 对象有效性 ==
== 对象有效性 ==
{| 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接口/服务端/LuaFnIsObjValid|LuaFnIsObjValid]]
| [[Lua接口/服务端/LuaFnIsObjValid|LuaFnIsObjValid]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, objId</code> → 对象是否存在;失败 -1。
| <code>sceneId, objId</code> → 对象是否存在;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnIsCharacterLiving|LuaFnIsCharacterLiving]]
| [[Lua接口/服务端/LuaFnIsCharacterLiving|LuaFnIsCharacterLiving]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, objId</code> → 对象是否存活;失败 -1。
| <code>sceneId, objId</code> → 对象是否存活;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnCheckCharacterState|LuaFnCheckCharacterState]]
| [[Lua接口/服务端/LuaFnCheckCharacterState|LuaFnCheckCharacterState]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, objId, checkActiveState, checkAliveState</code> → 检查结果;失败 -1。
| <code>sceneId, objId, checkActiveState, checkAliveState</code> → 检查结果;失败 -1。
|}
|}
[[Lua接口/服务端/LuaFnCheckCharacterState|LuaFnCheckCharacterState]] 需要 4 个参数,可按需分别检查激活状态与存活状态。
[[Lua接口/服务端/LuaFnCheckCharacterState|LuaFnCheckCharacterState]] 需要 4 个参数,可按需分别检查激活状态与存活状态。


== 场景内对象遍历 ==
== 场景内对象遍历 ==
{| 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接口/服务端/GetMonsterCount|GetMonsterCount]]
| [[Lua接口/服务端/GetMonsterCount|GetMonsterCount]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId</code> → 场景内怪物数量;失败 -1。
| <code>sceneId</code> → 场景内怪物数量;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetMonsterObjID|GetMonsterObjID]]
| [[Lua接口/服务端/GetMonsterObjID|GetMonsterObjID]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, nIndex</code> → 指定索引怪物的对象 ID;失败 -1。
| <code>sceneId, nIndex</code> → 指定索引怪物的对象 ID;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetCopyScene_HumanCount|LuaFnGetCopyScene_HumanCount]]
| [[Lua接口/服务端/LuaFnGetCopyScene_HumanCount|LuaFnGetCopyScene_HumanCount]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId</code> → 场景内玩家数量;0 或 -1。
| <code>sceneId</code> → 场景内玩家数量;0 或 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetCopyScene_HumanObjId|LuaFnGetCopyScene_HumanObjId]]
| [[Lua接口/服务端/LuaFnGetCopyScene_HumanObjId|LuaFnGetCopyScene_HumanObjId]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, uIndex</code> → 指定索引玩家的对象 ID;失败 -1。
| <code>sceneId, uIndex</code> → 指定索引玩家的对象 ID;失败 -1。
|}
|}
先取数量再按索引遍历对象 ID,索引从 0 开始。数量为 0 时不要进入遍历。
先取数量再按索引遍历对象 ID,索引从 0 开始。数量为 0 时不要进入遍历。


== 读取场景名称与类型 ==
== 读取场景名称与类型 ==
<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 name = GetSceneName(sceneId)
<pre>local name = GetSceneName(sceneId)
if type(name) == "string" and name ~= "" then
if type(name) == "string" and name ~= "" then
     local sceneType = LuaFnGetSceneType(sceneId)
     local sceneType = LuaFnGetSceneType(sceneId)
     -- 取得场景名称与类型
     -- 取得场景名称与类型
end</pre>
end</pre>
[[Lua接口/服务端/GetSceneName|GetSceneName]] 不存在返回空串,用 <code style="white-space:normal;overflow-wrap:anywhere;">name ~= ""</code> 判断。
[[Lua接口/服务端/GetSceneName|GetSceneName]] 不存在返回空串,用 <code>name ~= ""</code> 判断。


== 遍历场景怪物 ==
== 遍历场景怪物 ==
<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 count = GetMonsterCount(sceneId)
<pre>local count = GetMonsterCount(sceneId)
if type(count) == "number" and count ~= -1 then
if type(count) == "number" and count ~= -1 then
     local objId = GetMonsterObjID(sceneId, 0)
     local objId = GetMonsterObjID(sceneId, 0)
第146行: 第146行:


[[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的最新版本

首页 · 服务端接口 · 调用约定

查询场景的名称、类型、资源、安全等级、天气与场景内对象。sceneId 由当前回调提供,代表调用所在场景。

基础信息

接口 参数与返回
GetSceneName sceneId → 场景名称;不存在返回空串。
LuaFnGetSceneType sceneId → 场景类型(见 SceneInfo.ini 的 Type 字段)。
LuaFnGetSceneClientResID sceneId → 客户端资源编号;失败 -1。
LuaFnGetWorldID () → 当前游戏世界编号(无参);失败 -1。

GetSceneName 不存在时返回空串,不是 -1;LuaFnGetWorldID 不接受参数。

安全等级

接口 参数与返回
LuaFnGetSceneSafeLevel sceneId → 安全等级限制;失败 -1。
LuaFnSetSceneSafeLevel sceneId, safeLevel;无返回值。

LuaFnSetSceneSafeLevel 无返回值,需要确认生效应改读 LuaFnGetSceneSafeLevel 回比。

天气

接口 参数与返回
LuaFnGetSceneWeather sceneId → 当前天气编号;未设置返回 -1。
LuaFnSetSceneWeather sceneId, weather, leftTime;无返回值。leftTime 为剩余毫秒。

LuaFnSetSceneWeather 无返回值,第三个参数 leftTime 是持续时间(毫秒)。

场景属性

接口 参数与返回
LuaFnGetSceneAttr_CanCreateRascalKiller sceneId → 是否允许创建惩罚恶人 NPC;缺配置返回 0。
LuaFnGetSceneAttr_RandomMonsterDataID sceneId → 候选怪物中随机一个数据编号。

LuaFnGetSceneAttr_CanCreateRascalKiller 缺少配置时返回 0,与失败 -1 不同。

对象有效性

接口 参数与返回
LuaFnIsObjValid sceneId, objId → 对象是否存在;失败 -1。
LuaFnIsCharacterLiving sceneId, objId → 对象是否存活;失败 -1。
LuaFnCheckCharacterState sceneId, objId, checkActiveState, checkAliveState → 检查结果;失败 -1。

LuaFnCheckCharacterState 需要 4 个参数,可按需分别检查激活状态与存活状态。

场景内对象遍历

接口 参数与返回
GetMonsterCount sceneId → 场景内怪物数量;失败 -1。
GetMonsterObjID sceneId, nIndex → 指定索引怪物的对象 ID;失败 -1。
LuaFnGetCopyScene_HumanCount sceneId → 场景内玩家数量;0 或 -1。
LuaFnGetCopyScene_HumanObjId sceneId, uIndex → 指定索引玩家的对象 ID;失败 -1。

先取数量再按索引遍历对象 ID,索引从 0 开始。数量为 0 时不要进入遍历。

读取场景名称与类型

local name = GetSceneName(sceneId)
if type(name) == "string" and name ~= "" then
    local sceneType = LuaFnGetSceneType(sceneId)
    -- 取得场景名称与类型
end

GetSceneName 不存在返回空串,用 name ~= "" 判断。

遍历场景怪物

local count = GetMonsterCount(sceneId)
if type(count) == "number" and count ~= -1 then
    local objId = GetMonsterObjID(sceneId, 0)
end

GetMonsterCount 失败返回 -1,先判类型再排除 -1 再遍历。

相关主题

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

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