Afk & High ping Kicker v1.3

Одобрените от нас плъгини. Моля, докладвайте ако забележите бъг с някой от плъгините в този раздел.
Аватар
Unbr3akable
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Re: Afk & High ping Kicker v1.1a

Мнение от Unbr3akable » 01 Фев 2017, 23:46

Добра идея е да се направи някакво наказание след кика. Например да има забрана да се влиза в сървъра за 1 минута. Защото например, мен ще ме кикне за AFK/SPEC и ще си вляза пак в сървъра докато не изтече отново времето за AFK/SPEC, и така мога да продължа вечно.

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Re: Afk & High ping Kicker v1.1a

Мнение от TheRedShoko » 02 Фев 2017, 09:19

Хм ще си помисля да го добавя като cvar в следващата версия.

Аватар
d3ath2435
Извън линия
Рекламатор
Рекламатор
Мнения: 542
Регистриран на: 04 Фев 2017, 19:59
Се отблагодари: 64 пъти
Получена благодарност: 127 пъти
Обратна връзка:

Re: Afk & High ping Kicker v1.1a

Мнение от d3ath2435 » 24 Мар 2017, 17:01

Как да премахнем кикването на спектатори, понеже ако играч реши да спеква друг играч заради хак, докато прави демото текат минутите и при достигане на времето за кик го киква ?

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Re: Afk & High ping Kicker v1.1a

Мнение от TheRedShoko » 24 Мар 2017, 17:34

Задай cvar-a за максимално време като спектатор на някакво голямо число. Ще добавя cvar за изключване на всяка една опция в следващата версия.

Аватар
Unbr3akable
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Re: Afk & High ping Kicker v1.1a

Мнение от Unbr3akable » 25 Мар 2017, 00:49

Или може да направиш опцията за кик, ако играчът е спектатор за повече от X секунди да се изключва на играч, който записва демо.

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Re: Afk & High ping Kicker v1.1a

Мнение от TheRedShoko » 25 Мар 2017, 11:32

Как предлагаш да проверя дали играчът записва демо? И ако сървъра има auto demo recorder, какъвто има в повечето сървъри, се обезмисля spec kick-a. Просто ще се добави cvar..

Аватар
Goddness
Извън линия
Потребител
Потребител
Мнения: 1812
Регистриран на: 20 Май 2017, 11:47
Местоположение: Някъде по света
Се отблагодари: 141 пъти
Получена благодарност: 187 пъти
Обратна връзка:

Re: Afk & High ping Kicker v1.1a

Мнение от Goddness » 21 Май 2017, 19:14

Здравейте, искам когато добавя плъгина в сървъра киква спек ботовете, може ли да се направи проверка дали е играча е бот и, ако е бот да не го киква?

Аватар
JustInCase
Извън линия
Потребител
Потребител
Мнения: 582
Регистриран на: 14 Окт 2016, 23:31
Се отблагодари: 4 пъти
Получена благодарност: 15 пъти

Re: Afk & High ping Kicker v1.1a

Мнение от JustInCase » 21 Май 2017, 19:20

nameless. написа:Здравейте, искам когато добавя плъгина в сървъра киква спек ботовете, може ли да се направи проверка дали е играча е бот и, ако е бот да не го киква?

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <cstrike>
#include <engine>
#include <WPMGPrintChatColor>

#define VERSION "1.1a"

#define KICK_IMMUNITY ADMIN_IMMUNITY

enum _:iPunishments
{
    KICK = 1,
    REDIRECT
}

new p_iMaxPing, p_flMaxAfkTime, p_flMaxSpecTime, p_iPingCheckTime, p_iPunishWay, 
p_szRedirectIP, g_iMaxPlayers;
new iPingChecks[33], iUserTotalPing[33], Float:flUserAfkTime[33], bool:blPrintedWarn[33];

