📋 表概述

mail_server_template_conditions 表定义了服务端邮件模板的发送条件。每行定义一条条件规则,只有当角色满足所有关联条件时,对应的邮件模板才会被发送。支持等级、游戏时间、任务、成就、声望、阵营、种族、职业等多种条件类型。

主键为 id(自增)。通过外键 fk_mail_template_conditions 关联 mail_server_template 表。一个模板可以有多个条件(全部满足时发送)。

📊 表结构

字段名类型默认值说明
idint UNSIGNEDAUTO_INCREMENT条件记录ID(主键,自增)
templateIDint UNSIGNEDNOT NULL关联的邮件模板ID(外键→mail_server_template.id)
conditionTypeenumNOT NULL条件类型(Level/PlayTime/Quest/Achievement/Reputation/Faction/Race/Class)
conditionValueint UNSIGNEDNOT NULL条件值(具体数值/ID)
conditionStateint UNSIGNED0条件状态值(用于声望等级等)

🔍 重要字段详解

📋 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=崇拜。条件中使用"≥"判定。