[ANY] GameChatFilter v1.7.0.2

Полноценный фильтр чата

  1. Grey83

    Grey83 похухоль

    Сообщения:
    2.255
    Симпатии:
    1.099
    @Крузяра, у Skeriiz, в данном случае, всё равно задействована внешняя переменная g_iWarnCount[client], так что менять всё равно придётся.
    Если уж делать такое, то делать библиотеку функций, вроде smlib.
     
  2. pasha133196

    pasha133196

    Сообщения:
    72
    Симпатии:
    5
    Не знаю чем считать, то-ли багом, то-ли фичей. Если уже есть мут и продолжаешь в чат писать, то выдаются предупреждения и по окончанию обновляет действующий мут. Поэтому всё же баг, так как можно получить мут за маты и тем самым сбить предыдущий.
     
  3. Skeriiz

    Skeriiz Потерянный UDP

    Сообщения:
    492
    Симпатии:
    273
    мут и гаг - разные вещи, зачем мутить, если игрок в чате пишет?
     
  4. pasha133196

    pasha133196

    Сообщения:
    72
    Симпатии:
    5
    Я так выразился, речь шла про гаг.
     
  5. Skeriiz

    Skeriiz Потерянный UDP

    Сообщения:
    492
    Симпатии:
    273
    Не используйте пока Gag/Mute/Silence
     
  6. pasha133196

    pasha133196

    Сообщения:
    72
    Симпатии:
    5
    Также если имеется к примеру перманентный мут, и получаешь гаг от плагина, то перманентный мут переходит в перманентное отключение чата и микро.
    --------------------
    Данный баг скорее всё же относиться к МА.
     
    Последнее редактирование: 17 янв 2019
  7. Skeriiz

    Skeriiz Потерянный UDP

    Сообщения:
    492
    Симпатии:
    273
    Пользователь Skeriiz обновил ресурс [CHAT] AnyChatFilter новой записью:

    Update 1.6

    Узнать больше об этом обновлении...
     
  8. Skeriiz

    Skeriiz Потерянный UDP

    Сообщения:
    492
    Симпатии:
    273
    Последнее редактирование: 19 янв 2019
  9. Rezder

    Rezder

    Сообщения:
    97
    Симпатии:
    5
    А можете скинуть smx без МА
     
  10. Skeriiz

    Skeriiz Потерянный UDP

    Сообщения:
    492
    Симпатии:
    273
    Замените/закомментируйте и компильните под ваши нужды
    upload_2019-1-19_16-47-32.png
     
  11. Rezder

    Rezder

    Сообщения:
    97
    Симпатии:
    5
    т.е если нет МА то просто эту строчку удалить?
     
  12. Skeriiz

    Skeriiz Потерянный UDP

    Сообщения:
    492
    Симпатии:
    273
    удалите...
     
  13. Крузяра

    Крузяра Супермодератор

    Сообщения:
    6.239
    Симпатии:
    4.922
    @Skeriiz, сделай по-человечески для людей. tryinclude + if defined вместе с LibraryExists() прямо в функциях + в AskPluginLoad2() - MarkNativeAsOptional().
     
  14. Skeriiz

    Skeriiz Потерянный UDP

    Сообщения:
    492
    Симпатии:
    273
  15. Kllaster

    Kllaster

    Сообщения:
    39
    Симпатии:
    2
    @Skeriiz, с фразами тоже работает '~' ?
     
  16. Skeriiz

    Skeriiz Потерянный UDP

    Сообщения:
    492
    Симпатии:
    273
    нет, но зачем им это?
     
  17. Kllaster

    Kllaster

    Сообщения:
    39
    Симпатии:
    2
    Ладно, ты прав
     
  18. Skeriiz

    Skeriiz Потерянный UDP

    Сообщения:
    492
    Симпатии:
    273
    Пользователь Skeriiz обновил ресурс [CHAT] AnyChatFilter новой записью:

    Upd 1.6.3

    Узнать больше об этом обновлении...
     
  19. Крузяра

    Крузяра Супермодератор

    Сообщения:
    6.239
    Симпатии:
    4.922
    Дошли руки посмотреть исходник.
    PHP:
    ConVar cvar;

    (
    cvar CreateConVar("sm_acf_ipfilter""1""Фильтр IP в чате"_true0.0true1.0)).AddChangeHook(IsIPBlock);
    За такое пора убивать уже. Из плагина в плагин мигрирует. Уже достало.
    Это не оптимизация ни капли, и производительность не повышает. Скорее наоборот, ухудшает, ибо при создании cvar, он ещё зануляется сразу же. В итоге лишний вызов.

    PHP:
    (cvar CreateConVar("sm_acf_ipfilter""1""Фильтр IP в чате"_true0.0true1.0)).AddChangeHook(IsIPBlock);
    CONVARHOOK(IsIPBlockcvar);
    Вызов хука лишён смысла сразу после создания переменной. Особенно до AutoExecConfig().
    С конфигами, кстати, веселье при старте плагина. Довольно часто наблюдаю картину, что сервер попросту не вызывает хуки переменных при первоначальном чтении конфига...

    PHP:
    public void OnLibraryAdded(const char[] name)
    {
        if(!
    StrEqual(name"materialadmin") && !StrEqual(name"sourcecomms") && !StrEqual(name"sourcebans")){
            return;
        }

        
    g_srSystem UpdateSystem();
    }

    public 
    void OnLibraryRemoved(const char[] name)
    {
        if(!
    StrEqual(name"materialadmin") && !StrEqual(name"sourcecomms") && !StrEqual(name"sourcebans")){
            return;
        }

        
    g_srSystem UpdateSystem();
    }
    Вот тут уже можно сделать "мнимую" оптимизацию, создав отдельную функцию, и вызывая её. DRY, в общем.

    PHP:
    g_Enabled = (!g_bEnabledFilter[IP_LIST] && !g_bEnabledFilter[CENSURE] && !g_bEnabledFilter[SERVMSG]) ? false true;
    Возможно, я сейчас тайну года открою, но результаты подобных if-выражений всегда возвращают boolean, и зачем тернарный оператор здесь применяется - неясно.
    Можно сократить до:
    PHP:
    g_Enabled = !(!g_bEnabledFilter[IP_LIST] && !g_bEnabledFilter[CENSURE] && !g_bEnabledFilter[SERVMSG]);
    PHP:
    public void OnClientPutInServer(int iClient)
    {
        if(!
    iClient || !IsClientInGame(iClient) || IsFakeClient(iClient)){
            return;
        }
    Такое я вижу впервые. В частности, чтобы после захода игрока, его индекс был невалидным, или он был не в игре.
    Про Fake молчу, ибо ок.

    PHP:
    public Action OnClientSayCommand(int client, const char[] command, const char[] sArgs)
    {
        if(!
    g_Enabled || !client || !IsClientInGame(client) || IsAlreadeChatMuted(client))    {
            
    //LogMessage("NOT ENABLED");
            
    return Plugin_Continue;
        }
    Тоже самое, что и выше.
    Если ещё отрицательный индекс можно допустить (в чат написали по ркону или с консоли сервера), то чтобы игрок писал в чат, не находясь на нём - нет.
     
    Wightjeck нравится это.
  20. Skeriiz

    Skeriiz Потерянный UDP

    Сообщения:
    492
    Симпатии:
    273
    @Крузяра, не задавался вопросом оптимизации кода, на самом деле, там горазда больше моментов, которые стоит изменить, но ... to be continued.
     
    Wightjeck нравится это.