new const g_iCheckButtons = ( IN_ATTACK | IN_JUMP | IN_DUCK | IN_FORWARD | IN_BACK | IN_USE | IN_CANCEL | IN_LEFT | IN_RIGHT | IN_MOVELEFT | IN_MOVERIGHT | IN_ATTACK2 | IN_RUN | IN_RELOAD | IN_ALT1 | IN_SCORE );

new const szCheckerClass[] = "kick_manager_checker";

public plugin_init()
{
    register_plugin("Afk & High ping Kicker", VERSION, "TheRedShoko @ AMXX-BG.Info");
    register_cvar("afk_hp_kicker", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED);
    
    p_iMaxPing = register_cvar("kick_manager_maxping", "120");
    p_flMaxAfkTime = register_cvar("kick_manager_afktime", "90.0");
    p_flMaxSpecTime = register_cvar("kick_manager_spectime", "30.0");
    p_iPingCheckTime = register_cvar("kick_manager_pingtime", "5");
    p_iPunishWay = register_cvar("kick_manager_punish", "1");
    p_szRedirectIP = register_cvar("kick_manager_redirectip", "127.0.0.1:27015");
    
    new iEnt = create_entity("info_target");
    
    if (iEnt)
    {
        register_think(szCheckerClass, "CheckUsersStatus");
        
        entity_set_string(iEnt, EV_SZ_classname, szCheckerClass);
        entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1);
    }
    
    g_iMaxPlayers = get_maxplayers();
}

public client_putinserver(id)
{
    ClearVariables(id);
}

public CheckUsersStatus(iEnt)
{
    if (!is_valid_ent(iEnt)) return;
    
    static iUserPing, iUserLoss;
    
    static Float:flMaxAfkTime;
    flMaxAfkTime = get_pcvar_float(p_flMaxAfkTime);
    
    static Float:flMaxSpecTime;
    flMaxSpecTime = get_pcvar_float(p_flMaxSpecTime);
    
    static iMaxPing;
    iMaxPing = get_pcvar_num(p_iMaxPing);
    
    static iPunishment;
    iPunishment = get_pcvar_num(p_iPunishWay);
    
    static szRedirectIP[16];
    if (iPunishment == REDIRECT)
    {
        get_pcvar_string(p_szRedirectIP, szRedirectIP, charsmax(szRedirectIP));
    }
    
    static szPunishment[32];
    
    switch (iPunishment)
    {
        case KICK: formatex(szPunishment, charsmax(szPunishment), "kicked");
        case REDIRECT: formatex(szPunishment, charsmax(szPunishment), "redirected");
    }
    
    for (new i = 1; i <= g_iMaxPlayers; i++)
    {
        if (!is_user_connected(i) || get_user_flags(i) & KICK_IMMUNITY || is_user_bot(i)) continue;
        
        if (cs_get_user_team(i) == CS_TEAM_SPECTATOR || cs_get_user_team(i) == CS_TEAM_UNASSIGNED)
        {
            flUserAfkTime[i] += 0.1;
            
            if (flMaxSpecTime - flUserAfkTime[i] <= 15.0 && !blPrintedWarn[i])
            {
                PrintChatColor(i, PRINT_COLOR_PLAYERTEAM, "!g[!tSpecKicker!g]!y You will get %s after!g 15!y seconds for being spectator!",
                szPunishment);
                blPrintedWarn[i] = true;
            }
            
            if (flUserAfkTime[i] >= flMaxSpecTime)
            {
                new szName[32];
                get_user_name(i, szName, charsmax(szName));
                
                PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[!tSpecKicker!g]!y Player!g %s!y got %s for being!t Spectator!y for more than!t %i!y seconds!",
                szName, szPunishment, floatround(flMaxSpecTime));
                
                switch (iPunishment)
                {
                    case KICK: server_cmd("kick #%i ^"You got kicked for being afk more than %i seconds!^"", get_user_userid(i), floatround(flMaxSpecTime));
                    case REDIRECT: client_cmd(i, "wait;wait;wait;wait;wait;^"connect^" %s", szRedirectIP);
                }
                
                ClearVariables(i);
            }
        }
        else if (!(entity_get_int(i, EV_INT_button) & g_iCheckButtons) && is_user_alive(i))
        {
            flUserAfkTime[i] += 0.1;
            
            if (flMaxAfkTime - flUserAfkTime[i] <= 15.0 && !blPrintedWarn[i])
            {
                PrintChatColor(i, PRINT_COLOR_PLAYERTEAM, "!g[!tAfkKicker!g]!y You will get %s after!g 15!y seconds for being AFK!",
                szPunishment);
                blPrintedWarn[i] = true;
            }
            
            if (flUserAfkTime[i] >= flMaxAfkTime)
            {
                new szName[32];
                get_user_name(i, szName, charsmax(szName));
                
                PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[!tAfkKicker!g]!y Player!g %s!y got %s for being!t AFK!y for more than!t %i!y seconds!",
                szName, szPunishment, floatround(flMaxAfkTime));
                
                switch (iPunishment)
                {
                    case KICK: server_cmd("kick #%i ^"You got kicked for being afk more than %i seconds!^"", get_user_userid(i), floatround(flMaxAfkTime));
                    case REDIRECT: client_cmd(i, "wait;wait;wait;wait;wait;^"connect^" %s", szRedirectIP);
                }
                
                ClearVariables(i);
            }
        }
        else
        {
            flUserAfkTime[i] = 0.0;
            blPrintedWarn[i] = false;
        }
        
        get_user_ping(i, iUserPing, iUserLoss);
        iUserTotalPing[i] += iUserPing;
        iPingChecks[i]++;
        
        if (iPingChecks[i] >= get_pcvar_num(p_iPingCheckTime) && (iUserTotalPing[i] / iPingChecks[i]) >= iMaxPing)
        {
            new szName[32];
            get_user_name(i, szName, charsmax(szName));
                
            PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[!tHighPingKicker!g]!y Player!g %s!y got %s for having more than!t AFK!y for more than!t %ims!y!",
            szName, szPunishment, iMaxPing);
            
            switch (iPunishment)
            {
                case KICK: server_cmd("kick #%i ^"You got kicked for having more more than %ims!^"", get_user_userid(i), iMaxPing);
                case REDIRECT: client_cmd(i, "wait;wait;wait;wait;wait;^"connect^" %s", szRedirectIP);
            }
            
            ClearVariables(i);
        }
    }
    
    entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1);
}

ClearVariables(id)
{
    flUserAfkTime[id] = 0.0;
    iPingChecks[id] = 0;
    iUserTotalPing[id] = 0;
    blPrintedWarn[id] = false;
} 
Тествай.
MANSION - HNS : 45.144.155.99:27026
ONLINE

Аватар
Goddness
Извън линия
Потребител
Потребител
Мнения: 1812
Регистриран на: 20 Май 2017, 11:47
Местоположение: Някъде по света
Се отблагодари: 141 пъти
Получена благодарност: 187 пъти
Обратна връзка:

Re: Afk & High ping Kicker v1.1a

Мнение от Goddness » 21 Май 2017, 19:37

JustInCase написа:
nameless. написа:Здравейте, искам когато добавя плъгина в сървъра киква спек ботовете, може ли да се направи проверка дали е играча е бот и, ако е бот да не го киква?

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <cstrike>
#include <engine>
#include <WPMGPrintChatColor>

#define VERSION "1.1a"

#define KICK_IMMUNITY ADMIN_IMMUNITY

enum _:iPunishments
{
    KICK = 1,
    REDIRECT
}

new p_iMaxPing, p_flMaxAfkTime, p_flMaxSpecTime, p_iPingCheckTime, p_iPunishWay, 
p_szRedirectIP, g_iMaxPlayers;
new iPingChecks[33], iUserTotalPing[33], Float:flUserAfkTime[33], bool:blPrintedWarn[33];

