НЕ РЕШЕНО как писать плагины ХЕЛП!

Хостинг игровых серверов

SkiTles55

Лодырь
Команда форума
Хелпер
Разработчик С#
Прохожий
23 Окт 2017
168
214
32
vk.com
Хотя бы уведомление в чате

Такое реализовать не сложно. Попробую расписать по шагам.

Для начала создаем текстовый файл "TimeNotifier.cs", TimeNotifier - название плагина к примеру.
Далее идем на http://docs.oxidemod.org/rust/#getting-started и в разделе Getting Started видим пример тела плагина. Копируем в свой текстовый файл, и меняем значения Title, Author, Description на свои, строчку "class EpicStuff : RustPlugin" меняем на "class TimeNotifier : RustPlugin", потому что название файла и класса всегда должны совпадать. Получаем в итоге следующее:
Код:
namespace Oxide.Plugins
{
    [Info("TimeNotifier", "public_html", 0.1)]
    [Description("Простой плагин показывающий в чате внутриигровое время")]

    class TimeNotifier : RustPlugin
    {
        // The rest of the code and magic
    }
}
Теперь нам требуется запустить таймер после загрузки плагина, который будет выдавать в чат оповещения. выбираем для этого хук OnServerInitialized() в разделе "Universal Hooks", копируем пример в тело нашего плагина (там где строчка "// The rest of the code and magic", которую кстати можно удалить).
Далее берем пример циклического таймера вот отсюда - http://docs.oxidemod.org/rust/#timers-basic Копируем код из "Repeating timer", и вставляем в наш хук, вместо строчки "Puts("OnServerInitialized works!");". Получаем следующее:
Код:
namespace Oxide.Plugins
{
    [Info("TimeNotifier", "public_html", 0.1)]
    [Description("Простой плагин показывающий в чате внутриигровое время")]

    class TimeNotifier : RustPlugin
    {
        void OnServerInitialized()
        {
            timer.Repeat(5f, 0, () =>
            {
                Puts("Hello world!")
            });
        }
    }
}
5f - это частота повторения таймера в секундах, берем за пример 10 минут, и меняем 5f на 600.
Далее вместо строчки "Puts("Hello world!")" ставим простую функцию Server.Broadcast() которая выводит в чат сообщение всем игрокам, в скобках должна быть строчка, которая будет выводится в чат.
Для получения и форматирования игрового времени будет использоваться функция TOD_Sky.Instance.Cycle.DateTime.ToString("HH:mm").
В итоге получаем готовый плагин:
Код:
namespace Oxide.Plugins
{
    [Info("TimeNotifier", "public_html", 0.1)]
    [Description("Простой плагин показывающий в чате внутриигровое время")]

    class TimeNotifier : RustPlugin
    {
        void OnServerInitialized()
        {
            timer.Repeat(600, 0, () =>
            {
                Server.Broadcast("Игровое время: " + TOD_Sky.Instance.Cycle.DateTime.ToString("HH:mm"));
            });
        }
    }
}
 

kill nova

Прохожий
22 Фев 2018
128
29
25
vk.com
Такое реализовать не сложно. Попробую расписать по шагам.

Для начала создаем текстовый файл "TimeNotifier.cs", TimeNotifier - название плагина к примеру.
Далее идем на http://docs.oxidemod.org/rust/#getting-started и в разделе Getting Started видим пример тела плагина. Копируем в свой текстовый файл, и меняем значения Title, Author, Description на свои, строчку "class EpicStuff : RustPlugin" меняем на "class TimeNotifier : RustPlugin", потому что название файла и класса всегда должны совпадать. Получаем в итоге следующее:
Код:
namespace Oxide.Plugins
{
    [Info("TimeNotifier", "public_html", 0.1)]
    [Description("Простой плагин показывающий в чате внутриигровое время")]

