📋 表概述

pvpstats_players 表以玩家维度记录每一场战场中每个参与者的战斗表现。包括击杀、死亡、荣誉、伤害、治疗等详细数据,以及 attr_1~5 扩展属性字段。

📊 表结构

字段名数据类型默认值说明
battleground_idbigint UNSIGNED(无)战场ID,关联 pvpstats_battlegrounds.id
character_guidint UNSIGNED(无)玩家角色GUID
winnerbit(1)(无)是否胜方:0=败, 1=胜
score_killing_blowsint UNSIGNEDNULL击杀数(最后一击)
score_deathsint UNSIGNEDNULL死亡次数
score_honorable_killsint UNSIGNEDNULL荣誉击杀次数
score_bonus_honorint UNSIGNEDNULL额外荣誉值
score_damage_doneint UNSIGNEDNULL造成的总伤害
score_healing_doneint UNSIGNEDNULL造成的总治疗
attr_1int UNSIGNED0扩展属性1(战场特定数据)
attr_2int UNSIGNED0扩展属性2
attr_3int UNSIGNED0扩展属性3
attr_4int UNSIGNED0扩展属性4
attr_5int UNSIGNED0扩展属性5

🔍 重要字段详解

score_killing_blows / score_honorable_kills — 击杀分类

score_killing_blows 是最后一击击杀数(补刀),score_honorable_kills 是荣誉击杀数(有贡献即可获得)。两者含义不同:一场战斗可能有很多荣誉击杀,但只有少量补刀。

attr_1 ~ attr_5 — 扩展属性

这五个字段是战场特定的扩展数据。根据不同的战场类型存储不同含义的数据,如夺旗次数(WSG)、资源点占领(AB)、塔/墓地控制(AV)等。

score_bonus_honor — 额外荣誉

除基础荣誉击杀外的额外荣誉奖励值。通常来源包括战场胜利奖励、周常任务奖励、节日战场加成等。

💡 SQL查询示例

查询某场战场中所有玩家的表现数据

SELECT character_guid, winner,
       score_killing_blows, score_deaths, score_honorable_kills,
       score_damage_done, score_healing_done, score_bonus_honor
FROM pvpstats_players
WHERE battleground_id = 100
ORDER BY score_damage_done DESC;

统计某个玩家的战场总数据

SELECT COUNT(*) AS 总场次,
       SUM(CASE WHEN winner = 1 THEN 1 ELSE 0 END) AS 胜场,
       SUM(score_killing_blows) AS 总击杀,
       SUM(score_deaths) AS 总死亡,
       SUM(score_damage_done) AS 总伤害
FROM pvpstats_players
WHERE character_guid = 12345;

❓ 常见问题

Q: attr_1~5 在不同战场分别代表什么?

具体含义由服务端 C++ 代码定义,没有全球统一标准。常见如 WSG 中 attr_1 = 夺旗次数,AB 中 attr_1 = 基地攻击、attr_2 = 基地防守。需要查看对应服务端源码的 BG 类实现。

Q: 为什么 score_killing_blows 可以为 NULL?

NULL 表示玩家在战场中没有造成任何最后一击。与 0 的含义相同,但利于数据库存储优化。