Заявка за Auto-Kick System

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

Заявка за Auto-Kick System

Мнение от Unbr3akable » 21 Дек 2016, 20:52

Здравейте, понеже не бях работил с pawn за около 4 месеца, а все още се учех и сега търся някой, който може да ми направи система, която да прави долупосочените неща:
- Ако играчът има пинг по-висок от 120ms да бъде кикнат.
- Ако играчът стои АФК за повече от 90сек да бъде кикнат. (на 15сек да му бъде напомнено, че ще бъде кикнат)
- Ако играчът стои като spectator повече от 30сек да бъде кикнат. (на 15сек да му бъде напомнено, че ще бъде кикнат)

Играчи с флаг "b" имат имунитет от горните неща.
Благодаря предварително!

Аватар
Extreme
Извън линия
Администратор
Администратор
Мнения: 557
Регистриран на: 05 Окт 2016, 20:53
Се отблагодари: 125 пъти
Получена благодарност: 51 пъти
Обратна връзка:

Re: Заявка за Auto-Kick System

Мнение от Extreme » 21 Дек 2016, 21:17

Виж този https://forums.alliedmods.net/showthread.php?t=256449 има много функции, като гледам киква и спектаторите.
–Човек вярва на това, което му се иска.
Адолф Хитлер.

-------------------------------------------------------------------------------------------
Правила на форума
Правила при качване на плъгини

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

Re: Заявка за Auto-Kick System

Мнение от Unbr3akable » 21 Дек 2016, 21:20

Не виждам да има функция, която киква играчи с висок пинг, а и на мен ми трябват само горните три неща.

Аватар
Extreme
Извън линия
Администратор
Администратор
Мнения: 557
Регистриран на: 05 Окт 2016, 20:53
Се отблагодари: 125 пъти
Получена благодарност: 51 пъти
Обратна връзка:

Re: Заявка за Auto-Kick System

Мнение от Extreme » 21 Дек 2016, 21:39

Ти искаш да киква едновременно specs/afk и за висок пинг. Ще изчакаш някой от скриптърите, аз доколкото знам такъв плъгин 3в1 няма.
Иначе горния плъгин прави тези 2 неща:
- Ако играчът стои АФК за повече от 90сек да бъде кикнат. (на 15сек да му бъде напомнено, че ще бъде кикнат)
- Ако играчът стои като spectator повече от 30сек да бъде кикнат. (на 15сек да му бъде напомнено, че ще бъде кикнат)
A за това:
- Ако играчът има пинг по-висок от 120ms да бъде кикнат.

Аз ползвам този https://forums.alliedmods.net/showthread.php?p=10259

Мога да ти дам и други АФК плъгини но ти искаш всичко в едно, така че аз съм до тук :)
–Човек вярва на това, което му се иска.
Адолф Хитлер.

-------------------------------------------------------------------------------------------
Правила на форума
Правила при качване на плъгини

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

Re: Заявка за Auto-Kick System

Мнение от TheRedShoko » 21 Дек 2016, 22:30

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

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

#define KICK_IMMUNITY ADMIN_RESERVATION

new p_iMaxPing, p_flMaxAfkTime, p_flMaxSpecTime, p_iPingCheckTime, 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("Kick manager", "1.0", "AMXX-BG.Info");
    
    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");
    
    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)
{
    flUserAfkTime[id] = 0.0;
    iPingChecks[id] = 0;
    iUserTotalPing[id] = 0;
    blPrintedWarn[id] = false;
}

public CheckUsersStatus(iEnt)
{
    if (!is_valid_ent(iEnt)) return;
    
    new iUserPing, iUserLoss;
    
    new Float:flMaxAfkTime = get_pcvar_float(p_flMaxAfkTime);
    new Float:flMaxSpecTime = get_pcvar_float(p_flMaxSpecTime);
    new iMaxPing = get_pcvar_num(p_iMaxPing);
    
    for (new i = 1; i <= g_iMaxPlayers; i++)
    {
        if (!is_user_connected(i) || get_user_flags(i) & KICK_IMMUNITY) 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 kicked after!g 15!y seconds for being spectator!");
                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 kicked for being!t Spectator!y for more than!t %i!y seconds!",
                szName, floatround(flMaxSpecTime));
                
                server_cmd("kick #%i ^"You got kicked for being afk more than %i seconds!^"",
                get_user_userid(i), floatround(flMaxSpecTime));
                
            }
        }
        else if (!(entity_get_int(i, EV_INT_button) & g_iCheckButtons))
        {
            flUserAfkTime[i] += 0.1;
            
            if (flMaxAfkTime - flUserAfkTime[i] <= 15.0 && !blPrintedWarn[i])
            {
                PrintChatColor(i, PRINT_COLOR_PLAYERTEAM, "!g[!tAfkKicker!g]!y You will get kicked after!g 15!y seconds for being AFK!");
                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 kicked for being!t AFK!y for more than!t %i!y seconds!",
                szName, floatround(flMaxAfkTime));
                
                server_cmd("kick #%i ^"You got kicked for being afk more than %i seconds!^"",
                get_user_userid(i), floatround(flMaxAfkTime));
            }
        }
        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 kicked for having more than!t AFK!y for more than!t %ims!y!",
            szName, iMaxPing);
                
            server_cmd("kick #%i ^"You got kicked for having more more than %ims!^"", 
            get_user_userid(i), iMaxPing);
        }
    }
    
    entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1);
}
Try

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

Re: Заявка за Auto-Kick System

Мнение от Unbr3akable » 27 Дек 2016, 21:53

Благодаря, може да заключвате темата.

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

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 13 госта