Интерфейс игрока

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
72
Реакции
10
Здарова)
После смены команды игрока из TEAM_SPECTATOR на одну из команд: TEAM_TERRORIST, TEAM_CT.
Код:
rg_set_user_team(id, (random_num(0, 1) == 0) ? (TEAM_TERRORIST) : (TEAM_CT));
У игрока пропадает интерфейс, а именно количество: hp, armour, патронов в магазине и в рюкзаке, время до конца раунда. Может быть ещё что-то.
Хотелось бы узнать ответы на вопросы:
  1. Как вернуть интерфейс?
  2. Почему такое происходит?
7 Окт 2018
Извините, забыл добавить следующее: идет смена команды со спектатора на одну из команды указанных выше, а после этого сразу же возрождение игрока с помощью rg_round_respawn
 
Последнее редактирование:
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
Nunfy, использовать rg_join_team хоть и смену команды таким образом на модовых (джайл, зомби...) не советую вообще через реапи, так как неадекватно работает.
 
  • Нравится
Реакции: Nunf
Сообщения
72
Реакции
10
Sonyx, switch team тут не подойдет, так как перевод игрока идет со спектора в одну из команд
7 Окт 2018
w0w, заменил rg_set_user_team на rg_join_team,w0w, в общем что-то работает не так.
Обясняю всю ситуацию:

У меня сделано что при входе на сервер игроку не предлагает выбрать команду и класс, а сразу же авто его переводит за команду наблюдателей.
Сделано это с помощью настроек в файле game.cfg:
Код:
// Автоматическое присоединение к команде.
// 0 - отключено
// 1 - включен (Используйте совместно с кваром humans_join_team any/SPEC/CT/T)
//
// Значение по умолчанию: "0"
mp_auto_join_team 1

// К какой команде автоматически присоеденятся.
//
// any     - любой
// SPEC - наблюдатели
// T     - терористы
// CT     - контр-тетористы
//
humans_join_team SPEC
После того как игрок вошёл, мне нужно его забросить в команду с ещё одним игроком(одного в т, а другого кт) и потом заспавнить.
  1. Вот моя попытка сделать это через rg_set_user_team:
    Код:
                                        new random_number = random_num(0, 1);      rg_set_user_team(id,             (random_number == 0) ? (TEAM_TERRORIST) : (TEAM_CT));
                                        rg_set_user_team(users_ids[p],     (random_number == 0) ? (TEAM_CT)         : (TEAM_TERRORIST));
                                        rg_round_respawn(id);
                                        rg_round_respawn(users_ids[p]);
    В итоге получается установить двоим игрокам команду, получается их заспавнить, но у них пропадает интерфейс(прицел, hp, armour, время до коцна раунда, количество патрон в обойме, количество патрон в рюкзаке и тд..)
  2. Вот моя попытка сделать это через rg_join_team:
    Код:
                                        new random_number = random_num(0, 1);                                    rg_join_team(id,             (random_number == 0) ? (TEAM_TERRORIST) : (TEAM_CT));
                                        rg_join_team(users_ids[p],     (random_number == 0) ? (TEAM_CT)         : (TEAM_TERRORIST));
                                        rg_round_respawn(id);
                                        rg_round_respawn(users_ids[p]);
    [*]
    В итоге получается установить двоим игрокам команду, насколько я понял камеру игроков направляется на место спавна, но самих игроков не возрождает
Как мне сделать это?
 
Сообщения
2,751
Реакции
3,017
Помог
61 раз(а)
У игрока пропадает интерфейс
При восстановлении игрока из мёртвых (спектаторов) пропадают некоторые флаги (вернее, ReAPI должен их вроде как доставлять). Вот в них и проблема.
7 Окт 2018
m_iJoiningState , pev->deadflag и остальные, глядите там же, как код работает.
 
  • Нравится
Реакции: Nunf
Сообщения
72
Реакции
10
wopox1337, предлагаете выставлять эти свойства игроку вручную? Может быть как-то можно имитировать нажатие выбор команды игроком?
 
Сообщения
72
Реакции
10
wopox1337, я уже запутался :wacko:
7 Окт 2018
wopox1337, а почему при:
Вот моя попытка сделать это через rg_join_team:
Код:
                                    new random_number = random_num(0, 1);                                    rg_join_team(id,             (random_number == 0) ? (TEAM_TERRORIST) : (TEAM_CT));
                                    rg_join_team(users_ids[p],     (random_number == 0) ? (TEAM_CT)         : (TEAM_TERRORIST));
                                    rg_round_respawn(id);
                                    rg_round_respawn(users_ids[p]);
[*]
В итоге получается установить двоим игрокам команду, насколько я понял камеру игроков направляется на место спавна, но самих игроков не возрождает
не возрождает игрока?
7 Окт 2018
При восстановлении игрока из мёртвых (спектаторов) пропадают некоторые флаги (вернее, ReAPI должен их вроде как доставлять). Вот в них и проблема.
7 Окт 2018
m_iJoiningState , pev->deadflag и остальные, глядите там же, как код работает.
При возрождении игрока из спектр Reapi не доставляет флаги, а я же изменяю команду игроку, а потом уже его возрождаю
8 Окт 2018
Тоесть если воскрешать игрока из спектаторов, то reapi не доставляет флаги изза которых и происходит пропадание интерфейса.
Выходит мне нужно имитировать переход игрока в одну из команд и после уже воскрешать. Имитировать это я уже пытался с помощью:
Код:
rg_set_user_team
rg_join_team
engclient_cmd
Результаты
1. Применяю на спектатора rg_set_user_team перевожу в одну из команд(т или ст), а после возрождаю - итог: пропадание интерфейса
2. Применяю на спектатора rg_join_team перевожу в из команд(т или ст), а после возрождаю - итог: переводит за команду, но не респавнит игрока
3. Применяю на спектатора engclient_cmd перевожу в из команд(т или ст), а после возрождаю - итог: переводит за команду, но не респавнит игрока

Респавн провожу с помощью функции rg_round_respawn
8 Окт 2018
В общем.. Так как с помощью rg_set_user_team у игрока которого возродили пропадал интерфейс я решил использовать rg_join_team чтобы имитировать переход игрока в команду, далее как оказалось игрока не спавнило из за проблемы с раундом, я сделал так:
Код:
                                    new random_number = random_num(0, 1);
                                    rg_join_team(id,             (random_number == 0) ? (TEAM_TERRORIST) : (TEAM_CT));
                                    rg_join_team(users_ids[p],     (random_number == 0) ? (TEAM_CT)         : (TEAM_TERRORIST));
                                    new users_in_team_ids[2][MAX_PLAYERS], users_in_team_num[2];
                                    get_players(users_in_team_ids[0], users_in_team_num[0], "he", "TERRORIST"); // add flag "c" (do not include bots)
                                    get_players(users_in_team_ids[1], users_in_team_num[1], "he", "CT"); // add flag "c" (do not include bots)
                                    if(users_in_team_num[0] == 1 && users_in_team_num[1] == 1)
                                    {
                                        rg_round_end(0.1, WINSTATUS_DRAW, _, "");
                                    }
                                    else
                                    {
                                        rg_round_respawn(id);
                                        rg_round_respawn(users_ids[p]);
                                    }
Спасибо всем за помощь. Тему можно закрывать
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу