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接口/服务端/QueryHumanAbility|QueryHumanAbility]]
| [[Lua接口/服务端/QueryHumanAbility|QueryHumanAbility]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, abilityId</code> → 已学 1、未学 0、失败 -1。
| <code>sceneId, selfId, abilityId</code> → 已学 1、未学 0、失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/QueryHumanAbilityLevel|QueryHumanAbilityLevel]]
| [[Lua接口/服务端/QueryHumanAbilityLevel|QueryHumanAbilityLevel]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, AbilityID</code> → 生活技能等级;失败 -1。
| <code>sceneId, selfId, AbilityID</code> → 生活技能等级;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/SetHumanAbilityLevel|SetHumanAbilityLevel]]
| [[Lua接口/服务端/SetHumanAbilityLevel|SetHumanAbilityLevel]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, abilityId, abilityLvl</code>;无返回值。
| <code>sceneId, selfId, abilityId, abilityLvl</code>;无返回值。
|}
|}
[[Lua接口/服务端/QueryHumanAbility|QueryHumanAbility]] 返回 1 表示已学、0 表示未学、-1 表示失败,**0 与 -1 含义不同**,不能用简单真值判断。[[Lua接口/服务端/SetHumanAbilityLevel|SetHumanAbilityLevel]] 无返回值。
[[Lua接口/服务端/QueryHumanAbility|QueryHumanAbility]] 返回 1 表示已学、0 表示未学、-1 表示失败,'''0 与 -1 含义不同''',不能用简单真值判断。[[Lua接口/服务端/SetHumanAbilityLevel|SetHumanAbilityLevel]] 无返回值。


== 技能经验 ==
== 技能经验 ==
{| 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接口/服务端/GetAbilityExp|GetAbilityExp]]
| [[Lua接口/服务端/GetAbilityExp|GetAbilityExp]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, abilityId</code> → 当前经验;失败 -1。
| <code>sceneId, selfId, abilityId</code> → 当前经验;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/SetAbilityExp|SetAbilityExp]]
| [[Lua接口/服务端/SetAbilityExp|SetAbilityExp]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, abilityId, abilityExp</code>;无返回值。
| <code>sceneId, selfId, abilityId, abilityExp</code>;无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetAbilityExpPlus|GetAbilityExpPlus]]
| [[Lua接口/服务端/GetAbilityExpPlus|GetAbilityExpPlus]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, itemTypeSn</code> → 物品对应的经验加成;失败 -1。
| <code>sceneId, selfId, itemTypeSn</code> → 物品对应的经验加成;失败 -1。
|}
|}
[[Lua接口/服务端/SetAbilityExp|SetAbilityExp]] 无返回值。[[Lua接口/服务端/GetAbilityExpPlus|GetAbilityExpPlus]] 传的是物品配置编号,读取该物品提供的生活技能经验加成。
[[Lua接口/服务端/SetAbilityExp|SetAbilityExp]] 无返回值。[[Lua接口/服务端/GetAbilityExpPlus|GetAbilityExpPlus]] 传的是物品配置编号,读取该物品提供的生活技能经验加成。


== 配方 ==
== 配方 ==
{| 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接口/服务端/SetPrescription|SetPrescription]]
| [[Lua接口/服务端/SetPrescription|SetPrescription]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, PrescrID, LearnOrAbandon</code> → 学会结果;失败 -1。
| <code>sceneId, selfId, PrescrID, LearnOrAbandon</code> → 学会结果;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/IsPrescrLearned|IsPrescrLearned]]
| [[Lua接口/服务端/IsPrescrLearned|IsPrescrLearned]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, PrescrID</code> → 是否已学;失败 -1。
| <code>sceneId, selfId, PrescrID</code> → 是否已学;失败 -1。
|}
|}
[[Lua接口/服务端/SetPrescription|SetPrescription]] 只能操作「学会」某一配方,不能放弃具体某项配方——放弃走另外的流程。[[Lua接口/服务端/IsPrescrLearned|IsPrescrLearned]] 判断是否已学。
[[Lua接口/服务端/SetPrescription|SetPrescription]] 只能操作「学会」某一配方,不能放弃具体某项配方——放弃走另外的流程。[[Lua接口/服务端/IsPrescrLearned|IsPrescrLearned]] 判断是否已学。


