jix

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.