Описание: Плагин позволяющий отследить сообщения сервера в логе а также автоматически задаёт офсэт для таймеров.
Например можно отследить эксплойты и т.д.:
Код
Invalid client connecting from Warning: /rcon command exploit from: Warning: PlayerDialogResponse PlayerId: Warning: PlayerDialogResponse crash exploit from PlayerId: Packet was modified, sent by id: Remote Port Refused for Player: Blocking due to a 'server full' attack
(любые сообщения из лога) - предоставленные уже в макросах инклуда.
Скрипт бесшумно болкирует IP за все шалости:
Код
public OnServerMessage(const msg[]) { if (!strcmp(msg, ERROR_INVALID_CLIENT, false, 31)) { FIXES_SilentBanIP(FIXES_ReadIp(msg[31])); } else if (!strcmp(msg, ERROR_RCON_EXPLOIT, false, 37)) { FIXES_SilentBanIP(FIXES_ReadIp(msg[37])); } else if (!strcmp(msg, ERROR_PLAYER_DIALOG, false, 40)) { FIXES_SilentBanPlayer(strval(msg[40])); } else if (!strcmp(msg, ERROR_DIALOG_CRASH, false, 59)) { FIXES_SilentBanPlayer(strval(msg[59])); } else if (!strcmp(msg, ERROR_PACKET_MODIFIED, false, 33)) { FIXES_SilentBanPlayer(strval(msg[33])); } else if (!strcmp(msg, ERROR_PORT_REFUSED, false, 32)) { FIXES_SilentBanPlayer(strval(msg[32])); } else if (!strcmp(msg, ERROR_BLOCKING, false, 9) && strfind(msg, ERROR_SERVER_FULL) != -1) { FIXES_SilentBanIP(FIXES_ReadIp(msg[9])); } }
AirKite, вот в этой теме, http://www.samp-rus.com/forum/15-20961-1 , вы писали о "стиле" кода Y_Less. А какие критичные замечания, можете дать к этим фиксам?
Вот тот же плагин от Y_Less. При запуске пишет: [26/01/2013 19:48:27] fixes.plugin: Could not find function Check. [26/01/2013 19:48:27] fixes.plugin: Could not find function Check2. [26/01/2013 19:48:27] fixes.plugin: Could not find function Check3. и через 2 минуты офает сервер. Что не так?
Продам pack программ для атак серверов Samp 0.3e Skype: TopSamp Вк: vk.com/maks_drift
Borog, плагин вызывает OnServerMessage при каждой новой строчке в логе. Далее смотрите код скрипта.
Цитата (Fabervox)
А какие критичные замечания, можете дать к этим фиксам?
Исходный код не изучал, сказать нечего. О Y_Less в указанной теме, говорил в целом Выкладывал из за темы с предложением похожего по описанию плагина на продажу.
- установки плагина - fixes2.so; - прописывания инклуды в мод или фску;
Или точнее, примерный скрипт готовый, так-как когда я питался ставить, новая версия обще не работает, старая работает, но пройдя 5 минут, сервер выключался.
NOTE THAT THE LINUX VERSION HAS NOT BEEN TESTED WITH THE EXPLOITS CODE!
Для тех кто не понимает, в двух словах: Версия для линукса не тестировалась и может содержать вредоносный код.
Скачал новую версию, но тут-же при запуске сервера в логах фатальная ошибка типа:
Цитата
Failed (/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found
Незнал в чем проблема т.к. не особо с линухами дружу. Полазил на форуме. Осенило. Перекомпилировал инклуд на своей VDS. Вуаля. Все класно, запустилось, без ошибок. Через 5 минут игры процесс сервера грузит процессор VDS на 100%. Сервер начинает разрываться. Взбесились таймеры. И так после каждого реста. Это из-за пофикшеных таймеров, которые не тестировались, или я не так понял... Опять на форум, в тему разработчика пошел. Дочитался, чтобы отключить зависание, нужно закоментить 3 строчки в плагине. (в исходнике, и скомпилировать).
Проблема с критическими зависаниями решена. Сервер атаки бабой шурой отклоняет. Банит негодяев. Но все-же сейчас наблюдаю. Как-то работает.
Добавлено (28.01.2013, 15:32) --------------------------------------------- DieSeL, полная установка, как я понял делаеться следующим образом:
Плагин fixes2.so кидаешь в папку с плагинами и прописываешь в server.cfg Инклуд fixes2.inc кидаешь в папку с инклудами компилятора (pawno/include) и прописываешь в моде, в самом начале после #include <a_samp>, иначе выдавало ошибку, покрайней мере у меня так.
В конец мода кидаешь паблик:
Код
public OnServerMessage(const msg[]) { if (!strcmp(msg, ERROR_INVALID_CLIENT, false, 31)) { FIXES_SilentBanIP(FIXES_ReadIp(msg[31])); } else if (!strcmp(msg, ERROR_RCON_EXPLOIT, false, 37)) { FIXES_SilentBanIP(FIXES_ReadIp(msg[37])); } else if (!strcmp(msg, ERROR_PLAYER_DIALOG, false, 40)) { FIXES_SilentBanPlayer(strval(msg[40])); } else if (!strcmp(msg, ERROR_DIALOG_CRASH, false, 59)) { FIXES_SilentBanPlayer(strval(msg[59])); } else if (!strcmp(msg, ERROR_PACKET_MODIFIED, false, 33)) { FIXES_SilentBanPlayer(strval(msg[33])); } else if (!strcmp(msg, ERROR_PORT_REFUSED, false, 32)) { FIXES_SilentBanPlayer(strval(msg[32])); } else if (!strcmp(msg, ERROR_BLOCKING, false, 9) && strfind(msg, ERROR_SERVER_FULL) != -1) { FIXES_SilentBanIP(FIXES_ReadIp(msg[9])); } }
Да, и не забудь подключить sscanf.so плагин ПОСЛЕДНЕЙ версии, иначе мод не запуститься. Долго не мог я понять в чем дело
Сообщение отредактировал FiLE - Понедельник, 28.01.2013, 15:27
DieSeL, Тема на оф. форуме про sscanf ==Тут== там есть ссылки на плагин и инклуд. Инклуд тоже кстати обнови если давно не обновлял. Я использую новую версию фиксов. Но её я обработал и скомпилил под свою ось.
По поводу плагина. Наблюдения мои. Сервер работает, работает, потом на 30 секунд залагает и попускает его... Может из-за того что машинка слабая...фиг знает.
Сообщение отредактировал FiLE - Понедельник, 28.01.2013, 16:07
Maks338, Когда скачиваешь плагин на офф. форуме., в архиве кроме плагина и инклуда лежат исходники в папочке fixes. Заливаешь эту папочку на VDS в удобное место, например в /root/ чтобы получилось так: /root/fixes/ Возле папки fixes создаешь рядом папку: plugins, чтобы получилось так: /root/plugins/
У меня centos, поэтому расскажу как на этой системе. Мне пришлось дополнительно установить пакеты: gcc и вроде gcc-c++ точно не помню. Если чегото не будет хватать, по ошибкам будет понятно.
Цитата
yum install gcc yum install gcc-c++
Дальше, заходишь в папку /root/fixes/, и вводишь команду: make FIXES Ждешь несколько секунд и забираешь свой плагин в папке: /root/plugins/