📖 表说明

游戏事件前置条件表定义了事件的前置条件。这个表用于控制事件的依赖关系,某些事件需要其他事件完成后才能触发。

数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。

📊 表结构

字段名数据类型描述
eventEntrytinyint UNSIGNED事件ID(主键)
prerequisite_eventtinyint 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不能相同,否则会导致事件永远无法触发(循环依赖)。系统不会主动阻止插入这样的数据,但逻辑上无法执行。