📖 表说明
游戏事件游戏对象表定义了事件期间出现的游戏对象。这个表控制哪些游戏对象在特定事件期间出现或消失。负值eventEntry表示在事件期间移除游戏对象。
数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。
📊 表结构
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| eventEntry | tinyint | 事件ID(负值表示移除) |
| guid | int UNSIGNED | 游戏对象GUID(主键) |
主键: guid + eventEntry(联合主键)
🔍 重要字段详解
eventEntry (事件ID,正负值控制)
事件ID关联game_event表。正值表示事件激活时游戏对象出现(Spawn),负值表示事件激活时游戏对象移除(Despawn)。此机制用于控制节日装饰物、活动道具等的显隐。
guid (游戏对象GUID)
游戏对象实例的唯一GUID,对应gameobject表中的guid字段。这是gameobject_template生成的世界实例,需通过坐标和地图确认正确的guid,而非模板entry。
💡 实战案例
查询某事件中刷新的所有游戏对象:
SELECT geg.eventEntry, geg.guid, got.name,
go.position_x, go.position_y, go.position_z, go.map
FROM game_event_gameobject geg
JOIN gameobject go ON geg.guid = go.guid
JOIN gameobject_template got ON go.id = got.entry
WHERE geg.eventEntry > 0 AND geg.eventEntry = 2
ORDER BY got.name;
让节日装饰物在事件期间出现:
INSERT INTO game_event_gameobject (eventEntry, guid)
VALUES (1, 300001)
ON DUPLICATE KEY UPDATE eventEntry = 1;
❓ 常见问题
Q: 事件激活后游戏对象未刷新?
A: 检查:(1) guid是否正确对应gameobject表中的实际记录,(2) eventEntry正负值是否正确,(3) game_event表中对应事件是否处于激活状态,(4) 确认游戏对象本体的spawnMask和phaseMask设置。
Q: 如何使用负值eventEntry?
A: 负值eventEntry用于在事件期间移除游戏对象。例如:节日期间替换装饰物,需要在game_event_gameobject中分别添加负值记录(移除旧对象)和正值记录(刷新新对象)。