📖 pvpstats_players 表
战场玩家统计表,记录每个玩家在每场战场中的详细战斗表现数据。
📋 表概述
pvpstats_players 表以玩家维度记录每一场战场中每个参与者的战斗表现。包括击杀、死亡、荣誉、伤害、治疗等详细数据,以及 attr_1~5 扩展属性字段。
- 主键:(battleground_id, character_guid)
- 引擎:InnoDB
- 关联表:pvpstats_battlegrounds(通过 battleground_id)
📊 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
battleground_id | bigint UNSIGNED | (无) | 战场ID,关联 pvpstats_battlegrounds.id |
character_guid | int UNSIGNED | (无) | 玩家角色GUID |
winner | bit(1) | (无) | 是否胜方:0=败, 1=胜 |
score_killing_blows | int UNSIGNED | NULL | 击杀数(最后一击) |
score_deaths | int UNSIGNED | NULL | 死亡次数 |
score_honorable_kills | int UNSIGNED | NULL | 荣誉击杀次数 |
score_bonus_honor | int UNSIGNED | NULL | 额外荣誉值 |
score_damage_done | int UNSIGNED | NULL | 造成的总伤害 |
score_healing_done | int UNSIGNED | NULL | 造成的总治疗 |
attr_1 | int UNSIGNED | 0 | 扩展属性1(战场特定数据) |
attr_2 | int UNSIGNED | 0 | 扩展属性2 |
attr_3 | int UNSIGNED | 0 | 扩展属性3 |
attr_4 | int UNSIGNED | 0 | 扩展属性4 |
attr_5 | int UNSIGNED | 0 | 扩展属性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 的含义相同,但利于数据库存储优化。