creature_summon_groups表

概述

creature_summon_groups表是AzerothCore中定义生物召唤组的表格。它用于配置哪些生物可以被特定的召唤法术或脚本召唤出来,支持随机召唤、组合召唤等复杂的召唤机制。

表格作用

表格结构

字段名 数据类型 默认值 说明
summonerId MEDIUMINT UNSIGNED 0 召唤者ID,对应creature_template.entry
详细说明:召唤者的生物模板ID,指定哪个生物可以进行召唤。这是复合主键的一部分。
取值范围:1 - 16777215
召唤者类型:
  • BOSS生物 - 在战斗中召唤小怪
  • 法师NPC - 召唤元素或魔法生物
  • 萨满NPC - 召唤图腾或精灵
  • 术士NPC - 召唤恶魔或亡灵
  • 特殊机关 - 触发后召唤守卫
summonerType TINYINT UNSIGNED 0 召唤者类型 (0=生物, 1=游戏对象)
详细说明:召唤者的类型,决定summonerId字段引用的表格。这是复合主键的一部分。
类型定义:
  • 0 - 生物召唤者:summonerId对应creature_template.entry
  • 1 - 游戏对象召唤者:summonerId对应gameobject_template.entry

应用场景:
  • 生物召唤者:BOSS战斗、NPC技能、宠物召唤
  • 游戏对象召唤者:召唤法阵、魔法门、陷阱机关
groupId TINYINT UNSIGNED 0 召唤组ID
详细说明:召唤组的ID,用于区分同一召唤者的不同召唤组合。这是复合主键的一部分。
取值范围:0 - 255
组织方式:
  • 同一召唤者可以有多个不同的召唤组
  • 每个组可以包含多个不同的召唤目标
  • 不同组可以用于不同的战斗阶段或条件
  • 组ID通常在脚本中被引用

使用示例:
  • 组0:召唤普通小怪
  • 组1:召唤精英守卫
  • 组2:召唤治疗者
  • 组3:召唤法师
entry MEDIUMINT UNSIGNED 0 被召唤生物ID,对应creature_template.entry
详细说明:被召唤生物的模板ID,指定召唤出来的具体生物类型。
取值范围:1 - 16777215
生物选择:
  • 必须是有效的creature_template.entry
  • 建议选择适合召唤的生物类型
  • 考虑生物的等级和召唤者的平衡
  • 注意生物的AI和行为设置

召唤生物特点:
  • 通常比召唤者等级低
  • 生命值相对较少
  • 可能有特殊的召唤生物标记
  • 死亡后可能不掉落物品
position_x FLOAT 0 召唤位置X坐标
详细说明:被召唤生物相对于召唤者的X坐标偏移量。
坐标系统:
  • 以召唤者位置为原点的相对坐标
  • 正值表示向东偏移,负值表示向西偏移
  • 单位为游戏码(yards)
  • 0表示与召唤者相同的X坐标
position_y FLOAT 0 召唤位置Y坐标
详细说明:被召唤生物相对于召唤者的Y坐标偏移量。
坐标系统:
  • 以召唤者位置为原点的相对坐标
  • 正值表示向北偏移,负值表示向南偏移
  • 单位为游戏码(yards)
  • 0表示与召唤者相同的Y坐标
position_z FLOAT 0 召唤位置Z坐标
详细说明:被召唤生物相对于召唤者的Z坐标偏移量。
坐标系统:
  • 以召唤者位置为原点的相对坐标
  • 正值表示向上偏移,负值表示向下偏移
  • 单位为游戏码(yards)
  • 0表示与召唤者相同的Z坐标

使用建议:
  • 通常设置为0,让系统自动调整高度
  • 特殊情况下可以设置偏移值
  • 注意地形和碰撞检测
orientation FLOAT 0 召唤朝向
详细说明:被召唤生物的朝向角度,以弧度为单位。
角度系统:
  • 取值范围:0 - 2π (0 - 6.28)
  • 0表示面向北方
  • π/2 (1.57)表示面向东方
  • π (3.14)表示面向南方
  • 3π/2 (4.71)表示面向西方

特殊值:
  • 0 - 使用召唤者的朝向
  • 其他值 - 指定具体朝向
summonType TINYINT UNSIGNED 0 召唤类型
详细说明:召唤的类型,决定被召唤生物的行为和属性。
召唤类型:
  • 0 - 临时召唤:有时间限制的召唤
  • 1 - 守护召唤:保护召唤者的召唤
  • 2 - 宠物召唤:可控制的宠物
  • 3 - 野生召唤:独立行动的召唤
  • 4 - 载具召唤:可骑乘的召唤

行为差异:
  • 不同类型影响AI行为
  • 影响与召唤者的关系
  • 影响存在时间和消失条件
summonTime INT UNSIGNED 0 召唤持续时间(毫秒)
详细说明:被召唤生物的存在时间,以毫秒为单位。时间到后生物会自动消失。
时间设置:
  • 0 - 永久存在,直到被杀死或手动移除
  • 30000 - 30秒
  • 60000 - 1分钟
  • 300000 - 5分钟
  • 600000 - 10分钟

设计考虑:
  • 战斗召唤通常较短(30秒-2分钟)
  • 辅助召唤可以较长(5-10分钟)
  • 永久召唤需要谨慎使用

使用示例

为BOSS添加召唤小怪

INSERT INTO creature_summon_groups 
(summonerId, summonerType, groupId, entry, position_x, position_y, position_z, orientation, summonType, summonTime)
VALUES (12345, 0, 1, 12346, 5.0, 0.0, 0.0, 0.0, 1, 60000);

创建随机召唤组

INSERT INTO creature_summon_groups 
(summonerId, summonerType, groupId, entry, position_x, position_y, position_z, orientation, summonType, summonTime)
VALUES 
(12345, 0, 2, 12347, 3.0, 3.0, 0.0, 1.57, 0, 30000),
(12345, 0, 2, 12348, -3.0, 3.0, 0.0, 4.71, 0, 30000),
(12345, 0, 2, 12349, 0.0, -5.0, 0.0, 3.14, 0, 30000);

脚本调用

在AI脚本中使用

-- 在creature_template的AIName中使用SmartAI
-- 在smart_scripts表中添加召唤事件
INSERT INTO smart_scripts 
(entryorguid, source_type, id, link, event_type, event_phase_mask, event_chance, event_flags, event_param1, event_param2, event_param3, event_param4, action_type, action_param1, action_param2, action_param3, action_param4, action_param5, action_param6, target_type, target_param1, target_param2, target_param3, target_x, target_y, target_z, target_o, comment)
VALUES (12345, 0, 1, 0, 4, 0, 100, 0, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Boss - On Aggro - Call Summon Group 1');

常见问题

召唤的生物不出现怎么办?

如何控制召唤数量?

召唤数量由脚本控制,同一组中的所有记录都会被召唤。可以通过不同的groupId来控制不同的召唤组合。

召唤位置如何计算?

召唤位置是相对于召唤者的偏移量。最终位置 = 召唤者位置 + 偏移量。

相关表格