Закрыть
Artur Ajvazjan » Заметки » Goldsrc: Положение сущностей

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

24/08/2025


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


image.php?url=aHR0cHM6Ly9rYXNsYW5hLm92ay50by9oZW50YWkvNDcvNDdkZGExOWE1ZGVmNzlmNjhhZmRiMjJmZWJlZWZlZDYxNDRmYjkzNDgxZDc1Y2ZkYjc3NjU1MDFmODdmNDdmODAwMmM5N2M5Njc3Y2Y4YmVhYzhjMTNjNjk2NTk4YWZjNGY1YTAyM2JlNWUwMmFlNzc4MWIwMDc0NDI4NTEzZWEuanBlZw==

Стоит обратить взор на функцию "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". Собираем карту и видим, что сущность сохранила своё положение, установленное в редакторе карт.

Будьте первым, кто оставит комментарий!