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接口/服务端/GetHp|GetHp]] / [[Lua接口/服务端/GetMp|GetMp]]
| [[Lua接口/服务端/GetHp|GetHp]] / [[Lua接口/服务端/GetMp|GetMp]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 当前生命 / 气。
| <code>sceneId, selfId</code> → 当前生命 / 气。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetMaxHp|GetMaxHp]] / [[Lua接口/服务端/GetMaxMp|GetMaxMp]]
| [[Lua接口/服务端/GetMaxHp|GetMaxHp]] / [[Lua接口/服务端/GetMaxMp|GetMaxMp]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 生命 / 气上限。
| <code>sceneId, selfId</code> → 生命 / 气上限。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/SetHp|SetHp]]
| [[Lua接口/服务端/SetHp|SetHp]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, hp</code>;部分分支无返回值。
| <code>sceneId, selfId, hp</code>;部分分支无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/SetMp|SetMp]]
| [[Lua接口/服务端/SetMp|SetMp]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, mp</code>;部分分支无返回值。
| <code>sceneId, selfId, mp</code>;部分分支无返回值。
|}
|}
[[Lua接口/服务端/SetHp|SetHp]]、[[Lua接口/服务端/SetMp|SetMp]] 在对象无效等分支不返回值,赋值接收得到 nil,不能用 <code style="white-space:normal;overflow-wrap:anywhere;">if result then</code> 判断是否设置成功。生命 / 气上限由等级与基础属性决定,先改等级或属性,上限随之更新。
[[Lua接口/服务端/SetHp|SetHp]]、[[Lua接口/服务端/SetMp|SetMp]] 在对象无效等分支不返回值,赋值接收得到 nil,不能用 <code>if result then</code> 判断是否设置成功。生命 / 气上限由等级与基础属性决定,先改等级或属性,上限随之更新。


== 怒气 ==
== 怒气 ==
{| 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接口/服务端/GetRage|GetRage]]
| [[Lua接口/服务端/GetRage|GetRage]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 当前怒气;非角色单位返回 -1。
| <code>sceneId, selfId</code> → 当前怒气;非角色单位返回 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetMaxRage|GetMaxRage]]
| [[Lua接口/服务端/GetMaxRage|GetMaxRage]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 怒气上限;非角色单位返回 -1。
| <code>sceneId, selfId</code> → 怒气上限;非角色单位返回 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/SetRage|SetRage]]
| [[Lua接口/服务端/SetRage|SetRage]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, rage</code>;无返回值。
| <code>sceneId, selfId, rage</code>;无返回值。
|}
|}
[[Lua接口/服务端/GetRage|GetRage]]、[[Lua接口/服务端/GetMaxRage|GetMaxRage]] 对非角色单位(如物品箱、传送点)返回 -1,不能只靠 <code style="white-space:normal;overflow-wrap:anywhere;">&gt;= 0</code> 判断,应先确认对象是角色。
[[Lua接口/服务端/GetRage|GetRage]]、[[Lua接口/服务端/GetMaxRage|GetMaxRage]] 对非角色单位(如物品箱、传送点)返回 -1,不能只靠 <code>&gt;= 0</code> 判断,应先确认对象是角色。


== 基础属性 ==
== 基础属性 ==
{| 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接口/服务端/GetHumanAttr|GetHumanAttr]]
| [[Lua接口/服务端/GetHumanAttr|GetHumanAttr]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, attrType</code> → 按官方编号返回六类攻击属性。
| <code>sceneId, selfId, attrType</code> → 按官方编号返回六类攻击属性。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetBaseAttackPhysics|LuaFnGetBaseAttackPhysics]]
| [[Lua接口/服务端/LuaFnGetBaseAttackPhysics|LuaFnGetBaseAttackPhysics]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 基础外功攻击。
| <code>sceneId, selfId</code> → 基础外功攻击。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/SetCharacterAttrRefix|SetCharacterAttrRefix]]
| [[Lua接口/服务端/SetCharacterAttrRefix|SetCharacterAttrRefix]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, attrType, refix</code> → 设置冰、火、玄、毒攻击修正值。
| <code>sceneId, selfId, attrType, refix</code> → 设置冰、火、玄、毒攻击修正值。
|}
|}
[[Lua接口/服务端/GetHumanAttr|GetHumanAttr]] 按 attrType 取六类攻击属性之一,attrType 是配置约定的编号,不在这里枚举。[[Lua接口/服务端/SetCharacterAttrRefix|SetCharacterAttrRefix]] 只改冰、火、玄、毒四系攻击修正值,不直接改最终面板;修改后最终数值仍要由属性刷新流程汇总。各系攻击 / 防御的基础读取接口名带 Base 前缀([[Lua接口/服务端/LuaFnGetBaseAttackPhysics|LuaFnGetBaseAttackPhysics]] 等),均为只读。
[[Lua接口/服务端/GetHumanAttr|GetHumanAttr]] 按 attrType 取六类攻击属性之一,attrType 是配置约定的编号,不在这里枚举。[[Lua接口/服务端/SetCharacterAttrRefix|SetCharacterAttrRefix]] 只改冰、火、玄、毒四系攻击修正值,不直接改最终面板;修改后最终数值仍要由属性刷新流程汇总。各系攻击 / 防御的基础读取接口名带 Base 前缀([[Lua接口/服务端/LuaFnGetBaseAttackPhysics|LuaFnGetBaseAttackPhysics]] 等),均为只读。


== 限时属性修正(怪物专用)==
== 限时属性修正(怪物专用)==
{| 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接口/服务端/LuaFnGetLifeTimeAttrRefix_MaxHP|LuaFnGetLifeTimeAttrRefix_MaxHP]]
| [[Lua接口/服务端/LuaFnGetLifeTimeAttrRefix_MaxHP|LuaFnGetLifeTimeAttrRefix_MaxHP]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, monsterId</code> → 怪物本次存活期间的生命上限修正。
| <code>sceneId, monsterId</code> → 怪物本次存活期间的生命上限修正。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnSetLifeTimeAttrRefix_MaxHP|LuaFnSetLifeTimeAttrRefix_MaxHP]]
| [[Lua接口/服务端/LuaFnSetLifeTimeAttrRefix_MaxHP|LuaFnSetLifeTimeAttrRefix_MaxHP]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, monsterId, value</code>;设置本次存活期间修正。
| <code>sceneId, monsterId, value</code>;设置本次存活期间修正。
|}
|}
这一组 LifeTimeAttrRefix 接口**针对怪物的 monsterId,不是玩家 selfId**。修正只在该怪物本次存活期间生效,怪物重生后会重置。同组还有外功 / 内功 / 各系攻防、命中 / 闪避、暴击等子项,按 <code style="white-space:normal;overflow-wrap:anywhere;">LuaFnGetLifeTimeAttrRefix_&lt;属性&gt;</code> / <code style="white-space:normal;overflow-wrap:anywhere;">LuaFnSetLifeTimeAttrRefix_&lt;属性&gt;</code> 命名。
这一组 LifeTimeAttrRefix 接口'''针对怪物的 monsterId,不是玩家 selfId'''。修正只在该怪物本次存活期间生效,怪物重生后会重置。同组还有外功 / 内功 / 各系攻防、命中 / 闪避、暴击等子项,按 <code>LuaFnGetLifeTimeAttrRefix_&lt;属性&gt;</code> / <code>LuaFnSetLifeTimeAttrRefix_&lt;属性&gt;</code> 命名。


