Lua接口/服务端调用约定:修订间差异

来自天龙知识库
跳到导航跳到搜索
雪舞​(留言 | 贡献)
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
Waylee​(留言 | 贡献)
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
 
第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接口/服务端调用约定|调用约定]]


== 参数 ==
== 参数 ==
{| 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;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId</code>
| <code>sceneId</code>
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 当前调用所处的场景编号。跨场景逻辑需通过对应接口完成。
| 当前调用所处的场景编号。跨场景逻辑需通过对应接口完成。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">selfId / targetId</code>
| <code>selfId / targetId</code>
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 当前场景内的对象 ID,玩家、NPC 和怪物对象不能随意互换。
| 当前场景内的对象 ID,玩家、NPC 和怪物对象不能随意互换。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">GUID</code>
| <code>GUID</code>
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 角色或珍兽的全局唯一标识;与场景对象 ID 不同。
| 角色或珍兽的全局唯一标识;与场景对象 ID 不同。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">itemTypeSn / itemId</code>
| <code>itemTypeSn / itemId</code>
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 物品配置编号,与背包格子位置不同。
| 物品配置编号,与背包格子位置不同。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">number</code>
| <code>number</code>
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 数值参数。布尔型开关若按数值读取,应使用约定的 0 或 1。
| 数值参数。布尔型开关若按数值读取,应使用约定的 0 或 1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">string</code>
| <code>string</code>
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | 字符串参数。文字编码需与服务端脚本和客户端约定一致。
| 字符串参数。文字编码需与服务端脚本和客户端约定一致。
|}
|}


第44行: 第44行:


== 名称 ==
== 名称 ==
注册名称保留原拼写。例如 <code style="white-space:normal;overflow-wrap:anywhere;">LuaFnSetLifeTimeAttrRefix_CriticalDefebce</code> 中的 Defebce 是当前可调用名称,不应自行改写为 Defence。
注册名称保留原拼写。例如 <code>LuaFnSetLifeTimeAttrRefix_CriticalDefebce</code> 中的 Defebce 是当前可调用名称,不应自行改写为 Defence。


[[Lua接口/服务端调用示例|常用调用示例]]
[[Lua接口/服务端调用示例|常用调用示例]]

2026年9月19日 (六) 16:59的最新版本

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

参数

参数类型 约定
sceneId 当前调用所处的场景编号。跨场景逻辑需通过对应接口完成。
selfId / targetId 当前场景内的对象 ID,玩家、NPC 和怪物对象不能随意互换。
GUID 角色或珍兽的全局唯一标识;与场景对象 ID 不同。
itemTypeSn / itemId 物品配置编号,与背包格子位置不同。
number 数值参数。布尔型开关若按数值读取,应使用约定的 0 或 1。
string 字符串参数。文字编码需与服务端脚本和客户端约定一致。

参数按位置传入,变量名可由脚本自行命名。并不是每个函数都以 sceneId、selfId 开头,例如 AddText 的第二个参数就是文字,AddItem 的第二个参数是物品编号。

返回值

  • 无返回值与返回数字 0 不同。无返回值的函数被赋给变量时,变量得到 nil。
  • Lua 中只有 nil 和 false 在条件判断中为假,数字 0 和 -1 都为真。
  • 部分接口用 1 表示成功,部分接口返回对象编号、计数、错误码或多个值,必须查阅该函数的约定。
  • 返回多个值时按顺序接收,例如 local x, z = GetWorldPos(sceneId, selfId)。
  • 具有可变返回数量的接口,失败时可能只返回一项,其余接收变量为 nil。

运行环境

这些函数由游戏服务端注册,需在服务端脚本回调中调用。普通独立 Lua 环境或客户端脚本不保证存在同名函数。对象必须仍在相应场景中,并满足接口所要求的玩家、怪物或珍兽类型。

脚本调用点

每个函数页的「脚本中的调用」列出来自随包服务端脚本的真实调用点,按实参形态去重。它有两个用途:确认参数顺序(脚本里的实参按位置对应该页的参数表),以及核对实参个数(页面会给出脚本中出现过的实参个数与次数,与实现体读取的位置数不一致时会写入注意事项)。 脚本调用点只能说明"有人这样调用过",既不能证明该写法在当前版本仍然有效,也不能说明调用一定成功;接口是否已废弃、前置条件是否满足,仍要看实现体与注意事项给出的依据。

名称

注册名称保留原拼写。例如 LuaFnSetLifeTimeAttrRefix_CriticalDefebce 中的 Defebce 是当前可调用名称,不应自行改写为 Defence。

常用调用示例

调用问题