Здравствуйте. Создаю в HL2DM чемодан w_suitcase_passenger (в нём лежит аммуниция убитого игрока). У меня проблема - я не знаю, какие задать свойства, чтобы объект вёл себя определённым образом, а именно:
1. Через объект могут проходить игроки
2. В объект можно выстрелить из любого оружия и он должен подчиняться общей физике (отлететь)
У меня же либо игрок натыкается на чемодан и у дальше срабатывает хук, но игрок чувствует столкновение (особенно мешает тем, кто распрыгивается в приседе, это останавливает распрыг). Либо сквозь чемодан игрок таки может пройти, но и хук не срабатывает соответственно. Сейчас я задаю только:
но это всё ещё не работает, как хотелось бы.
Второй и третий мой вопрос в следующем. Это, скорее, основы SM, но однозначного ответа я так и не нашёл. В player_death создаю таймер, который ставит хук на касание:
Это вынужденная мера, так как хук иногда срабатывает во время смерти и игрок подбирает свой собственный рюкзак. Вопрос второй - как поставить хук, когда игрок гарантированно мёртв? Я могу, разумеется, сравнить, кто умер и кто коснулся, но я чувствую, что делаю что-то не так. А третий вопрос вот в чём. Если я создаю таймер через CreateTimer, но не храню его хендл, должен ли я заботиться об освобождении хендла до рестарта карты? Или таймер освободит свои ресурсы сам?
Ну и четвёртый вопрос. Чемодан сравнительно мал и чтобы поднять его, нужно либо притянуть его гравипушкой, либо наступить. С гравипушкой проблема - чемодан притягивается, но не берётся игроком, пока он не упрётся чемоданом в стену или не отпустит его себе под ноги. Пока что обошёлся хуком соответствующего аутпута, но хотелось бы как-то сделать проще. Наступить на чемодан также проблема, особенно, если пользуешься распрыжкой - часто касание так и не происходит и игроки не понимают, что это за чемоданы и игнорируют их. Вопрос - как сделать, чтобы чемодан гарантированно брался гравиганом и при перелёте через чемодан? Есть ли какой-то радиус, в котором регистрируется касание или что-то подобное?
1. Через объект могут проходить игроки
2. В объект можно выстрелить из любого оружия и он должен подчиняться общей физике (отлететь)
У меня же либо игрок натыкается на чемодан и у дальше срабатывает хук, но игрок чувствует столкновение (особенно мешает тем, кто распрыгивается в приседе, это останавливает распрыг). Либо сквозь чемодан игрок таки может пройти, но и хук не срабатывает соответственно. Сейчас я задаю только:
C-подобный:
DispatchKeyValue(ent, "spawnflags", "0");
SetEntProp(ent, Prop_Send, "m_usSolidFlags", FSOLID_TRIGGER);
SetEntProp(ent, Prop_Data, "m_nSolidType", SOLID_VPHYSICS);
SetEntProp(ent, Prop_Send, "m_CollisionGroup", COLLISION_GROUP_DEBRIS);
но это всё ещё не работает, как хотелось бы.
Второй и третий мой вопрос в следующем. Это, скорее, основы SM, но однозначного ответа я так и не нашёл. В player_death создаю таймер, который ставит хук на касание:
C-подобный:
CreateTimer(0.1, Timer_DoHook, ent);
Это вынужденная мера, так как хук иногда срабатывает во время смерти и игрок подбирает свой собственный рюкзак. Вопрос второй - как поставить хук, когда игрок гарантированно мёртв? Я могу, разумеется, сравнить, кто умер и кто коснулся, но я чувствую, что делаю что-то не так. А третий вопрос вот в чём. Если я создаю таймер через CreateTimer, но не храню его хендл, должен ли я заботиться об освобождении хендла до рестарта карты? Или таймер освободит свои ресурсы сам?
Ну и четвёртый вопрос. Чемодан сравнительно мал и чтобы поднять его, нужно либо притянуть его гравипушкой, либо наступить. С гравипушкой проблема - чемодан притягивается, но не берётся игроком, пока он не упрётся чемоданом в стену или не отпустит его себе под ноги. Пока что обошёлся хуком соответствующего аутпута, но хотелось бы как-то сделать проще. Наступить на чемодан также проблема, особенно, если пользуешься распрыжкой - часто касание так и не происходит и игроки не понимают, что это за чемоданы и игнорируют их. Вопрос - как сделать, чтобы чемодан гарантированно брался гравиганом и при перелёте через чемодан? Есть ли какой-то радиус, в котором регистрируется касание или что-то подобное?