1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  1. Сильвестр

    Сильвестр Пользователь

    Регистрация:
    9 июн 2017
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Всем доброго времени суток.
    Проблема: На сервере в наблюдателях сидит бот (New IP.....). Установлен Antispam от неугомона, но он не меняет ему никнейм и он сидит 24/7 там). Плагин прописан выше lite translit'a.
    Народ можете помочь с проблемой?
    Спасибо за внимание!
     
  2. Le$hiy

    Le$hiy Постоялец

    Регистрация:
    10 июн 2017
    Сообщения:
    121
    Симпатии:
    40
    Пол:
    Мужской
    Сильвестр, что за плагин? Дай ссылку или код скинь.
     
  3. Сильвестр

    Сильвестр Пользователь

    Регистрация:
    9 июн 2017
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Код:
    #include <amxmodx>
    #include <fakemeta>
    
    #define BLOCK_NAME_SPAM                // Включает блокировку частой смены ника.
    #define TIME_WAIT    5.0            // Время между сменами ника [Не работает, если выключен BLOCK_NAME_SPAM]
    #define DEFAULT_NAME    "*****"    // Имя, на которое менять. Меняет только визуально, при выходе сервера будет старый ник.
    #define TRUE_KEY    "********"       
    /*
        TRUE_KEY - Разрешенный ключ в нике/чате. Если в DEFAULT_NAME указан сайт, то сюда укажите сайт, иначе словите Reliable channel overflow
        Если в строке содержится это (и макроса TRUE_KEY), то строка игнорируется, то есть вернет как валидную - не реклама.
        Например:
                1. "Все на neugomon.ru" - будет пропущено в чат
                2. "Все на c-s.net.ua"  - будет заблокировано
    */                       
    new const g_sBadKeys[][] =
    {
        "skype", "icq", "connect", "guns", ":27",
        "http:", "https:", "www.", ".net", ".com", ".ua", ".ru", ".info", ".org", ".tv", ".su", ".biz", ".eu", ".uc", ".ee", ".name", ".ucoz",
        ".net", ".de", ".uk", ".lv", ".at", ".3dn", ".my", ".su", ".do", ".am", ".es", ".hu", ".ae", ".po", ".pl", ".lt", ".ro"
    }
    
    #define FM_ChangeName(%1,%2,%3) engfunc(EngFunc_SetClientKeyValue, %1, %3, "name", %2)
    #define    GetBit(%1,%2)        (%1 & (1 << (%2 & 31)))
    #define    SetBit(%1,%2)        %1 |= (1 << (%2 & 31))
    #define    ResetBit(%1,%2)        %1 &= ~(1 << (%2 & 31))
    new g_bConnected, g_bChecked;
    
    public plugin_init()
    {
        register_plugin("AntiSpam", "1.0", "Neugomon");
        
        register_forward(FM_ClientUserInfoChanged, "FmClientUserInfoChanged");
        register_clcmd("say", "HookSay");
        register_clcmd("say_team", "HookSay");
    }
    
    public client_putinserver(id)
        SetBit(g_bConnected, id);
    
    public client_disconnect(id)
    {
        ResetBit(g_bConnected, id);
        ResetBit(g_bChecked, id);
    }
    
    public FmClientUserInfoChanged(pClient, Infobuffer)
    {
        if(!GetBit(g_bConnected, pClient))
            return FMRES_IGNORED;
            
        static sNewName[32], sOldName[32];
        get_user_name(pClient, sOldName, charsmax(sOldName));
        engfunc(EngFunc_InfoKeyValue, Infobuffer, "name", sNewName, charsmax(sNewName));
        if(!GetBit(g_bChecked, pClient) || strcmp(sNewName, sOldName))
        {
    #if defined BLOCK_NAME_SPAM
            if(GetBit(g_bChecked, pClient))
            {
                if(is_user_alive(pClient))
                {
                    static Float:flCurrentTime, Float:flWaitName[33];
                    if((flCurrentTime = get_gametime()) < flWaitName[pClient])
                    {
                        flWaitName[pClient] = flCurrentTime + TIME_WAIT;
                        FM_ChangeName(pClient, sOldName, Infobuffer);
                        return FMRES_HANDLED; // Если не блочится мессага в чате, то замените FMRES_HANDLED на FMRES_SUPERCEDE
                    }
                    flWaitName[pClient] = flCurrentTime + TIME_WAIT;
                }
            }   
    #endif   
            if(!IsValidString(sNewName))
                FM_ChangeName(pClient, DEFAULT_NAME, Infobuffer);
            else
            {
                new bool:bChange;
                for(new i; sNewName[i] != '^0'; i++)
                {
                    if(sNewName[i] == '#' || sNewName[i] == '+')
                    {
                        sNewName[i] = ' ';
                        bChange = true;
                    }   
                }
                if(bChange) FM_ChangeName(pClient, sNewName, Infobuffer);
            }
            SetBit(g_bChecked, pClient);   
        }   
        return FMRES_IGNORED;
    }
    
    public HookSay(id)
    {
        static sMsg[128]; read_args(sMsg, charsmax(sMsg));
        if(!sMsg[0]) return PLUGIN_HANDLED;
        
        return (IsValidString(sMsg)) ? PLUGIN_CONTINUE : PLUGIN_HANDLED;
    }
    
    bool:IsValidString(string[])
    {
        if(containi(string, TRUE_KEY) != -1) return true;
        for(new i; i < sizeof g_sBadKeys; i++)
            if(containi(string, g_sBadKeys[i]) != -1) return false;
        return true;   
    }
     
  4. Le$hiy

    Le$hiy Постоялец

    Регистрация:
    10 июн 2017
    Сообщения:
    121
    Симпатии:
    40
    Пол:
    Мужской
    Сильвестр, не знал, что название плагина в версии 1.0 было таким). У меня так
    Код:
    register_plugin("Block All Adverts", "1.3", "neygomon");
    Но суть не в этом. Даже версия 1.3 тебя не спасет. Плагин будет менять рекламный ник только при спавне игрока, поэтому от спектров не поможет.
    Можешь использовать такой плагин, но он будет кикать на стадии коннекта:
    PHP:
    #include amxmodx

    public plugin_init()
    {
        
    register_plugin("SpamName Block""0.1""neygomon")
    }

    public 
    client_connect(id)
    {
        new 
    name[32]
        
    get_user_info(id"name"name31);
       
        if(
    contain(name".1") != -|| contain(name".2") != -|| contain(name":27") != -1)     // тут можешь добавить еще что-то от себя
        
    {
            new 
    ip[25]; get_user_ip(idip24);
            
    log_to_file("spam.log""Player %s[%s] dropped"nameip);
            
    server_cmd("kick #%d ^"Смени ник^""get_user_userid(id));
        }
    }
    Он кикает игроков, в никах которых содержится ".1", ".2" или ":27". Можешь добавить еще что-то от себя.
    Это конечно минус для онлайна, но зато железная защита от рекламных ников. Можешь использовать оба плагина в связке и настроить их по своему усмотрению.
     
  5. Сильвестр

    Сильвестр Пользователь

    Регистрация:
    9 июн 2017
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Версию и название я поменял (не знаю зачем xD), оставил лишь автора плагина.
    Спасибо тебе за помощь!
    --- Сообщения объединены 27 июн 2017 ---
    Le$hiy, Подскажешь актуальны ли данные плагины?
    banipfakes от Safety1st
    x_client_detector
     
  6. Le$hiy

    Le$hiy Постоялец

    Регистрация:
    10 июн 2017
    Сообщения:
    121
    Симпатии:
    40
    Пол:
    Мужской
  7. Сильвестр

    Сильвестр Пользователь

    Регистрация:
    9 июн 2017
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Le$hiy, + (если нет, то можешь аналог подсказать)
     
  8. Le$hiy

    Le$hiy Постоялец

    Регистрация:
    10 июн 2017
    Сообщения:
    121
    Симпатии:
    40
    Пол:
    Мужской
    Сильвестр, вместо amx-плагина x_client_detector я бы метамод-плагин fakedetector от Асмодая. Нагрузка должна быть меньше. А banipfakes ведь по сути тоже предназначен для решения проблемы с фейками? Значит он не нужен.
    Вообще почитай статью (надеюсь и тут она когда-нибудь "родится") Защита Counter Strike Сервера
    --- Сообщения объединены 27 июн 2017 ---
    А вообще меня Dproto последней версии всегда спасал от фейков. Правда сейчас не знаю, как там дела с этим на hlds обстоят.
     
  9. Сильвестр

    Сильвестр Пользователь

    Регистрация:
    9 июн 2017
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Le$hiy, ban IP - не дает зайти с 1 ip несколько игрокам.
    Спасибо тебе за помощь, благодарен!
     
  10. Le$hiy

    Le$hiy Постоялец

    Регистрация:
    10 июн 2017
    Сообщения:
    121
    Симпатии:
    40
    Пол:
    Мужской
    Ну и зачем это в конечном итоге нужно? Для фейков, не? Или ты хочешь запретить играть бедным студентам, теснящимся в однушке?
     
  11. shram47

    shram47 Пользователь

    Регистрация:
    22 июн 2017
    Сообщения:
    120
    Симпатии:
    33
    Пол:
    Мужской
  12. Le$hiy

    Le$hiy Постоялец

    Регистрация:
    10 июн 2017
    Сообщения:
    121
    Симпатии:
    40
    Пол:
    Мужской
    shram47, плагин тот, но использовать его можно шире