Lua接口/技能相关:修订间差异
来自天龙知识库
跳到导航跳到搜索
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例 |
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例 |
||
| 第1行: | 第1行: | ||
__NOTOC__ | __NOTOC__ | ||
<div class="lua-reference | <div class="lua-reference"> | ||
[[首页|首页]] · [[Lua接口/服务端函数索引|服务端接口]] · [[Lua接口/服务端调用约定|调用约定]] | [[首页|首页]] · [[Lua接口/服务端函数索引|服务端接口]] · [[Lua接口/服务端调用约定|调用约定]] | ||
| 第6行: | 第6行: | ||
== 学习与查询 == | == 学习与查询 == | ||
{| class="wikitable | {| class="wikitable" | ||
! scope="col | ! scope="col" | 接口 | ||
! scope="col | ! scope="col" | 参数与返回 | ||
|- | |- | ||
| [[Lua接口/服务端/AddSkill|AddSkill]] | |||
| <code>sceneId, selfId, skillId</code> → 返回值;失败 -1。 | |||
|- | |- | ||
| [[Lua接口/服务端/DelSkill|DelSkill]] | |||
| <code>sceneId, selfId, skillId</code> → 返回值;失败 -1。 | |||
|- | |- | ||
| [[Lua接口/服务端/HaveSkill|HaveSkill]] | |||
| <code>sceneId, selfId, skillId</code> → 已拥有 1、未拥有或失败 -1。 | |||
|- | |- | ||
| [[Lua接口/服务端/GetSkillName|GetSkillName]] | |||
| <code>skillID</code> → 技能名称字符串;模板不存在返回空串。 | |||
|} | |} | ||
[[Lua接口/服务端/HaveSkill|HaveSkill]] 返回的是**是否拥有(1/-1)**,不是技能等级;查等级用 [[Lua接口/心法相关|心法]] 的 [[Lua接口/服务端/GetXinFaLevel|GetXinFaLevel]] 或技能对应的等级接口。[[Lua接口/服务端/GetSkillName|GetSkillName]] 只传技能编号,不传 sceneId / selfId。 | [[Lua接口/服务端/HaveSkill|HaveSkill]] 返回的是**是否拥有(1/-1)**,不是技能等级;查等级用 [[Lua接口/心法相关|心法]] 的 [[Lua接口/服务端/GetXinFaLevel|GetXinFaLevel]] 或技能对应的等级接口。[[Lua接口/服务端/GetSkillName|GetSkillName]] 只传技能编号,不传 sceneId / selfId。 | ||
== 技能使用 == | == 技能使用 == | ||
{| class="wikitable | {| class="wikitable" | ||
! scope="col | ! scope="col" | 接口 | ||
! scope="col | ! scope="col" | 参数与返回 | ||
|- | |- | ||
| [[Lua接口/服务端/UseSkill|UseSkill]] | |||
| <code>sceneId, selfId, arg3</code> → 返回值;失败 -1。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnCanUnitUseSkill|LuaFnCanUnitUseSkill]] | |||
| <code>sceneId, selfId, nSkillID</code> → 是否满足技能、冷却、AI 状态三项条件;失败 -1。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnUnitUseSkill|LuaFnUnitUseSkill]] | |||
| <code>sceneId, nSelfID, nSkillID, nTargetID, fPos_X, fPos_Z, fDir, bPassSkillCheck</code> → 8 个参数;失败 -1。 | |||
|} | |} | ||
[[Lua接口/服务端/LuaFnUnitUseSkill|LuaFnUnitUseSkill]] 需要 8 个参数(目标对象、目标坐标、朝向、是否跳过技能校验),不能省略;用它可以让非玩家单位(NPC、怪物)也释放技能。[[Lua接口/服务端/LuaFnCanUnitUseSkill|LuaFnCanUnitUseSkill]] 只判断条件,不实际释放。 | [[Lua接口/服务端/LuaFnUnitUseSkill|LuaFnUnitUseSkill]] 需要 8 个参数(目标对象、目标坐标、朝向、是否跳过技能校验),不能省略;用它可以让非玩家单位(NPC、怪物)也释放技能。[[Lua接口/服务端/LuaFnCanUnitUseSkill|LuaFnCanUnitUseSkill]] 只判断条件,不实际释放。 | ||
== 技能流程中的目标读取 == | == 技能流程中的目标读取 == | ||
{| class="wikitable | {| class="wikitable" | ||
! scope="col | ! scope="col" | 接口 | ||
! scope="col | ! scope="col" | 参数与返回 | ||
|- | |- | ||
| [[Lua接口/服务端/LuaFnGetTargetObjID|LuaFnGetTargetObjID]] | |||
| <code>sceneId, nSelfID</code> → 目标对象 ID;失败 -1。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnGetPositionOfTargetObj|LuaFnGetPositionOfTargetObj]] | |||
| <code>sceneId, selfId</code> → 目标对象 X、Z 坐标。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnGetTargetPosition|LuaFnGetTargetPosition]] | |||
| <code>sceneId, selfId</code> → 目标位置 X、Z 坐标。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnGetTargetPosition_X|LuaFnGetTargetPosition_X]] / [[Lua接口/服务端/LuaFnGetTargetPosition_Z|LuaFnGetTargetPosition_Z]] | |||
| <code>sceneId, nSelfID</code> → 目标 X / Z;失败 -1。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnGetItemIndexOfUsedItem|LuaFnGetItemIndexOfUsedItem]] | |||
| <code>sceneId, selfId</code> → 消耗物品的物品表索引;失败 -1。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnGetBagIndexOfUsedItem|LuaFnGetBagIndexOfUsedItem]] | |||
| <code>sceneId, selfId</code> → 消耗物品的背包格子;失败 -1。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnGetTargetBagSlot|LuaFnGetTargetBagSlot]] | |||
| <code>sceneId, nSelfID</code> → 目标背包格子;失败 -1。 | |||
|} | |} | ||
这一组读取「当前技能或物品使用流程」记录的临时目标,只在该流程的回调内有效。[[Lua接口/服务端/LuaFnGetPositionOfTargetObj|LuaFnGetPositionOfTargetObj]] 返回两个值,需要用 x、z 两个变量接收。 | 这一组读取「当前技能或物品使用流程」记录的临时目标,只在该流程的回调内有效。[[Lua接口/服务端/LuaFnGetPositionOfTargetObj|LuaFnGetPositionOfTargetObj]] 返回两个值,需要用 x、z 两个变量接收。 | ||
== 消耗与校验流程道具 == | == 消耗与校验流程道具 == | ||
{| class="wikitable | {| class="wikitable" | ||
! scope="col | ! scope="col" | 接口 | ||
! scope="col | ! scope="col" | 参数与返回 | ||
|- | |- | ||
| [[Lua接口/服务端/LuaFnVerifyUsedItem|LuaFnVerifyUsedItem]] | |||
| <code>sceneId, nSelfID</code> → 校验结果;失败 -1。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnDepletingUsedItem|LuaFnDepletingUsedItem]] | |||
| <code>sceneId, nSelfID</code> → 消耗结果;失败 -1。 | |||
|} | |} | ||
[[Lua接口/服务端/LuaFnVerifyUsedItem|LuaFnVerifyUsedItem]] 校验玩家本次使用流程记录的道具是否满足条件,[[Lua接口/服务端/LuaFnDepletingUsedItem|LuaFnDepletingUsedItem]] 实际消耗。两者配合使用:先校验通过再消耗。 | [[Lua接口/服务端/LuaFnVerifyUsedItem|LuaFnVerifyUsedItem]] 校验玩家本次使用流程记录的道具是否满足条件,[[Lua接口/服务端/LuaFnDepletingUsedItem|LuaFnDepletingUsedItem]] 实际消耗。两者配合使用:先校验通过再消耗。 | ||
== 单位关系判断 == | == 单位关系判断 == | ||
{| class="wikitable | {| class="wikitable" | ||
! scope="col | ! scope="col" | 接口 | ||
! scope="col | ! scope="col" | 参数与返回 | ||
|- | |- | ||
| [[Lua接口/服务端/LuaFnUnitIsFriend|LuaFnUnitIsFriend]] | |||
| <code>sceneId, selfId, targetId</code> → 是否友方;部分分支无返回值。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnUnitIsEnemy|LuaFnUnitIsEnemy]] | |||
| <code>sceneId, selfId, targetId</code> → 是否敌对;部分分支无返回值。 | |||
|- | |- | ||
| [[Lua接口/服务端/LuaFnUnitIsPartner|LuaFnUnitIsPartner]] | |||
| <code>sceneId, selfId, targetId</code> → 是否协作;部分分支无返回值。 | |||
|} | |} | ||
三个接口部分分支不返回值,接收可能得到 nil,先判类型再判数值。 | 三个接口部分分支不返回值,接收可能得到 nil,先判类型再判数值。 | ||
== 检查并学习技能 == | == 检查并学习技能 == | ||
<pre | <pre>local owned = HaveSkill(sceneId, selfId, skillId) | ||
if type(owned) == "number" and owned ~= 1 then | if type(owned) == "number" and owned ~= 1 then | ||
AddSkill(sceneId, selfId, skillId) | AddSkill(sceneId, selfId, skillId) | ||
end</pre> | end</pre> | ||
[[Lua接口/服务端/HaveSkill|HaveSkill]] 已拥有返回 1、未拥有返回 -1,所以条件是 <code | [[Lua接口/服务端/HaveSkill|HaveSkill]] 已拥有返回 1、未拥有返回 -1,所以条件是 <code>owned ~= 1</code>(见 [[Lua接口/返回值判断|返回值判断]])。 | ||
== 使用技能 == | == 使用技能 == | ||
<pre | <pre>local can = LuaFnCanUnitUseSkill(sceneId, selfId, skillId) | ||
if type(can) == "number" and can ~= -1 then | if type(can) == "number" and can ~= -1 then | ||
LuaFnUnitUseSkill(sceneId, selfId, skillId, targetId, posX, posZ, dir, 0) | LuaFnUnitUseSkill(sceneId, selfId, skillId, targetId, posX, posZ, dir, 0) | ||
end</pre> | end</pre> | ||
[[Lua接口/服务端/LuaFnUnitUseSkill|LuaFnUnitUseSkill]] 需要 8 个参数,第 8 个 <code | [[Lua接口/服务端/LuaFnUnitUseSkill|LuaFnUnitUseSkill]] 需要 8 个参数,第 8 个 <code>bPassSkillCheck</code> 传 0 表示仍走技能校验。 | ||
== 相关主题 == | == 相关主题 == | ||
| 第145行: | 第145行: | ||
[[Lua接口/函数不存在|函数不存在或提示 nil]] · [[Lua接口/参数类型与顺序|参数类型与顺序]] · [[Lua接口/返回值判断|返回值判断]] · [[Lua接口/对象ID与GUID|对象 ID 与 GUID]] | [[Lua接口/函数不存在|函数不存在或提示 nil]] · [[Lua接口/参数类型与顺序|参数类型与顺序]] · [[Lua接口/返回值判断|返回值判断]] · [[Lua接口/对象ID与GUID|对象 ID 与 GUID]] | ||
<div | <div class="lua-note">本页函数签名与返回约定依据当前服务端注册表整理;sceneId、selfId 由实际回调提供,业务枚举、属性类型编号与运行效果需要实测。</div> | ||
</div> | </div> | ||
2026年9月19日 (六) 16:59的版本
查询、学习、删除与使用技能,以及技能流程中的目标读取。技能编号(skillId)来自技能表,不是物品或心法编号。
学习与查询
| 接口 | 参数与返回 |
|---|---|
| AddSkill | sceneId, selfId, skillId → 返回值;失败 -1。
|
| DelSkill | sceneId, selfId, skillId → 返回值;失败 -1。
|
| HaveSkill | sceneId, selfId, skillId → 已拥有 1、未拥有或失败 -1。
|
| GetSkillName | skillID → 技能名称字符串;模板不存在返回空串。
|
HaveSkill 返回的是**是否拥有(1/-1)**,不是技能等级;查等级用 心法 的 GetXinFaLevel 或技能对应的等级接口。GetSkillName 只传技能编号,不传 sceneId / selfId。
技能使用
| 接口 | 参数与返回 |
|---|---|
| UseSkill | sceneId, selfId, arg3 → 返回值;失败 -1。
|
| LuaFnCanUnitUseSkill | sceneId, selfId, nSkillID → 是否满足技能、冷却、AI 状态三项条件;失败 -1。
|
| LuaFnUnitUseSkill | sceneId, nSelfID, nSkillID, nTargetID, fPos_X, fPos_Z, fDir, bPassSkillCheck → 8 个参数;失败 -1。
|
LuaFnUnitUseSkill 需要 8 个参数(目标对象、目标坐标、朝向、是否跳过技能校验),不能省略;用它可以让非玩家单位(NPC、怪物)也释放技能。LuaFnCanUnitUseSkill 只判断条件,不实际释放。
技能流程中的目标读取
| 接口 | 参数与返回 |
|---|---|
| LuaFnGetTargetObjID | sceneId, nSelfID → 目标对象 ID;失败 -1。
|
| LuaFnGetPositionOfTargetObj | sceneId, selfId → 目标对象 X、Z 坐标。
|
| LuaFnGetTargetPosition | sceneId, selfId → 目标位置 X、Z 坐标。
|
| LuaFnGetTargetPosition_X / LuaFnGetTargetPosition_Z | sceneId, nSelfID → 目标 X / Z;失败 -1。
|
| LuaFnGetItemIndexOfUsedItem | sceneId, selfId → 消耗物品的物品表索引;失败 -1。
|
| LuaFnGetBagIndexOfUsedItem | sceneId, selfId → 消耗物品的背包格子;失败 -1。
|
| LuaFnGetTargetBagSlot | sceneId, nSelfID → 目标背包格子;失败 -1。
|
这一组读取「当前技能或物品使用流程」记录的临时目标,只在该流程的回调内有效。LuaFnGetPositionOfTargetObj 返回两个值,需要用 x、z 两个变量接收。
消耗与校验流程道具
| 接口 | 参数与返回 |
|---|---|
| LuaFnVerifyUsedItem | sceneId, nSelfID → 校验结果;失败 -1。
|
| LuaFnDepletingUsedItem | sceneId, nSelfID → 消耗结果;失败 -1。
|
LuaFnVerifyUsedItem 校验玩家本次使用流程记录的道具是否满足条件,LuaFnDepletingUsedItem 实际消耗。两者配合使用:先校验通过再消耗。
单位关系判断
| 接口 | 参数与返回 |
|---|---|
| LuaFnUnitIsFriend | sceneId, selfId, targetId → 是否友方;部分分支无返回值。
|
| LuaFnUnitIsEnemy | sceneId, selfId, targetId → 是否敌对;部分分支无返回值。
|
| LuaFnUnitIsPartner | sceneId, selfId, targetId → 是否协作;部分分支无返回值。
|
三个接口部分分支不返回值,接收可能得到 nil,先判类型再判数值。
检查并学习技能
local owned = HaveSkill(sceneId, selfId, skillId)
if type(owned) == "number" and owned ~= 1 then
AddSkill(sceneId, selfId, skillId)
end
HaveSkill 已拥有返回 1、未拥有返回 -1,所以条件是 owned ~= 1(见 返回值判断)。
使用技能
local can = LuaFnCanUnitUseSkill(sceneId, selfId, skillId)
if type(can) == "number" and can ~= -1 then
LuaFnUnitUseSkill(sceneId, selfId, skillId, targetId, posX, posZ, dir, 0)
end
LuaFnUnitUseSkill 需要 8 个参数,第 8 个 bPassSkillCheck 传 0 表示仍走技能校验。
相关主题
- 角色信息
- 属性读取与修改
- 等级与经验
- 货币相关
- 物品查询
- 物品发放与扣除
- 背包空间
- 装备操作
- 任务状态
- 任务变量
- NPC 对话
- 对话选项
- 技能相关
- 心法相关
- 状态效果
- 生活技能
- 珍兽查询
- 珍兽操作
- 场景查询
- 坐标与传送
- 副本相关
- 活动相关
- 时间与计时
- 怪物相关
- 队伍相关
- 帮会相关
- 消息与提示
- 聊天与公告
函数不存在或提示 nil · 参数类型与顺序 · 返回值判断 · 对象 ID 与 GUID
本页函数签名与返回约定依据当前服务端注册表整理;sceneId、selfId 由实际回调提供,业务枚举、属性类型编号与运行效果需要实测。