Stat ( source map sources ), pcs.
Все, кто хотя бы один раз прошел Hl1 наверняка знает, что на карте c2a5 (там где плотина) есть такие прикольные бочки, которые подскакивают вверх и там взрываются.
Летающие бочки и trigger_push
Все, кто хотя бы один раз прошел Hl1 наверняка знает, что на карте c2a5 (там где плотина) есть такие прикольные бочки, которые подскакивают вверх и там взрываются.
Following translations are available : |
russian |
Все, кто хотя бы один раз прошел Hl1 наверняка знает, что на карте c2a5 (там где плотина) есть такие прикольные бочки, которые подскакивают вверх и там взрываются. И все бы хорошо, да только эти бочки подскакивают вверх на полметра, а должны на самом деле взлетать высоко к небу. Очень мало кто видел этот скрипт работающим так как надо. И как правило вы могли это наблюдать на хл версии 1.0.1.5, а то и на более ранних. Проблема заключается в корявости кода самого trigger_push, который не придает func_pushable необходимого ускорения. Однако пофиксить этот баг несложно. Откройте triggers.cpp,
найдите в нем строчку
void CTriggerPush :: Touch( CBaseEntity *pOther )
и замените в этой функции вот этот код
if ( pevToucher->solid != SOLID_NOT && pevToucher->solid != SOLID_BSP )
{
// Instant trigger, just transfer velocity and remove
if (FBitSet(pev->spawnflags, SF_TRIG_PUSH_ONCE))
{
pevToucher->velocity = pevToucher->velocity + (pev->speed * pev->movedir);
if ( pevToucher->velocity.z > 0 )
pevToucher->flags &= ~FL_ONGROUND;
UTIL_Remove( this );
}
else
{ // Push field, transfer to base velocity
Vector vecPush = (pev->speed * pev->movedir);
if ( pevToucher->flags & FL_BASEVELOCITY )
vecPush = vecPush + pevToucher->basevelocity;
pevToucher->basevelocity = vecPush;
pevToucher->flags |= FL_BASEVELOCITY;
// ALERT( at_console, "Vel %f, base %f\n", pevToucher->velocity.z, pevToucher->basevelocity.z );
}
}
if ( pevToucher->solid != SOLID_NOT ) //&& pevToucher->solid != SOLID_BSP )
{
if(pevToucher->movetype == MOVETYPE_PUSHSTEP) //pushable related code
{
pevToucher->velocity = pevToucher->velocity + (pev->speed * pev->movedir);
if ( pevToucher->velocity.z > 0 )
pevToucher->flags &= ~FL_ONGROUND;
pev->solid = SOLID_NOT; //push once. re-enable to affect again
}
else //other physobjects
{
// Push field, transfer to base velocity
Vector vecPush = (pev->speed * pev->movedir);
if ( pevToucher->flags & FL_BASEVELOCITY )
vecPush = vecPush + pevToucher->basevelocity;
pevToucher->basevelocity = vecPush;
pevToucher->flags |= FL_BASEVELOCITY;
//ALERT( at_console, "Vel %f, base %f\n", pevToucher->velocity.z, pevToucher->basevelocity.z );
}
if (FBitSet(pev->spawnflags, SF_TRIG_PUSH_ONCE)) UTIL_Remove( this );
}
Компилируем, запускаем с2а5 и наслаждаемся правильно летающими бочками (а этот скрипт довольно красиво выглядит, когда работает правильно).
Similar 1. Исходный код ножа - weapon_knife (Нож) с двумя режимами атаки: Slash и Stab. 2. Добавление новых классов для монстр - Мы будем добавлять новый класс Блэк Опс из Оппосинг Форс 3. Два цвета крови у зомби - Два цвета крови у зомби 4. учёные не отставали - Как сделать так, чтобы учёные не отставали на каждом препятствии 5. Сохранение анимаций - как сделать так чтобы анимации на оружии(допустим) сохранялись, например все помнят КС вот там был Usp 6. Quake strafing & DoD bobing styles - Вот от нечего делать я решил немножко изменить стиль игры в оригинальной хл. 7. Создание кооперативного прохождения - Данный тутор покажет как сделать в вашем моде кооператив.
You cannot comment, because you are not logged-in.