📋 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| summonerId | MEDIUMINT UNSIGNED | 0 | 召唤者ID |
| summonerType | TINYINT UNSIGNED | 0 | 召唤者类型(0=生物, 1=游戏对象) |
| groupId | TINYINT UNSIGNED | 0 | 召唤组ID |
| entry | MEDIUMINT UNSIGNED | 0 | 被召唤生物ID |
| position_x | FLOAT | 0 | 召唤位置X坐标偏移 |
| position_y | FLOAT | 0 | 召唤位置Y坐标偏移 |
| position_z | FLOAT | 0 | 召唤位置Z坐标偏移 |
| orientation | FLOAT | 0 | 召唤朝向(弧度) |
| summonType | TINYINT UNSIGNED | 0 | 召唤类型 |
| summonTime | INT UNSIGNED | 0 | 召唤持续时间(毫秒) |
🔍 核心字段详解
summonerId - 召唤者ID
字段说明:召唤者的生物或游戏对象模板ID
取值范围:1 - 16777215
关联关系:根据summonerType对应creature_template或gameobject_template
取值范围:1 - 16777215
关联关系:根据summonerType对应creature_template或gameobject_template
summonerType - 召唤者类型
字段说明:决定summonerId引用的表格类型
取值范围:0 - 1
取值范围:0 - 1
| 值 | 类型 | 说明 |
|---|---|---|
| 0 | 生物召唤者 | summonerId对应creature_template.entry |
| 1 | 游戏对象召唤者 | summonerId对应gameobject_template.entry |
groupId - 召唤组ID
字段说明:区分同一召唤者的不同召唤组合
取值范围:0 - 255
使用建议:不同组用于不同战斗阶段或条件
取值范围:0 - 255
使用建议:不同组用于不同战斗阶段或条件
entry - 被召唤生物ID
字段说明:召唤出来的具体生物类型
取值范围:1 - 16777215
关联关系:必须对应creature_template表中存在的entry
取值范围:1 - 16777215
关联关系:必须对应creature_template表中存在的entry
position_x/y/z - 召唤位置偏移
字段说明:相对于召唤者的坐标偏移量
单位:游戏码(yards)
坐标系:以召唤者位置为原点
单位:游戏码(yards)
坐标系:以召唤者位置为原点
orientation - 召唤朝向
字段说明:被召唤生物的朝向角度
单位:弧度(0 - 6.28)
特殊值:0表示使用召唤者的朝向
单位:弧度(0 - 6.28)
特殊值:0表示使用召唤者的朝向
| 弧度 | 方向 |
|---|---|
| 0 | 北方 |
| 1.57 | 东方 |
| 3.14 | 南方 |
| 4.71 | 西方 |
summonType - 召唤类型
字段说明:决定被召唤生物的行为和属性
取值范围:0 - 8
取值范围:0 - 8
| 值 | 类型 | 说明 |
|---|---|---|
| 0 | 临时召唤 | 有时间限制的召唤 |
| 1 | 守护召唤 | 保护召唤者的召唤 |
| 2 | 宠物召唤 | 可控制的宠物 |
| 3 | 野生召唤 | 独立行动的召唤 |
| 4 | 载具召唤 | 可骑乘的召唤 |
summonTime - 召唤持续时间
字段说明:被召唤生物的存在时间
单位:毫秒
特殊值:0表示永久存在
单位:毫秒
特殊值:0表示永久存在
| 时间 | 说明 |
|---|---|
| 0 | 永久存在 |
| 30000 | 30秒 |
| 60000 | 1分钟 |
| 300000 | 5分钟 |
💡 实际案例
BOSS BOSS召唤小怪
BOSS 12345在战斗中召唤小怪 12346
INSERT INTO creature_summon_groups VALUES(
12345, 0, 1, 12346, 5.0, 0.0, 0.0, 0.0, 1, 60000);组队 创建四人护卫队形
召唤者周围召唤4个护卫,形成护卫队形
-- 左侧护卫(angle=4.71)
INSERT INTO creature_summon_groups VALUES(10001, 0, 1, 10002, 3, 4.71, 0, 0, 3, 0);
-- 右侧护卫(angle=1.57)
INSERT INTO creature_summon_groups VALUES(10001, 0, 1, 10003, 3, 1.57, 0, 0, 3, 0);
-- 后方护卫(angle=3.14)
INSERT INTO creature_summon_groups VALUES(10001, 0, 1, 10004, 5, 3.14, 0, 0, 3, 0);
-- 前方护卫(angle=0)
INSERT INTO creature_summon_groups VALUES(10001, 0, 1, 10005, 5, 0, 0, 0, 3, 0);多组 不同阶段召唤不同组合
BOSS在不同战斗阶段召唤不同的小怪组合
-- 组1: 第一阶段召唤2个普通小怪
INSERT INTO creature_summon_groups VALUES
(12345, 0, 1, 12346, 5, 0, 0, 0, 3, 60000),
(12345, 0, 1, 12346, -5, 0, 0, 0, 3, 60000);
-- 组2: 第二阶段召唤1个精英守卫
INSERT INTO creature_summon_groups VALUES(12345, 0, 2, 12347, 0, -10, 0, 0, 1, 120000);对象 游戏对象触发召唤
魔法阵(游戏对象)触发时召唤守护者
-- summonerType=1表示游戏对象召唤者
INSERT INTO creature_summon_groups VALUES(
50001, 1, 1, 12348, 0, 0, 0, 0, 3, 300000);⚙️ 脚本调用
SmartAI调用召唤组
-- 在smart_scripts表中添加召唤事件
-- action_type=32表示调用召唤组
INSERT INTO smart_scripts 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');关键参数说明
- event_type=4 - 进入战斗时触发
- action_type=32 - 调用召唤组动作
- action_param1=1 - 调用groupId=1的召唤组
- target_type=1 - 目标为召唤者自己
❓ 常见问题
召唤的生物不出现怎么办?
检查以下配置:
- entry是否对应有效的creature_template
- 召唤位置是否有障碍物
- 确认脚本正确调用了召唤组
- 检查summonTime是否设置合理
如何控制召唤数量?
召唤数量由脚本控制,同一组中的所有记录都会被召唤。可以通过不同的groupId来控制不同的召唤组合。
召唤位置如何计算?
召唤位置是相对于召唤者的偏移量。最终位置 = 召唤者位置 + 偏移量。
⚡ 快速参考
召唤者类型
| 0 | 生物 |
| 1 | 游戏对象 |
召唤类型
| 0 | 临时 |
| 1 | 守护 |
| 3 | 野生 |
朝向角度
| 0 | 北 |
| 1.57 | 东 |
| 3.14 | 南 |
| 4.71 | 西 |
🔗 相关表格
- creature_template - 生物模板
- smart_scripts - 智能脚本系统
- gameobject_template - 游戏对象模板