1) Пишеш событие для чекпоинта в OnPlayerEnterCheckpoint(playerid) там делаеш проверку на принадлежность игрока к команде
2) Чтобы так получилось что вся команда сдохла надо каждого умершего в режим спектатора отправлять, при смерти игрока в цикле делаеш проверку на подобие
new T, CT;
for(new i=0;i<MAX_PLAYERS;i++)
{
if(PlayerTeam[playerid] == TERROR)
T++;
else
CT++;
}
if(CT == 0)
{
//Террористы победили ля-ля тополя
}
if(T == 0)
{
//Контры ля-ля тополя ну вобщем победили
}
3) Таймер можно сделать видимым можно не видимым, тоесть можно просто прописать SetTimer("EndRound",3*60000,0);
функцию EndRound описываеш как public иначе в таймере вызвать не удастся
пример
forward EndRound();
public EndRound()
{
GameModeExit();//Собсна функция для рестарта мода, рестарт будет в том случае если мод в списке один
} Можно сделать так чтобы игроки видели сколько времени им играть осталось например через деньги тут немного сложнее
new time = 180;//переменная с колличеством оставшихся секунд игры
forward TimeRound();
public TimeRound()
{
time--;
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
GivePlayerMoney(i,-1);
}
if(time == 0)//Время вышло
GameModeExit();
}
Если через деньги делать это не хочется можеш попробовать через текст дравы, но это я расписывать не буду