📊 表结构

字段名 数据类型 默认值 说明
pool_id INT UNSIGNED 0 子池ID (主键)
mother_pool INT UNSIGNED 0 母池ID
chance FLOAT 0 刷新几率
description VARCHAR(255) NULL 描述

🔑 核心字段详解

🆔 pool_id - 子池ID

详细说明:子池的ID,对应pool_template.entry。 取值范围:对应pool_template.entry
  • 表的主键
  • 子池被包含在母池中
  • 子池本身也是一个完整的池
  • 可以包含生物、对象或其他池

🔗 mother_pool - 母池ID

详细说明:母池的ID,对应pool_template.entry。 取值范围:对应pool_template.entry
  • 母池包含子池
  • 母池刷新时选择子池
  • 实现池的层级结构
  • 母池可以包含多个子池

🎲 chance - 刷新几率

详细说明:子池在母池中的刷新几率。 取值范围:0 - 100
  • 0 - 不刷新
  • 100 - 必定刷新
  • 其他 - 按几率刷新
  • 母池刷新时按几率选择子池
  • 多个子池时按相对几率选择

📝 description - 描述

详细说明:池嵌套关系的描述文本。
  • 用于说明嵌套关系
  • 方便理解和维护
  • 可以为NULL
  • 建议填写有意义的描述

💡 实际案例

简单嵌套 配置池嵌套关系

pool_id=1001(子池), mother_pool=1000(母池), chance=50

INSERT INTO pool_pool VALUES( 1001, 1000, 50, '子池A在母池中' );

多子池 配置多个子池

母池1000包含子池1001、1002、1003

-- 第一个子池,50%几率 INSERT INTO pool_pool VALUES(1001, 1000, 50, '子池A'); -- 第二个子池,30%几率 INSERT INTO pool_pool VALUES(1002, 1000, 30, '子池B'); -- 第三个子池,20%几率 INSERT INTO pool_pool VALUES(1003, 1000, 20, '子池C');

层级结构 配置多层嵌套

池A包含池B,池B包含池C

-- 池B在池A中 INSERT INTO pool_pool VALUES(2000, 1000, 100, '池B在池A中'); -- 池C在池B中 INSERT INTO pool_pool VALUES(3000, 2000, 100, '池C在池B中');

查询 查询母池的子池

查询母池1000包含的所有子池

SELECT pp.pool_id, pp.mother_pool, pp.chance, pp.description, pt.description FROM pool_pool pp JOIN pool_template pt ON pp.pool_id = pt.entry WHERE pp.mother_pool = 1000 ORDER BY pp.chance DESC;

⚡ 快速参考

池嵌套结构

母池包含子池
子池被包含
多层嵌套池包含池
层级关系树形结构

刷新几率

0不刷新
100必定刷新
相对几率多个子池
随机选择按几率

用途说明

复杂刷新层级结构
分组管理池的分组
随机组合多池组合
动态刷新条件刷新

关联表

pool_template池模板
pool_creature生物池
pool_gameobject对象池
pool_quest任务池

🔗 相关表格

❓ 常见问题

Q1: 池嵌套的作用?
实现池的层级结构,母池刷新时选择子池,子池再刷新其中的生物或对象,实现复杂的刷新逻辑。
Q2: 可以多层嵌套吗?
可以,池A包含池B,池B包含池C,形成多层嵌套结构,但要注意避免循环嵌套。
Q3: chance如何计算?
母池刷新时,根据子池的chance值随机选择一个子池,chance为相对几率,总和不需要等于100。
Q4: 子池可以属于多个母池吗?
不可以,pool_id是主键,一个子池只能属于一个母池,不能同时属于多个母池。