Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Событие "Игра началась"
Regedit Дата: Понедельник, 14.12.2015, 02:28:59 | Сообщение # 1
Сообщений: 135
Репутация: 1 [ +/- ]
Когда в 2 командах есть игроки происходит начало игры и по центру экрана пишит сообщение "Игра началась" - как отловить этот момент? не юзая костыли на проерку наличия игроков в командах?


Сообщение отредактировал Regedit - Понедельник, 14.12.2015, 02:30:42
 
Meow_1337 Дата: Понедельник, 14.12.2015, 03:28:07 | Сообщение # 2
Сообщений: 207
Репутация: 11 [ +/- ]
Может так?

Код
stock int GetPlayerCount(){
    int iPlayers;
    for (int i = 1; i <= MaxClients; i++)
    {
  if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) >= 2)
  {
   iPlayers++;
  }
    }
    return iPlayers;
}
 
Regedit Дата: Понедельник, 14.12.2015, 04:27:50 | Сообщение # 3
Сообщений: 135
Репутация: 1 [ +/- ]
Цитата Meow_1337 ()
Может так?

Просил же без костылей... наверняка есть момент "Игра началась"....
 
dases2003 Дата: Понедельник, 14.12.2015, 12:31:09 | Сообщение # 4
Сообщений: 107
Репутация: 1 [ +/- ]
По-другому никак:
Код
new bool:gbTheFirstRound;

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

public OnMapStart()
{
gbTheFirstRound=true;
}

public Event_RoundStart(Handle:hEvent,const Srting:sName[],bDontBroadcast)
{
if(gbTheFirstRound)
{
gbTheFirstRound=false;
//function
}
}


Сообщение отредактировал dases2003 - Понедельник, 14.12.2015, 12:33:15
 
_R1KO_ Дата: Понедельник, 14.12.2015, 16:17:10 | Сообщение # 5
Сообщений: 200
Репутация: 30 [ +/- ]
dases2003, нет. ты ловишь первый раунд. а нужно первый с игроками за обе команды. Нужно в конце раунда проверять причину его завершения. там есть
 
dases2003 Дата: Понедельник, 14.12.2015, 18:09:01 | Сообщение # 6
Сообщений: 107
Репутация: 1 [ +/- ]
Раунд не начнется, если в команде не будут 2-ух игроков в противоположных командах, и эта надпись выходит как раз таки в первом раунде после начала карты, так что способ должен быть рабочим.


Сообщение отредактировал dases2003 - Понедельник, 14.12.2015, 18:43:40
 
Regedit Дата: Понедельник, 14.12.2015, 20:24:19 | Сообщение # 7
Сообщений: 135
Репутация: 1 [ +/- ]
Цитата dases2003 ()
унд не начнется, если в команде не будут 2-ух игроков в противоположных командах, и эта надпись выходит как раз таки в первом раунде после начала карты, так что способ должен быть рабочим.


Нет! Эта надпись может быть по 10 раз за карту в зависимости от обстоятельств и от мода игры! Проще говоря если все Т перейдет дружно в команду КТ и тубе 0 Т на 5 КТ и после этого 1 игрок войдет за Т то будет 1 КТ на 4 Т и будет "Игра началась" да при чем еще и mp_timelimit заново пойдет...
 
BarD Дата: Вторник, 15.12.2015, 11:16:37 | Сообщение # 8
Сообщений: 943
Репутация: 137 [ +/- ]
Код
#pragma semicolon 1    

#include <sourcemod>    
#include <cstrike>

public Action:CS_OnTerminateRound(&Float:delay, &CSRoundEndReason:reason)
{
    if (reason == CSRoundEnd_GameStart)
    {
       PrintCenterTextAll(" "); // Перебиваем надпись "Игра началась"
       //Твой код
    }
}


Сообщение отредактировал BarD - Вторник, 15.12.2015, 11:17:29
 
_R1KO_ Дата: Вторник, 15.12.2015, 23:50:04 | Сообщение # 9
Сообщений: 200
Репутация: 30 [ +/- ]
BarD, тоже самое что я писал только в другой реализации. тру способ
 
  • Страница 1 из 1
  • 1
Поиск: