Хотите сделать приближение для своей пушки? нет проблем =) это можно использовать, как для sec attack, так и для других кнопок.... И так приступим... для начала создадим #define у вашей пушки..., т.е после всех #include пишем:
#define NEXT_ZOOM_TIME 0.2f #define ZOOM_STATE_NORMAL 0 #define ZOOM_STATE_2X 1 #define ZOOM_STATE_4X 2 Находим calss своей пушки. (class CWeaponName : public CBaseHLCombatWeapon). В нём добавляем:
void ItemPostFrame( void ); void ItemBusyFrame( void ); void ItemHolsterFrame( void ); и после private: пишем:
void CheckZoom( void ); float m_flNextZoomTime; int m_iZoomState; Так с классом всё... теперь спускаемся чуть ниже до строчки BEGIN_DATADESC( CWeaponName ) и после { пишем:
DEFINE_FIELD( m_iZoomState, FIELD_INTEGER ), DEFINE_FIELD( m_flNextZoomTime, FIELD_FLOAT ),
Теперь нам надо добавить void CWeapon357::ItemBusyFrame( void ), ItemHolsterFrame и ItemPostFrame И так приступим:
void CWeaponName::ItemBusyFrame( void ) { CheckZoom(); BaseClass::ItemBusyFrame(); }
void CWeaponName::ItemHolsterFrame( void ) { if (m_iZoomState != ZOOM_STATE_NORMAL) { CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );
m_iZoomState = ZOOM_STATE_NORMAL; pPlayer->SetFOV(this, 0, 0.1f); }
BaseClass::ItemHolsterFrame(); }
void CWeaponName::ItemPostFrame( void ) { CheckZoom();
BaseClass::ItemPostFrame(); } И теперь последнее, создадим само приближение, которе вы сможете потом использовать:
void CWeaponName::CheckZoom( void ) { CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );
if (pPlayer == NULL) return;
if ( (pPlayer->m_afButtonPressed & IN_ATTACK2) && (gpGlobals->curtime > m_flNextZoomTime) ) { m_flNextZoomTime = gpGlobals->curtime + NEXT_ZOOM_TIME;
switch(m_iZoomState) { case ZOOM_STATE_NORMAL: m_iZoomState = ZOOM_STATE_2X; pPlayer->SetFOV(this, 20, 0.2f); break;
case ZOOM_STATE_2X: m_iZoomState = ZOOM_STATE_4X; pPlayer->SetFOV(this, 10, 0.2f); break;
case ZOOM_STATE_4X: m_iZoomState = ZOOM_STATE_NORMAL; pPlayer->SetFOV(this, 0, 0.2f); break;
default: break; } } } Вот и всё... теперь вы сможете добавить это во вторичный огонь, или дополнительные кнопки... удачи © drnelson | P.S скоро будет код... ммм нового npc... которые может силой "разума" заставить врагов быть за него, а игрока скажем "застопорить" сделать "пьяный экран"
Источник: http://bbs.nashalife.ru/showthread.php?s=&threadid=12836 |