📋 表概述

mail_server_template_items 表配置了服务端邮件模板附带的物品奖励。每行定义一件物品及其数量,并可按阵营分别配置不同物品。与 mail_server_template 表关联,实现邮件附带装备、消耗品等奖励物品。

主键为 id(自增)。通过外键 fk_mail_template 关联 mail_server_template 表。faction 字段支持联盟/部落不同的物品配置。

📊 表结构

字段名类型默认值说明
idint UNSIGNEDAUTO_INCREMENT记录唯一ID(主键,自增)
templateIDint UNSIGNEDNOT NULL关联的邮件模板ID(外键→mail_server_template.id)
factionenumNOT NULL阵营限制(Alliance/Horde)
itemint UNSIGNEDNOT NULL物品ID(对应item_template.entry)
itemCountint UNSIGNEDNOT NULL物品数量

🔍 重要字段详解

🚩 faction - 阵营区分

详细说明:ENUM枚举类型,决定物品奖励的阵营适用范围。
  • Alliance - 仅联盟玩家获得此物品
  • Horde - 仅部落玩家获得此物品
  • 常用设计:联盟和部落各给一件阵营专属坐骑或装备
  • 如果两阵营物品相同,需要插入两条记录(分别标记Alliance和Horde)
💡 典型用法:联盟获得战马缰绳(item=2411)、部落获得亡灵战马缰绳(item=13331),各6只。

📦 item / itemCount - 物品与数量

详细说明:定义附带的物品ID和数量。
  • item - 物品模板ID,对应 world 库的 item_template.entry
  • itemCount - 物品数量(堆叠数量),如 itemCount=6 表示6个
  • 一个模板可以有多个物品(多条记录),全部附带在同一封邮件中
  • item 超出堆叠上限时自动分多组

🔗 与模板关联

详细说明:通过 templateID 外键与 mail_server_template.id 关联。
  • 级联删除(CASCADE):删除模板时自动删除关联的物品记录
  • 一个模板可以有0条或多条物品记录
  • 物品 + 金币 (moneyA/moneyH) 可同时在同一封邮件中发送

💡 SQL示例

示例1:为模板配置联盟/部落不同物品

-- 模板ID=1:联盟6个背包(item=4500),部落6个背包(item=3914) INSERT INTO mail_server_template_items (templateID, faction, item, itemCount) VALUES (1, 'Alliance', 4500, 6), (1, 'Horde', 3914, 6);

示例2:查询某模板所有附属物品

SELECT t.subject AS template_name, i.faction, i.item, i.itemCount FROM mail_server_template_items i JOIN mail_server_template t ON t.id = i.templateID WHERE i.templateID = 1 ORDER BY i.faction, i.id;

示例3:批量修改某模板物品数量

-- 将模板ID=1的所有物品数量加倍 UPDATE mail_server_template_items SET itemCount = itemCount * 2 WHERE templateID = 1;

❓ 常见问题

Q1: 如果物品ID不存在会怎样?
服务端会尝试创建物品但失败,可能导致邮件发送异常。务必确保 item 字段的值是在 world 库 item_template 中存在的有效物品ID。
Q2: 一个模板最多可以配置多少件物品?
理论上无上限(受INT主键范围限制)。但每封邮件有物品槽位限制(最多12个附件槽),超出部分会被忽略。