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