CT Auto Win

CT Auto Win 02.09.2025

Нет прав для скачивания
C++:
#include <amxmisc>
#include <reapi>

new ctaw_min_ct;
new Float:ctaw_bomb_time;
new ctaw_msg;

public plugin_init()
{
    register_plugin("CT Auto Win", "02.09.2025", "@emmajule");
    register_dictionary("ct_auto_win.txt");
    
    if (!get_member_game(m_bMapHasBombTarget)) {
        pause("ad");
        return;
    }
    
    // RegisterHookChain(RG_CGrenade_PlantBomb, "CGrenade_PlantBomb", true);
    RegisterHookChain(RG_CSGameRules_CheckWinConditions, "CSGameRules_CheckWinConditions", true);
    
    parse_cfg();
}

public CSGameRules_CheckWinConditions()
{
    new NumAliveTerrorist, NumAliveCT, NumDeadTerrorist, NumDeadCT;
    rg_initialize_player_counts(NumAliveTerrorist, NumAliveCT, NumDeadTerrorist, NumDeadCT);
    
    if (NumAliveTerrorist > 0 || NumDeadTerrorist <= 0) {
        return;
    }
    
    if (NumAliveCT < ctaw_min_ct) {
        return;
    }
    
    new pBomb = rg_find_grenade_c4();
    
    if (!pBomb) {
        return;
    }
    
    if (Float:get_member(pBomb, m_Grenade_flC4Blow) - get_gametime() < ctaw_bomb_time) {
        return;
    }
    
    new iAccountTerrorist = get_member_game(m_iAccountTerrorist);
    rg_round_end(GetRoundRestartDelay(), WINSTATUS_CTS, ROUND_CTS_WIN, .trigger = true);
    // rg_update_teamscores();
    
    set_member_game(m_iAccountTerrorist, iAccountTerrorist + rg_get_account_rules(RR_BOMB_PLANTED));
    
    if (ctaw_msg) {
        client_print_color(0, print_team_blue, "%l %l", "CTAW_TAG", "CTAW_WIN_MESSAGE");
    }
}

Float:GetRoundRestartDelay()
{
    static round_restart_delay;
    if (!round_restart_delay) {
        round_restart_delay = get_cvar_pointer("mp_round_restart_delay");
    }
    
    if (!round_restart_delay) {
        // log_amx("insane");
        return 5.0;
    }
    
    return get_pcvar_float(round_restart_delay);
}

parse_cfg()
{
    bind_pcvar_num(create_cvar("ctaw_min_ct", "2", .description = "Сколько должно остаться минимум живых Контр-Террористов", .has_min = true, .min_val = 1.0), ctaw_min_ct);
    bind_pcvar_float(create_cvar("ctaw_bomb_time", "15", .description = "Минимально допустимый таймер бомбы^nЕсли выйграть не удалось до этого времени раунд продолжится как обычно"), ctaw_bomb_time);
    bind_pcvar_num(create_cvar("ctaw_msg", "1", .description = "Показывать чат сообщение о досрочном завершении раунда!"), ctaw_msg);
    
    new path[PLATFORM_MAX_PATH];
    get_configsdir(path, charsmax(path));
    // strcat(path, "/plugins/сt_auto_win.cfg", charsmax(path));
    strcat(path, "/сt_auto_win.cfg", charsmax(path));
    
    server_cmd("exec %s", path);
    server_exec();
}

stock rg_find_grenade_c4()
{
    new pGrenade = NULLENT;
    
    while ((pGrenade = rg_find_ent_by_class(pGrenade, "grenade")) > 0)
    {
        if (get_member(pGrenade, m_Grenade_bIsC4))
        {
            return pGrenade;
        }
    }
    
    return 0;
}
Назад
Верх