== 升级配置 ==
== 升级配置 ==
{| 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接口/服务端/LuaFnGetAbilityMaxLevel|LuaFnGetAbilityMaxLevel]]
| [[Lua接口/服务端/LuaFnGetAbilityMaxLevel|LuaFnGetAbilityMaxLevel]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">abilityId</code> → 1、最大等级(2 项);配置不存在返回 0,异常 -1。
| <code>abilityId</code> → 1、最大等级(2 项);配置不存在返回 0,异常 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetAbilityLevelUpConfig|LuaFnGetAbilityLevelUpConfig]]
| [[Lua接口/服务端/LuaFnGetAbilityLevelUpConfig|LuaFnGetAbilityLevelUpConfig]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">abilityId, nLevel</code> → 7 项(1、金钱、经验、技能经验限制等);配置不存在 0,异常 -1。
| <code>abilityId, nLevel</code> → 7 项(1、金钱、经验、技能经验限制等);配置不存在 0,异常 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetAbilityLevelUpConfig2|LuaFnGetAbilityLevelUpConfig2]]
| [[Lua接口/服务端/LuaFnGetAbilityLevelUpConfig2|LuaFnGetAbilityLevelUpConfig2]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">abilityId, nLevel</code> → 9 项,在上一接口基础上追加附加金钱、附加经验。
| <code>abilityId, nLevel</code> → 9 项,在上一接口基础上追加附加金钱、附加经验。
|}
|}
这三个接口成功时**第一个返回值是 1**(不是金额),后续才是配置数据;配置不存在返回 0,异常路径返回 -1。用多个变量按顺序接收,不要只接一项。
这三个接口成功时'''第一个返回值是 1'''(不是金额),后续才是配置数据;配置不存在返回 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接口/服务端/GetAbilityOperaRobotTime|GetAbilityOperaRobotTime]]
| [[Lua接口/服务端/GetAbilityOperaRobotTime|GetAbilityOperaRobotTime]]
| 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接口/服务端/SetAbilityOperaRobotTime|SetAbilityOperaRobotTime]]
| [[Lua接口/服务端/SetAbilityOperaRobotTime|SetAbilityOperaRobotTime]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, RobotTime</code>;无返回值。
| <code>sceneId, selfId, RobotTime</code>;无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/SetAbilityOperaTime|SetAbilityOperaTime]]
| [[Lua接口/服务端/SetAbilityOperaTime|SetAbilityOperaTime]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, OperaTime</code>;无返回值。
| <code>sceneId, selfId, OperaTime</code>;无返回值。
|}
|}
[[Lua接口/服务端/SetAbilityOperaRobotTime|SetAbilityOperaRobotTime]] 与 [[Lua接口/服务端/SetAbilityOperaTime|SetAbilityOperaTime]] 都无返回值。
[[Lua接口/服务端/SetAbilityOperaRobotTime|SetAbilityOperaRobotTime]] 与 [[Lua接口/服务端/SetAbilityOperaTime|SetAbilityOperaTime]] 都无返回值。


