gpt4 book ai didi

azerothcore - 如何为重置英雄实例设置星期几?

转载 作者:行者123 更新时间:2023-12-05 07:24:36 28 4
gpt4 key购买 nike

更改星期几以重新加载英雄实例的问题。
始终是星期五的 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 星期日

然后我清除了字符数据库中的 3 个表:
实例重置
角色实例
实例


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

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

最佳答案

实际上,我自己刚刚弄清楚了这一点。在对 AzerothCore 源代码进行了大量挖掘之后,似乎在服务器首次启动时选择了一周中的哪一天重置实例。非常。据我所知,ResetTimeRelativeTimestamp 不用于确定重置时间。更具体地说:

  • 服务器启动并开始从characters.instance_reset 表中加载实例重置时间
  • 如果实例在 instance_reset 表中缺少一个条目,则使用以下公式添加一个条目:
    • 重置时间 = 今天(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 小时
      • 全部插入,您将得到 resettime = 'UTC 2020_10_18 00:00:00' + 7 天 + 4 小时 = UTC 2020_10_25 04:00:00,一个星期日。转换回美国中部时间,您将得到:2020_10_24 23:00:00 CST,星期六。实例将在星期六重置
  • 实例下次重置时,其下一次重置时间使用上一次重置时间 + RaidDuration 重置。

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

  • instance_reset 表中的实例重置时间修改为您想要的星期几。这种方法存在风险,因为它涉及直接在数据库中操作重置时间戳
  • 清空实例表,然后在您希望实例重置的那一天启动服务器。是的,这仍然涉及数据库操作,但至少表的内容是由艾泽拉斯核心生成的,而不是你自己生成的。

这是我为解决问题所做的工作

我之所以在答案中如此深入地隐藏这一点,是因为在开始清除数据库中的表之前,您必须了解自己在做什么。谨慎行事。

  1. 关闭世界服务器
  2. 通过SQL清空characters.instance_reset
  3. 将您的系统时间设置为当前时间之前的某个时间,该时间转换为 UTC 时是您希望实例重置的星期几
  4. 启动世界服务器。等待它加载。登录并确认实例锁定在正确的时间到期。
  5. 关闭世界服务器
  6. 将您的系统时间设置回正确的时间并重新启动服务器

关于azerothcore - 如何为重置英雄实例设置星期几?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55312974/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com