== 活力与精力 ==
== 活力与精力 ==
{| 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接口/服务端/GetHumanVigor|GetHumanVigor]] / [[Lua接口/服务端/GetHumanMaxVigor|GetHumanMaxVigor]]
| [[Lua接口/服务端/GetHumanVigor|GetHumanVigor]] / [[Lua接口/服务端/GetHumanMaxVigor|GetHumanMaxVigor]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 当前 / 上限活力。
| <code>sceneId, selfId</code> → 当前 / 上限活力。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/SetHumanVigor|SetHumanVigor]]
| [[Lua接口/服务端/SetHumanVigor|SetHumanVigor]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, value</code>;无返回值。
| <code>sceneId, selfId, value</code>;无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetHumanEnergy|GetHumanEnergy]] / [[Lua接口/服务端/GetHumanMaxEnergy|GetHumanMaxEnergy]]
| [[Lua接口/服务端/GetHumanEnergy|GetHumanEnergy]] / [[Lua接口/服务端/GetHumanMaxEnergy|GetHumanMaxEnergy]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 当前 / 上限精力。
| <code>sceneId, selfId</code> → 当前 / 上限精力。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/SetHumanEnergy|SetHumanEnergy]]
| [[Lua接口/服务端/SetHumanEnergy|SetHumanEnergy]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, value</code>;无返回值。
| <code>sceneId, selfId, value</code>;无返回值。
|}
|}


== 潜能点 ==
== 潜能点 ==
{| 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接口/服务端/GetPlayerRemainPoints|GetPlayerRemainPoints]]
| [[Lua接口/服务端/GetPlayerRemainPoints|GetPlayerRemainPoints]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 尚未分配的一级属性点。
| <code>sceneId, selfId</code> → 尚未分配的一级属性点。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/SetPlayerRemainPoints|SetPlayerRemainPoints]]
| [[Lua接口/服务端/SetPlayerRemainPoints|SetPlayerRemainPoints]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, remainPoints</code> → 设置后返回设置值。
| <code>sceneId, selfId, remainPoints</code> → 设置后返回设置值。
|}
|}
[[Lua接口/服务端/GetPlayerRemainPoints|GetPlayerRemainPoints]]、[[Lua接口/服务端/SetPlayerRemainPoints|SetPlayerRemainPoints]] 在部分分支无返回值,赋值接收得到 nil,不等于失败。实际分配一级属性点由客户端加点流程或对应接口完成,这里只读写尚未分配的余量。
[[Lua接口/服务端/GetPlayerRemainPoints|GetPlayerRemainPoints]]、[[Lua接口/服务端/SetPlayerRemainPoints|SetPlayerRemainPoints]] 在部分分支无返回值,赋值接收得到 nil,不等于失败。实际分配一级属性点由客户端加点流程或对应接口完成,这里只读写尚未分配的余量。


== 读取生命与上限 ==
== 读取生命与上限 ==
<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 hp = GetHp(sceneId, selfId)
<pre>local hp = GetHp(sceneId, selfId)
local maxHp = GetMaxHp(sceneId, selfId)
local maxHp = GetMaxHp(sceneId, selfId)
if type(hp) == "number" and type(maxHp) == "number"
if type(hp) == "number" and type(maxHp) == "number"
第110行: 第110行:


== 设置当前生命 ==
== 设置当前生命 ==
<pre style="white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.7;padding:12px;background:#f5f7f8;border:1px solid #dbe3e6;">SetHp(sceneId, selfId, 1)
<pre>SetHp(sceneId, selfId, 1)
-- 部分分支无返回值;不能写 if SetHp(...) then 判断成功
-- 部分分支无返回值;不能写 if SetHp(...) then 判断成功
-- 想确认生效应改读 GetHp 回比</pre>
-- 想确认生效应改读 GetHp 回比</pre>
第148行: 第148行:


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

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

读写角色的生命、气、怒气、基础属性、限时修正、活力精力与潜能点。先查接口作用对象:多数针对玩家 selfId,少数限时修正针对怪物。

生命与气

