Lua接口/怪物相关
来自天龙知识库
查询、创建、删除怪物,读写怪物属性、AI 参数、编组队形与巡逻路径。怪物用对象编号(objId / monsterId)或脚本缓存索引定位。
查询怪物
| 接口 | 参数与返回 |
|---|---|
| GetMonsterCount | sceneId → 场景内怪物数量;失败 -1。
|
| GetMonsterObjID | sceneId, nIndex → 指定索引怪物对象 ID;失败 -1。
|
| GetMonsterWorldX / GetMonsterWorldZ | sceneId, monsterIndex → 怪物 X / Z 坐标;失败 -1。
|
| GetMonsterHP / GetMonsterMaxHP | sceneId, monsterIndex → 当前 / 上限生命;失败 -1。
|
| GetMonsterCurEnemy | sceneId, monsterId → 当前仇恨目标对象编号;失败 -1。
|
| GetMonsterRespawnPos | sceneId, selfId → 出生点 X、Z;失败 -1。
|
| GetMonsterIdByName | sceneId, name → 首个名称前缀匹配的怪物对象 ID;失败 -1。
|
| GetMonsterNamebyDataId | monsterDataId → 怪物模板名称;无效模板返回空串。
|
注意参数区分两种定位方式:GetMonsterWorldX、GetMonsterHP 用**脚本缓存索引(monsterIndex)**,GetMonsterCurEnemy、GetMonsterRespawnPos 用**对象编号(monsterId / selfId)**。GetMonsterRespawnPos 返回两个值。
创建与删除
| 接口 | 参数与返回 |
|---|---|
| LuaFnCreateMonster | SceneID, MonsterType, x, z, iAIType, iAIScript, ScriptID → 对象编号;失败 -1。7 个参数。
|
| LuaFnDeleteMonster | SceneID, ObjID;无返回值。
|
| CreatePetOnScene | sceneId, nPetDataID, x, z;创建无主宠物;记录宠物审计。
|
LuaFnCreateMonster 需要 7 个参数(含 AI 类型、AI 脚本、脚本编号)。LuaFnDeleteMonster 无返回值。
属性与 AI
| 接口 | 参数与返回 |
|---|---|
| LuaFnSetMonsterExp | sceneId, npcId, exp → 固定返回 -1(不能据此判断失败)。
|
| LuaFnDisableMonsterDropBox | sceneId, npcId → 固定返回 -1。
|
| GetNpcCamp | sceneId, npcId → 当前阵营;部分分支无返回值。
|
| SetNpcCamp | sceneId, npcId, campId;无返回值。
|
| GetNPCAIType / SetNPCAIType | sceneId, npcId[, aiType] → AI 类型;SetNPCAIType 固定返回 -1。
|
| GetAIScriptID / SetAIScriptID | sceneId, selfId[, aiScriptId] → 扩展 AI 脚本编号;失败 -1。
|
| NpcToIdle | sceneId, selfId → 返回值;失败 -1。
|
LuaFnSetMonsterExp、LuaFnDisableMonsterDropBox、SetNPCAIType 都**固定返回 -1**,是「无意义返回值」,不能用来判断是否成功。
怪物 AI 参数
| 接口 | 参数与返回 |
|---|---|
| MonsterAI_GetIntParamByIndex / MonsterAI_SetIntParamByIndex | sceneId, selfId, nIndex[, nValue] → 整数参数。
|
| MonsterAI_GetObjIDParamByIndex / MonsterAI_SetObjIDParamByIndex | sceneId, selfId, nIndex[, nID] → 对象编号参数。
|
| MonsterAI_GetBoolParamByIndex / MonsterAI_SetBoolParamByIndex | sceneId, selfId, nIndex[, bFlag] → 布尔参数(大于零为真)。
|
这组是怪物 Lua AI 脚本内部的参数存取,Get 部分分支不返回值。
编组与队形
| 接口 | 参数与返回 |
|---|---|
| AllocateMonsterGroup | sceneId → 编组编号;失败 -1。
|
| ReleaseMonsterGroup | sceneId, groupId → 返回值;失败 -1。
|
| AddGroupMember | sceneId, groupId, monsterId, i, j → 返回值;加入 6x3 队形位置。
|
| AddGroupLeader | sceneId, groupId, monsterId → 返回值;首领固定占 [0][1]。
|
| RefixPosOfGroupMember | sceneId, groupId, leaderId → 返回值;校正全部队员位置。
|
| SetIntervalDistOfGroupMember | sceneId, groupId, interval → 返回值;设置相邻位置距离。
|
| SetMonsterGroupID | sceneId, selfId, groupId → 部分分支无返回值。
|
| GetPatrolId | sceneId, selfId → 巡逻路径编号;部分分支无返回值。
|
编组队形是 6 列 3 行(6x3),AddGroupMember 的 i、j 是队形行列位置,首领固定占 [0][1]。
阵营与对白
| 接口 | 参数与返回 |
|---|---|
| GetUnitCampID / SetUnitCampID | sceneId, selfId, unitId[, campId] → 脚本阵营或基础阵营。
|
| MonsterTalk | sceneId, monsterId, sceneName, msg → 部分分支无返回值。
|
| LuaFnNpcChat | sceneId, monsterId, isSceneBroadcast, msg → 部分分支无返回值。
|
| PaoPao / PaoPaoEx | sceneId, selfId, npcId[, paoPaoId] → 气泡对白结果;失败 -1。
|
PaoPao 触发默认气泡,PaoPaoEx 按指定气泡编号触发。
遍历并读取怪物
local count = GetMonsterCount(sceneId)
if type(count) == "number" and count ~= -1 then
local objId = GetMonsterObjID(sceneId, 0)
if type(objId) == "number" and objId ~= -1 then
-- 取得首个怪物对象 ID
end
end
先取数量再按索引取对象 ID,两者都要排除 -1。
创建怪物
local objId = LuaFnCreateMonster(sceneId, monsterType, posX, posZ, aiType, aiScript, scriptId)
if type(objId) == "number" and objId ~= -1 then
-- 怪物创建成功,objId 为新对象编号
end
LuaFnCreateMonster 需要 7 个参数,成功返回对象编号、失败 -1。删除用 LuaFnDeleteMonster(无返回值)。
相关主题
- 角色信息
- 属性读取与修改
- 等级与经验
- 货币相关
- 物品查询
- 物品发放与扣除
- 背包空间
- 装备操作
- 任务状态
- 任务变量
- NPC 对话
- 对话选项
- 技能相关
- 心法相关
- 状态效果
- 生活技能
- 珍兽查询
- 珍兽操作
- 场景查询
- 坐标与传送
- 副本相关
- 活动相关
- 时间与计时
- 怪物相关
- 队伍相关
- 帮会相关
- 消息与提示
- 聊天与公告
函数不存在或提示 nil · 参数类型与顺序 · 返回值判断 · 对象 ID 与 GUID
本页函数签名与返回约定依据当前服务端注册表整理;sceneId、selfId 由实际回调提供,业务枚举、属性类型编号与运行效果需要实测。