Работа плагина по времени.
|
|
๖ۣۣۜ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 |
|
| |