mail_server_template_conditions - 邮件模板发送条件
基于 AzerothCore Characters 数据库 · 服务端邮件发送条件判定表
📋 表概述
mail_server_template_conditions 表定义了服务端邮件模板的发送条件。每行定义一条条件规则,只有当角色满足所有关联条件时,对应的邮件模板才会被发送。支持等级、游戏时间、任务、成就、声望、阵营、种族、职业等多种条件类型。
- 多条件组合判定
- 8种条件类型
- 按需叠加条件
- 外键级联管理
主键为 id(自增)。通过外键
fk_mail_template_conditions 关联 mail_server_template 表。一个模板可以有多个条件(全部满足时发送)。📊 表结构
| 字段名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| id | int UNSIGNED | AUTO_INCREMENT | 条件记录ID(主键,自增) |
| templateID | int UNSIGNED | NOT NULL | 关联的邮件模板ID(外键→mail_server_template.id) |
| conditionType | enum | NOT NULL | 条件类型(Level/PlayTime/Quest/Achievement/Reputation/Faction/Race/Class) |
| conditionValue | int UNSIGNED | NOT NULL | 条件值(具体数值/ID) |
| conditionState | int UNSIGNED | 0 | 条件状态值(用于声望等级等) |
🔍 重要字段详解
📋 conditionType - 条件类型详解
详细说明:支持8种条件类型,覆盖角色不同方面的属性判定。
- Level - 等级条件(conditionValue = 所需等级,≥该等级即可)
- PlayTime - 游戏时长条件(conditionValue = 所需秒数)
- Quest - 任务条件(conditionValue = 任务ID,需完成该任务)
- Achievement - 成就条件(conditionValue = 成就ID)
- Reputation - 声望条件(conditionValue = 声望阵营ID,conditionState = 所需声望等级)
- Faction - 阵营条件(conditionValue = 阵营ID)
- Race - 种族条件(conditionValue = 种族ID,1=人类 2=兽人…)
- Class - 职业条件(conditionValue = 职业ID,1=战士 2=圣骑…)
🔢 conditionValue / conditionState - 条件参数
详细说明:两个数值字段共同定义条件的具体要求。
- conditionValue - 主要条件值。对Level为等级数,对Quest为任务ID,对Race/Class为种族/职业ID
- conditionState - 辅助状态值。对Reputation为声望等级(0=仇恨 1=敌对…7=崇拜),其他类型通常为0
- 两个字段都为INT,足够存储大型ID值
💡 示例:要求等级≥60且种族为亡灵 →
conditionType='Level', conditionValue=60 + conditionType='Race', conditionValue=5🔗 多条条件 AND 逻辑
详细说明:同一模板的多个条件记录之间是 AND(且) 关系,即所有条件都必须满足才会发送邮件。
- 每条条件对应一行记录
- 可以同时设置多条不同类型或同类型的条件
- 例如:要求"80级 AND 完成成就123 AND 部落阵营"→3条条件记录
💡 SQL示例
示例1:为模板添加等级和职业条件
-- 模板ID=1:要求等级≥60且职业为法师(class=8)
INSERT INTO mail_server_template_conditions
(templateID, conditionType, conditionValue, conditionState)
VALUES
(1, 'Level', 60, 0),
(1, 'Class', 8, 0);示例2:查询某模板的所有条件
SELECT
t.subject AS template_name,
c.conditionType,
c.conditionValue,
c.conditionState
FROM mail_server_template_conditions c
JOIN mail_server_template t ON t.id = c.templateID
WHERE c.templateID = 1;示例3:添加声望条件(银色黎明尊敬以上)
-- 声望阵营ID=529(银色黎明), 声望等级5=尊敬
INSERT INTO mail_server_template_conditions
(templateID, conditionType, conditionValue, conditionState)
VALUES
(2, 'Reputation', 529, 5);❓ 常见问题
Q1: 不添加任何条件会怎样?
如果模板没有关联任何条件(此表无对应记录),则所有玩家只要不在 mail_server_character 有记录,都会收到邮件。相当于"无条件发送"。
Q2: 声望等级 0-7 分别代表什么?
0=仇恨 1=敌对 2=冷淡 3=中立 4=友善 5=尊敬 6=崇敬 7=崇拜。条件中使用"≥"判定。