Anti-Afk lite #1 [email protected] f0 d2

Легкий Anti-Afk без нагрузки

  1. Крабос

    Крабос

    Сообщения:
    130
    Симпатии:
    55
    Пользователь Крабос разместил новый ресурс:

    Anti-Afk lite - Легкий Anti-Afk без нагрузки

    Узнать больше об этом ресурсе...
     
    BossKotoriiNeSmok нравится это.
  2. Drumanid

    Drumanid @komashchenko пили античит

    Сообщения:
    1.643
    Симпатии:
    1.214
    И в моей версии можно сделать без 'OnRunCmd'. Запомнить координаты при старте раунда 'всех игроков' и через определенное время, через таймер, снова проверить циклом 'всех игроков' и если координаты отличаются, то наказывать тех игроков у кого они остались прежние(координаты). Все просто, даже легче вашего будет и куда 'практичнее':biggrin:

    Мне вот всегда было интересно, где же вы все прячетесь когда нужно. Приходиться писать самому.
    Лень было делать квары и дополнительные 'плюшки'. Как то так, я это имел ввиду.
    PHP:
    #include <sdktools_functions>

    float fCP[MAXPLAYERS +1][3], fCI[MAXPLAYERS +1][3];

    public 
    Plugin myinfo = {name "AntiAfkLite"author "Drumanid"version "1.0"url "http://vk.com/drumanid"}

    public 
    void OnPluginStart() {HookEvent("round_freeze_end"RoundFreezeEnd);}

    public 
    Action RoundFreezeEnd(Event event, const char[] namebool dbc)
    {
        for (
    int i 1<= MaxClientsi++)
        {
            if(
    IsClientInGame(i) && IsPlayerAlive(i) && !IsFakeClient(i))
            {
                
    GetClientAbsOrigin(ifCP[i]);
            }
        }
     
        
    CreateTimer(15.0CheckPlayers_TIMER_FLAG_NO_MAPCHANGE);
    }

    public 
    Action CheckPlayers(Handle timer)
    {
        for (
    int i 1<= MaxClientsi++)
        {
            if(
    IsClientInGame(i) && IsPlayerAlive(i) && !IsFakeClient(i))
            {
                
    GetClientAbsOrigin(ifCI[i]);
                if(
    fCP[i][0] == fCI[i][0] && fCP[i][1] == fCI[i][1])
                {
                    
    ForcePlayerSuicide(i);
                    
    PrintToChat(i"AFK IS FORBIDDEN!");
                }
            }
        }
    }
     
    Последнее редактирование модератором: 31 окт 2017
    BossKotoriiNeSmok и Rostu нравится это.
  3. R1KO

    R1KO всё тлен Супермодератор

    Сообщения:
    8.167
    Симпатии:
    5.635
    @Lisoh, На ксс это не будет корректно работать т.к. В round_start игроки еще не спавнились и их координаты отличаются от координат спавна + помню был баг когда координаты при спавне отличаются от координат через пол секунды после спавна, лечил таймером.
    В ксго из проверки автоматически выпадают все, кто спавнится после начала раунда
     
  4. Drumanid

    Drumanid @komashchenko пили античит

    Сообщения:
    1.643
    Симпатии:
    1.214
    ок.

    Меняем событие старта раунда на round_freeze_end. Думаю тогда проблема будет решена.
    Для тех кто не понял о чем речь...

    PHP:
    public void OnPluginStart() {HookEvent("round_start"RoundStart);}
    >>
    PHP:
    public void OnPluginStart() {HookEvent("round_freeze_end"RoundFreezeEnd);}
    PHP:
    //Можно было и не менять. Если и делаем, то нормально.
    public Action RoundStart(Event event, const char[] namebool dbc)
    >>
    PHP:
    public Action RoundFreezeEnd(Event event, const char[] namebool dbc)
     
  5. R1KO

    R1KO всё тлен Супермодератор

    Сообщения:
    8.167
    Симпатии:
    5.635
     
  6. Drumanid

    Drumanid @komashchenko пили античит

    Сообщения:
    1.643
    Симпатии:
    1.214
    Что то я не могу тебя понять. Если просто подумать логически, если координаты уже вполне так скажем нормализовались.. То должно же быть все в порядке ?

    Смотри, как я это понимаю. Начался раунд, после возродились игроки, дальше идет то событие которое я сейчас заменил(по стандарту, если квар не изменен - это 3 секунды) и тогда уже идет подсчет игроков в цикле. Разве это не решает проблему?

    Я пока видимо сам не столкнусь с этой проблемой, не пойму. Создать таймер в событии, после создавать таймер в таймере и только тогда считать игроков? В чем прикол?(round_start > timer > timer):ac:
     
    Последнее редактирование модератором: 31 окт 2017
  7. R1KO

    R1KO всё тлен Супермодератор

    Сообщения:
    8.167
    Симпатии:
    5.635
    @Lisoh, я имею ввиду спавн игроков, которые вошли в команду уже после начала раунда.
    И описанная тобой последовательность актуальна на ксс но не на ксго.
    На ксго идет так:
    1. round_prestart
    2. player_spawn
    3. round_start
    4. round_freeze_end
     
  8. Утка

    Утка Шкипер

    Сообщения:
    694
    Симпатии:
    118
    @Крабос, как по нагрузке на сервер, а то у меня уже пик..:bomb:
     
  9. R1KO

    R1KO всё тлен Супермодератор

    Сообщения:
    8.167
    Симпатии:
    5.635
    Посмотрел оба варианта AntiAfk и Anti-Afk lite

    Anti-Afk lite:
    • Плюсы
      • RequestFrame в player_spawn это хорошо по причине описанной мной нексколькими постами выше.
      • Начальные координаты берутся при спавне, а не начале раунда - тоже гуд.
    • Минусы
      • Для реагирования плагина должно пройти несколько раундов (sm_afk_check)
      • Строгая проверка (fAFKPos[client][0] == fCheckPos[0] && fAFKPos[client][1] == fCheckPos[1]). ИМХО - должен быть допуск на изменение координат в разумных пределах. Тем более что проверка происходит при смерти и координаты могут чуток отклониться

    AntiAfk:
    • Плюсы
      • Проверка на кнопки в OnPlayerRunCmd, а следовательно моментальное реагирование.
    • Минусы
      • Слишком много таймеров. Можно было проверять всех игроков в одном таймере
      • Слишком частые проверки (интервал таймера) - 5 сек с головой хватает.
     
    kilroy нравится это.
  10. Крабос

    Крабос

    Сообщения:
    130
    Симпатии:
    55
    Да, коорды изменятся если ловить в событии player_death.
    Но если поставить EventHookMode_Pre, т.е за кадр до смерти, то отображаются нормально
     
  11. Paranoiiik

    Paranoiiik Read Only

    Сообщения:
    437
    Симпатии:
    188
    Круто! А такое можно под SM 1.6.3 для 34 версии реализовать?
     
  12. All

    All Non est tractata...

    Сообщения:
    456
    Симпатии:
    165
    Оффтоп
    А так все good!
     

    Вложения:

    • krs_afk_lite.sp
      Размер файла:
      2,2 КБ
      Просмотров:
      16
  13. Гамбез

    Гамбез

    Сообщения:
    52
    Симпатии:
    0
    Как сделать имунитет для админов, а то их тоже кикает
     
  14. kleuser

    kleuser

    Сообщения:
    1.361
    Симпатии:
    387
    @Крабос, сделай иммунитет по флагам пожалуйста.