    class TimeNotifier : RustPlugin
    {
        // The rest of the code and magic
    }
}
Теперь нам требуется запустить таймер после загрузки плагина, который будет выдавать в чат оповещения. выбираем для этого хук OnServerInitialized() в разделе "Universal Hooks", копируем пример в тело нашего плагина (там где строчка "// The rest of the code and magic", которую кстати можно удалить).
Далее берем пример циклического таймера вот отсюда - http://docs.oxidemod.org/rust/#timers-basic Копируем код из "Repeating timer", и вставляем в наш хук, вместо строчки "Puts("OnServerInitialized works!");". Получаем следующее:
Код:
namespace Oxide.Plugins
{
    [Info("TimeNotifier", "public_html", 0.1)]
    [Description("Простой плагин показывающий в чате внутриигровое время")]

    class TimeNotifier : RustPlugin
    {
        void OnServerInitialized()
        {
            timer.Repeat(5f, 0, () =>
            {
                Puts("Hello world!")
            });
        }
    }
}
5f - это частота повторения таймера в секундах, берем за пример 10 минут, и меняем 5f на 600.
Далее вместо строчки "Puts("Hello world!")" ставим простую функцию Server.Broadcast() которая выводит в чат сообщение всем игрокам, в скобках должна быть строчка, которая будет выводится в чат.
Для получения и форматирования игрового времени будет использоваться функция TOD_Sky.Instance.Cycle.DateTime.ToString("HH:mm").
В итоге получаем готовый плагин:
Код:
namespace Oxide.Plugins
{
    [Info("TimeNotifier", "public_html", 0.1)]
    [Description("Простой плагин показывающий в чате внутриигровое время")]

    class TimeNotifier : RustPlugin
    {
        void OnServerInitialized()
        {
            timer.Repeat(600, 0, () =>
            {
                Server.Broadcast("Игровое время: " + TOD_Sky.Instance.Cycle.DateTime.ToString("HH:mm"));
            });
        }
    }
}
Огромное спасибо
 

kill nova

Прохожий
22 Фев 2018
128
29
25
vk.com
Такое реализовать не сложно. Попробую расписать по шагам.

Для начала создаем текстовый файл "TimeNotifier.cs", TimeNotifier - название плагина к примеру.
Далее идем на http://docs.oxidemod.org/rust/#getting-started и в разделе Getting Started видим пример тела плагина. Копируем в свой текстовый файл, и меняем значения Title, Author, Description на свои, строчку "class EpicStuff : RustPlugin" меняем на "class TimeNotifier : RustPlugin", потому что название файла и класса всегда должны совпадать. Получаем в итоге следующее:
Код:
namespace Oxide.Plugins
{
    [Info("TimeNotifier", "public_html", 0.1)]
    [Description("Простой плагин показывающий в чате внутриигровое время")]

    class TimeNotifier : RustPlugin
    {
        // The rest of the code and magic
    }
}
Теперь нам требуется запустить таймер после загрузки плагина, который будет выдавать в чат оповещения. выбираем для этого хук OnServerInitialized() в разделе "Universal Hooks", копируем пример в тело нашего плагина (там где строчка "// The rest of the code and magic", которую кстати можно удалить).
Далее берем пример циклического таймера вот отсюда - http://docs.oxidemod.org/rust/#timers-basic Копируем код из "Repeating timer", и вставляем в наш хук, вместо строчки "Puts("OnServerInitialized works!");". Получаем следующее:
Код:
namespace Oxide.Plugins
{
    [Info("TimeNotifier", "public_html", 0.1)]
    [Description("Простой плагин показывающий в чате внутриигровое время")]

    class TimeNotifier : RustPlugin
    {
        void OnServerInitialized()
        {
            timer.Repeat(5f, 0, () =>
            {
                Puts("Hello world!")
            });
        }
    }
}
5f - это частота повторения таймера в секундах, берем за пример 10 минут, и меняем 5f на 600.
Далее вместо строчки "Puts("Hello world!")" ставим простую функцию Server.Broadcast() которая выводит в чат сообщение всем игрокам, в скобках должна быть строчка, которая будет выводится в чат.
Для получения и форматирования игрового времени будет использоваться функция TOD_Sky.Instance.Cycle.DateTime.ToString("HH:mm").
В итоге получаем готовый плагин:
Код:
namespace Oxide.Plugins
{
    [Info("TimeNotifier", "public_html", 0.1)]
    [Description("Простой плагин показывающий в чате внутриигровое время")]

