Можно завершить раунд в любой момент, когда вам это нужно.
CS_TerminateRound(Float:delay, CSRoundEndReason:reason, bool:blockhook = false);
Цитата
delay - через сколько секунд начнется новый раунд
reason - причина окончания раунда
blockhook - если true, то событие (хук) CS_OnTerminateRound вызвано не будет
Причины конца раунда (reason):
Код
0 - бомба взорвана
1 - VIP спасен
2 - VIP убит
3 - террористы ускользнули
4 - CT не дали уйти большинству Террористов
5 - все террористы были нейтрализованы
6 - бомба обезврежена
7 - Counter-Terrorists Win!
8 - Terrorists Win!
9 - ничья
10 - все заложники спасены
11 - цель сохранена
12 - заложников не спасли
13 - Террористы не спаслись
14 - VIP не убежал
15 - новая игра
Код для теста:
Код
#pragma semicolon 1
#include <sourcemod>
#include <cstrike>
public OnPluginStart()
{
HookEvent("player_say", Say);
}
public Say(Handle:event, const String:name[], bool:dontBroadcast)
{
new i = GetClientOfUserId(GetEventInt(event, "userid"));
decl String:text[5];
GetEventString(event, "text", text, sizeof(text));
if (StrEqual(text, "1"))
{
CS_TerminateRound(5.0, CSRoundEndReason:2);
}
}
Введите в чат 1 чтобы завершить раунд. Новый начнется через 5 секунд.
Есть хук-функция CS_OnTerminateRound, которая вызывается перед окончанием раунда.
delay и reason те же самые.
Код
return Plugin_Continue; - нормальное (обычное) завершение раунда
return Plugin_Changed; - некоторые параметры были изменены
return Plugin_Handled; - раунд не будет завершен (даже если все умрут, бомба взорвалась и тд)
Причина конца раунда всегда будет 'бомба взорвана' или 'цель уничтожена':
Код
#pragma semicolon 1
#include <sourcemod>
#include <cstrike>
public Action:CS_OnTerminateRound(&Float:delay, &CSRoundEndReason:reason)
{
reason = CSRoundEndReason:0;
return Plugin_Changed;
}
Если вы блокируете конец раунда (Plugin_Handled), то желательно чтобы серверная переменная mp_ignore_round_win_conditions была равна 1. Просто впишите в вашserver.cfg или в самом скрипте измените. Если не сделаете это, то можете столкнуться с багом: Постоянно растет счет команд, добавляет +300 или больше побед в секунду.