表概述

battleground_template表是战场系统的核心配置表。每个战场(如战歌峡谷、阿拉希盆地、奥特兰克山谷等)都有一条对应的模板记录,定义了每队人数上下限等级范围联盟/部落出生点匹配权重

主键为 ID(对应BattlemasterList.dbc中的战场ID),通过Weight字段控制多个可用战场时的随机选择概率。

表结构

字段名数据类型默认值说明
IDINT UNSIGNED0战场模板ID,对应BattlemasterList.dbc
MinPlayersPerTeamSMALLINT UNSIGNED0每队最少玩家数
MaxPlayersPerTeamSMALLINT UNSIGNED0每队最多玩家数
MinLvlTINYINT UNSIGNED0进入最低等级
MaxLvlTINYINT UNSIGNED0进入最高等级
AllianceStartLocINT UNSIGNEDNULL联盟出生点(对应WorldSafeLocs.dbc)
AllianceStartOFLOATNOT NULL联盟出生朝向角度
HordeStartLocINT UNSIGNEDNULL部落出生点(对应WorldSafeLocs.dbc)
HordeStartOFLOATNOT NULL部落出生朝向角度
StartMaxDistFLOAT0出生点最大散布距离
WeightTINYINT UNSIGNED1匹配权重,值越大被选中概率越高
ScriptNameCHAR(64)''战场C++脚本名称
CommentCHAR(38)NOT NULL战场名称注释

重要字段详解

ID (战场模板ID)

对应BattlemasterList.dbc中的战场类型ID。常见战场ID:

  • 1 - 奥特兰克山谷 (Alterac Valley) - 40v40
  • 2 - 战歌峡谷 (Warsong Gulch) - 10v10
  • 3 - 阿拉希盆地 (Arathi Basin) - 15v15
  • 7 - 风暴之眼 (Eye of the Storm) - 15v15
  • 9 - 远古海滩 (Strand of the Ancients) - 15v15
  • 30 - 征服之岛 (Isle of Conquest) - 40v40
Weight (匹配权重)

当多个战场同时可用时,Weight值决定该战场被随机选中的概率。权重越高的战场越容易被匹配到。

通常设置为 1(默认),如果希望某战场更频繁出现可以增大此值(如设为18)。

AllianceStartLoc / HordeStartLoc (出生位置)

分别定义联盟和部落玩家的出生位置ID,对应WorldSafeLocs.dbc中的数据。

AllianceStartO和HordeStartO定义玩家出生后的初始朝向(弧度制)。

实战案例

查询所有可用战场的配置:
SELECT ID, Comment, MinPlayersPerTeam, MaxPlayersPerTeam, MinLvl, MaxLvl, Weight
FROM battleground_template
ORDER BY ID;
修改战歌峡谷的最小人数为5v5:
UPDATE battleground_template
SET MinPlayersPerTeam = 5, MaxPlayersPerTeam = 10, Weight = 10
WHERE ID = 2;
添加自定义战场模板:
INSERT INTO battleground_template (ID, MinPlayersPerTeam, MaxPlayersPerTeam, MinLvl, MaxLvl, AllianceStartLoc, AllianceStartO, HordeStartLoc, HordeStartO, StartMaxDist, Weight, ScriptName, Comment)
VALUES (32, 5, 10, 10, 80, 0, 0, 0, 0, 0, 1, '', '自定义战场');

常见问题

Q: 如何关闭某个战场?

将对应战场的Weight设为0即可禁用该战场的匹配:

UPDATE battleground_template SET Weight = 0 WHERE ID = [战场ID];

Q: 如何设置战场的等级分段?

需要为每个等级段创建独立的battleground_template记录,使用不同的ID并设置对应的MinLvl和MaxLvl。通常通过DBC文件扩展实现。