表概述

pool_template表是pool系统的核心配置表。通过entry定义pool分组,通过max_limit控制每组最多同时激活的对象数量。pool系统用于实现稀有生物随机刷新矿点/草药点随机分布任务随机分配等功能。

主键为 entry,被pool_creature、pool_gameobject、pool_quest、pool_pool等子表引用。

表结构

字段名数据类型默认值说明
entryINT UNSIGNED0Pool模板ID(主键)
max_limitINT UNSIGNED0Pool中同时激活的最大对象数
descriptionVARCHAR(255)NULLPool描述注释

重要字段详解

entry (Pool模板ID)

主键,被pool_creature等子表引用。同一pool中的所有对象共享max_limit限制。

例如:entry=1000的pool中包含5个稀有生物位置,max_limit=1表示同时只刷新其中1个。

max_limit (最大激活数)

定义pool中同时处于激活状态的最大对象数量:

  • 0 - 无限制,所有对象可同时激活
  • 1 - 最多1个激活(用于稀有NPC随机刷新)
  • 其他值 - 自定义限制数量

实战案例

查询所有稀有生物刷新池:
SELECT pt.entry, pt.max_limit, pt.description,
       COUNT(pc.guid) AS creature_count
FROM pool_template pt
JOIN pool_creature pc ON pt.entry = pc.pool_entry
WHERE pt.max_limit = 1
GROUP BY pt.entry
ORDER BY pt.entry;
创建稀有矿石刷新池(3个矿点只刷1个):
INSERT INTO pool_template (entry, max_limit, description)
VALUES (9999, 1, '稀有矿石刷新池 - 3选1');
查询所有pool配置及其子表分布:
SELECT pt.entry, pt.max_limit, pt.description,
       COUNT(DISTINCT pc.guid) AS creatures,
       COUNT(DISTINCT pgo.guid) AS gameobjects
FROM pool_template pt
LEFT JOIN pool_creature pc ON pt.entry = pc.pool_entry
LEFT JOIN pool_gameobject pgo ON pt.entry = pgo.pool_entry
GROUP BY pt.entry
ORDER BY pt.entry;

常见问题

Q: 稀有生物不刷新,如何排查?

检查pool_template.entry对应的max_limit值和pool_creature中的配置,确认chance值设置正确。

Q: max_limit设置为0是什么意思?

max_limit = 0表示无数量限制,pool中所有对象都可以同时处于激活状态。