Заказать Сервер Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

Страница 1 из 11
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Работа плагина по времени. (๖ۣۣۜDarkAngel™)
Работа плагина по времени.
๖ۣۣۜDarkAngel™ Дата: Воскресенье, 19.11.2017, 12:39:41 | Сообщение # 1
Сообщений: 2
Репутация: 0 [ +/- ]
Здравствуйте уважаемые кодеры, и wS.
Хочу разработать ядро, чтобы плагины работали по определенному времени, после чего они отключались.
Поможете?
 
Nail Дата: Воскресенье, 19.11.2017, 13:32:16 | Сообщение # 2
Сообщений: 26
Репутация: 8 [ +/- ]
Задача тривиальная с множеством вариантов решения.
Вот мой вариант.
Сделать конфиг с интервалами работы плагинов.
При смене карты конфиг считывается и заносится в вектор (можно сделать 2 вектора если мы говорим о SourcePawn т.к. структур в нем еще нет).
В плагине работает таймер с шагом в 1 минуту. При вызове колбэка плагин проходится по вектору и сравнивает текущую временную метку с меткой для каждого плагина в векторе и если есть совпадение - выполняет запуск или отключение плагина.
Если плагин пишется на C++, то там всё просто, а вот в SP функционала для работы с временем почти нет. Я решал задачу таким образом:
https://sm.alliedmods.net/new-api/sourcemod/FormatTime через эту функцию получаем строку с форматом ЧЧММ и дальше сравниваем с аналогичной строкой из конфига через strcmp
Примечательность этого метода еще и в том что не придется решать проблему перехода через 0, однако в работе SP таймера есть серьезные флуктуации и если старт таймера попадет на границу 59/0 то он от вызова к вызову может гулять и не попадать чётко в нужную минуту, что будет приводить к пропуску ивэнта или двойному вызову. Для решения этой проблемы достаточно выполнить синхронизацию таймера по 30-ой секунде при старте плагина.

Зaходя немного вперед я бы в конфиг вписывал не название плагина а команду на выполнение типо так:

Код
"1"
{
    time "0659"
    command "sm plugins load plugin"
}
"2"
{
    time "0759"
    command "sm plugins unload plugin"
}


Так упростится код и у плагина будет очень гибкий функционал.
К слову, такой плагин уже точно существует, но найти его я не смог.


Сообщение отредактировал Nail - Воскресенье, 19.11.2017, 13:37:19
 
๖ۣۣۜDarkAngel™ Дата: Воскресенье, 19.11.2017, 13:41:39 | Сообщение # 3
Сообщений: 2
Репутация: 0 [ +/- ]
Я хочу сделать аренду своих плагинов, и выносить что либо в конфиг не целесообразно.
Я знаю как сделать на основе AMXmodX но в SM пока "новичек", по этому и спрашиваю ярый пример на пальцах =)
Код


#include <amxmodx>

public plugin_init() {
    register_plugin("Test License", "1.0", "OnePL");

    license_plugin(2014, 02, 22); //до какого числа работать плагин будет
}

stock license_plugin(Day, Month, Year) {
    new sTime[3][5], iData[3]; iData[0] = Day; iData[1] = Month; iData[2] = Year;
    get_time("%d", sTime[0], 2);
    get_time("%m", sTime[1], 2);
    get_time("%Y", sTime[2], 4);

    for(new i; i < 3; i++) {
        if(str_to_num(sTime[i]) > iData[i]) {
            set_fail_state("Работа плагина прекращена!");
            return false;
        }
    }
    return true;
}

 
Nail Дата: Воскресенье, 19.11.2017, 15:10:34 | Сообщение # 4
Сообщений: 26
Репутация: 8 [ +/- ]
Аренду за деньги ? в текущих условиях я слабо себе это представляю.
Плагинов море на любой вкус. Знакомый с основами C++ человек сможет написать плагин любого уровня сложности, в добавок любой SM плагин декомпилируется очень легко и в читаемый код т.ч. нет необходимости платить за аренду.
Что касательно примера - у меня приложен внизу сообщения. Там уже есть основа, надо немного доработать. Алгоритм действия у вас есть (собственно, ваш пример тоже можно использовать)
Весь API сорсмода тут: https://sm.alliedmods.net/new-api/sourcemod/


Сообщение отредактировал Nail - Воскресенье, 19.11.2017, 18:02:06
 
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Работа плагина по времени. (๖ۣۣۜDarkAngel™)
Страница 1 из 11
Поиск: