Событие "Игра началась"
|
|
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, тоже самое что я писал только в другой реализации. тру способ
|
|
| |