表概述

pool_quest_save 表记录任务池(pool_quest)当前激活任务。任务池是一种随机任务机制:从一组任务中随机挑选一个激活。

核心概念:任务池池允许从多个候选任务中随机选取一个激活。此表保存当前已激活的任务,确保全服一致(所有玩家看到相同的激活任务)。

表结构

字段名数据类型默认值说明
pool_idINT UNSIGNED0任务池ID,关联 → pool_quest.entry
quest_idINT UNSIGNED0当前激活的任务ID → quest_template.ID

重要字段详解

pool_id - 任务池ID

详细说明:对应 world 库 pool_quest 表中的任务池定义。
  • 每个任务池包含多个候选任务
  • 池中只有一个任务在同一时间激活
  • 用于钓鱼日常、烹饪日常等随机日常任务系统

quest_id - 激活的任务

详细说明:当前任务池中激活的任务ID。
  • 全服统一,确保所有玩家看到的任务相同
  • 与 pool_quest 联合主键,每个池最多一条记录
  • 重置时可清空记录,让系统重新随机选择
SQL示例:查看当前激活的任务 → SELECT * FROM pool_quest_save;

SQL查询示例

-- 查看所有任务池的当前激活状态 SELECT pqs.pool_id, pqs.quest_id, qt.Title AS quest_name FROM pool_quest_save pqs LEFT JOIN world.quest_template qt ON pqs.quest_id = qt.ID;
-- 重置所有任务池(将重新随机选择任务) DELETE FROM pool_quest_save;

常见问题

Q: 为什么要保存任务池的激活状态?

确保全服玩家看到相同的每日随机任务。如果不保存,服务器重启后可能随机到不同的任务,造成不一致。

Q: 任务池何时重新随机选择?

在服务器启动时或每日重置脚本执行时,如果此表为空或记录过期,系统会从任务池中随机选择新任务并写入此表。