接口 参数与返回
GetHp / GetMp sceneId, selfId → 当前生命 / 气。
GetMaxHp / GetMaxMp sceneId, selfId → 生命 / 气上限。
SetHp sceneId, selfId, hp;部分分支无返回值。
SetMp sceneId, selfId, mp;部分分支无返回值。

SetHp、SetMp 在对象无效等分支不返回值,赋值接收得到 nil,不能用 if result then 判断是否设置成功。生命 / 气上限由等级与基础属性决定,先改等级或属性,上限随之更新。

怒气

接口 参数与返回
GetRage sceneId, selfId → 当前怒气;非角色单位返回 -1。
GetMaxRage sceneId, selfId → 怒气上限;非角色单位返回 -1。
SetRage sceneId, selfId, rage;无返回值。

GetRage、GetMaxRage 对非角色单位(如物品箱、传送点)返回 -1,不能只靠 >= 0 判断,应先确认对象是角色。

基础属性

接口 参数与返回
GetHumanAttr sceneId, selfId, attrType → 按官方编号返回六类攻击属性。
LuaFnGetBaseAttackPhysics sceneId, selfId → 基础外功攻击。
SetCharacterAttrRefix sceneId, selfId, attrType, refix → 设置冰、火、玄、毒攻击修正值。

GetHumanAttr 按 attrType 取六类攻击属性之一,attrType 是配置约定的编号,不在这里枚举。SetCharacterAttrRefix 只改冰、火、玄、毒四系攻击修正值,不直接改最终面板;修改后最终数值仍要由属性刷新流程汇总。各系攻击 / 防御的基础读取接口名带 Base 前缀(LuaFnGetBaseAttackPhysics 等),均为只读。

限时属性修正(怪物专用)

接口 参数与返回
LuaFnGetLifeTimeAttrRefix_MaxHP sceneId, monsterId → 怪物本次存活期间的生命上限修正。
LuaFnSetLifeTimeAttrRefix_MaxHP sceneId, monsterId, value;设置本次存活期间修正。

这一组 LifeTimeAttrRefix 接口针对怪物的 monsterId,不是玩家 selfId。修正只在该怪物本次存活期间生效,怪物重生后会重置。同组还有外功 / 内功 / 各系攻防、命中 / 闪避、暴击等子项,按 LuaFnGetLifeTimeAttrRefix_<属性> / LuaFnSetLifeTimeAttrRefix_<属性> 命名。

活力与精力

接口 参数与返回
GetHumanVigor / GetHumanMaxVigor sceneId, selfId → 当前 / 上限活力。
SetHumanVigor sceneId, selfId, value;无返回值。
GetHumanEnergy / GetHumanMaxEnergy sceneId, selfId → 当前 / 上限精力。
SetHumanEnergy sceneId, selfId, value;无返回值。

潜能点

接口 参数与返回
GetPlayerRemainPoints sceneId, selfId → 尚未分配的一级属性点。
SetPlayerRemainPoints sceneId, selfId, remainPoints → 设置后返回设置值。

GetPlayerRemainPoints、SetPlayerRemainPoints 在部分分支无返回值,赋值接收得到 nil,不等于失败。实际分配一级属性点由客户端加点流程或对应接口完成,这里只读写尚未分配的余量。

读取生命与上限

local hp = GetHp(sceneId, selfId)
local maxHp = GetMaxHp(sceneId, selfId)
if type(hp) == "number" and type(maxHp) == "number"
    and hp >= 0 and maxHp > 0 then
    -- 有效生命与上限
end

GetHp 失败路径返回的值需要按具体接口核对;先用 type 判断再判数值范围,避免把异常值当有效。

设置当前生命

SetHp(sceneId, selfId, 1)
-- 部分分支无返回值;不能写 if SetHp(...) then 判断成功
-- 想确认生效应改读 GetHp 回比

SetHp 不保证返回成功标志。需要确认生效,应在设置后用 GetHp 读回比较,而不是接收返回值。

相关主题

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

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