Stat ( source maps ), 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. учёные не отставали - Как сделать так, чтобы учёные не отставали на каждом препятствии 2. Монстры по сети - Для создания кооперативного мода или просто для включения монстров в сетевой игре 3. Спрыгивающий Headcrab - Наверняка каждый, кто поиграл в Half-Life2 хотел, чтобы хедкрабы спрыгивали с зомбяков и в первом Half-Life 4. Каждой пушке - спрайт - Итак вы создали новое оружие. А в меню выбора вместо рисунка непонятные спрайты, да и прицела нет. 5. Как перекрасить пули в ХЛ - Здесь я вам расскажу, как можно перекрасить пули в Half-Life1 и приведу свой пример 6. Sparks - Как добавить искры 7. Звук попадания как в HL2 - Работа на клиенте
You cannot comment, because you are not logged-in.