Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

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

  • Страница 1 из 1
  • 1
Работа плагина по времени.
๖ۣۣۜDarkAngel™ Дата: Воскресенье, 19.11.2017, 12:39:41 | Сообщение # 1
Сообщений: 2
Репутация: -3 [ +/- ]
Здравствуйте уважаемые кодеры, и wS.
Хочу разработать ядро, чтобы плагины работали по определенному времени, после чего они отключались.
Поможете?
 
Nail Дата: Воскресенье, 19.11.2017, 13:32:16 | Сообщение # 2
Сообщений: 38
Репутация: 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
Репутация: -3 [ +/- ]
Я хочу сделать аренду своих плагинов, и выносить что либо в конфиг не целесообразно.
Я знаю как сделать на основе 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
Сообщений: 38
Репутация: 8 [ +/- ]
Аренду за деньги ? в текущих условиях я слабо себе это представляю.
Плагинов море на любой вкус. Знакомый с основами C++ человек сможет написать плагин любого уровня сложности, в добавок любой SM плагин декомпилируется очень легко и в читаемый код т.ч. нет необходимости платить за аренду.
Что касательно примера - у меня приложен внизу сообщения. Там уже есть основа, надо немного доработать. Алгоритм действия у вас есть (собственно, ваш пример тоже можно использовать)
Весь API сорсмода тут: https://sm.alliedmods.net/new-api/sourcemod/


Сообщение отредактировал Nail - Воскресенье, 19.11.2017, 18:02:06
 
NiceTyan Дата: Среда, 03.01.2018, 21:40:53 | Сообщение # 5
Сообщений: 2
Репутация: 0 [ +/- ]
๖ۣۣۜDarkAngel™, ты же великий кодер которому никто не нужен, ты же всех кодеров кидаешь, ты же самый крутой, чего ты тут сидишь? или только на словах такой?)) А по твоим словам я никто и мне никто не поможет)) зайди хоть как-нибудь посмотри что я на кодила а то уж интересно почему я ничего не умею)0)00)) и кстати не красиво продавать плагины которые сделал другой человек и чуток изменив продавать! (Sahapro33)
 
TyanHard Дата: Среда, 03.01.2018, 21:48:51 | Сообщение # 6
Сообщений: 1
Репутация: 0 [ +/- ]
Урод! Да как ты мог! Ты даже до быдло кодера не можешь дотянуть! [Это про DarkAngel]
 
Entity Дата: Среда, 03.01.2018, 23:25:33 | Сообщение # 7
Сообщений: 67
Репутация: 1 [ +/- ]
NiceTyan, "великий кодер" и зачем ему тут сидеть? Неужели нужно быть слабым кодером, чтобы на этом форуме обитать?
 
NiceTyan Дата: Среда, 03.01.2018, 23:48:28 | Сообщение # 8
Сообщений: 2
Репутация: 0 [ +/- ]
Entity, я его давно знаю, это паскуда только обманывать умеет, он чужую работу выдает за свою и потом продает
 
Entity Дата: Четверг, 04.01.2018, 00:35:38 | Сообщение # 9
Сообщений: 67
Репутация: 1 [ +/- ]
NiceTyan, это, конечно, очень подло и неправильно с его стороны. Но я его в пример и не беру. Вы пишите "великий кодер" и "чего ты тут сидишь". Я веду к тому, что необязательно быть простым кодером, чтобы обитать на этом форуме. Тут есть весьма отличные кодеры, которые делятся своим опытом, бывает и помощи требуют.


Сообщение отредактировал Entity - Четверг, 04.01.2018, 00:42:14
 
  • Страница 1 из 1
  • 1
Поиск: