📋 表概述

script_check_data 表是一个反脚本/反挂机系统表,用于追踪玩家的活动行为和验证状态。系统可能通过声音验证、活动检测等方式判断玩家是否在使用自动化脚本。记录了验证时间、停留时间、活动记录等信息。

📊 表结构

字段名数据类型默认值说明
guidint UNSIGNED(无)玩家角色 GUID
last_check_timeint UNSIGNED0上次验证触发时间(Unix时间戳)
last_success_timeint UNSIGNED0上次成功通过验证的时间
stay_timeint UNSIGNED0玩家在同一位置停留的时间(秒)
verify_start_timeint UNSIGNED0当前验证开始的时间
last_check_sound_idint UNSIGNED0上次验证使用的声音文件ID
activity_start_timeint UNSIGNED0活动检测开始时间
activity_recordstextNULL活动记录(JSON格式)

🔍 重要字段详解

stay_time / activity_records — 挂机检测

stay_time 记录玩家在同一位置停留的秒数,超过阈值可能触发防挂机验证。activity_records 以 JSON 格式存储玩家的活动轨迹,包括移动、战斗、采集等行为的详细时间和坐标,用于分析是否为脚本操作。

last_check_sound_id — 声音验证

反脚本系统可能通过播放声音让玩家输入验证码来确认是否为真人。该字段记录上次验证使用的声音 ID,确保每次验证使用不同的声音效果防止脚本识别。

💡 SQL查询示例

查询长时间未通过验证的玩家

SELECT c.name, scd.stay_time,
       FROM_UNIXTIME(scd.last_check_time) AS 上次检测,
       FROM_UNIXTIME(scd.last_success_time) AS 上次通过
FROM script_check_data scd
JOIN characters c ON scd.guid = c.guid
WHERE scd.last_check_time > scd.last_success_time;

查看停留时间超过1小时的玩家

SELECT c.name, scd.stay_time, scd.last_check_time
FROM script_check_data scd
JOIN characters c ON scd.guid = c.guid
WHERE scd.stay_time > 3600
ORDER BY scd.stay_time DESC;

❓ 常见问题

Q: 这个表是核心 AC 功能还是自定义模块?

该表是 Tywow 服务器的自定义反脚本模块,不是 AzerothCore 官方核心功能。通过 Lua 脚本或 C++ 模块实现玩家行为检测。

Q: 如何重置某个玩家的脚本检测状态?

UPDATE script_check_data SET last_check_time=0, stay_time=0, verify_start_time=0 WHERE guid=12345;