Jump to content

Простой скрипт игрового времени и решение проблемы с GetTime (C#)


jix

Recommended Posts

В одно время я не мог решить проблему с 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(); // Запуск цикла времени при старте сервера
        }

 

Edited by jix
  • Like 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...