📖 表说明
游戏事件游戏对象任务表定义了事件期间游戏对象提供的任务。这个表用于控制任务在特定事件期间由特定游戏对象提供。
数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。
📊 表结构
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| eventEntry | tinyint UNSIGNED | 事件ID(主键) |
| id | int UNSIGNED | 游戏对象ID(主键) |
| quest | int UNSIGNED | 任务ID(主键) |
主键: id + quest + eventEntry(联合主键)
🔍 重要字段详解
id (游戏对象ID)
主键之一,对应gameobject_template表的entry字段。指定哪个游戏对象在此事件期间提供额外任务。常见于节日专用交互对象(如彩蛋、雪人、南瓜等)。
quest (任务ID)
主键之一,对应quest_template表的ID。事件激活时该游戏对象额外提供的任务。任务仅在事件激活期间对玩家可见和可接受。
💡 实战案例
查询某事件中游戏对象提供的所有任务:
SELECT gog.eventEntry, gog.id, gog.quest,
got.name AS object_name, qt.Title AS quest_title
FROM game_event_gameobject_quest gog
JOIN gameobject_template got ON gog.id = got.entry
JOIN quest_template qt ON gog.quest = qt.ID
WHERE gog.eventEntry = 1
ORDER BY got.name;
为节日游戏对象添加限时任务:
INSERT INTO game_event_gameobject_quest (eventEntry, id, quest)
VALUES (1, 20001, 80001)
ON DUPLICATE KEY UPDATE quest = 80001;
❓ 常见问题
Q: 游戏对象在事件期间不接受任务?
A: 检查:(1) 游戏对象本身是否可交互(type字段),(2) quest_template中任务ID是否有效,(3) game_event表中eventEntry事件是否激活,(4) 游戏对象所在的map和zone是否正确。
Q: eventEntry引用的游戏事件不存在怎么办?
A: 游戏事件eventEntry必须先在game_event主表中创建。如果引用不存在的事件ID,该记录将被忽略。使用SELECT * FROM game_event WHERE eventEntry = <ID>;确认事件是否存在。