📖 表说明
游戏事件生物表定义了事件期间出现的生物。这个表控制哪些生物在特定事件期间出现或消失。负值eventEntry表示在事件期间移除生物。
数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。
📊 表结构
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| eventEntry | tinyint | 事件ID(负值表示移除) |
| guid | int UNSIGNED | 生物GUID(主键) |
主键: guid + eventEntry(联合主键)
🔍 重要字段详解
eventEntry (事件ID,正负值控制)
事件ID关联game_event表。正值表示事件激活时生物出现(Spawn),负值表示事件激活时生物移除(Despawn)。这是控制事件期间生物显隐的关键机制。
例如:eventEntry=2表示事件2激活时该生物刷新;eventEntry=-2表示事件2激活时该生物移除。
guid (生物GUID)
生物实例的唯一GUID,对应creature表中的guid字段。这是creature_template生成的特定实例,而非模板ID。每个生物在世界中可能有多个实例,需使用正确的guid。
💡 实战案例
查询某事件期间刷新的所有生物:
SELECT gec.eventEntry, gec.guid, ct.entry, ct.name,
ge.description AS event_name
FROM game_event_creature gec
JOIN creature c ON gec.guid = c.guid
JOIN creature_template ct ON c.id = ct.entry
JOIN game_event ge ON ABS(gec.eventEntry) = ge.eventEntry
WHERE gec.eventEntry > 0
AND ge.eventEntry = 2
ORDER BY ct.name;
让节日Boss在事件期间出现(事件ID=12):
INSERT INTO game_event_creature (eventEntry, guid)
VALUES (12, 500001)
ON DUPLICATE KEY UPDATE eventEntry = 12;
❓ 常见问题
Q: 负值eventEntry的具体作用是什么?
A: 负值eventEntry表示在事件激活期间"隐藏"该生物。常见用途:节日期间替换NPC(如万圣节期间移除普通旅店老板,刷新节日NPC)。需配合正值的节日NPC一起使用。
Q: 如何查找特定生物的guid?
A: 使用SQL查询:SELECT guid, id, position_x, position_y, position_z, map FROM creature WHERE id = <生物模板ID>;。需根据坐标和地图确定正确的实例GUID。