📖 表说明
游戏事件条件表定义了游戏事件的触发条件。这个表用于控制事件的条件触发机制。
数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。
📊 表结构
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| eventEntry | tinyint UNSIGNED | 事件ID(主键) |
| condition_id | int UNSIGNED | 条件ID(主键) |
| req_num | float | 需求数量 |
| max_world_state_field | smallint UNSIGNED | 最大世界状态字段 |
| done_world_state_field | smallint UNSIGNED | 完成世界状态字段 |
| description | varchar(25) | 条件描述 |
主键: eventEntry + condition_id(联合主键)
🔍 重要字段详解
condition_id (条件类型)
条件类型ID,与WorldState.dbc或其他条件系统关联。决定条件的检测类型(如击杀数量、收集物品、世界状态值等)。取值为 0~N,具体含义需查阅条件系统定义。
req_num (需求数量)
条件完成所需的目标数值。例如:req_num=100表示需要击杀100个目标。当世界状态字段达到此值时条件完成。
max_world_state_field & done_world_state_field
世界状态字段ID,用于追踪条件进度。max_world_state_field定义进度上限显示值,done_world_state_field标记条件完成状态。两者共同控制客户端进度条的显示。
💡 实战案例
查询某事件的所有条件配置:
SELECT gec.eventEntry, gec.condition_id, gec.req_num,
gec.max_world_state_field, gec.done_world_state_field,
gec.description
FROM game_event_condition gec
WHERE gec.eventEntry = 1
ORDER BY gec.condition_id;
为事件添加完成条件(收集100个物品):
INSERT INTO game_event_condition
(eventEntry, condition_id, req_num,
max_world_state_field, done_world_state_field, description)
VALUES (10, 1, 100, 2500, 2501, '收集100个节日物品');
❓ 常见问题
Q: 事件条件设置了但进度不显示?
A: 检查max_world_state_field和done_world_state_field是否正确设置。这两个字段需与客户端WorldState.dbc中的状态ID对应,否则客户端UI无法显示进度。
Q: 条件中req_num为0表示什么?
A: req_num=0通常表示该条件仅检测状态变化而非数量积累,条件是否满足由世界状态字段的值直接决定。