📖 battleground_deserters 表
战场逃兵记录表,用于追踪在战场中提前退出的玩家并施加逃兵惩罚。
📋 表概述
battleground_deserters 表记录了在战场中中途退出(逃跑)的玩家。当玩家被标记为逃兵后,在惩罚时间(通常15分钟)内将无法再次排队进入同类型战场。该表用于实现反逃兵机制。
- 主键:无显式
- 引擎:InnoDB
- 关联表:characters(通过 guid)
📊 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
guid | int UNSIGNED | (无) | 角色GUID,关联 characters.guid |
type | tinyint UNSIGNED | (无) | 逃兵类型标识(战场类型相关) |
datetime | datetime | (无) | 逃兵标记时间 |
🔍 重要字段详解
type — 逃兵类型
记录触发逃兵标记的战场类型。类型值对应不同的战场地图,用于区分不同战场的逃兵惩罚。玩家退出 WSG 战场只会受到 WSG 的逃兵惩罚,不影响其他战场的排队。
datetime — 标记时间
逃兵被标记的时刻。服务器根据此时间和当前时间的差值来判断逃兵惩罚是否已过期(默认 15 分钟)。过期后记录会被自动清除。
💡 SQL查询示例
查看所有正在被惩罚的逃兵
SELECT c.name, bd.type, bd.datetime,
TIMESTAMPDIFF(SECOND, bd.datetime, NOW()) AS 已惩罚秒数
FROM battleground_deserters bd
JOIN characters c ON bd.guid = c.guid
WHERE TIMESTAMPDIFF(SECOND, bd.datetime, NOW()) < 900;
清除某玩家的逃兵状态
DELETE FROM battleground_deserters WHERE guid = 12345;
❓ 常见问题
Q: 逃兵惩罚持续多久?
默认 15 分钟(900 秒)。可在服务端配置中调整。过期记录会被系统自动删除。
Q: 如何手动清除所有已过期的逃兵记录?
使用 DELETE FROM battleground_deserters WHERE datetime < DATE_SUB(NOW(), INTERVAL 15 MINUTE);