В этом простом туторе я покажу, как присобачить фонарь к оружию.
Открываем c_baseplayer.cpp и вверху вставляем эту строчку:
extern void FormatViewModelAttachment( Vector &vOrigin, bool bInverse );
Теперь находим функцию UpdateFlashlight() и заменяем её кодом который находится ниже:
void C_BasePlayer::UpdateFlashlight()
{
if ( IsEffectActive( EF_DIMLIGHT ) )
{
if (!m_pFlashlight)
{
m_pFlashlight = new CFlashlightEffect(index);
if (!m_pFlashlight)
return;
m_pFlashlight->TurnOn();
}
QAngle angLightDir;
Vector vecLightOrigin, vecForward, vecRight, vecUp;
GetViewModel()->GetAttachment( 1, vecLightOrigin, angLightDir );
::FormatViewModelAttachment( vecLightOrigin, true );
AngleVectors( angLightDir, &vecForward, &vecRight, &vecUp );
m_pFlashlight->UpdateLight( vecLightOrigin, vecForward, vecRight, vecUp, FLASHLIGHT_DISTANCE );
}
else if (m_pFlashlight)
{
// Turned off the flashlight; delete it.
delete m_pFlashlight;
m_pFlashlight = NULL;
}
}
Теперь добавляем фонарь к какому нибудь оружию, например в пистолет. Добавим фонарь на вторичную атаку:
void CWeaponPistol::SecondaryAttack( void )
{
CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );
if ( pPlayer == NULL )
return;
if ( !( pPlayer->IsEffectActive( EF_DIMLIGHT ) ) )
pPlayer->AddEffects( EF_DIMLIGHT );
else
pPlayer->RemoveEffects( EF_DIMLIGHT );
m_flNextSecondaryAttack = gpGlobals->curtime + 0.5f;
}
Вот и всё теперь заходим в игру жмём правую кнопку и получаем фонарь!
Источник: http://stav-mapping.info/e107_plugins/content/content.php?content.49 |