如何为重置的Heroic实例设置星期几?

时间:2019-03-23 10:56:46

标签: azerothcore

更改星期几以重新加载英雄实例的问题。
总是星期五是04:00。

我正在尝试将配置放入以下行:
Instance.ResetTimeRelativeTimestamp =
其他日期之一:
1552867201 = 18.03.2019 00:01星期一
1552953600 = 19.03.2019 00:00星期二
1553040001 = 20.03.2019 00:01星期三
1552521601 = 14.03.2019 00:00星期四
1552608001 = 15.03.2019 00:01星期五
1552694401 = 16.03.2019 00:01星期六
1552780801 = 17.03.2019 00:01星期日

然后我清除了字符DB中的3个表:
instance_reset
character_instance
实例


启动服务器时-我看到的结果相同-在星期五的4:00重新启动。

问题:如何更改星期几?一定是星期三。

1 个答案:

答案 0 :(得分:0)

我实际上已经自己弄清楚了。在深入研究AzerothCore源代码之后,似乎在第一次启动服务器时选择了非常来重置实例的星期几。据我所知,ResetTimeRelativeTimestamp并不用于确定重置时间。具体来说:

  • 服务器启动,并开始从charactersinstance_reset表中加载实例重置时间
  • 如果实例缺少instance_reset表中的条目,则使用以下公式添加条目:
    • 重置时间= today(以UTC为单位,四舍五入到最近的日期)+ RaidDuration(来自mapdifficulty_dbc,在代码中命名为resetTime)+ Instance.ResetTimeHour(来自worldserver.conf)
    • 让我们看一个例子
      • 您位于美国中部时区,当前为UTC-5。它是2020_10_18 14:56:23,将其转换为UTC,您将得到:2020_10_18 19:56:23。四舍五入到最近的日期,您会得到UTC 2020_10_18 00:00:00
      • 假设它正在设置ICC 10男子的重置时间。如果您查看mapdifficulty_dbc,则RaidDuration604800秒,即7天。
      • 假设您将Instance.ResetTimeHour设置为默认值4。这将变成4 hours
      • 将其全部插入,您将得到resettime = 'UTC 2020_10_18 00:00:00' + 7 days + 4 hours = UTC 2020_10_25 04:00:00(星期日)。换算回美国中部时间,您将得到2020_10_24 23:00:00 CST,星期六。实例将在星期六重置
  • 下次重置实例时,使用previous reset time + RaidDuration重置其下一次重置时间。

这意味着,如果要选择星期几,则需要执行以下操作之一:

  • instance_reset表中的实例重置时间修改为所需的星期几。这种方法存在风险,因为它涉及直接在数据库中操纵重置时间戳记
  • 清空实例表,然后在要重置实例的当天启动服务器。是的,这仍然涉及数据库操作,但是至少表的内容是由Azeroth Core而不是您自己生成的。

这是我要解决的问题

我之所以将其深深地埋在答案中,是因为您必须先了解自己在做什么,然后才能开始擦除数据库中的表。小心进行。

  1. 关闭世界服务器
  2. 通过SQL清空charactersinstance_reset
  3. 将系统时间设置为当前时间之前的时间转换为UTC的时间在您希望实例重置的一周中的某天
  4. >
  5. 启动worldserver。等待它加载。登录并确认实例锁定在正确的时间到期。
  6. 关闭世界服务器
  7. 将系统时间设置为正确的时间,然后重新启动服务器