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接口/服务端调用约定|调用约定]]


第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接口/服务端/AddSkill|AddSkill]]
| [[Lua接口/服务端/AddSkill|AddSkill]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, skillId</code> → 返回值;失败 -1。
| <code>sceneId, selfId, skillId</code> → 返回值;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/DelSkill|DelSkill]]
| [[Lua接口/服务端/DelSkill|DelSkill]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, skillId</code> → 返回值;失败 -1。
| <code>sceneId, selfId, skillId</code> → 返回值;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/HaveSkill|HaveSkill]]
| [[Lua接口/服务端/HaveSkill|HaveSkill]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, skillId</code> → 已拥有 1、未拥有或失败 -1。
| <code>sceneId, selfId, skillId</code> → 已拥有 1、未拥有或失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/GetSkillName|GetSkillName]]
| [[Lua接口/服务端/GetSkillName|GetSkillName]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">skillID</code> → 技能名称字符串;模板不存在返回空串。
| <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" 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接口/服务端/UseSkill|UseSkill]]
| [[Lua接口/服务端/UseSkill|UseSkill]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, arg3</code> → 返回值;失败 -1。
| <code>sceneId, selfId, arg3</code> → 返回值;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnCanUnitUseSkill|LuaFnCanUnitUseSkill]]
| [[Lua接口/服务端/LuaFnCanUnitUseSkill|LuaFnCanUnitUseSkill]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, nSkillID</code> → 是否满足技能、冷却、AI 状态三项条件;失败 -1。
| <code>sceneId, selfId, nSkillID</code> → 是否满足技能、冷却、AI 状态三项条件;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnUnitUseSkill|LuaFnUnitUseSkill]]
| [[Lua接口/服务端/LuaFnUnitUseSkill|LuaFnUnitUseSkill]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, nSelfID, nSkillID, nTargetID, fPos_X, fPos_Z, fDir, bPassSkillCheck</code> → 8 个参数;失败 -1。
| <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" 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接口/服务端/LuaFnGetTargetObjID|LuaFnGetTargetObjID]]
| [[Lua接口/服务端/LuaFnGetTargetObjID|LuaFnGetTargetObjID]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, nSelfID</code> → 目标对象 ID;失败 -1。
| <code>sceneId, nSelfID</code> → 目标对象 ID;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetPositionOfTargetObj|LuaFnGetPositionOfTargetObj]]
| [[Lua接口/服务端/LuaFnGetPositionOfTargetObj|LuaFnGetPositionOfTargetObj]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 目标对象 X、Z 坐标。
| <code>sceneId, selfId</code> → 目标对象 X、Z 坐标。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetTargetPosition|LuaFnGetTargetPosition]]
| [[Lua接口/服务端/LuaFnGetTargetPosition|LuaFnGetTargetPosition]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId</code> → 目标位置 X、Z 坐标。
| <code>sceneId, selfId</code> → 目标位置 X、Z 坐标。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetTargetPosition_X|LuaFnGetTargetPosition_X]] / [[Lua接口/服务端/LuaFnGetTargetPosition_Z|LuaFnGetTargetPosition_Z]]
| [[Lua接口/服务端/LuaFnGetTargetPosition_X|LuaFnGetTargetPosition_X]] / [[Lua接口/服务端/LuaFnGetTargetPosition_Z|LuaFnGetTargetPosition_Z]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, nSelfID</code> → 目标 X / Z;失败 -1。
| <code>sceneId, nSelfID</code> → 目标 X / Z;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnGetItemIndexOfUsedItem|LuaFnGetItemIndexOfUsedItem]]
| [[Lua接口/服务端/LuaFnGetItemIndexOfUsedItem|LuaFnGetItemIndexOfUsedItem]]
| 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接口/服务端/LuaFnGetBagIndexOfUsedItem|LuaFnGetBagIndexOfUsedItem]]
| [[Lua接口/服务端/LuaFnGetBagIndexOfUsedItem|LuaFnGetBagIndexOfUsedItem]]
| 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接口/服务端/LuaFnGetTargetBagSlot|LuaFnGetTargetBagSlot]]
| [[Lua接口/服务端/LuaFnGetTargetBagSlot|LuaFnGetTargetBagSlot]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, nSelfID</code> → 目标背包格子;失败 -1。
| <code>sceneId, nSelfID</code> → 目标背包格子;失败 -1。
|}
|}
这一组读取「当前技能或物品使用流程」记录的临时目标,只在该流程的回调内有效。[[Lua接口/服务端/LuaFnGetPositionOfTargetObj|LuaFnGetPositionOfTargetObj]] 返回两个值,需要用 x、z 两个变量接收。
这一组读取「当前技能或物品使用流程」记录的临时目标,只在该流程的回调内有效。[[Lua接口/服务端/LuaFnGetPositionOfTargetObj|LuaFnGetPositionOfTargetObj]] 返回两个值,需要用 x、z 两个变量接收。


