📋 表概述

instance_reset 表管理每个副本地图+难度的全局重置调度。系统根据此表的时间戳来决定何时清理过期的副本实例和角色绑定。服务器定期检查此表,当到达 resettime 时执行相关副本的全局重置操作。

联合主键 (mapid, difficulty),每个副本地图+难度组合有唯一的重置调度记录。系统会自动更新 resettime 字段。

📊 表结构

字段名类型默认值说明
mapidsmallint UNSIGNED0副本地图ID(联合主键1)
difficultytinyint UNSIGNED0副本难度(联合主键2)
resettimeint UNSIGNED0Unix时间戳,下次重置时间

🔍 重要字段详解

🗺️ mapid / difficulty - 副本标识

详细说明:两个字段组成联合主键,精确定位一个副本地图在特定难度下的重置配置。
  • mapid - 副本地图ID(与 instance.map 对应)
  • difficulty - 难度级别(0~3,与 instance.difficulty 对应)
  • 同一map可能有2条记录(普通10人+英雄5人各一条)

⏰ resettime - 重置时间戳

详细说明:记录该副本下一次全局重置的时间点。系统到达该时间后会自动执行清理。
  • Unix时间戳格式,可用 FROM_UNIXTIME() 转换查看
  • 5人英雄副本通常每日重置一次
  • 团队副本通常每周重置一次(通常在周二维护时间)
  • 手动修改可实现提前/延后重置
💡 立即重置全部副本:UPDATE instance_reset SET resettime = 1;(设置已过期时间戳)

💡 SQL示例

示例1:查看所有副本重置时间

SELECT mapid, difficulty, FROM_UNIXTIME(resettime) AS next_reset, TIMEDIFF(FROM_UNIXTIME(resettime), NOW()) AS time_remaining FROM instance_reset ORDER BY resettime;

示例2:将所有5人英雄本延后24小时

UPDATE instance_reset SET resettime = resettime + 86400 WHERE difficulty = 1;

❓ 常见问题

Q1: 修改 resettime 后需要重启服务器吗?
通常不需要。服务器会定期检查此表。但如果需要立即生效,可以使用 GM 命令 .instance unbind all 或重启服务器。
Q2: 此表为空会怎样?
如果某副本没有对应的 instance_reset 记录,该副本将不会自动重置,副本实例会一直存在。服务器启动时通常会初始化这些记录。