== 材料与随机 ==
== 材料与随机 ==
{| 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接口/服务端/GetAbilityObjIndex|GetAbilityObjIndex]]
| [[Lua接口/服务端/GetAbilityObjIndex|GetAbilityObjIndex]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, Index</code> → 材料条目对应的背包位置;失败 -1。
| <code>sceneId, selfId, Index</code> → 材料条目对应的背包位置;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnCompoundRandom|LuaFnCompoundRandom]]
| [[Lua接口/服务端/LuaFnCompoundRandom|LuaFnCompoundRandom]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">randomIndex</code> → 合成随机结果;失败 -1。表索引范围 0-127。
| <code>randomIndex</code> → 合成随机结果;失败 -1。表索引范围 0-127。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGemEmbedRandom|LuaFnGemEmbedRandom]]
| [[Lua接口/服务端/LuaFnGemEmbedRandom|LuaFnGemEmbedRandom]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">()</code> → 宝石镶嵌随机结果;失败 -1。
| <code>()</code> → 宝石镶嵌随机结果;失败 -1。
|}
|}
[[Lua接口/服务端/GetAbilityObjIndex|GetAbilityObjIndex]] 读取当前生活技能操作中指定材料条目的背包位置。[[Lua接口/服务端/LuaFnCompoundRandom|LuaFnCompoundRandom]] 的表索引范围是 0 到 127。
[[Lua接口/服务端/GetAbilityObjIndex|GetAbilityObjIndex]] 读取当前生活技能操作中指定材料条目的背包位置。[[Lua接口/服务端/LuaFnCompoundRandom|LuaFnCompoundRandom]] 的表索引范围是 0 到 127。


