📋 表概述

log_encounter 表记录副本中首领战斗的完成情况,包括击杀记录和团灭记录。每次首领战斗结束(击杀或团灭)都会生成一条记录,包含参与玩家列表、副本信息、困难度和战斗类型等。

该表无主键(日志型设计)。playersInfo 为TEXT类型,存储参与玩家的序列化信息。creditType/creditEntry 记录战斗的触发方式。

📊 表结构

字段名类型默认值说明
timedatetimeNOT NULL战斗发生时间
mapsmallint UNSIGNEDNOT NULL副本地图ID
difficultytinyint UNSIGNEDNOT NULL副本难度
creditTypetinyint UNSIGNEDNOT NULL计数类型(0=击杀,1=团灭)
creditEntryint UNSIGNEDNOT NULL首领/怪物entry ID
playersInfotextNOT NULL参与玩家信息(序列化数据)

🔍 重要字段详解

⚔️ creditType - 战斗结果

详细说明:标识此次战斗的结果是击杀还是团灭。
  • 0 = 首领被击杀(进度推进)
  • 1 = 团灭(全队死亡/战斗失败)
  • 击杀记录用于副本进度锁定
  • 团灭记录用于难度分析和数据统计

🐉 creditEntry - 首领ID

详细说明:被击杀/导致团灭的首领entry ID。
  • 对应 creature_template.entry 中的首领ID
  • 例如:巫妖王=36597,尤格萨隆=33288
  • 配合 map 字段精确定位是哪场战斗

👥 playersInfo - 参与玩家

详细说明:TEXT类型,存储战斗中所有参与玩家的序列化数据。
  • 包含玩家GUID、名称、职业等信息
  • 序列化格式,通常为JSON或自定义分隔格式
  • 用于战斗记录回查和玩家参与追踪

💡 SQL示例

示例1:查询最近的首领击杀记录

SELECT time, map, difficulty, creditType, creditEntry, LEFT(playersInfo, 100) AS players_preview FROM log_encounter WHERE creditType = 0 ORDER BY time DESC LIMIT 20;

示例2:统计各首领的击杀和团灭次数

SELECT map, creditEntry, SUM(CASE WHEN creditType = 0 THEN 1 ELSE 0 END) AS kills, SUM(CASE WHEN creditType = 1 THEN 1 ELSE 0 END) AS wipes FROM log_encounter GROUP BY map, creditEntry ORDER BY map, kills DESC;

❓ 常见问题

Q1: 日志数据会一直保留吗?
是的,此表为日志型存储,建议定期清理或归档历史数据。数据量大的副本服务器可能需要更频繁地清理。
Q2: playersInfo 格式是什么?
由服务器代码序列化生成,通常是分隔符连接的玩家数据串,具体格式取决于AzerothCore版本的实现。