#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;
}