new const g_iCheckButtons = ( IN_ATTACK | IN_JUMP | IN_DUCK | IN_FORWARD | IN_BACK | IN_USE | IN_CANCEL | IN_LEFT | IN_RIGHT | IN_MOVELEFT | IN_MOVERIGHT | IN_ATTACK2 | IN_RUN | IN_RELOAD | IN_ALT1 | IN_SCORE );

new const szCheckerClass[] = "kick_manager_checker";

public plugin_init()
{
    register_plugin("Afk & High ping Kicker", VERSION, "TheRedShoko @ AMXX-BG.Info");
    register_cvar("afk_hp_kicker", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED);
    
    p_iMaxPing = register_cvar("kick_manager_maxping", "120");
    p_flMaxAfkTime = register_cvar("kick_manager_afktime", "90.0");
    p_flMaxSpecTime = register_cvar("kick_manager_spectime", "30.0");
    p_iPingCheckTime = register_cvar("kick_manager_pingtime", "5");
    p_iPunishWay = register_cvar("kick_manager_punish", "1");
    p_szRedirectIP = register_cvar("kick_manager_redirectip", "127.0.0.1:27015");
    
    new iEnt = create_entity("info_target");
    
    if (iEnt)
    {
        register_think(szCheckerClass, "CheckUsersStatus");
        
        entity_set_string(iEnt, EV_SZ_classname, szCheckerClass);
        entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1);
    }
    
    g_iMaxPlayers = get_maxplayers();
}

public client_putinserver(id)
{
    ClearVariables(id);
}

public CheckUsersStatus(iEnt)
{
    if (!is_valid_ent(iEnt)) return;
    
    static iUserPing, iUserLoss;
    
    static Float:flMaxAfkTime;
    flMaxAfkTime = get_pcvar_float(p_flMaxAfkTime);
    
    static Float:flMaxSpecTime;
    flMaxSpecTime = get_pcvar_float(p_flMaxSpecTime);
    
    static iMaxPing;
    iMaxPing = get_pcvar_num(p_iMaxPing);
    
    static iPunishment;
    iPunishment = get_pcvar_num(p_iPunishWay);
    
    static szRedirectIP[16];
    if (iPunishment == REDIRECT)
    {
        get_pcvar_string(p_szRedirectIP, szRedirectIP, charsmax(szRedirectIP));
    }
    
    static szPunishment[32];
    
    switch (iPunishment)
    {
        case KICK: formatex(szPunishment, charsmax(szPunishment), "kicked");
        case REDIRECT: formatex(szPunishment, charsmax(szPunishment), "redirected");
    }
    
    for (new i = 1; i <= g_iMaxPlayers; i++)
    {
        if (!is_user_connected(i) || get_user_flags(i) & KICK_IMMUNITY || is_user_bot(i)) continue;
        
        if (cs_get_user_team(i) == CS_TEAM_SPECTATOR || cs_get_user_team(i) == CS_TEAM_UNASSIGNED)
        {
            flUserAfkTime[i] += 0.1;
            
            if (flMaxSpecTime - flUserAfkTime[i] <= 15.0 && !blPrintedWarn[i])
            {
                PrintChatColor(i, PRINT_COLOR_PLAYERTEAM, "!g[!tSpecKicker!g]!y You will get %s after!g 15!y seconds for being spectator!",
                szPunishment);
                blPrintedWarn[i] = true;
            }
            
            if (flUserAfkTime[i] >= flMaxSpecTime)
            {
                new szName[32];
                get_user_name(i, szName, charsmax(szName));
                
                PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[!tSpecKicker!g]!y Player!g %s!y got %s for being!t Spectator!y for more than!t %i!y seconds!",
                szName, szPunishment, floatround(flMaxSpecTime));
                
                switch (iPunishment)
                {
                    case KICK: server_cmd("kick #%i ^"You got kicked for being afk more than %i seconds!^"", get_user_userid(i), floatround(flMaxSpecTime));
                    case REDIRECT: client_cmd(i, "wait;wait;wait;wait;wait;^"connect^" %s", szRedirectIP);
                }
                
                ClearVariables(i);
            }
        }
        else if (!(entity_get_int(i, EV_INT_button) & g_iCheckButtons) && is_user_alive(i))
        {
            flUserAfkTime[i] += 0.1;
            
            if (flMaxAfkTime - flUserAfkTime[i] <= 15.0 && !blPrintedWarn[i])
            {
                PrintChatColor(i, PRINT_COLOR_PLAYERTEAM, "!g[!tAfkKicker!g]!y You will get %s after!g 15!y seconds for being AFK!",
                szPunishment);
                blPrintedWarn[i] = true;
            }
            
            if (flUserAfkTime[i] >= flMaxAfkTime)
            {
                new szName[32];
                get_user_name(i, szName, charsmax(szName));
                
                PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[!tAfkKicker!g]!y Player!g %s!y got %s for being!t AFK!y for more than!t %i!y seconds!",
                szName, szPunishment, floatround(flMaxAfkTime));
                
                switch (iPunishment)
                {
                    case KICK: server_cmd("kick #%i ^"You got kicked for being afk more than %i seconds!^"", get_user_userid(i), floatround(flMaxAfkTime));
                    case REDIRECT: client_cmd(i, "wait;wait;wait;wait;wait;^"connect^" %s", szRedirectIP);
                }
                
                ClearVariables(i);
            }
        }
        else
        {
            flUserAfkTime[i] = 0.0;
            blPrintedWarn[i] = false;
        }
        
        get_user_ping(i, iUserPing, iUserLoss);
        iUserTotalPing[i] += iUserPing;
        iPingChecks[i]++;
        
        if (iPingChecks[i] >= get_pcvar_num(p_iPingCheckTime) && (iUserTotalPing[i] / iPingChecks[i]) >= iMaxPing)
        {
            new szName[32];
            get_user_name(i, szName, charsmax(szName));
                
            PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[!tHighPingKicker!g]!y Player!g %s!y got %s for having more than!t AFK!y for more than!t %ims!y!",
            szName, szPunishment, iMaxPing);
            
            switch (iPunishment)
            {
                case KICK: server_cmd("kick #%i ^"You got kicked for having more more than %ims!^"", get_user_userid(i), iMaxPing);
                case REDIRECT: client_cmd(i, "wait;wait;wait;wait;wait;^"connect^" %s", szRedirectIP);
            }
            
            ClearVariables(i);
        }
    }
    
    entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1);
}

