📖 表说明
游戏事件前置条件表定义了事件的前置条件。这个表用于控制事件的依赖关系,某些事件需要其他事件完成后才能触发。
数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。
📊 表结构
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| eventEntry | tinyint UNSIGNED | 事件ID(主键) |
| prerequisite_event | tinyint UNSIGNED | 前置事件ID(主键) |
主键: eventEntry + prerequisite_event(联合主键)
🔍 重要字段详解
eventEntry (事件ID)
需要前置条件的事件ID,对应game_event表的eventEntry字段。此事件只有在prerequisite_event指定的事件完成后才会触发。
与prerequisite_event组成联合主键,意味着一个事件可以有多个前置条件(多行记录)。
prerequisite_event (前置事件ID)
必须先完成的事件ID。系统在触发eventEntry之前会检查prerequisite_event是否已经完成(即该事件的结束时间已过)。
支持事件链:事件A作为事件B的前置,事件B又作为事件C的前置,形成多级事件依赖关系。
💡 实战案例
设置事件B必须在事件A完成后才能触发:
INSERT INTO game_event_prerequisite (eventEntry, prerequisite_event)
VALUES (20, 10);
查询某事件的所有前置条件:
SELECT gp.eventEntry, gp.prerequisite_event, ge.description
FROM game_event_prerequisite gp
JOIN game_event ge ON gp.prerequisite_event = ge.eventEntry
WHERE gp.eventEntry = 20;
❓ 常见问题
Q: 多个前置条件是"与"还是"或"的关系?
是"与"的关系。如果eventEntry有多个prerequisite_event记录,则该事件需要所有前置事件都完成才会触发。
Q: 前置条件事件和自己可以相同吗?
不可以。eventEntry和prerequisite_event不能相同,否则会导致事件永远无法触发(循环依赖)。系统不会主动阻止插入这样的数据,但逻辑上无法执行。