Как узнать какое количество игроков на сервере?

oleg_nelasy

Участник
Сообщения
664
Реакции
46
Нужно узнать какое количество игроков на сервере в текущий момент.

И еще вопрос можно ли послать квар серверу?

Пример
C-подобный:
public void OnPluginStart()
{
    HookEvent("round_start", Event_OnStart);
}

public Action Event_OnStart(Handle event, const char[] name, bool dontBroadcast)
{
    if(игроков на сервере > 7)
    {
        выполнить квар "mp_teamlimit 15"
    }
}
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #2

Young <

Now, finally free
Сообщения
1,263
Реакции
507

L1MONENKO

Добрая душа
Сообщения
655
Реакции
600
Нужно узнать какое количество игроков на сервере в текущий момент.

И еще вопрос можно ли послать квар серверу?

Пример
C-подобный:
public void OnPluginStart()
{
    HookEvent("round_start", Event_OnStart);
}

public Action Event_OnStart(Handle event, const char[] name, bool dontBroadcast)
{
    if(игроков на сервере > 7)
    {
        выполнить квар "mp_teamlimit 15"
    }
}

Я считаю, что лучше свой цикл сделать, так как та функция, учитывает еще готв бота за игрока...

C-подобный:
stock int GetCountPlayers()
{
    int iCount;
    for (int i = 1; i <= MaxClients; i++)
        if (IsClientInGame(i) && !IsFakeClient(i))
            iCount++;

    return iCount;
}
 

oleg_nelasy

Участник
Сообщения
664
Реакции
46
Спасибо. Только в процессе понял можно еще получить количество игроков которые сидят в наблюдателях?
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #6
@oleg_nelasy, тут уже циклом, как Выше и пишут. Добавьте только получение команды игрока и его сравнение.
 

oleg_nelasy

Участник
Сообщения
664
Реакции
46
@oleg_nelasy, тут уже циклом, как Выше и пишут. Добавьте только получение команды игрока и его сравнение.
C-подобный:
int iPlayers;
    for (int iClient = MaxClients; iClient != 0; --iClient)
        if (IsClientInGame(iClient) && GetClientTeam(iClient) == iTeamId)
            iPlayers++;
Правильно? Мне надо чтобы не учитывало наблюдателей и игроков которые еще не выбрали команду.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #8
Что такое iTeamId и почему он только один? Сделайте лучше GetClientTeam(iClient) > 1
 

oleg_nelasy

Участник
Сообщения
664
Реакции
46
Что такое iTeamId и почему он только один? Сделайте лучше GetClientTeam(iClient) > 1
если GetClientTeam(iClient) = 0 это наблюдатель? Если да то я где-то читал в кс го наблюдатель и игрок который не выбрал команду это разные понятия или я ошибаюсь?
 

L1MONENKO

Добрая душа
Сообщения
655
Реакции
600
C-подобный:
int iPlayers;
    for (int iClient = MaxClients; iClient != 0; --iClient)
        if (IsClientInGame(iClient) && GetClientTeam(iClient) == iTeamId)
            iPlayers++;
Правильно? Мне надо чтобы не учитывало наблюдателей и игроков которые еще не выбрали команду.
Сейчас тебе допишу
Сообщения автоматически склеены:

C-подобный:
stock int GetCountPlayers()
{
    int iCount;
    for (int i = 1; i <= MaxClients; i++)
        if (IsClientInGame(i) && !IsFakeClient(i) && GetClientTeam(i) > 1) //Проверяем нашего игрока на то, что он в игре, не бот и находится в команде т или кт
            iCount++;

    return iCount;
}
Сообщения автоматически склеены:

Этот цикл будет все делать, игрок не будет учитывать, пока он не выберет команду кт или т
 
Последнее редактирование:

Young <

Now, finally free
Сообщения
1,263
Реакции
507
если GetClientTeam(iClient) = 0 это наблюдатель? Если да то я где-то читал в кс го наблюдатель и игрок который не выбрал команду это разные понятия или я ошибаюсь?
Разные.

Еще не выбрал команду - 0
Наблюдатель - 1
Террорист - 2
КТ - 3
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
C-подобный:
stock int[] GetCountByTeam()
{
    int count[4];
    for(int i = 1; i <= MaxClients; i++) {
        if(IsClientInGame(i) && !IsFakeClient(i)) {
            count[GetClientTeam(i)]++;
        }
    }
    
    return count;
}
 

L1MONENKO

Добрая душа
Сообщения
655
Реакции
600
C-подобный:
stock int[] GetCountByTeam()
{
    int count[4];
    for(int i = 1; i <= MaxClients; i++) {
        if(IsClientInGame(i) && !IsFakeClient(i)) {
            count[GetClientTeam(i)]++;
        }
    }
  
    return count;
}
ему не нужно считать кол-во игроков за какую-то команду, только обычный цикл подсчета всех игроков вместе которые находятся в команде т и кт
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
ему не нужно считать кол-во игроков за какую-то команду, только обычный цикл подсчета всех игроков которые находятся в команде т и кт
и что не так? Сложить A и B труда не составит.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
int GetTeamClientCount(int index)
 

Вложения

  • изображение_2021-03-11_135236.png
    изображение_2021-03-11_135236.png
    30.4 КБ · Просмотры: 68
Сверху Снизу