📋 表概述

battleground_deserters 表记录了在战场中中途退出(逃跑)的玩家。当玩家被标记为逃兵后,在惩罚时间(通常15分钟)内将无法再次排队进入同类型战场。该表用于实现反逃兵机制。

📊 表结构

字段名数据类型默认值说明
guidint UNSIGNED(无)角色GUID,关联 characters.guid
typetinyint UNSIGNED(无)逃兵类型标识(战场类型相关)
datetimedatetime(无)逃兵标记时间

🔍 重要字段详解

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);