SA-MP Forums Archive
[Include] Anti Quick ReConnect - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+----- Forum: Релизы/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=66)
+----- Thread: [Include] Anti Quick ReConnect (/showthread.php?tid=470156)



Anti Quick ReConnect - White_116 - 16.10.2013

AQRC v1.0 by White_116
Не большой инклуд по просьбам участников форума. Инклуд не дает игроку быстро реконектится после выхода. Если пауза между выходом и входом одного и того же игрока меньше 15(настраивается) сек, то войти он не сможет. Если у игрока был просто тайм аут соединения, то его этот запрет не коснется. Так же добавлен фикс кика и бана для серверов X версии, что позволяет выводить причину игроку. Присутствует защита на перезаход без выполнения выхода и мультиконнект игроков, т.е. с одного ип адреса может зайти лишь один игрок.
Так же присутствует защита от "сохранения бана игроков" при падений мода. Когда после падение мода временно забаненные игроки оставались забаненные. Для хранения временно забаненных игроков используется БД SQL.

Инклуд содержит функции:
PHP код:
native AQRC_Ban(playeridreason[]);//Банитит игрока. Если указана причина то аналогичен BanEx иначе просто Ban.
native AQRC_Kick(playerid);//Кикает игрока.
native AQRC_UnBanIP(iip);//Разбанивает указаный ип в БД и в бан листе.
native AQRC_ScriptInit();//Разбанивает "псевдозабаненых" игроков. создаёт таблицу.
native AQRC_ScriptExit();//Закрывает БД.
native AQRC_OnPlayerConnect(playerid);//Проверка на "правильный" коннект.
native AQRC_OnPlayerDisconnect(playeridreason);//"Банит" игрока.
native AQRC_OnPlayerUpdate(playerid);//Фикс кика и бана.
native int2ip(iipszIP[]);//переводит ип из числа в строку.
native ip2int(szIP[]);//переводит ип из строки в число. 
Пример использования:
pawn Код:
#include <a_samp>
#include <AQRC>

public OnGameModeInit()
{
    AQRC_ScriptInit();
    return 1;
}

public OnGameModeExit()
{
    AQRC_ScriptExit();
    return 1;
}

public OnPlayerConnect(playerid)
{
    new reason;
    if(reason=AQRC_OnPlayerConnect(playerid))
    {
        printf("Не верная попытка входа. Причина: %d",reason);
        AQRC_Ban(playerid, "Плохое подключение.");//забаним игрока
        Ban(playerid);//ускорим процесс бана
    }
    //CODE
    return 1;
}

public OnPlayerDisconnect(playerid,reason)
{
    //CODE нельзя выйти раньше, должен выполниться AQRC_OnPlayerDisconnect!
    return AQRC_OnPlayerDisconnect(playerid, reason);
}

public OnPlayerUpdate(playerid)
{
    if(AQRC_OnPlayerUpdate(playerid) == 0)return 0;
    //CODE
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp("/kick", cmdtext, true, 5) == 0)
    {
        print("kick");
        strdel(cmdtext,0,6);
        new p=strval(cmdtext);
        SendClientMessage(p,-1,"ты был кикнут.");
        AQRC_Kick(p);
        return 1;
    }
    return 0;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(KEY_YES & newkeys)
    {
        SendClientMessage(playerid,-1,"ты был кикнут.");
        AQRC_Kick(playerid);
    }
    return 1;
}
Внимание:
-Для бана игрока используйте AQRC_Ban иначе его разбанит через ReConnectTime мс.
-Обратите внимание в примере на //CODE - это означает, что только там может располагаться ваш код.

Просмотреть/Скачать: Pastebin
Немного изменил код. Теперь можно самому выбрать наказание за "плохие" подключения.


Re: Anti Quick ReConnect - XemyL - 16.10.2013

Было бы не плохо ещё добавить бан по IP за флуд реконнектами если много раз за одну секунду.


Re: Anti Quick ReConnect - White_116 - 16.10.2013

Quote:
Originally Posted by XemyL
Посмотреть сообщение
Было бы не плохо ещё добавить бан по IP за флуд реконнектами если много раз за одну секунду.
Флуд реконнектами не возможен, так как игрок покинет сервер у будет временно забанен.
Но вы у помянули о бане. Сделал это возможным. Смотрите пример.


Re: Anti Quick ReConnect - Seregamil1 - 18.10.2013

Quote:

new reason;
if(reason=AQRC_OnPlayerConnect(playerid))
{

немного странно, или мне кажется?


Re: Anti Quick ReConnect - White_116 - 18.10.2013

Просто у меня вместо reason другие переменный. Т.е. создаю одну меперенную и использую для 5 присвоений и проверок.


Re: Anti Quick ReConnect - AnGeL_KRAMER - 26.10.2013

Впихнул в мод ну получилось так что игрока вообще не кикает

AQRC_Kick(playerid); т.е не пашет функция


Re: Anti Quick ReConnect - Cypen - 24.01.2014

Мне кажется или
PHP код:
new reason;
    if(
reason=AQRC_OnPlayerConnect(playerid)) 
Тоже самое что:
PHP код:
if(AQRC_OnPlayerConnect(playerid)) 



Re: Anti Quick ReConnect - Stepashka - 24.01.2014

Quote:
Originally Posted by Cypen
Посмотреть сообщение
Мне кажется или
PHP код:
new reason;
    if(
reason=AQRC_OnPlayerConnect(playerid)) 
Тоже самое что:
PHP код:
if(AQRC_OnPlayerConnect(playerid)) 
Для проверки да, но в первом случае мы дополнительно сохраняем результат проверки в переменную, для её последующего использования.


Re: Anti Quick ReConnect - Cypen - 24.01.2014

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Для проверки да, но в первом случае мы дополнительно сохраняем результат проверки в переменную, для её последующего использования.
А да точно, не посмотрел.


Re: Anti Quick ReConnect - warlock02 - 26.01.2014

Quote:

new reason;
if(reason=AQRC_OnPlayerConnect(playerid))
{

Я один заметил некорректность условия if? Не хватает знака равенства вроде бы.


Re: Anti Quick ReConnect - =KempeR= - 10.02.2014

Quote:
Originally Posted by warlock02
Посмотреть сообщение
Я один заметил некорректность условия if? Не хватает знака равенства вроде бы.
Всё окей. Это присвоение


Re: Anti Quick ReConnect - Stepashka - 10.02.2014

Quote:
Originally Posted by warlock02
Посмотреть сообщение
Я один заметил некорректность условия if? Не хватает знака равенства вроде бы.
Я один заметил что у вас проблемы со зрением, двумя постами ранее этот вопрос был рассмотрен?!