Существует ли плагин "При достижении кол-ва побед происходит рестарт"?

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #21
2. По-моему, использование GetTeamScore затрачивает больше, чем банальный подсчет побед

Там выходит проблема с начальными раундами.
Насчет остального - исправлю

Добавлено через 58 секунд
Ты имеешь ввиду через new wins =GetEventInt(event, "winner") узнавать победителя и прибавлять к переменной wins += 1 после составлять условие ?

Да. Но я ответил выше.
 
Последнее редактирование:

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
FrozDark
Можно отловить команду рестарта, на счет точного счета, разве он нужен? Смысл плагина, если можно изменить счет одной из команд на 49 сразу, это я к тому, что можно сделать проще, тем более, как я понимаю, тс не собирается мудрить со счетом команд
 

jatow

Участник
Сообщения
15
Реакции
1
Эту версию R1ko скинул по скайпу. Проверена, рабочая.

C-подобный:
#include <sourcemod>
#include <sdktools>

new Handle:g_hAutoRestartRounds = INVALID_HANDLE,
Handle:g_hAutoRestartEnabled = INVALID_HANDLE,
bool:g_bEnabled = true,
g_iWins;
new const String: soundFile[] = "ambient/misc/brass_bell_c.wav";

public Plugin:myinfo =
{
    name = "Autorestartgame",
    author = "R1KO",
    description = "Автоматический рестарт при достижении лимита побед",
    version = "1.2",
    url = "https://hlmod.ru"
};

public OnPluginStart()
{
    g_hAutoRestartEnabled = CreateConVar("sm_autorestartgame_enabled", "1", "Вкл/Выкл плагин.", FCVAR_NONE, true, 0.0, true, 1.0);
    g_hAutoRestartRounds = CreateConVar("sm_autorestartgame_round", "30", "Количество раундов до рестарта.", FCVAR_NONE, true, 4.0);
    HookEvent("round_end", OnRoundEnd);
    HookConVarChange(g_hAutoRestartRounds, ConVarChanges);
    HookConVarChange(g_hAutoRestartEnabled, ConVarChanges);
}

public OnConfigsExecuted()
{
    g_iWins = GetConVarInt(g_hAutoRestartRounds);
    g_bEnabled = GetConVarBool(g_hAutoRestartEnabled);
    decl String:fileSound[128];
    Format(fileSound, sizeof(fileSound), "sound/%s", soundFile);
    AddFileToDownloadsTable(fileSound);
    PrecacheSound(soundFile, true);
}

public OnRoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    if(g_bEnabled)
    {
        new ScoreT = GetTeamScore(2), ScoreCT = GetTeamScore(3);
        if(ScoreT == g_iWins-2 || ScoreCT == g_iWins-2)
            PrintToChatAll("[AutoRestart] Внимание! Осталось 2 победы одной из команд до рестарта игры.");
        else if(ScoreT == g_iWins-1 || ScoreCT == g_iWins-1)
            PrintToChatAll("[AutoRestart] Внимание! Осталась 1 победа одной из команд до рестарта игры.");
        else if(ScoreT == g_iWins || ScoreCT == g_iWins)
        {
            ServerCommand ("mp_restartgame 2");
            PrintToChatAll("[AutoRestart] Внимание! Достигнут лимит побед. Будет произведен рестарт игры");
            for(new i = 1; i <= MaxClients; i++)
            if(IsClientInGame(i) && !IsFakeClient(i))
            ClientCommand(i, "playgamesound %s", soundFile);
        }
    }
}

public ConVarChanges(Handle:convar, const String:oldValue[], const String:newValue[])
{
    if(convar == g_hAutoRestartRounds)
    g_iWins = GetConVarInt(g_hAutoRestartRounds);
    if(convar == g_hAutoRestartEnabled)
    g_bEnabled = GetConVarBool(g_hAutoRestartEnabled);
}
 

Вложения

  • autorestartgame 1.2 by RIKO.smx
    5.6 КБ · Просмотры: 7
  • autorestartgame 1.2 by RIKO.sp
    2.5 КБ · Просмотры: 16
Сверху Снизу