7pElllHuK
Участник
- Сообщения
- 1,416
- Реакции
- 465
Всем добрый день, подскажите пожалуйста, почему плагин работает некорректно. Должно вывоводить текст только тогда, когда в команде 1 игрок убил всю вражескую команду, а оно выводит даже если кто-то другой убил 1 игрока.
Пример: Играем 5 на 5, Вася убил 1 игрока, а Петя убил 4, в конце раунда плагин выведет сообщение о том, что Петя сделал Эйс, убив 4 игроков, хотя он убил не всю вражескую команду.
Тоже самое и с "Террористы победили без потерь." и "Спецназ победил без потерь."
Если кто-то 1 из команды умер, то все-равно пишет что Команда победила без потерь
Пример: Играем 5 на 5, Вася убил 1 игрока, а Петя убил 4, в конце раунда плагин выведет сообщение о том, что Петя сделал Эйс, убив 4 игроков, хотя он убил не всю вражескую команду.
Тоже самое и с "Террористы победили без потерь." и "Спецназ победил без потерь."
Если кто-то 1 из команды умер, то все-равно пишет что Команда победила без потерь
Плагин:
#include <colors>
#include <cstrike>
int iClient_Ace,
iAttacker_Ace,
g_iKills[MAXPLAYERS + 1],
g_iCountCT,
g_iCountT;
public void Round_Start(Event hEvent, const char[] name, bool dontBroadcast)
{
g_iCountCT = 0;
g_iCountT = 0;
for (int i; i <= MaxClients; i++)
{
if (!IsValidClient(i)) continue;
if (!IsPlayerAlive(i)) continue;
if (GetClientTeam(i) == CS_TEAM_CT) g_iCountCT++;
else if (GetClientTeam(i) == CS_TEAM_T) g_iCountT++;
g_iKills[i] = 0;
}
}
public void Death(Event hEvent, const char[] name, bool dontBroadcast)
{
iClient_Ace = GetClientOfUserId(GetEventInt(hEvent, "userid"));
iAttacker_Ace = GetClientOfUserId(GetEventInt(hEvent, "attacker"));
if (iClient_Ace == iAttacker_Ace)
{
if (GetClientTeam(iAttacker_Ace) == CS_TEAM_CT) g_iCountCT--;
else if (GetClientTeam(iAttacker_Ace) == CS_TEAM_T) g_iCountT--;
}
}
public Action Round_End(Event hEvent, const char[] name, bool dontBroadcast)
{
char szKills[16];
int winner_team = GetEventInt(hEvent, "winner");
for (int i = 1; i <= MaxClients; i++)
{
if (!IsValidClient(i)) continue;
if (!IsPlayerAlive(i)) continue;
}
for (int i; i <= MaxClients; i++)
{
if (!IsValidClient(i)) continue;
if (!IsPlayerAlive(i)) continue;
if (IsClientInGame(i) && !IsFakeClient(i))
{
if (g_iKills[i] >= 0 && g_iKills[i]) //тут проверка нужна для маленького онлайна
{
Format(szKills, sizeof(szKills), "игрок%s", (g_iKills[i] > 1) ? "ов" : "а");
if (winner_team == 3 && g_iKills[i] == g_iCountT)
{
CPrintToChatAll("Игрок %N сделал ACE убив %d %s!", i, g_iKills[i], szKills);
}
else if (winner_team == 2 && g_iKills[i] == g_iCountCT)
{
CPrintToChatAll("Игрок %N сделал ACE убив %d %s!", i, g_iKills[i], szKills);
}
else if (winner_team == 2 && g_iCountT == g_iCountT)
{
CPrintToChatAll("Террористы победили без потерь.");
}
else if (winner_team == 3 && g_iCountCT == g_iCountCT)
{
CPrintToChatAll("Спецназ победил без потерь.");
}
}
}
}
}
stock bool IsValidClient(int iClient)
{
return (0 < iClient && iClient <= MaxClients && IsClientInGame(iClient) && IsFakeClient(iClient) == false);
}