ClearVariables(id)
{
    flUserAfkTime[id] = 0.0;
    iPingChecks[id] = 0;
    iUserTotalPing[id] = 0;
    blPrintedWarn[id] = false;
}
Тествай.
Готово стана, благодаря ти. :) :coffee:

Аватар
LoShIaA
Извън линия
Потребител
Потребител
Мнения: 323
Регистриран на: 20 Окт 2016, 14:44
Местоположение: Стара Загора
Се отблагодари: 120 пъти
Получена благодарност: 9 пъти

Re: Afk & High ping Kicker v1.1a

Мнение от LoShIaA » 29 Май 2017, 13:53

Здравейте. Някой може ли да добави няколко съобщения.
Съобщения при опцията за висок пинг
Първо при влизане в сървъра да съобщава Players with ping higher than %d will be kicked! - Това го няма

Съобщения при опцията за афк
Ако може предупредително съобщение, което излиза 15 секунди преди да бъдеш кикнат да излиза на 10 и 5 секунди преди да бъдеш кикнат по още веднъж.

Съобщения при пренасочване към друг сървър, ако сме активирали опцията.
Ако може предупредително съобщение, което излиза 15 секунди преди да бъдеш кикнат да излиза на 10 и 5 секунди преди да бъдеш кикнат по още веднъж.

Да се добави квар дали админите да имат имунитет или да нямат.
Последно промяна от LoShIaA на 02 Юни 2017, 11:58, променено общо 2 пъти.

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Одобрени плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 12 госта