📖 表说明

游戏事件任务条件表定义了事件与任务的条件关系。这个表用于控制任务在特定事件期间的可用性。

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

📊 表结构

字段名数据类型描述
eventEntrytinyint UNSIGNED事件ID(主键)
questint UNSIGNED任务ID(主键)
condition_idint UNSIGNED条件ID
numfloat数量

主键: eventEntry + quest(联合主键)

🔍 重要字段详解

condition_id (条件类型)

定义任务完成条件的类型。对应game_event_condition表中condition_id的定义。常见条件类型包括:

  • 击杀指定数量的怪物
  • 收集指定数量的物品
  • 达到指定的世界状态值
  • 完成特定的互动操作

condition_id与eventEntry关联,确保条件在特定事件上下文中生效。

num (需求数量)

定义条件达成所需的具体数值。类型为FLOAT,支持小数(如进度百分比)。

  • 1~100 - 击杀数量或收集物品数量
  • 0~1 - 百分比进度(0=0%, 1=100%)

默认值0表示无数量要求。

quest (任务ID)

关联的任务ID,对应quest_template表的ID字段。是表的主键,意味着每个任务在此表中最多一条记录。

通过quest和eventEntry的组合,系统确定特定事件期间任务的完成条件。

💡 实战案例

查询火焰节事件中所有任务的完成条件:
SELECT gqc.quest, qt.Title, gqc.condition_id, gqc.num
FROM game_event_quest_condition gqc
JOIN quest_template qt ON gqc.quest = qt.ID
WHERE gqc.eventEntry = 1;
为火焰节任务设置完成条件(需要收集10个物品):
INSERT INTO game_event_quest_condition (eventEntry, quest, condition_id, num)
VALUES (1, 11691, 1, 10);

❓ 常见问题

Q: 同一个任务可以在不同事件中有不同的条件吗?

不可以。quest是主键,每个任务在此表最多一条记录,即一个任务只能关联一个事件的条件。如需同一任务在多个事件中可用,需要复制任务并创建不同ID。

Q: condition_id从哪里获取?

condition_id来自game_event_condition表,该表定义了事件条件的详细参数(req_num、world_state_field等)。需要先在game_event_condition中定义条件,再在quest_condition中引用。