HalfLife
August 24

Goldsrc: Положение сущностей в игровом мире, соответствующее ихнему в редакторе карт

Суть: По-умолчанию если ставить сущность под углом в редакторе карт, то в самой игре она падает по горизонтали. Решение без готового кода.

Стоит обратить взор на функцию "void CBasePlayerItem::FallThink()", в которой имеются такие строки:

pev->angles.x = 0;
pev->angles.z = 0;

Эти строки отвечают за горизонтальное положение сущности после её появления в игровом мире, чтобы она там находилась естественно.

Если их закомментировать/убрать, то модель сохранит свои углы, но при этом упадёт до своего "origin".

Есть простое решение в виде создания отдельного параметра, который будет отвечать за отключение/включение падения у сущности. Пусть это будет условное "nophys".

По-умолчанию этот параметр равен "false". В "Spawn" сущности прописываем проверку на "nophys", если он равен "true", то — пишем код, подобный на "FallInit()" (кой в том же "weapons.cpp"), но устанавливаем "movetype = NONE", иначе обычный "FallInit()".

Сущности переписываем собственный "KeyValue" и ловим параметр "nophys" из карты. Как это делается, можно посмотреть в коде различных сущностей.

В редакторе карт нужной сущности прописываем параметр "nophys" со значением "1". Собираем карту и видим, что сущность сохранила своё положение, установленное в редакторе карт.


Прошу оценить заметку; если есть какие-то вопросы и/или пожелания, прошу писать на почтовый ящик "arturaiwasan[@]gmail.com".

24.08.2025.