faction_template - 阵营模板表

阵营模板表定义了游戏中所有阵营的关系和行为模式。这个表是阵营系统的核心,控制着NPC、玩家之间的敌对、友好、中立关系,以及PVP行为和声望系统的基础。

表结构

字段名 类型 描述
entry mediumint unsigned 阵营模板ID
详细说明:阵营模板的唯一标识符,被creature_template表中的faction字段引用。
取值范围:1 - 16777215 (mediumint unsigned的范围)
常见阵营模板:
  • 35 - 友好阵营(对所有玩家友好)
  • 14 - 怪物阵营(对所有玩家敌对)
  • 7 - 联盟阵营
  • 5 - 部落阵营
  • 21 - 中立阵营
faction smallint unsigned 阵营ID
详细说明:对应Faction.dbc中的阵营ID,用于声望系统和阵营识别。
常见阵营ID:
  • 72 - 暴风城
  • 76 - 奥格瑞玛
  • 69 - 达纳苏斯
  • 81 - 雷霆崖
  • 68 - 幽暗城
  • 54 - 格诺姆雷根
factionFlags smallint unsigned 阵营标志
详细说明:控制阵营行为的位标志。
标志值:
  • 0x01 - 对玩家可见
  • 0x02 - 在战争状态
  • 0x04 - 隐藏在UI中
  • 0x08 - 不可见强制反应
  • 0x10 - 和平强制标志
  • 0x20 - 非活跃
  • 0x40 - 敌对玩家
  • 0x80 - 敌对NPC
enemyFaction1 smallint unsigned 敌对阵营1
详细说明:第一个敌对阵营ID。此阵营的成员会自动与指定阵营敌对。
enemyFaction2 smallint unsigned 敌对阵营2
详细说明:第二个敌对阵营ID。
enemyFaction3 smallint unsigned 敌对阵营3
详细说明:第三个敌对阵营ID。
enemyFaction4 smallint unsigned 敌对阵营4
详细说明:第四个敌对阵营ID。
friendFaction1 smallint unsigned 友好阵营1
详细说明:第一个友好阵营ID。此阵营的成员会自动与指定阵营友好。
friendFaction2 smallint unsigned 友好阵营2
详细说明:第二个友好阵营ID。
friendFaction3 smallint unsigned 友好阵营3
详细说明:第三个友好阵营ID。
friendFaction4 smallint unsigned 友好阵营4
详细说明:第四个友好阵营ID。

配置示例

联盟阵营配置

-- 联盟玩家阵营模板
INSERT INTO faction_template (entry, faction, factionFlags, enemyFaction1, enemyFaction2, friendFaction1, friendFaction2, friendFaction3, friendFaction4) VALUES
(1, 1, 0, 2, 5, 3, 4, 6, 115);

部落阵营配置

-- 部落玩家阵营模板
INSERT INTO faction_template (entry, faction, factionFlags, enemyFaction1, enemyFaction2, friendFaction1, friendFaction2, friendFaction3, friendFaction4) VALUES
(2, 2, 0, 1, 4, 5, 6, 115, 0);

友好NPC阵营

-- 对所有玩家友好的NPC
INSERT INTO faction_template (entry, faction, factionFlags, enemyFaction1, enemyFaction2, enemyFaction3, enemyFaction4, friendFaction1, friendFaction2, friendFaction3, friendFaction4) VALUES
(35, 35, 0, 0, 0, 0, 0, 1, 2, 3, 4);

查询示例

查看特定阵营的关系

SELECT ft.entry, ft.faction, ft.factionFlags,
       ft.enemyFaction1, ft.enemyFaction2, ft.enemyFaction3, ft.enemyFaction4,
       ft.friendFaction1, ft.friendFaction2, ft.friendFaction3, ft.friendFaction4
FROM faction_template ft
WHERE ft.entry = 35;

查找敌对特定阵营的模板

SELECT entry, faction
FROM faction_template
WHERE enemyFaction1 = 1 OR enemyFaction2 = 1 OR enemyFaction3 = 1 OR enemyFaction4 = 1;

注意事项

⚠️ 重要提醒

相关表格

faction_template表经常与以下表格配合使用: