azerothcore - 如何设置一周中的一天来重置英雄实例?
问题描述
更改星期几以重新加载英雄实例的问题。
总是在星期五的 04:00。
我正在尝试将配置放入以下行:
Instance.ResetTimeRelativeTimestamp =
其他日期之一:
1552867201 = 18.03.2019 00:01 星期一
1552953600 = 19.03.2019 00:00 星期二
1553040001 = 20.03.2019 00:01 星期三
15521 = 14.03.2019 00:00 星期四
1552608001 = 15.03.2019 00:01 星期五
1552694401 =
16.03.2019 00:01 星期六
1552780801 = 17.03.2019 00:01 星期日
然后我清除了 3 个字符表中的实例 DB
:
instance_reset
character_instance
我启动服务器 - 我看到相同的结果 - 周五 4:00 重新启动。
问题:如何更改星期几?应该是星期三。
解决方案
实际上,我自己刚刚弄清楚了这一点。在对 AzerothCore 源进行大量挖掘之后,似乎在服务器第一次启动时选择了重置实例的星期几。据我所知,ResetTimeRelativeTimestamp
不用于确定重置时间。更加具体:
- 服务器启动并开始从
characters
.instance_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
,RaidDuration
是604800
秒,也就是 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
,星期六。实例将在周六重置
- 您位于美国中部时区,目前为 UTC-5。它是
- 重置时间 =
- 下次重置实例时,将使用 重置其下一次重置时间
previous reset time + RaidDuration
。
这意味着,如果您想选择星期几,您需要执行以下操作之一:
- 将表中的实例重置时间修改
instance_reset
为所需的星期几。这种方法是有风险的,因为它涉及直接操纵数据库中的重置时间戳 - 清空实例表,然后在您希望实例重置的那一天启动服务器。是的,这仍然涉及数据库操作,但至少表的内容是由艾泽拉斯核心而不是你自己生成的。
这是我为解决问题所做的
我在答案中如此深埋的原因是,在开始清除数据库中的表之前,您必须了解自己在做什么。谨慎行事。
- 关闭世界服务器
- 清空
characters
.instance_reset
通过 SQL 表 - 将您的系统时间设置为当前时间之前的某个时间,当转换为 UTC时,该时间落在您希望实例重置的星期几
- 启动世界服务器。等待它加载。登录并确认实例锁定在正确的时间到期。
- 关闭世界服务器
- 将您的系统时间设置回正确的时间并重新启动服务器
推荐阅读
- javascript - 带有 React 的 Typescript - 通过 LI 元素循环的 TS 错误
- julia - 是否可以为矩阵分解预先分配数组?
- java - 启用 EditText 下划线
- javascript - React.js Material-Table 将选定的行传递到另一个页面
- php - 如何在 laravel 中使用 javascript 通过输入(文本字段)将数据添加到 HTML 表中?
- pandas - TypeError:必须是 str,而不是 float - 线性回归
- swift - 使用“自我”有什么区别。在闭包的捕获列表中添加前缀并写入“self”?
- c++11 - 是否可以在函数中定义全局变量并使用 C++ 中的预处理器指令在其他函数中使用该变量?
- r - 是否有一个 R 函数来查看它们的中值如何随 2 个分类变量而变化?
- python - Django:如何在 On Approve Ajax 中呈现带有上下文的特定 HTML