Здравствуйте!
Собственно, вопрос в заголовке. Если игрок ни разу не заходил в игру, зашел сразу в спектраторы или не выбрал команду, то:
1)
Если дополнительно сделать
Если сделать что-то вроде этого (я уже много комбинаций перепробовал):
игрок появляется без прицела и рук. Автомат можно купить, пистолет тоже, но ни на нож, ни на пистолет переключиться нельзя... С ножом понятно - возможно он не выдался, но почему на купленный пестик не переключает, мне не понятно - только оружие в основном слоте (primary). Гранаты тоже не выдаются мне, похоже игра считает, что я труп.. И, самое главное, в дальнейшем я всегда появляюсь на респе без рук... С аналогичными симптомами, всегда... Пробую сейчас
Мне нужно как-то вызвать
или придется воспроизвести ее код...
Подскажите, пожалуйста, как мне это починить? Корректно воскресить игрока не дожидаясь следующего раунда...
Если игрок хоть раз входил в игру - переводится все норм... Такое ощущение, что где-то какой-то флаг нужно установить.. Я перепробовал штук 5: var_deadflag = dead_no, m_bTeamChanged и т.п., все хоть как-то связано с признаками трупа...
2)
Я не вижу никакой логической разницы между двумя этими функциями... Как и с табличкой на двери, которую можно либо прибить, либо приклеить. Понимаю, что я тупой и не понимаю многих задумок разработчиков ReAPI, поэтому хотелось бы найти какое-то универсальное
*) Эти манипуляции я делаю в начале раунда в
Собственно, вопрос в заголовке. Если игрок ни разу не заходил в игру, зашел сразу в спектраторы или не выбрал команду, то:
1)
rg_join_team(...)
- переводит за нужную команду из команды (UNASSIGNED или SPECTRATOR), но в начале раунда *) игрок будет мертвый.Если дополнительно сделать
ExecuteHam(Ham_CS_RoundRespawn, ...)
- ничего не происходит...Если сделать что-то вроде этого (я уже много комбинаций перепробовал):
Код:
rg_join_team(i_i, any:(TEAM_TRANSFER[i_i]));
rg_reset_user_model(i_i, true);
set_member(i_i, m_iJoiningState, JOINED);
set_member(i_i, m_bSkipSpawn, false);
//set_member(i_i, m_bNotKilled, false);
//set_entvar(i_i, var_deadflag, DEAD_NO);
ExecuteHam(Ham_CS_RoundRespawn, i_i);
/*
rg_reset_user_model(i_i, true);
set_entvar(i_i, var_deadflag, DEAD_NO);
set_member(i_i, m_bNotKilled, false);
set_member(i_i, m_bTeamChanged, false);
ExecuteHam(Ham_CS_RoundRespawn, i_i);
*/
Ham_Spawn
- возможно, в этом проблема...Мне нужно как-то вызвать
GetIntoGame()
https://github.com/s1lentq/ReGameDL...4255613c4f0e/regamedll/dlls/player.cpp#L10475или придется воспроизвести ее код...
Подскажите, пожалуйста, как мне это починить? Корректно воскресить игрока не дожидаясь следующего раунда...
Если игрок хоть раз входил в игру - переводится все норм... Такое ощущение, что где-то какой-то флаг нужно установить.. Я перепробовал штук 5: var_deadflag = dead_no, m_bTeamChanged и т.п., все хоть как-то связано с признаками трупа...
2)
rg_set_user_team(...)
- делает аналогичные предыдущему пункту действия для игрока который не выбрал команду или спектратора который ни разу не входил в игру. Для команды (CT, TT) работает отлично.Я не вижу никакой логической разницы между двумя этими функциями... Как и с табличкой на двери, которую можно либо прибить, либо приклеить. Понимаю, что я тупой и не понимаю многих задумок разработчиков ReAPI, поэтому хотелось бы найти какое-то универсальное
rf_set_team(...)
безо всяких заморочек делающее то, что от нее просят - всегда, а не когда на небе сойдутся звезды и я угадаю нужный момент...*) Эти манипуляции я делаю в начале раунда в
RegisterHookChain(RG_CSGameRules_CheckMapConditions, "new_round");
...
Последнее редактирование: