Добавление в меню только активных игроков

Rabb1t

Амбассадор
Сообщения
2,968
Реакции
1,429
  • Команда форума
  • #1
Всем привет!
Решил сделать себе плагин, но как и ожидалось возникли проблемы...
Задача состоит в том, что бы в меню добавить только активных игроков, как в админке.
Например на сервере только 2 игрока:
1) Rabb1t (я)
2) AlmazON
Если ввести команду (допустим sm_players (console) / !players (chat) ) то там мы в 2 будем, если же AlmazON выйдет, то он из меню пропадает.
Как такое мне реализовать лучше и правильнее?
P.S. Смотрел следующие файлы
  • kick.sp
  • dynamicmenu.sp (вроде там такое используется)
  • adminmenu.sp
Но разобраться сам не смог, прошу помочь мне.

Не нужно пожалуйста устраивать кашу в теме, а говорить только по теме.
 

smoke96

Участник
Сообщения
1,134
Реакции
175
Тру кодер. Дай наброски какие ты сделал ) Интересно аж)
 

Rabb1t

Амбассадор
Сообщения
2,968
Реакции
1,429
  • Команда форума
  • #3
@B1g, где сказано что я хоть как-то сделал?
Все что есть это:
  • Конфиг
  • Пару переводов
  • Меню (без пунктов, т.к. в них должны быть игроки)
  • Логи
 

Rabb1t

Амбассадор
Сообщения
2,968
Реакции
1,429
  • Команда форума
  • #5
@B1g, есть небольшие.
DELETE.

Спасибо SenatoR`y , помог.
Сделать можно так:
PHP:
stock AddMenuPlayers(hMenu, iClient = 0, bool alive = false) {
    int count;
    char czBuffer[MAX_NAME_LENGTH+32], char czUserID[8];
    for(int i = 1; i <= MaxClients; ++i)
    {
        if(i == client || !IsValidPlayer(i) || (alive && !IsPlayerAlive(i)))
            continue;
      
        IntToString(GetClientUserId(i), userid, sizeof(userid));
        Format(czBuffer, sizeof(czBuffer), "%T", "Player", iClient, czUserID, i);
        if(AddMenuItem(hMenu, czUserID, czBuffer))
            count++;
    }
  
    return count;
}
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
выйдет, то он из меню пропадает
Такое делал в "онлайн"-режиме. Т.е., меню открыто, но как только игрок вышел - перерисовывается у того, кто ещё держит его открытым.
if(i == client || !IsValidPlayer(i) || (alive && !IsPlayerAlive(i)))
Ботов ещё не забывай, если не нужны.
 

Rabb1t

Амбассадор
Сообщения
2,968
Реакции
1,429
  • Команда форума
  • #7
@AlmazON, подскажи тогда пожалуйста как в онлайн режиме сделать.
Ботов IsPlayerFake ?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
C-подобный:
IsFakeClient(client)
как в онлайн режиме сделать
Это будет, по сути, "сделай за меня". Не думаю, что при таких знаниях есть смысл в неполных "подсказках". Сначала, хотя бы, сделай то, что задумал.
 
Сверху Снизу