Lua接口/技能相关:修订间差异

来自天龙知识库
跳到导航跳到搜索
雪舞留言 | 贡献
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
 
雪舞留言 | 贡献
维护服务端 Lua 接口:核对参数、返回值、边界条件与调用示例
 
(未显示同一用户的1个中间版本)
第130行: 第130行:
* [[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的最新版本

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

查询、学习、删除与使用技能,以及技能流程中的目标读取。技能编号(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 由实际回调提供,业务枚举、属性类型编号与运行效果需要实测。