📖 script_check_data 表
脚本验证数据表,用于检测和记录玩家可能的自动化/脚本行为。
📋 表概述
script_check_data 表是一个反脚本/反挂机系统表,用于追踪玩家的活动行为和验证状态。系统可能通过声音验证、活动检测等方式判断玩家是否在使用自动化脚本。记录了验证时间、停留时间、活动记录等信息。
- 主键:(guid)
- 引擎:InnoDB
- 关联表:characters(guid)
📊 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
guid | int UNSIGNED | (无) | 玩家角色 GUID |
last_check_time | int UNSIGNED | 0 | 上次验证触发时间(Unix时间戳) |
last_success_time | int UNSIGNED | 0 | 上次成功通过验证的时间 |
stay_time | int UNSIGNED | 0 | 玩家在同一位置停留的时间(秒) |
verify_start_time | int UNSIGNED | 0 | 当前验证开始的时间 |
last_check_sound_id | int UNSIGNED | 0 | 上次验证使用的声音文件ID |
activity_start_time | int UNSIGNED | 0 | 活动检测开始时间 |
activity_records | text | NULL | 活动记录(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;