Lua接口/等级与经验:修订间差异

来自天龙知识库
跳到导航跳到搜索
雪舞留言 | 贡献
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
雪舞留言 | 贡献
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
 
(未显示同一用户的1个中间版本)
第96行: 第96行:
* [[Lua接口/珍兽查询|珍兽查询]]
* [[Lua接口/珍兽查询|珍兽查询]]
* [[Lua接口/珍兽操作|珍兽操作]]
* [[Lua接口/珍兽操作|珍兽操作]]
* [[Lua接口/场景查询|场景查询]]
* [[Lua接口/坐标与传送|坐标与传送]]
* [[Lua接口/副本相关|副本相关]]
* [[Lua接口/活动相关|活动相关]]
* [[Lua接口/时间与计时|时间与计时]]
* [[Lua接口/怪物相关|怪物相关]]
* [[Lua接口/队伍相关|队伍相关]]
* [[Lua接口/帮会相关|帮会相关]]
* [[Lua接口/消息与提示|消息与提示]]
* [[Lua接口/聊天与公告|聊天与公告]]


[[Lua接口/服务端调用约定|服务端调用约定]] · [[Lua接口/服务端调用示例|服务端调用示例]] · [[Lua接口/服务端函数索引|服务端函数索引]]
[[Lua接口/服务端调用约定|服务端调用约定]] · [[Lua接口/服务端调用示例|服务端调用示例]] · [[Lua接口/服务端函数索引|服务端函数索引]]

2026年9月12日 (六) 13:54的最新版本

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

读写角色等级、当前经验、加经验、升级判定、经验上限与衰减系数。

等级

接口 参数与返回
GetLevel sceneId, selfId → 角色等级;失败返回 -1。
SetLevel sceneId, selfId, level → 设置角色等级。
GetCharacterLevel sceneId, characterId → 指定角色单位的等级。
GetHumanMaxLevelLimit () → 玩家等级表允许的脚本等级上界(无参)。

GetLevel 失败返回 -1,不能直接 >= 0 之外的判断;GetHumanMaxLevelLimit 不接受参数,写成 GetHumanMaxLevelLimit(sceneId, selfId) 会传入多余实参。SetLevel 改完后相关心法、属性、经验上限需要另行处理,脚本不自动同步。

经验

接口 参数与返回
GetExp sceneId, selfId → 当前战斗经验值。
AddExp sceneId, selfId, exp;无返回值。
AddExpMore sceneId, selfId, exp;按任务经验来源追加,不接受负数。
GetFullExp sceneId, selfId → 当前等级允许保存的经验上限(升级经验的四倍)。

AddExpAddExpMore **无返回值**,赋值接收得到 nil,不等于失败也不能用 if AddExp(...) then 判断成功。AddExpMore 不接受负数,传入负数不会扣除经验。GetFullExp 是当前等级允许保存的经验上限,超出部分的处理由服务端经验保存逻辑决定。

升级与衰减

接口 参数与返回
LuaFnCanLevelUp sceneId, selfId → 是否可以升级。
GetExpAttenuationInfo sceneId, selfId, levelDelta → 指定等级差对应的人物经验衰减系数。

GetExpAttenuationInfo 第三参是等级差,不是目标等级;衰减系数按本服衰减表读取。

读取等级与经验

local level = GetLevel(sceneId, selfId)
local exp = GetExp(sceneId, selfId)
if type(level) == "number" and level >= 0
    and type(exp) == "number" then
    -- 取得等级与当前经验
end

GetLevel 失败返回 -1,GetExp 返回数值。先判类型再判范围,避免把 -1 当有效等级。

加经验

AddExp(sceneId, selfId, 1000)
-- 无返回值;不能用 if AddExp(...) then 判断
-- 想确认应改读 GetExp 回比

AddExp 无返回值。AddExpMore 同样无返回值且不接受负数,需要按任务经验来源的接口使用。这两个接口都不提供成功标志,要确认生效应改用 GetExp 读回比较,而不是接收返回值。

升级判定

if LuaFnCanLevelUp(sceneId, selfId) == 1 then
    -- 当前可以升级
end

LuaFnCanLevelUp 返回数值;用 == 1 比较而非 if LuaFnCanLevelUp(...) then,避免把 0 当假、其他值当真的判断出错(见 返回值判断)。实际升级流程仍由服务端在经验结算时触发,脚本只读取判定结果。

相关主题

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

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

本页函数签名与返回约定依据当前服务端注册表整理;sceneId、selfId 由实际回调提供,业务枚举、属性类型编号与运行效果需要实测。