HLFX.Ru Forum
Показать все 6 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Скорость исчезновения хулла у трупов (https://hlfx.ru/forum/showthread.php?threadid=4563)


Отправлено JPEG 24-03-2015 в 01:19:

Half-Life Скорость исчезновения хулла у трупов

Убиваем, например, солдата монтировкой на близком расстоянии, он падает замертво, мы быстро пытаемся пройти вперёд - сквозь него, пока он валяется, но первую секунду сталкиваемся с невидимой преградой, его хуллом. Как ускорить исчезновение этого хулла?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))


Отправлено XaeroX 24-03-2015 в 08:56:

Убирать его не при DEAD_DEAD, а при DEAD_DYING.

__________________

xaerox on Vivino


Отправлено ~ X ~ 24-03-2015 в 13:26:

pev->solid что-ли?

Кстати, моменты смерти у монстров отследить довольно трудно. Там есть некоторая хитрость... с секвенсами

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 24-03-2015 в 13:48:

~ X ~
Хитрость в том, что моменты эти находятся в обработчиках task-ов.

__________________

xaerox on Vivino


Отправлено Ku2zoff 24-03-2015 в 17:49:

Когда-то я сделал так, что хулл пропадал сразу, как только монстр умирал. Достали хедкрабы в вентиляциях, которые мешали проползать быстро после их убийства. Уже и не вспомню, где что изменил, но я копал и CBaseMonster::Killed, и CBaseMonster::BecomeDead.
Нашёл! У меня вот такие изменения в коде есть:

1. schedule.cpp

C++ Source Code:
void CBaseMonster :: RunTask ( Task_t *pTask )
...
case TASK_DIE:

в оригинале код такой:
C++ Source Code:
1
if ( !BBoxFlat() )
2
{
3
  // a bit of a hack. If a corpses' bbox is positioned such that being left solid so that it can be attacked will
4
  // block the player on a slope or stairs, the corpse is made nonsolid.
5
  //					pev->solid = SOLID_NOT;
6
  UTIL_SetSize ( pev, Vector ( -4, -4, 0 ), Vector ( 4, 4, 1 ) );
7
}
8
else // !!!HACKHACK - put monster in a thin, wide bounding box until we fix the solid type/bounding volume problem
9
  UTIL_SetSize ( pev, Vector ( pev->mins.x, pev->mins.y, pev->mins.z ), Vector ( pev->maxs.x, pev->maxs.y, pev->mins.z + 1 ) );

А у меня:
C++ Source Code:
SetThink(&CBaseMonster :: CorpseFallThink );


2. defaultai.cpp
C++ Source Code:
Schedule_t* CBaseMonster :: GetScheduleOfType ( int Type )
...
case SCHED_DIE:

оригинал:
C++ Source Code:
{
  return &slDie[ 0 ];
}

у меня:
C++ Source Code:
{
  UTIL_SetSize(pev, g_vecZero, g_vecZero );
  return &slDie[ 0 ];
}


Отправлено JPEG 08-06-2015 в 19:32:

Цитата:
Ku2zoff писал:


только сейчас дошли руки до этого, всё вроде работает, спасибо

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))


Временная зона GMT. Текущее время 18:52.
Показать все 6 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024