gpt4 book ai didi

roblox - 如何获取 Roblox 的当前时间(在所有服务器上保持一致)?

转载 作者:行者123 更新时间:2023-12-02 08:54:11 33 4
gpt4 key购买 nike

在我的 Roblox 地点,我想要获取一个代表当前时间的值,该值在我的游戏中所有正在运行的服务器和地点中都是一致的。

我已经知道 Time函数,但该函数的文档似乎表明它仅在单个位置(或者可能仅在单个位置实例?)中保持一致:

Returns returns the current place time in seconds.

还有tick :

Returns the time in UNIX time, which is the number of seconds since the Unix epoch, January 1st, 1970.

但这还有另一个问题:

Because some servers run in different timezones (such as servers in America and Europe), tick() will return a different time on those servers. This time will differ in several hours, as much as the time zone difference is. Due this fact, it cannot say anything about relative times between two servers (such as measuring how long it has taken since the last visit of the player).

如何获得在游戏中的所有服务器和位置上一致的时间值? (现实生活中的实际时间非常适合此目的。)

最佳答案

由于 ROBLOX 服务器可以使用不同的时区,因此您只需使用知道其使用的时区的服务器即可。

要从外部服务器获取数据,您需要使用 HttpService .

如果您有自己的服务器,则可以使用它来获取当前时间,如果没有,您可以寻找可以为您提供当前时间的服务器。

以下是如何获取当前时间的示例:

local TimeServer = "http://www.timeapi.org/utc/now?%25Q"
local CurrentTime = Game:GetService("HttpService"):GetAsync(TimeServer, true)
local ServerTime = tick()

这将使“CurrentTime”变量包含自 Unix Epoch 以来的当前微秒数。

您不想使用HttpService每次你需要时间,所以你想使用这样的东西:

function getTime()
return CurrentTime - (ServerTime * 1000) + tick()
end

但为了提高效率,请将其放在 ModuleScript 中在 Game.ServerScriptService 中称为“Time”:

local TimeServer = "http://www.timeapi.org/utc/now?%25Q"
local CurrentTime = tonumber(Game:GetService("HttpService"):GetAsync(TimeServer, true))
local ServerTime = tick()

return function() return (CurrentTime / 1000) - ServerTime + tick() end

然后您可以在任何脚本中使用它,如下所示:

local getTime = require(Game.ServerScriptService.Time)

print(getTime())
wait(1)
print(getTime())

需要注意的是,如果您调用tick()来自 LocalScript 的函数,您将获得玩家的时间,而不是服务器的时间。这可能不是您通常想要的,但它可以用来查找玩家所在的时区,或者查看玩家的当前时间。

关于roblox - 如何获取 Roblox 的当前时间(在所有服务器上保持一致)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24131836/

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