quest_tracker 任务追踪表
基于 AzerothCore 官方数据库 · Characters 库 · 记录任务接取/完成/放弃的完整时间线
表概述
quest_tracker 表提供任务生命周期追踪功能,记录每个任务从接取到完成(或放弃)的完整时间线。
核心概念:与 character_queststatus 不同,此表不存储任务进度,而是存储任务的时间线信息:何时接取、何时完成、何时放弃,以及是否由GM完成。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| id | INT UNSIGNED | NULL | 任务ID,关联 → quest_template.ID |
| character_guid | INT UNSIGNED | 0 | 角色GUID,关联 → characters.guid |
| quest_accept_time | DATETIME | NOT NULL | 任务接取时间 |
| quest_complete_time | DATETIME | NULL | 任务完成时间(NULL=未完成或已放弃) |
| quest_abandon_time | DATETIME | NULL | 任务放弃时间(NULL=未放弃) |
| completed_by_gm | TINYINT | 0 | 是否由GM完成(0=否 1=是) |
| core_hash | VARCHAR(120) | '0' | 核心哈希值(版本追踪) |
| core_revision | VARCHAR(120) | '0' | 核心修订版本号 |
重要字段详解
时间线字段
详细说明:三个时间字段追踪任务的完整生命周期。
- quest_accept_time:任务接取时间(必填)
- quest_complete_time:任务完成交任务时间。NULL表示未完成
- quest_abandon_time:任务放弃时间。NULL表示未放弃或被完成
- 完成和放弃互斥:一个任务不能同时有完成和放弃时间
completed_by_gm - GM完成标记
详细说明:标记任务是否通过GM命令(.quest complete)完成。
- 0 = 玩家正常完成
- 1 = GM使用命令完成
- 用于审计和防止GM滥用
SQL示例:查看角色任务历史 →
SELECT * FROM quest_tracker WHERE character_guid=1 ORDER BY quest_accept_time DESC;SQL查询示例
-- 查看角色今天接取的任务
SELECT id, quest_accept_time
FROM quest_tracker
WHERE character_guid = 1
AND DATE(quest_accept_time) = CURDATE();-- 统计GM完成任务的记录数
SELECT COUNT(*) AS gm_completed
FROM quest_tracker
WHERE completed_by_gm = 1;-- 查看玩家平均完成一个任务所需时间(秒)
SELECT character_guid,
AVG(UNIX_TIMESTAMP(quest_complete_time) - UNIX_TIMESTAMP(quest_accept_time))
AS avg_seconds
FROM quest_tracker
WHERE quest_complete_time IS NOT NULL
GROUP BY character_guid;常见问题
Q: quest_tracker 和 character_queststatus 有什么区别?
quest_tracker 存储任务时间线(接取/完成/放弃时间),character_queststatus 存储任务进行中的进度数据(杀怪数/物品数等)。两者互补。
Q: 此表数据量大了会影响性能吗?
建议定期清理旧数据。可通过定时任务清理已完成的旧记录或使用分区表优化查询性能。