как узнать сколько часов наиграно в роблокс
Как мне узнать текущее время в Roblox (согласованное на всех серверах)?
В моем месте Roblox я хочу получить значение, представляющее текущее время, которое согласовано на всех запущенных серверах и местах в моей игре.
Я уже знаю о функции Time, но документация по этой функции кажется чтобы указать, что он согласован только в одном месте (или, возможно, только в одном экземпляре места?):
Возвращает время в формате UNIX, которое представляет собой количество секунд, прошедших с эпохи Unix, 1 января 1970 года.
Но тут есть еще одна проблема:
Поскольку некоторые серверы работают в разных часовых поясах (например, серверы в Америке и Европе), tick () вернет другое время на этих серверах. Это время будет отличаться на несколько часов в зависимости от разницы часовых поясов. Из-за этого он не может ничего сказать об относительном времени между двумя серверами (например, о том, сколько времени прошло с момента последнего посещения игрока).
Как мне получить значение времени, которое будет одинаковым для всех серверов и мест в моей игре? (Для этой цели подойдет реальное время в реальной жизни.)
2 ответа
После поиска в Google os.time() я обнаружил, что это фактически часть стандартной библиотеки для языка LUA. Более подробную информацию о os и os.time можно найти здесь:
Поскольку серверы ROBLOX могут использовать разные часовые пояса, вам просто нужно использовать сервер, на котором вы знаете, какой часовой пояс он использует.
Чтобы получить данные с внешнего сервера, вам необходимо использовать HttpService.
Если у вас есть собственный сервер, вы можете использовать его для получения текущего времени, а если нет, вы можете поискать сервер, который может дать вам текущее время.
Вот пример того, как узнать текущее время:
Это заставит переменную CurrentTime содержать текущие микросекунды, начиная с Unix Epoch.
Вы не хотите каждый раз использовать HttpService вам нужно время, поэтому вы хотите использовать что-то вроде этого:
Но чтобы сделать его более эффективным, поместите его в ModuleScript в Game.ServerScriptService, который называется «Время» :
Затем вы можете использовать его в любом скрипте, например:
Следует отметить, что если вы вызываете функцию tick () из LocalScript, вы получите время игрока, а не сервера. Это может быть не то, что вы обычно хотите, но его можно использовать, чтобы узнать, в каком часовом поясе находится игрок, или узнать, каково текущее время игрока.