📊 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| entry | INT UNSIGNED | 0 | 任务ID (主键) |
| pool_entry | INT UNSIGNED | 0 | 池ID |
| description | VARCHAR(255) | NULL | 描述 |
🔑 核心字段详解
🆔 entry - 任务ID
详细说明:任务ID,对应quest_template.ID。
取值范围:对应quest_template.ID
- 表的主键
- 一个任务只能属于一个池
- 池刷新时随机选择任务
- 必须是已存在的任务
🔗 pool_entry - 池ID
详细说明:池ID,对应pool_template.entry。
取值范围:对应pool_template.entry
- 任务所属的池
- 池可以包含多个任务
- 池刷新时选择任务
- 实现任务随机刷新
📝 description - 描述
详细说明:任务池关系的描述文本。
- 用于说明任务在池中的作用
- 方便理解和维护
- 可以为NULL
- 建议填写有意义的描述
💡 实际案例
单一任务 配置任务池成员
entry=1000(任务), pool_entry=100(池)
INSERT INTO pool_quest VALUES(
1000, 100, '任务A在池中'
);多任务 配置多个任务池成员
池100包含任务1001、1002、1003
-- 第一个任务
INSERT INTO pool_quest VALUES(1001, 100, '任务A');
-- 第二个任务
INSERT INTO pool_quest VALUES(1002, 100, '任务B');
-- 第三个任务
INSERT INTO pool_quest VALUES(1003, 100, '任务C');随机任务 配置随机刷新任务
池200包含每日随机任务
-- 每日任务池
INSERT INTO pool_template VALUES(200, 1, '每日随机任务池');
-- 任务1
INSERT INTO pool_quest VALUES(2001, 200, '每日任务1');
-- 任务2
INSERT INTO pool_quest VALUES(2002, 200, '每日任务2');
-- 任务3
INSERT INTO pool_quest VALUES(2003, 200, '每日任务3');查询 查询池包含的任务
查询池100包含的所有任务
SELECT pq.entry, pq.pool_entry, pq.description, qt.Title
FROM pool_quest pq
JOIN quest_template qt ON pq.entry = qt.ID
WHERE pq.pool_entry = 100;⚡ 快速参考
任务池结构
| 池 | 包含任务 |
| 任务 | 池成员 |
| 随机选择 | 池刷新时 |
| 单一任务 | 每次一个 |
用途说明
| 每日任务 | 随机刷新 |
| 周常任务 | 周期刷新 |
| 随机任务 | 任务池 |
| 动态任务 | 条件刷新 |
刷新规则
| 池刷新 | 选择任务 |
| 随机选择 | 一个任务 |
| 任务激活 | 玩家可接 |
| 任务完成 | 池再刷新 |
关联表
| pool_template | 池模板 |
| quest_template | 任务模板 |
| pool_creature | 生物池 |
| pool_gameobject | 对象池 |
🔗 相关表格
- pool_template - 池模板表
- pool_pool - 池池嵌套表
- pool_creature - 生物池表
- pool_gameobject - 游戏对象池表
- quest_template - 任务模板表
❓ 常见问题
Q1: 任务池的作用?
将多个任务放入池中,池刷新时随机选择一个任务激活,实现任务的随机刷新逻辑,如每日随机任务。
Q2: 任务可以属于多个池吗?
不可以,entry是主键,一个任务只能属于一个池,不能同时属于多个池。
Q3: 池刷新时如何选择任务?
池刷新时,从池中的所有任务中随机选择一个任务激活,玩家可以接受该任务。
Q4: 任务池和生物池的区别?
任务池管理任务的随机刷新,生物池管理生物的随机刷新,两者工作原理相同,但管理的对象不同。