== 消耗与校验流程道具 ==
== 消耗与校验流程道具 ==
{| 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接口/服务端/LuaFnVerifyUsedItem|LuaFnVerifyUsedItem]]
| [[Lua接口/服务端/LuaFnVerifyUsedItem|LuaFnVerifyUsedItem]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, nSelfID</code> → 校验结果;失败 -1。
| <code>sceneId, nSelfID</code> → 校验结果;失败 -1。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnDepletingUsedItem|LuaFnDepletingUsedItem]]
| [[Lua接口/服务端/LuaFnDepletingUsedItem|LuaFnDepletingUsedItem]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, nSelfID</code> → 消耗结果;失败 -1。
| <code>sceneId, nSelfID</code> → 消耗结果;失败 -1。
|}
|}
[[Lua接口/服务端/LuaFnVerifyUsedItem|LuaFnVerifyUsedItem]] 校验玩家本次使用流程记录的道具是否满足条件,[[Lua接口/服务端/LuaFnDepletingUsedItem|LuaFnDepletingUsedItem]] 实际消耗。两者配合使用:先校验通过再消耗。
[[Lua接口/服务端/LuaFnVerifyUsedItem|LuaFnVerifyUsedItem]] 校验玩家本次使用流程记录的道具是否满足条件,[[Lua接口/服务端/LuaFnDepletingUsedItem|LuaFnDepletingUsedItem]] 实际消耗。两者配合使用:先校验通过再消耗。


== 单位关系判断 ==
== 单位关系判断 ==
{| 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接口/服务端/LuaFnUnitIsFriend|LuaFnUnitIsFriend]]
| [[Lua接口/服务端/LuaFnUnitIsFriend|LuaFnUnitIsFriend]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, targetId</code> → 是否友方;部分分支无返回值。
| <code>sceneId, selfId, targetId</code> → 是否友方;部分分支无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnUnitIsEnemy|LuaFnUnitIsEnemy]]
| [[Lua接口/服务端/LuaFnUnitIsEnemy|LuaFnUnitIsEnemy]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, targetId</code> → 是否敌对;部分分支无返回值。
| <code>sceneId, selfId, targetId</code> → 是否敌对;部分分支无返回值。
|-
|-
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | [[Lua接口/服务端/LuaFnUnitIsPartner|LuaFnUnitIsPartner]]
| [[Lua接口/服务端/LuaFnUnitIsPartner|LuaFnUnitIsPartner]]
| style="padding:8px;vertical-align:top;overflow-wrap:anywhere;" | <code style="white-space:normal;overflow-wrap:anywhere;">sceneId, selfId, targetId</code> → 是否协作;部分分支无返回值。
| <code>sceneId, selfId, targetId</code> → 是否协作;部分分支无返回值。
|}
|}
三个接口部分分支不返回值,接收可能得到 nil,先判类型再判数值。
三个接口部分分支不返回值,接收可能得到 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 owned = HaveSkill(sceneId, selfId, skillId)
<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 style="white-space:normal;overflow-wrap:anywhere;">owned ~= 1</code>(见 [[Lua接口/返回值判断|返回值判断]])。
[[Lua接口/服务端/HaveSkill|HaveSkill]] 已拥有返回 1、未拥有返回 -1,所以条件是 <code>owned ~= 1</code>(见 [[Lua接口/返回值判断|返回值判断]])。


== 使用技能 ==
== 使用技能 ==
<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 can = LuaFnCanUnitUseSkill(sceneId, selfId, skillId)
<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 style="white-space:normal;overflow-wrap:anywhere;">bPassSkillCheck</code> 传 0 表示仍走技能校验。
[[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 style="margin-top:20px;padding-top:10px;border-top:1px solid #dbe3e6;color:#657078;font-size:12px;">本页函数签名与返回约定依据当前服务端注册表整理;sceneId、selfId 由实际回调提供,业务枚举、属性类型编号与运行效果需要实测。</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 表示仍走技能校验。

相关主题

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

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

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