== 结果消息 ==
== 结果消息 ==
{| 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接口/服务端/LuaFnSendAbilitySuccessMsg|LuaFnSendAbilitySuccessMsg]]
| [[Lua接口/服务端/LuaFnSendAbilitySuccessMsg|LuaFnSendAbilitySuccessMsg]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, AbilityId, RecipeId, ItemSerialNum</code>;无返回值。
| <code>sceneId, selfId, AbilityId, RecipeId, ItemSerialNum</code>;无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnSendAbilityFailureMsg|LuaFnSendAbilityFailureMsg]]
| [[Lua接口/服务端/LuaFnSendAbilityFailureMsg|LuaFnSendAbilityFailureMsg]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, abilityId, recipeId, itemSerial</code>;无返回值。
| <code>sceneId, selfId, abilityId, recipeId, itemSerial</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 learned = QueryHumanAbility(sceneId, selfId, abilityId)
<pre>local learned = QueryHumanAbility(sceneId, selfId, abilityId)
if type(learned) == "number" and learned == 1 then
if type(learned) == "number" and learned == 1 then
     local level = QueryHumanAbilityLevel(sceneId, selfId, abilityId)
     local level = QueryHumanAbilityLevel(sceneId, selfId, abilityId)
第119行: 第119行:
     end
     end
end</pre>
end</pre>
[[Lua接口/服务端/QueryHumanAbility|QueryHumanAbility]] 已学返回 1、未学返回 0、失败返回 -1,所以用 <code style="white-space:normal;overflow-wrap:anywhere;">learned == 1</code> 判断已学。
[[Lua接口/服务端/QueryHumanAbility|QueryHumanAbility]] 已学返回 1、未学返回 0、失败返回 -1,所以用 <code>learned == 1</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 learned = IsPrescrLearned(sceneId, selfId, prescrId)
<pre>local learned = IsPrescrLearned(sceneId, selfId, prescrId)
if type(learned) == "number" and learned ~= 1 then
if type(learned) == "number" and learned ~= 1 then
     SetPrescription(sceneId, selfId, prescrId, 1)
     SetPrescription(sceneId, selfId, prescrId, 1)
第129行: 第129行:


== 读取升级配置 ==
== 读取升级配置 ==
<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 ok, money, exp = LuaFnGetAbilityLevelUpConfig(abilityId, nLevel)
<pre>local ok, money, exp = LuaFnGetAbilityLevelUpConfig(abilityId, nLevel)
if type(ok) == "number" and ok == 1 then
if type(ok) == "number" and ok == 1 then
     -- money、exp 为所需金钱与经验
     -- money、exp 为所需金钱与经验
第168行: 第168行:


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

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

查询、学习与升级生活技能(Ability),读写技能经验、管理配方与操作时间。生活技能编号(abilityId)来自生活技能配置表。

学习与等级

接口 参数与返回
QueryHumanAbility sceneId, selfId, abilityId → 已学 1、未学 0、失败 -1。
QueryHumanAbilityLevel sceneId, selfId, AbilityID → 生活技能等级;失败 -1。
SetHumanAbilityLevel sceneId, selfId, abilityId, abilityLvl;无返回值。

QueryHumanAbility 返回 1 表示已学、0 表示未学、-1 表示失败,0 与 -1 含义不同,不能用简单真值判断。SetHumanAbilityLevel 无返回值。

技能经验

接口 参数与返回
GetAbilityExp sceneId, selfId, abilityId → 当前经验;失败 -1。
SetAbilityExp sceneId, selfId, abilityId, abilityExp;无返回值。
GetAbilityExpPlus sceneId, selfId, itemTypeSn → 物品对应的经验加成;失败 -1。

SetAbilityExp 无返回值。GetAbilityExpPlus 传的是物品配置编号,读取该物品提供的生活技能经验加成。

配方

接口 参数与返回
SetPrescription sceneId, selfId, PrescrID, LearnOrAbandon → 学会结果;失败 -1。
IsPrescrLearned sceneId, selfId, PrescrID → 是否已学;失败 -1。

SetPrescription 只能操作「学会」某一配方,不能放弃具体某项配方——放弃走另外的流程。IsPrescrLearned 判断是否已学。

升级配置

接口 参数与返回
LuaFnGetAbilityMaxLevel abilityId → 1、最大等级(2 项);配置不存在返回 0,异常 -1。
LuaFnGetAbilityLevelUpConfig abilityId, nLevel → 7 项(1、金钱、经验、技能经验限制等);配置不存在 0,异常 -1。
LuaFnGetAbilityLevelUpConfig2 abilityId, nLevel → 9 项,在上一接口基础上追加附加金钱、附加经验。

这三个接口成功时第一个返回值是 1(不是金额),后续才是配置数据;配置不存在返回 0,异常路径返回 -1。用多个变量按顺序接收,不要只接一项。

操作与挂机时间

接口 参数与返回
GetAbilityOperaRobotTime sceneId, selfId → 挂机器时间;失败 -1。
SetAbilityOperaRobotTime sceneId, selfId, RobotTime;无返回值。
SetAbilityOperaTime sceneId, selfId, OperaTime;无返回值。

SetAbilityOperaRobotTime 与 SetAbilityOperaTime 都无返回值。

材料与随机

接口 参数与返回
GetAbilityObjIndex sceneId, selfId, Index → 材料条目对应的背包位置;失败 -1。
LuaFnCompoundRandom randomIndex → 合成随机结果;失败 -1。表索引范围 0-127。
LuaFnGemEmbedRandom () → 宝石镶嵌随机结果;失败 -1。

GetAbilityObjIndex 读取当前生活技能操作中指定材料条目的背包位置。LuaFnCompoundRandom 的表索引范围是 0 到 127。

结果消息

接口 参数与返回
LuaFnSendAbilitySuccessMsg sceneId, selfId, AbilityId, RecipeId, ItemSerialNum;无返回值。
LuaFnSendAbilityFailureMsg sceneId, selfId, abilityId, recipeId, itemSerial;无返回值。

这组向客户端发送制造成功 / 失败消息,都无返回值。

检查并设置等级

local learned = QueryHumanAbility(sceneId, selfId, abilityId)
if type(learned) == "number" and learned == 1 then
    local level = QueryHumanAbilityLevel(sceneId, selfId, abilityId)
    if type(level) == "number" and level ~= -1 then
        -- 已学,取得等级
    end
end

QueryHumanAbility 已学返回 1、未学返回 0、失败返回 -1,所以用 learned == 1 判断已学。

学习配方

local learned = IsPrescrLearned(sceneId, selfId, prescrId)
if type(learned) == "number" and learned ~= 1 then
    SetPrescription(sceneId, selfId, prescrId, 1)
end

SetPrescription 第 4 个参数表示学会操作;本接口不能放弃具体某项配方。

读取升级配置

local ok, money, exp = LuaFnGetAbilityLevelUpConfig(abilityId, nLevel)
if type(ok) == "number" and ok == 1 then
    -- money、exp 为所需金钱与经验
end

LuaFnGetAbilityLevelUpConfig 成功时第一项是 1、后续才是数据;配置不存在返回 0,异常返回 -1。

相关主题

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

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