Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 20
  1. #1
    Аватар для Valera_Trefilov
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.12.2013
    Сообщений
    35
    Репутация:
    7 ±

    Античит на Flood Incomming Connection

    К переменным.

    PHP код:
    new jf_ip [MAX_PLAYERS] [64]; 
    new 
    jf_count [MAX_PLAYERS]; 
    в public OnIncomingConnection(playerid, ip_address[], port)
    PHP код:
            for (new 0!= MAX_PLAYERSi++)
        {
            if(!
    strcmp(jf_ip[i], ip_address,true))
            {
                
    jf_count[i]++;
                if (
    jf_count[i] > 2)
                {
                    new 
    jf_ban [64];
                    
    BlockIpAddress(ip_address,60*1000*5);
                    
    format(jf_bansizeof(jf_ban), "banip %s"ip_address);
                    
    SendRconCommand(jf_ban);
                    
    strmid (jf_ip[i],  "NONE"0strlen ("NONE"), 5);
                }
                break; 
            }
            else 
            {
                
    strmid (jf_ip[i],  ip_address0strlen (ip_address), 32);
                break;
            }
        } 

    в public OnGameModeInit()

    PHP код:
        for (new 0!= MAX_PLAYERSi++)
        {
            
    strmid jf_ip[i],  "NONE"0strlen ("NONE"), 5);
            
    jf_count[i] = 0;
        }
        
    SetTimer("JF_TIMER"5*1000true); 
    В конец мода

    PHP код:
    forward JF_TIMER();
    public 
    JF_TIMER()
    {
        for (new 
    0!= MAX_PLAYERSi++)
        {
            if(
    strcmp(jf_ip[i], "NONE"true))
            {
                new 
    jf_ban [64];
                
    format(jf_bansizeof(jf_ban), "unbanip %s"jf_ip[i]);
                
    SendRconCommand(jf_ban);
                break;
            }
            
    strmid (jf_ip[i],  "NONE"0strlen ("NONE"), 5);
        }
        return 
    1;

    Последний раз редактировалось Valera_Trefilov; 15.11.2014 в 22:37.

  2. #2
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    111
    Репутация:
    1 ±
    это типо флуд connectами?

  3. #3
    Аватар для James_Cruise
    Пользователь

    Статус
    Оффлайн
    Регистрация
    16.10.2014
    Сообщений
    11
    Репутация:
    0 ±
    Много у тебя заморочек,мой вариант куда лучше. Писал в браузерной строке,теоретически всё на ходу.
    PHP код:
    new Flood_ip[1000][20],Flood_time[1000];

    public 
    OnIncomingConnection(playeridip_address[], port)
    {
        if(!
    strcmp(ip_addressFlood_ip[playerid], true20))
        {
            if(
    GetTickCount() - Flood_time[playerid] < 1000)
            {
                
    BlockIpAddress(ip_address60 1000);
            }
        }
        
    Flood_time[playerid] = GetTickCount();
        
    Flood_ip[playerid] = ip_address;
        return 
    1;

    Последний раз редактировалось James_Cruise; 16.11.2014 в 00:10.

  4. #4
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    560
    Репутация:
    272 ±
    Вы оба в википедию вообще заходили? Первый 64 ячейки под айпи берет, второй 20, еще и массив огромный создает...

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

    Статус
    Оффлайн
    Регистрация
    16.10.2014
    Сообщений
    11
    Репутация:
    0 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    Вы оба в википедию вообще заходили? Первый 64 ячейки под айпи берет, второй 20, еще и массив огромный создает...
    Я алгоритм дал,там уже сам подкорректируй выделение памяти.

    Мой косяк,для IP хватает 16 ячеек.

  6. #6
    Аватар для Londlem
    Модератор

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,360
    Репутация:
    767 ±
    Цитата Сообщение от James_Cruise Посмотреть сообщение
    Я алгоритм дал,там уже сам подкорректируй выделение памяти.
    Только если будете создавать мануалы, уроки и т.д. на данном портале, обязательно прочтите это.

    А теперь после того, как прочитали ( или всё-таки нет? ):
    Цитата Сообщение от Правила раздела
    5. Следите за качеством своего кода. Если Вы думаете, что "кому надо, тот сам доделает" - можете не рассчитывать на одобрение своей работы. Такие темы обычно ждёт удаление.
    Вам будет дано 2 недели на улучшение качества Вашей работы. По истечению этого времени, если в работе не будет значимых изменений, она будет удалена.
    Возьмите на заметку как вы ( в малой степени ), так и топикстартер ( Valera_Trefilov ).
    Последний раз редактировалось Londlem; 18.11.2014 в 22:01.

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

    Статус
    Оффлайн
    Регистрация
    16.10.2014
    Сообщений
    11
    Репутация:
    0 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Только если будете создавать мануалы, уроки и т.д. на данном портале, обязательно прочтите это.

    А теперь после того, как прочитали ( или всё-таки нет? ):


    Возьмите на заметку как вы ( в малой степени ), так и топикстартер ( Valera_Trefilov ).
    Извиняюсь за малое недоразумение, код поправил.

    PHP код:
    new Flood_ip[MAX_PLAYERS][16],Flood_time[MAX_PLAYERS];

    public 
    OnIncomingConnection(playeridip_address[], port)
    {
        if(!
    strcmp(ip_addressFlood_ip[playerid], true16))
        {
            if(
    GetTickCount() - Flood_time[playerid] < 1000)
            {
                
    BlockIpAddress(ip_address60 1000);
            }
        }
        
    Flood_time[playerid] = GetTickCount();
        
    Flood_ip[playerid] = ip_address;
        return 
    1;

    Последний раз редактировалось James_Cruise; 18.11.2014 в 23:49.

  8. #8
    Аватар для Brendan
    Новичок

    Статус
    Оффлайн
    Регистрация
    25.02.2014
    Адрес
    Russia | Kirov
    Сообщений
    21
    Репутация:
    3 ±
    Цитата Сообщение от James_Cruise Посмотреть сообщение
    Извиняюсь за малое недоразумение, код поправил.

    PHP код:
    new Flood_ip[MAX_PLAYERS][16],Flood_time[MAX_PLAYERS];

    public 
    OnIncomingConnection(playeridip_address[], port)
    {
        if(!
    strcmp(ip_addressFlood_ip[playerid], true16))
        {
            if(
    GetTickCount() - Flood_time[playerid] < 1000)
            {
                
    BlockIpAddress(ip_address60 1000);
            }
        }
        
    Flood_time[playerid] = GetTickCount();
        
    Flood_ip[playerid] = ip_address;
        return 
    1;

    Код:
    C:\Users\LUI\Desktop\[SRP-Ua]\Full-GameRP\gamemodes\02\edit.pwn(31740) : error 017: undefined symbol "BlockIpAddress"
    C:\Users\LUI\Desktop\[bSRP-Uab]\Full-GameRP\gamemodes\02\edit.pwn(31744) : error 047: array sizes do not match, or destination array is too small
    Правельнее:


    К переменным:
    PHP код:
    new Flood_ip[MAX_PLAYERS][16],Flood_time[MAX_PLAYERS]; 
    В конец мода:
    PHP код:
    stock OnIncomingConnection(playeridip_address[], port

        if(!
    strcmp(ip_addressFlood_ip[playerid], true16)) 
        { 
            if(
    GetTickCount() - Flood_time[playerid] < 1000
            { 
                
    BlockIpAddress(ip_address60 1000); 
            } 
        } 
        
    Flood_time[playerid] = GetTickCount(); 
        
    Flood_ip[playerid] = ip_address
        return 
    1

    Последний раз редактировалось Brendan; 04.12.2014 в 19:15.

  9. #9
    Аватар для MΛRŠ
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.11.2014
    Сообщений
    7
    Репутация:
    0 ±
    не работает

  10. #10
    Аватар для #Gabriel
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.11.2014
    Сообщений
    76
    Репутация:
    3 ±
    Цитата Сообщение от James_Cruise Посмотреть сообщение
    Извиняюсь за малое недоразумение, код поправил.

    PHP код:
    new Flood_ip[MAX_PLAYERS][16],Flood_time[MAX_PLAYERS];

    public 
    OnIncomingConnection(playeridip_address[], port)
    {
        if(!
    strcmp(ip_addressFlood_ip[playerid], true16))
        {
            if(
    GetTickCount() - Flood_time[playerid] < 1000)
            {
                
    BlockIpAddress(ip_address60 1000);
            }
        }
        
    Flood_time[playerid] = GetTickCount();
        
    Flood_ip[playerid] = ip_address;
        return 
    1;

    Судя по коду, думаю у многих будет ошибка на
    PHP код:
    Flood_ip[playerid] = ip_address
    Все таки стоит повторно пересмотреть свой скрипт.
    P.S В вашем коде несовпадение массивов.

    - - - Добавлено - - -

    Цитата Сообщение от Brendan Посмотреть сообщение
    Код:
    C:\Users\LUI\Desktop\[SRP-Ua]\Full-GameRP\gamemodes\02\edit.pwn(31740) : error 017: undefined symbol "BlockIpAddress"
    C:\Users\LUI\Desktop\[bSRP-Uab]\Full-GameRP\gamemodes\02\edit.pwn(31744) : error 047: array sizes do not match, or destination array is too small
    Правельнее:


    К переменным:
    PHP код:
    new Flood_ip[MAX_PLAYERS][16],Flood_time[MAX_PLAYERS]; 
    В конец мода:
    PHP код:
    stock OnIncomingConnection(playeridip_address[], port

        if(!
    strcmp(ip_addressFlood_ip[playerid], true16)) 
        { 
            if(
    GetTickCount() - Flood_time[playerid] < 1000
            { 
                
    BlockIpAddress(ip_address60 1000); 
            } 
        } 
        
    Flood_time[playerid] = GetTickCount(); 
        
    Flood_ip[playerid] = ip_address
        return 
    1

    Что за бред? Вы вообще WIKI смотрите?
    Зачем стандартный public реализовывать как stock?
    Это не правильно.
    Последний раз редактировалось #Gabriel; 05.12.2014 в 13:08.

 

 
Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Ваши права

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