Как правильно изменить счёт побед команд?

Anton173

Участник
Сообщения
6
Реакции
0
Мод CSS DM.
Тема такая. По истечении 5-ти раундов. В конце 5-го раунда происходит смена команд. Счёт команды переносится вместе с командой, всё ровно - как надо, но в конце нового первого раунда когда одна из команд побеждает счёт становится на старое место. То есть, мы от играли за "CT" со счётом 10/5, команды сменились счёт стал 5/10, но в конце первого раунда за новую сторону (если допустим выиграли "CT") Счёт меняется и получается не 6/10, а 11/5... То есть счёт возвращается на свою сторону...

Вот сегодня запилил плагин. Не знаю как мне исправить это. Можно было бы объявить две переменные и в конце каждого раунда проверять кто победил и плюсовать очки, потом заново объявлять для команды счёт через SetTeamScore, но не хотелось бы пилить лишние переменные.

Вот сам код.

C-подобный:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <cstrike>

#define MAX_ROUNDS (5)

new CountRounds = -1;

public Plugin:myinfo = {
    name = "bla-bla-bla",
    author = "bla-bla-bla",
    description = "bla-bla-bla",
    version = "bla-bla-bla",
    url = "bla-bla-bla"
};

public void OnPluginStart()
{
    HookEvent("round_start", Event_RoundStart);
    HookEvent("round_end", Event_RoundEnd);
}

public OnMapStart()
{
    CountRounds = -1;
}

public void Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    CountRounds += 1;
    if((MAX_ROUNDS - CountRounds) > 1)PrintToChatAll("C4 ©: Смена команд произойдёт через %i раунд(а,ов).", (MAX_ROUNDS - CountRounds));    //(5 - 0 = 5), (5 - 1 = 4), (5 - 2 = 3), (5 - 3 = 2)
    else if(CountRounds == (MAX_ROUNDS-1))PrintToChatAll("C4 ©: Смена команд произойдёт в конце раунда.");    //5
}

public void Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
    if(CountRounds == (MAX_ROUNDS-1))
    {
        CountRounds = -1;
        int scoreCT = GetTeamScore(CS_TEAM_T);
        int scoreT = GetTeamScore(CS_TEAM_CT);
        SetTeamScore(CS_TEAM_CT, scoreCT);
        SetTeamScore(CS_TEAM_T, scoreT);
        new team;
        for(new i = 1; i < MaxClients; i++)
        {
            if(IsClientConnected(i))
            {
                team = GetClientTeam(i);
                if(team == CS_TEAM_CT)
                {
                    CS_SwitchTeam(i, CS_TEAM_T);
                    CS_UpdateClientModel(i);
                }
                else if(team == CS_TEAM_T)
                {
                    CS_SwitchTeam(i, CS_TEAM_CT);
                    CS_UpdateClientModel(i);
                }
            }
        }
        PrintToChatAll("C4 ©: Смена команд!");
    }
}
 
Последнее редактирование модератором:
Сверху