Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 7 из 7
  1. #1
    Аватар для Osetin
    •Администратор•

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    ♔Osetia, Vladikavkaz♔
    Сообщений
    3,432
    Репутация:
    1093 ±

    Anti Quick ReConnect

    Инклуд не дает игроку быстро реконектится после выхода. Если пауза между выходом и входом одного и того же игрока меньше 15сек, то войти он не сможет. Если у игрока был просто тайм аут соединения, то его этот запрет не коснется. Присутствует защита на перезаход без выполнения выхода и мультиконнект игроков, т.е. с одного ип адреса может зайти лишь один игрок. Для хранения временно забаненных игроков используется БД 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[]);//переводит ип из строки в число. 
    Пример использования:
    PHP код:
    #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(playeridreason);
    }

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

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

    public 
    OnPlayerKeyStateChange(playeridnewkeysoldkeys)
    {
        if(
    KEY_YES newkeys)
        {
            
    SendClientMessage(playerid,-1,"ты был кикнут.");
            
    AQRC_Kick(playerid);
        }
        return 
    1;

    Внимание:
    -Для бана игрока используйте AQRC_Ban иначе его разбанит через ReConnectTime мс.
    -Обратите внимание в примере на //CODE - это означает, что только там может располагаться ваш код.

    Просмотреть/Скачать: http://pastebin.com/hzLntTmy
    Автор: White_116

  2. 2 пользователя(ей) сказали cпасибо:
    DesmoNd (01.02.2014) Salvacore (08.08.2014)
  3. #2
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Понравилось!
    Вскоре поставлю.

  4. #3
    Аватар для Osetin
    •Администратор•

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    ♔Osetia, Vladikavkaz♔
    Сообщений
    3,432
    Репутация:
    1093 ±
    Немного изменен код. Теперь можно самому выбрать наказание.

  5. #4
    Аватар для DesmoNd
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Сообщений
    13
    Репутация:
    0 ±
    Отлично. Заслужил плюс. Спасибо.

  6. #5
    Аватар для Дёня
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.03.2014
    Сообщений
    152
    Репутация:
    13 ±
    Пару вопросиков.


    1. этот код вставить в свою команду кика?

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

    2. Для чего вот это?

    PHP код:
    public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
    {
        if(
    KEY_YES newkeys)
        {
            
    SendClientMessage(playerid,-1,"ты был кикнут.");
            
    AQRC_Kick(playerid);
        }
        return 
    1;

    3.
    В моде в место return 1;, поставить return AQRC_OnPlayerDisconnect(playerid, reason);???
    PHP код:
    public OnPlayerDisconnect(playerid,reason)
    {
        
    //CODE нельзя выйти раньше, должен выполниться AQRC_OnPlayerDisconnect!
        
    return AQRC_OnPlayerDisconnect(playeridreason);


  7. #6
    Аватар для Caypen
    Пользователь

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

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

    Захожу на pro-pawn.ru - чувствую себя обычным пользователем
    Захожу на gawno-info.ru - чувствую себя самым великим гением
    (С) Caypen

  8. #7
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Цитата Сообщение от Caypen Посмотреть сообщение
    PHP код:
    public OnPlayerConnect(playerid)
    {
        new 
    reason;
        if(
    reason=AQRC_OnPlayerConnect(playerid))
        {
            
    printf("Не верная попытка входа. Причина: %d",reason);
            
    AQRC_Ban(playerid"Плохое подключение.");//забаним игрока
            
    Ban(playerid);//ускорим процесс бана
        
    }
        
    //CODE
        
    return 1;

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

    reason

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •