как узнать сколько часов наиграно в роблокс

Как мне узнать текущее время в 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, вы получите время игрока, а не сервера. Это может быть не то, что вы обычно хотите, но его можно использовать, чтобы узнать, в каком часовом поясе находится игрок, или узнать, каково текущее время игрока.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *