В одно время я не мог решить проблему с NAPI.World.GetTime (работает некорректно, инфу конечно же не найти почти) и решил залить для начинающих небольшой скрипт, который исправляет проблему + бонусом саму систему времени.
class server_side : Script
{
// Переменные, которые будут заменять нам GetTime
int serverHour = 6;
int serverMin = 0;
int serverSec = 0;
// Метод, который при обращении к нему будет менять время на сервере
private void server_Time(int hour, int minute, int second)
{
NAPI.World.SetTime(hour, minute, second);
serverHour = hour; // ----------------------------------
serverMin = minute; // сохраняем в наши переменные время
serverSec = second; // ---------------------------------
}
// Бонусный код, который создает игровое время (1 игровая минута = 20 секундам)
async void time()
{
while (true)
{
serverMin++;
NAPI.World.SetTime(serverHour, serverMin, 0);
if (serverMin == 60)
{
if (serverHour >= 23)
{
serverHour = 0;
serverMin = 0;
NAPI.World.SetTime(serverHour, serverMin, 0);
}
else
{
serverHour++;
serverMin = 0;
NAPI.World.SetTime(serverHour, serverMin, 0);
}
}
await Task.Delay(20000);
}
}
[Command("time")] // команда, чтобы узнать текущее время на сервере
public void CMD_time(Client client)
{
if (serverMin < 10)
{
NAPI.Chat.SendChatMessageToPlayer(client, $"Текущее время {serverHour.ToString()}:0{serverMin.ToString()}");
}
else
{
NAPI.Chat.SendChatMessageToPlayer(client, $"Текущее время {serverHour.ToString()}:{serverMin.ToString()}");
}
}
// Смена времени на сервере
[Command("settime")]
public void CMD_settime(Client client, int hrs, int min)
{
server_Time(hrs, min, 0);
NAPI.Chat.SendChatMessageToPlayer(client, $"Время выставлено на {hrs}:{min}");
}
// Евент, чтобы время работало
[ServerEvent(Event.ResourceStart)]
public void OnResourceStart()
{
NAPI.World.SetTime(serverHour, serverMin, serverSec);
time(); // Запуск цикла времени при старте сервера
}