Lua接口/坐标与传送:修订间差异
来自天龙知识库
跳到导航跳到搜索
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例 |
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例 |
||
| (未显示同一用户的1个中间版本) | |||
| 第19行: | 第19行: | ||
| <code>sceneId, selfId</code> → 世界坐标 X / Z;失败 -1。 | | <code>sceneId, selfId</code> → 世界坐标 X / Z;失败 -1。 | ||
|} | |} | ||
[[Lua接口/服务端/GetWorldPos|GetWorldPos]] 和 [[Lua接口/服务端/LuaFnGetUnitPosition|LuaFnGetUnitPosition]] 都返回 | [[Lua接口/服务端/GetWorldPos|GetWorldPos]] 和 [[Lua接口/服务端/LuaFnGetUnitPosition|LuaFnGetUnitPosition]] 都返回'''两个值''',必须用两个变量接收,只接一项会丢掉 Z。 | ||
== 设置坐标 == | == 设置坐标 == | ||
| 第32行: | 第32行: | ||
| <code>sceneId, selfId, x, z</code>;无返回值。设置玩家重生点(再次登入当前世界的位置)。 | | <code>sceneId, selfId, x, z</code>;无返回值。设置玩家重生点(再次登入当前世界的位置)。 | ||
|} | |} | ||
[[Lua接口/服务端/SetPos|SetPos]] 只在当前场景内移动,不切换场景;[[Lua接口/服务端/SetRevPos|SetRevPos]] 设置的是 | [[Lua接口/服务端/SetPos|SetPos]] 只在当前场景内移动,不切换场景;[[Lua接口/服务端/SetRevPos|SetRevPos]] 设置的是'''登录 / 复活时的重生点''',不是即时位置。 | ||
== 切换场景 == | == 切换场景 == | ||
| 第48行: | 第48行: | ||
| <code>sceneId, selfId, canChange</code> → 1 / -1。控制玩家是否允许切换场景。 | | <code>sceneId, selfId, canChange</code> → 1 / -1。控制玩家是否允许切换场景。 | ||
|} | |} | ||
[[Lua接口/服务端/NewWorld|NewWorld]] 无返回值,切换前应先用 [[Lua接口/服务端/IsCanNewWorld|IsCanNewWorld]] 判断准入条件。[[Lua接口/服务端/SetCanChangeScene|SetCanChangeScene]] 控制是否 | [[Lua接口/服务端/NewWorld|NewWorld]] 无返回值,切换前应先用 [[Lua接口/服务端/IsCanNewWorld|IsCanNewWorld]] 判断准入条件。[[Lua接口/服务端/SetCanChangeScene|SetCanChangeScene]] 控制是否'''允许'''切换场景(用于锁定场景),返回 1 或 -1。 | ||
== 距离判断 == | == 距离判断 == | ||
| 第87行: | 第87行: | ||
| <code>sceneId, selfId, pszHP, pszMP, pszSP, defaultSceneID, defaultPosX, defaultPosZ, scriptId</code>;无返回值。9 个参数。 | | <code>sceneId, selfId, pszHP, pszMP, pszSP, defaultSceneID, defaultPosX, defaultPosZ, scriptId</code>;无返回值。9 个参数。 | ||
|} | |} | ||
这两个接口参数很多,Ex 版本多一个 scriptId。传入的 HP / MP / SP 是 | 这两个接口参数很多,Ex 版本多一个 scriptId。传入的 HP / MP / SP 是'''字符串'''(psz 前缀)。 | ||
== 检查并切换场景 == | == 检查并切换场景 == | ||
| 第136行: | 第136行: | ||
[[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的最新版本
读取与设置角色坐标、切换场景、计算距离与设置复活点。坐标接口通常返回 X、Z 两个值。
读取坐标
| 接口 | 参数与返回 |
|---|---|
| GetWorldPos | sceneId, selfId → x、z 两个值;失败 -1、-1。
|
| LuaFnGetUnitPosition | sceneId, selfId → X、Z 两个值;目标无效不返回值。
|
| GetHumanWorldX / GetHumanWorldZ | sceneId, selfId → 世界坐标 X / Z;失败 -1。
|
GetWorldPos 和 LuaFnGetUnitPosition 都返回两个值,必须用两个变量接收,只接一项会丢掉 Z。
设置坐标
| 接口 | 参数与返回 |
|---|---|
| SetPos | sceneId, selfId, x, z;无返回值。同场景内的位置转移。
|
| SetRevPos | sceneId, selfId, x, z;无返回值。设置玩家重生点(再次登入当前世界的位置)。
|
SetPos 只在当前场景内移动,不切换场景;SetRevPos 设置的是登录 / 复活时的重生点,不是即时位置。
切换场景
| 接口 | 参数与返回 |
|---|---|
| NewWorld | sceneId, selfId, targetSceneId, x, z;无返回值。切换到目标场景。
|
| IsCanNewWorld | sceneId, selfId, targetSceneId, x, z → 是否满足准入条件;部分分支无返回值。
|
| SetCanChangeScene | sceneId, selfId, canChange → 1 / -1。控制玩家是否允许切换场景。
|
NewWorld 无返回值,切换前应先用 IsCanNewWorld 判断准入条件。SetCanChangeScene 控制是否允许切换场景(用于锁定场景),返回 1 或 -1。
距离判断
| 接口 | 参数与返回 |
|---|---|
| IsInDist | sceneId, selfId, targetId, dist → 是否在 dist 内(含边界);失败 -1。
|
| GetDist | sceneId, selfId, targetId, arg4 → 两个对象的距离;失败 -1。
|
IsInDist 的 dist 是上限(包含边界),GetDist 返回实际距离。
ID 转换
| 接口 | 参数与返回 |
|---|---|
| LuaFnObjId2Guid | sceneId, selfId → 该对象 ID 对应的 GUID;失败 -1。
|
| LuaFnGuid2ObjId | sceneId, guid → 该 GUID 在当前场景的对象 ID;失败 -1。
|
GUID 是全局标识,对象 ID 只在当前场景有效。两者转换要求对象仍在对应场景中,详见 对象 ID 与 GUID。
默认复活点
| 接口 | 参数与返回 |
|---|---|
| SetPlayerDefaultReliveInfo | sceneId, selfId, pszHP, pszMP, pszSP, defaultSceneID, defaultPosX, defaultPosZ;无返回值。8 个参数。
|
| SetPlayerDefaultReliveInfoEx | sceneId, selfId, pszHP, pszMP, pszSP, defaultSceneID, defaultPosX, defaultPosZ, scriptId;无返回值。9 个参数。
|
这两个接口参数很多,Ex 版本多一个 scriptId。传入的 HP / MP / SP 是字符串(psz 前缀)。
检查并切换场景
local ok = IsCanNewWorld(sceneId, selfId, targetSceneId, posX, posZ)
if type(ok) == "number" and ok == 1 then
NewWorld(sceneId, selfId, targetSceneId, posX, posZ)
end
NewWorld 无返回值,先用 IsCanNewWorld 判断准入。
读取并设置坐标
local x, z = GetWorldPos(sceneId, selfId)
if type(x) == "number" and type(z) == "number" and x ~= -1 then
SetPos(sceneId, selfId, x, z)
end
GetWorldPos 返回两个值,先用两个变量接收再传回 SetPos。
相关主题
- 角色信息
- 属性读取与修改
- 等级与经验
- 货币相关
- 物品查询
- 物品发放与扣除
- 背包空间
- 装备操作
- 任务状态
- 任务变量
- NPC 对话
- 对话选项
- 技能相关
- 心法相关
- 状态效果
- 生活技能
- 珍兽查询
- 珍兽操作
- 场景查询
- 坐标与传送
- 副本相关
- 活动相关
- 时间与计时
- 怪物相关
- 队伍相关
- 帮会相关
- 消息与提示
- 聊天与公告
函数不存在或提示 nil · 参数类型与顺序 · 返回值判断 · 对象 ID 与 GUID