    class TimeNotifier : RustPlugin
    {
        void OnServerInitialized()
        {
            timer.Repeat(600, 0, () =>
            {
                Server.Broadcast("Игровое время: " + TOD_Sky.Instance.Cycle.DateTime.ToString("HH:mm"));
            });
        }
    }
}
а не мог бы ты немного рассказать о гуи?
 

SkiTles55

Лодырь
Команда форума
Хелпер
Разработчик С#
Прохожий
23 Окт 2017
168
214
32
vk.com
а не мог бы ты немного рассказать о гуи?
с GUI сам редко работаю, не разбирался особо. Но учится достаточно просто - возьми любой плагин с простым гуи, и пробуй его переделать под себя, поменяй местоположение, текст и т.п. Завтра если время будет, попробую написать небольшой пример.
 

jennjaa1

Новичек
6 Мар 2018
7
1
33
с ГУИ на самом деле не сложно.
Главное ровно положить начало)))
Где-то ссылка была на веб-создание ГУИ
 

VooDoo

Прохожий
5 Янв 2018
78
59
27
Задавайте свои вопросы на сайте, не боитесь. На сайте уже достаточно кодеров и в скором времени надеюсь их станет еще больше :)
Главное требование для помощи:
1. Код, который у вас не работает/в котором требуется помощь(объяснить его к примеру)
2. Описание проблемы и что должно в итоге получиться

Ну или к примеру вы не знаете как вывести игроку CUI, выдать игроку предметы, телепортировать его "правильно" и на сайте нет такого гайда, то пишите, в свободное время сделаю/сделаем гайды
 
  • Like
Реакции: Басотник

leonidius

Новичек
3 Апр 2018
9
0
35
@SkiTles55, если с использованием хуков ты показал откуда их взять, то можешь пояснить откуда можно узнать о таких функциях как TOD_Sky.Instance.Cycle.DateTime.ToString("HH:mm") или Server.Broadcast(), я подозреваю подобных вещей нужно знать много не помешал бы хороший фак, чаво или что вы там используете при написании плагинов. Я например писал на AutoIt просто взял скачал фак по нему и довольно скоро начал делать скрипты, т.к. в справке было все для создания. Здесь же не совсем понятно.
 

Alukar

Меценат
Прохожий
29 Янв 2018
509
104
92
hosting.alkad.org
@SkiTles55, если с использованием хуков ты показал откуда их взять, то можешь пояснить откуда можно узнать о таких функциях как TOD_Sky.Instance.Cycle.DateTime.ToString("HH:mm") или Server.Broadcast(), я подозреваю подобных вещей нужно знать много не помешал бы хороший фак, чаво или что вы там используете при написании плагинов. Я например писал на AutoIt просто взял скачал фак по нему и довольно скоро начал делать скрипты, т.к. в справке было все для создания. Здесь же не совсем понятно.
http://docs.oxidemod.org/
И с рефлектором к серверу ...
 
  • Like
Реакции: lomarine

SkiTles55

Лодырь
Команда форума
Хелпер
Разработчик С#
Прохожий
23 Окт 2017
168
214
32
vk.com
откуда можно узнать о таких функциях как TOD_Sky.Instance.Cycle.DateTime.ToString("HH:mm") или Server.Broadcast()
Открывай другие плагины и смотри. Во всяком случае я так учился. Позже уже начал смотреть в dll, и пользовался подсказками в Visual Studio.
 

Night_Tiger

Прохожий
27 Янв 2018
280
66
Для того чтоб посмотреть функции, ставь Ilspy или dotpeek и открывай из папки Managed сервера дллки, основная для изучения Assembly