本文整理汇总了C++中GetFireRate函数的典型用法代码示例。如果您正苦于以下问题:C++ GetFireRate函数的具体用法?C++ GetFireRate怎么用?C++ GetFireRate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetFireRate函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: clamp
//-----------------------------------------------------------------------------
// Purpose: Make enough sound events to fill the estimated think interval
// returns: number of shots needed
//-----------------------------------------------------------------------------
int CHLMachineGun::WeaponSoundRealtime( WeaponSound_t shoot_type )
{
int numBullets = 0;
// ran out of time, clamp to current
if (m_flNextSoundTime < gpGlobals->curtime)
{
m_flNextSoundTime = gpGlobals->curtime;
}
// make enough sound events to fill up the next estimated think interval
float dt = clamp( m_flAnimTime - m_flPrevAnimTime, 0, 0.2 );
if (m_flNextSoundTime < gpGlobals->curtime + dt)
{
WeaponSound( SINGLE_NPC, m_flNextSoundTime );
m_flNextSoundTime += GetFireRate();
numBullets++;
}
if (m_flNextSoundTime < gpGlobals->curtime + dt)
{
WeaponSound( SINGLE_NPC, m_flNextSoundTime );
m_flNextSoundTime += GetFireRate();
numBullets++;
}
return numBullets;
}
开发者ID:Adidasman1,项目名称:source-sdk-2013,代码行数:31,代码来源:basehlcombatweapon.cpp
示例2: WeaponSound
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CWeaponCombatLaserRifle::PrimaryAttack( void )
{
CBaseTFPlayer *pPlayer = (CBaseTFPlayer*)GetOwner();
if (!pPlayer)
return;
WeaponSound(SINGLE);
// Fire the bullets
Vector vecSrc = pPlayer->Weapon_ShootPosition( );
Vector vecAiming;
pPlayer->EyeVectors( &vecAiming );
PlayAttackAnimation( GetPrimaryAttackActivity() );
// Reduce the spread if the player's ducking
Vector vecSpread = GetBulletSpread();
vecSpread *= m_flInaccuracy;
TFGameRules()->FireBullets( CTakeDamageInfo( this, pPlayer, weapon_combat_laserrifle_damage.GetFloat(), DMG_PLASMA), 1,
vecSrc, vecAiming, vecSpread, weapon_combat_laserrifle_range.GetFloat(), m_iPrimaryAmmoType, 0, entindex(), 0 );
m_flInaccuracy += 0.3;
m_flInaccuracy = clamp(m_flInaccuracy, 0, 1);
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
m_iClip1 = m_iClip1 - 1;
}
开发者ID:Axitonium,项目名称:SourceEngine2007,代码行数:31,代码来源:weapon_combat_laserrifle.cpp
示例3: ToBasePlayer
void CWeaponStickyLauncher::PrimaryAttack( void )
{
// Only the player fires this way so we can cast
CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );
if (!pPlayer)
return;
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
WeaponSound(SINGLE);
pPlayer->m_fEffects |= EF_MUZZLEFLASH;
SendWeaponAnim( GetPrimaryAttackActivity() );
// player "shoot" animation
pPlayer->SetAnimation( PLAYER_ATTACK1 );
Vector vecSrc = pPlayer->Weapon_ShootPosition( );
Vector vecAiming = pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
m_iClip1 = m_iClip1 - 1;
LaunchStickyBomb( pPlayer, vecSrc, vecAiming );
AddViewKick();
}
开发者ID:RaisingTheDerp,项目名称:raisingthebar,代码行数:25,代码来源:weapon_stickylauncher.cpp
示例4: ToBasePlayer
void CWeaponCombatKnife::SecondaryAttack( void )
{
CBasePlayer* pOwner = ToBasePlayer( GetOwner() );
Assert( pOwner );
//Can't throw last knife
if ( pOwner->GetAmmoCount(GetPrimaryAmmoType()) <= 0 )
{
m_flNextSecondaryAttack = gpGlobals->curtime + 0.1f;
return;
}
#ifndef CLIENT_DLL
CDHLProjectile* pKnife = (CDHLProjectile*)(CreateEntityByName( "dhl_projectile" ));
Assert( pKnife );
pKnife->SetOwnerEntity( pOwner );
pKnife->Spawn();
//This is just an easy way of getting an eye vector, there isn't really any autoaim in MP
Vector vecDir = pOwner->GetAutoaimVector( AUTOAIM_SCALE_DEFAULT );
//HACK - move it forward so it doesn't appear to spawn inside the player's face
Vector vecSrc = pOwner->Weapon_ShootPosition() + ( vecDir * 6.0f );
pKnife->Fire( vecSrc, vecDir * 1232.0f /*70mph*/, GetHL2MPWpnData().m_iPlayerDamage, this, pOwner, -1 );
if ( dhl_flamingknives.GetBool() )
pKnife->Ignite( 30.0f, false );
#endif
//Make sure this is done after the call to Fire()
int iAmmo = pOwner->GetAmmoCount(GetPrimaryAmmoType());
pOwner->RemoveAmmo( 1, GetPrimaryAmmoType() );
if ( iAmmo <= 0 )
{
AddEffects( EF_NODRAW );
#ifndef CLIENT_DLL
pOwner->Weapon_Drop( this, NULL, NULL );
Remove();
#endif
}
else
{
SendWeaponAnim( ACT_VM_THROW ); //Need to be able to predict this
pOwner->SetAnimation( PLAYER_ATTACK1 ); //Use the primary attack anim for now
ToHL2MPPlayer(pOwner)->DoAnimationEvent( PLAYERANIMEVENT_ATTACK_PRIMARY );
m_flNextSecondaryAttack = gpGlobals->curtime + GetFireRate();
}
/*IPhysicsObject* pPhysObj = VPhysicsGetObject();
if ( pPhysObj )
{
pPhysObj->Sleep();
pPhysObj->EnableMotion( false );
pPhysObj->EnableCollisions( false );
}
m_bAllowPickup = false;*/
}
开发者ID:dreckard,项目名称:dhl2,代码行数:60,代码来源:weapon_combatknife.cpp
示例5: GetFireRate
//-----------------------------------------------------------------------------
// Purpose: Place the combat object
//-----------------------------------------------------------------------------
void CWeaponBaseCombatObject::PrimaryAttack( void )
{
CBaseTFPlayer *pPlayer = dynamic_cast<CBaseTFPlayer*>((CBaseEntity*)GetOwner());
if ( !pPlayer )
return;
if ( pPlayer->GetAmmoCount(m_iPrimaryAmmoType) <= 0 )
return;
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
Vector vecPlaceOrigin;
QAngle angPlaceAngles;
if ( GetPlacePosition( pPlayer, &vecPlaceOrigin, &angPlaceAngles ) == false )
{
WeaponSound( DOUBLE );
return;
}
// Place the combat object
PlaceCombatObject( pPlayer, vecPlaceOrigin, angPlaceAngles );
WeaponSound( SINGLE );
pPlayer->RemoveAmmo( 1, m_iPrimaryAmmoType );
// If I'm now out of ammo, switch away
if ( !HasPrimaryAmmo() )
{
pPlayer->SelectLastItem();
}
}
开发者ID:RaisingTheDerp,项目名称:raisingthebar,代码行数:33,代码来源:weapon_basecombatobject.cpp
示例6: ToBasePlayer
//-----------------------------------------------------------------------------
// Purpose: Spawn a grenade with no velocity and a timer of 0
//-----------------------------------------------------------------------------
void CGEWeaponGrenade::ExplodeInHand( void )
{
CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );
if (!pPlayer)
return;
#ifndef CLIENT_DLL
Vector vecEye = pPlayer->EyePosition();
CGEGrenade *pGrenade = (CGEGrenade *)CBaseEntity::Create( "npc_grenade", vecEye, vec3_angle, NULL );
if ( pGrenade )
{
pGrenade->SetThrower( GetOwner() );
pGrenade->SetOwnerEntity( GetOwner() );
pGrenade->SetSourceWeapon(this);
pGrenade->SetVelocity( 0, NULL );
pGrenade->m_bHitSomething = true; //I'm not gonna just give it to you!
pGrenade->SetDamage( GetGEWpnData().m_iDamage );
pGrenade->SetDamageRadius( GetGEWpnData().m_flDamageRadius );
pGrenade->SetTimer( 0 );
}
#endif
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
// Remove the grenade from our ammo pool
pPlayer->RemoveAmmo( 1, m_iPrimaryAmmoType );
}
开发者ID:Entropy-Soldier,项目名称:ges-legacy-code,代码行数:34,代码来源:weapon_grenade.cpp
示例7: OnSerpentine
void Sinkhole_Top::OnSerpentine(DispenseList& dispenseList)
{
for (auto& throwableQuantity : dispenseList)
{
int amount = throwableQuantity->GetQuantity();
int total = amount;
// Shoot a number proportional to the total number being shot out. This will reduce times for large amounts of coins to a maximum number of shot
const int maxPerShot = (amount / k_MultishotQuantityThreshold) + 1;
int launchAmount = amount;
if (launchAmount > maxPerShot)
launchAmount = maxPerShot;
int slotNum = 0;
int n = m_SingleShotTicker/GetFireRate() % (12*2);
slotNum = (n < 12) ?
n :
((12*2)-1) - n;
Position startOffset = Position(2*TILE_SIZE, 3*TILE_SIZE);
Position start = Position(x + startOffset.x, y + startOffset.y);
Position launchPos(start.x + slotNum*TILE_SIZE/2, start.y);
throwableQuantity->Throw(launchPos, std::bind(&Sinkhole_Top::GetLaunchTo, this), launchAmount);
amount -= launchAmount;
}
}
开发者ID:JordanBell,项目名称:Cash-Grab,代码行数:30,代码来源:Sinkhole_Top.cpp
示例8: ToBasePlayer
//-----------------------------------------------------------------------------
// Purpose: Allows firing as fast as button is pressed
//-----------------------------------------------------------------------------
void CWeaponMosinNagant::ItemPostFrame( void )
{
BaseClass::ItemPostFrame();
if ( m_bInReload )
return;
CBasePlayer *pOwner = ToBasePlayer( GetOwner() );
if ( pOwner == NULL )
return;
if ( pOwner->m_nButtons & IN_ATTACK2 )
{
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
}
if ( ( pOwner->m_nButtons & IN_ATTACK ) && ( m_flNextPrimaryAttack < gpGlobals->curtime ) && ( m_iClip1 <= 0 ) )
{
DryFire();
}
#ifdef CLIENT_DLL
if ( m_bInZoom ) //Can't let them switch to third person
{
if ( ::input->CAM_IsThirdPerson() )
{
::input->CAM_ToFirstPerson();
m_bWantsThirdPerson = !m_bWantsThirdPerson;
}
}
#endif
}
开发者ID:dreckard,项目名称:dhl2,代码行数:36,代码来源:weapon_mosinnagant.cpp
示例9: switch
//-----------------------------------------------------------------------------
// Purpose:
//
//
//-----------------------------------------------------------------------------
void CHLSelectFireMachineGun::PrimaryAttack( void )
{
if (m_bFireOnEmpty)
{
return;
}
switch( m_iFireMode )
{
case FIREMODE_FULLAUTO:
BaseClass::PrimaryAttack();
// Msg("%.3f\n", m_flNextPrimaryAttack.Get() );
SetWeaponIdleTime( gpGlobals->curtime + 3.0f );
break;
case FIREMODE_3RNDBURST:
m_iBurstSize = GetBurstSize();
// Call the think function directly so that the first round gets fired immediately.
BurstThink();
SetThink( &CHLSelectFireMachineGun::BurstThink );
m_flNextPrimaryAttack = gpGlobals->curtime + GetBurstCycleRate();
m_flNextSecondaryAttack = gpGlobals->curtime + GetBurstCycleRate();
// Pick up the rest of the burst through the think function.
SetNextThink( gpGlobals->curtime + GetFireRate() );
break;
}
CBasePlayer *pOwner = ToBasePlayer( GetOwner() );
if ( pOwner )
{
m_iPrimaryAttacks++;
gamestats->Event_WeaponFired( pOwner, true, GetClassname() );
}
}
开发者ID:Adidasman1,项目名称:source-sdk-2013,代码行数:40,代码来源:basehlcombatweapon.cpp
示例10: WeaponSound
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CWeaponCombatPlasmaGrenadeLauncher::PrimaryAttack( void )
{
CBaseTFPlayer *pPlayer = (CBaseTFPlayer*)GetOwner();
if (!pPlayer)
return;
WeaponSound(SINGLE);
// Fire the bullets
Vector vecSrc = pPlayer->Weapon_ShootPosition( );
PlayAttackAnimation( GetPrimaryAttackActivity() );
// Launch the grenade
Vector vecForward;
pPlayer->EyeVectors( &vecForward );
Vector vecOrigin = pPlayer->EyePosition();
vecOrigin += (vecForward);
#if !defined( CLIENT_DLL )
float flSpeed = 1200;
CGrenadeAntiPersonnel* pGrenade = CGrenadeAntiPersonnel::Create(vecOrigin, vecForward * flSpeed, pPlayer );
pGrenade->SetModel( "models/weapons/w_grenade.mdl" );
pGrenade->SetBounceSound( "PlasmaGrenade.Bounce" );
pGrenade->SetDamage( weapon_combat_plasmagrenadelauncher_damage.GetFloat() );
pGrenade->SetDamageRadius( weapon_combat_plasmagrenadelauncher_radius.GetFloat() );
pGrenade->SetExplodeOnContact( true );
#endif
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
m_iClip1 = m_iClip1 - 1;
}
开发者ID:Axitonium,项目名称:SourceEngine2007,代码行数:36,代码来源:weapon_combat_plasma_grenade_launcher.cpp
示例11: GetCommander
void CASW_Weapon_Freeze_Grenades::DelayedAttack( void )
{
m_bShotDelayed = false;
CASW_Player *pPlayer = GetCommander();
if ( !pPlayer )
return;
CASW_Marine *pMarine = GetMarine();
if ( !pMarine || pMarine->GetWaterLevel() == 3 )
return;
#ifndef CLIENT_DLL
Vector vecSrc = pMarine->GetOffhandThrowSource();
Vector vecDest = pPlayer->GetCrosshairTracePos();
Vector newVel = UTIL_LaunchVector( vecSrc, vecDest, GetThrowGravity() ) * 28.0f;
float fGrenadeRadius = GetBoomRadius( pMarine );
if (asw_debug_marine_damage.GetBool())
{
Msg( "Freeze grenade radius = %f \n", fGrenadeRadius );
}
pMarine->GetMarineSpeech()->Chatter( CHATTER_GRENADE );
// freeze aliens completely, plus the freeze duration
float flFreezeAmount = 1.0f + MarineSkills()->GetSkillBasedValueByMarine(pMarine, ASW_MARINE_SKILL_GRENADES, ASW_MARINE_SUBSKILL_GRENADE_FREEZE_DURATION);
if (ASWGameRules())
ASWGameRules()->m_fLastFireTime = gpGlobals->curtime;
CASW_Grenade_Freeze *pGrenade = CASW_Grenade_Freeze::Freeze_Grenade_Create(
1.0f,
flFreezeAmount,
fGrenadeRadius,
0,
vecSrc, pMarine->EyeAngles(), newVel, AngularImpulse(0,0,0), pMarine, this );
if ( pGrenade )
{
pGrenade->SetGravity( GetThrowGravity() );
pGrenade->SetExplodeOnWorldContact( true );
}
#endif
// decrement ammo
m_iClip1 -= 1;
#ifndef CLIENT_DLL
DestroyIfEmpty( true );
#endif
m_flSoonestPrimaryAttack = gpGlobals->curtime + ASW_FLARES_FASTEST_REFIRE_TIME;
if (m_iClip1 > 0) // only force the fire wait time if we have ammo for another shot
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
else
m_flNextPrimaryAttack = gpGlobals->curtime;
}
开发者ID:detoxhby,项目名称:SwarmDirector2,代码行数:57,代码来源:asw_weapon_freeze_grenades.cpp
示例12: GetFireRate
void CWeaponUzi::PrimaryAttack( void )
{
BaseClass::PrimaryAttack();
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
//BP muzzlefash de la mort
/*Vector vecShootOrigin;
QAngle angShootDir;
GetAttachment(LookupAttachment("muzzle"), vecShootOrigin, angShootDir);
DispatchParticleEffect("muzzleflash_final_uzi", vecShootOrigin, angShootDir);*/
/*if(!GetOwner()->IsAlive())
ToBasePlayer( GetOwner() )->DoMuzzleFlash();*/
#define EASY_DAMPEN 0.5f
#define MAX_VERTICAL_KICK 1.0f //Degrees
#define SLIDE_LIMIT 2.0f //Seconds
//Get the view kick
CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );
if ( pPlayer == NULL )
return;
//pPlayer->DoMuzzleFlash();
Vector vForward, vRight, vUp;
pPlayer->EyeVectors( &vForward, &vRight, &vUp );
Vector vecShootOrigin;
QAngle angShootDir;
GetAttachment(LookupAttachment("muzzle"), vecShootOrigin, angShootDir);
#ifdef CLIENT_DLL
Vector muzzlePoint = pPlayer->Weapon_ShootPosition() + vForward * 18.0f + vRight * 6.0f + vUp * -3.0f;
#else
Vector muzzlePoint = vecShootOrigin;
#endif
DispatchParticleEffect("muzzleflash_final_uzi", muzzlePoint, angShootDir);
#ifdef CLIENT_DLL
dlight_t *el = effects->CL_AllocDlight( LIGHT_INDEX_MUZZLEFLASH + index );
el->origin = muzzlePoint;
el->radius = random->RandomInt( 32, 64 );
el->decay = el->radius / 0.05f;
el->die = gpGlobals->curtime + 0.2f;
el->color.r = 255;
el->color.g = 192;
el->color.b = 64;
el->color.exponent = 5;
#endif
DoMachineGunKick( pPlayer, EASY_DAMPEN, MAX_VERTICAL_KICK, m_fFireDuration, SLIDE_LIMIT );
}
开发者ID:Orygin,项目名称:BisounoursParty,代码行数:51,代码来源:weapon_uzi.cpp
示例13: GetCommander
void CASW_Weapon_Bait::DelayedAttack()
{
m_bShotDelayed = false;
CASW_Player *pPlayer = GetCommander();
if ( !pPlayer )
return;
CASW_Marine *pMarine = GetMarine();
if ( !pMarine || pMarine->GetWaterLevel() == 3 )
return;
// sets the animation on the marine holding this weapon
//pMarine->SetAnimation( PLAYER_ATTACK1 );
#ifndef CLIENT_DLL
Vector vecSrc = pMarine->GetOffhandThrowSource();
AngularImpulse rotSpeed(0,0,720);
Vector vecDest = pPlayer->GetCrosshairTracePos();
Vector newVel = UTIL_LaunchVector( vecSrc, vecDest, GetThrowGravity() ) * 28.0f;
CASW_Bait *pEnt = CASW_Bait::Bait_Create( vecSrc, QAngle(90,0,0), newVel, rotSpeed, pMarine );
if ( pEnt )
{
float flDuration = pEnt->GetDuration();
//CALL_ATTRIB_HOOK_FLOAT( flDuration, mod_duration );
pEnt->SetDuration( flDuration );
pEnt->SetGravity( GetThrowGravity() );
}
#endif
// decrement ammo
m_iClip1 -= 1;
#ifndef CLIENT_DLL
DestroyIfEmpty( true );
#endif
m_flSoonestPrimaryAttack = gpGlobals->curtime + ASW_BAIT_FASTEST_REFIRE_TIME;
if (m_iClip1 > 0) // only force the fire wait time if we have ammo for another shot
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
else
m_flNextPrimaryAttack = gpGlobals->curtime;
}
开发者ID:BenLubar,项目名称:SwarmDirector2,代码行数:46,代码来源:asw_weapon_bait.cpp
示例14: ToBasePlayer
void CWeaponSAA::ItemPostFrame( void )
{
BaseClass::ItemPostFrame();
if ( m_bInReload )
return;
CBasePlayer *pOwner = ToBasePlayer( GetOwner() );
if ( pOwner == NULL )
return;
if ( pOwner->m_nButtons & IN_ATTACK2 )
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
if ( ( pOwner->m_nButtons & IN_ATTACK ) && ( m_flNextPrimaryAttack < gpGlobals->curtime ) && ( m_iClip1 <= 0 ) )
DryFire();
}
开发者ID:dreckard,项目名称:dhl2,代码行数:17,代码来源:weapon_saa.cpp
示例15: SetThink
//-----------------------------------------------------------------------------
// Purpose:
//
//
//-----------------------------------------------------------------------------
void CHLSelectFireMachineGun::BurstThink( void )
{
CHLMachineGun::PrimaryAttack();
m_iBurstSize--;
if( m_iBurstSize == 0 )
{
// The burst is over!
SetThink(NULL);
// idle immediately to stop the firing animation
SetWeaponIdleTime( gpGlobals->curtime );
return;
}
SetNextThink( gpGlobals->curtime + GetFireRate() );
}
开发者ID:Adidasman1,项目名称:source-sdk-2013,代码行数:23,代码来源:basehlcombatweapon.cpp
示例16: ToBasePlayer
void CWeaponShotgun::PrimaryAttack( void )
{
// Only the player fires this way so we can cast
CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );
if (!pPlayer)
return;
// MUST call sound before removing a round from the clip of a CMachineGun
WeaponSound(SINGLE);
pPlayer->DoMuzzleFlash();
SendWeaponAnim( ACT_VM_PRIMARYATTACK );
ToGEPlayer(pPlayer)->DoAnimationEvent( PLAYERANIMEVENT_ATTACK_PRIMARY );
// Don't fire again until our ROF expires
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
m_flSoonestPrimaryAttack = gpGlobals->curtime + GetClickFireRate();
m_iClip1 -= 1;
// player "shoot" animation
pPlayer->SetAnimation( PLAYER_ATTACK1 );
Vector vecSrc = pPlayer->Weapon_ShootPosition( );
Vector vecAiming = pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );
// FireBulletsInfo_t info( 5, vecSrc, vecAiming, pGEPlayer->GetAttackSpread(this), MAX_TRACE_LENGTH, m_iPrimaryAmmoType );
// info.m_pAttacker = pPlayer;
// Knock the player's view around
AddViewKick();
RecordShotFired();
// Fire the bullets, and force the first shot to be perfectly accuracy
PrepareFireBullets(5, pPlayer, vecSrc, vecAiming, true);
if (!m_iClip1 && pPlayer->GetAmmoCount(m_iPrimaryAmmoType) <= 0)
{
// HEV suit - indicate out of ammo condition
pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
}
}
开发者ID:djoslin0,项目名称:ges-legacy-code,代码行数:44,代码来源:weapon_shotgun.cpp
示例17: WeaponSound
//-----------------------------------------------------------------------------
// Purpose: Firing
//-----------------------------------------------------------------------------
void CWeaponRocketLauncher::PrimaryAttack( void )
{
CBaseTFPlayer *pPlayer = ( CBaseTFPlayer* )GetOwner();
if ( !pPlayer )
return;
if ( !ComputeEMPFireState() )
return;
// Weapon "Fire" sound.
WeaponSound( SINGLE );
// Play the attack animation (need one for rocket launcher - deploy?)
PlayAttackAnimation( GetPrimaryAttackActivity() );
// Fire the rocket (Get the position and angles).
Vector vecFirePos = pPlayer->Weapon_ShootPosition();
Vector vecFireAng;
pPlayer->EyeVectors( &vecFireAng );
// Shift it down a bit so the firer can see it
Vector vecRight;
AngleVectors( pPlayer->EyeAngles() + pPlayer->m_Local.m_vecPunchAngle, NULL, &vecRight, NULL );
vecFirePos += Vector( 0, 0, -8 ) + vecRight * 12;
// Create the rocket.
#if !defined( CLIENT_DLL )
CWeaponGrenadeRocket *pRocket = CWeaponGrenadeRocket::Create( vecFirePos, vecFireAng, weapon_rocket_launcher_range.GetFloat(), pPlayer );
#else
CWeaponGrenadeRocket *pRocket = CWeaponGrenadeRocket::Create( vecFirePos, vecFireAng, 0, pPlayer );
#endif
if ( pRocket )
{
pRocket->SetRealOwner( pPlayer );
#if !defined( CLIENT_DLL )
pRocket->SetDamage( weapon_rocket_launcher_damage.GetFloat() );
#endif
}
// Essentially you are done!
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
m_iClip1 = m_iClip1 - 1;
}
开发者ID:RaisingTheDerp,项目名称:raisingthebar,代码行数:46,代码来源:weapon_rocketlauncher.cpp
示例18: WeaponSound
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CWeaponCombat_ChargeablePlasma::PrimaryAttack( void )
{
CBaseTFPlayer *pPlayer = (CBaseTFPlayer*)GetOwner();
if (!pPlayer)
return;
WeaponSound(SINGLE);
// Fire the bullets
Vector vecSrc = pPlayer->Weapon_ShootPosition( );
Vector vecAiming;
pPlayer->EyeVectors( &vecAiming );
// If we already have a lock target from button down, see if we shouldn't try and get a new one
// Only do this is the button was released immediately
if ( !m_hLockTarget || ( m_flLockedAt < gpGlobals->curtime ) )
{
m_hLockTarget = GetLockTarget();
}
PlayAttackAnimation( GetPrimaryAttackActivity() );
// Shift it down a bit so the firer can see it
Vector right;
AngleVectors( pPlayer->EyeAngles() + pPlayer->m_Local.m_vecPunchAngle, NULL, &right, NULL );
Vector vecStartSpot = vecSrc + Vector(0,0,-8) + right * 12;
CGuidedPlasma *pShot = CGuidedPlasma::Create(vecStartSpot, vecAiming, m_hLockTarget, m_vecTargetOffset, pPlayer);
// Set it's charged power level
if (m_bHasCharge)
m_flPower = min( MAX_CHARGED_TIME, gpGlobals->curtime - m_flChargeStartTime );
else
m_flPower = 0.0f;
float flDamageMult = RemapVal( m_flPower, 0, MAX_CHARGED_TIME, 1.0, MAX_CHARGED_POWER );
pShot->SetPowerLevel( flDamageMult );
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
m_iClip1 = m_iClip1 - 1;
m_hLockTarget = NULL;
}
开发者ID:Axitonium,项目名称:SourceEngine2007,代码行数:45,代码来源:weapon_combat_chargeableplasma.cpp
示例19: ToBasePlayer
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CWeaponGauss::PrimaryAttack( void )
{
CBasePlayer *pOwner = ToBasePlayer( GetOwner() );
if ( pOwner == NULL )
return;
WeaponSound( SINGLE );
WeaponSound( SPECIAL2 );
SendWeaponAnim( ACT_VM_PRIMARYATTACK );
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
pOwner->RemoveAmmo( 1, m_iPrimaryAmmoType );
Fire();
m_flCoilMaxVelocity = 0.0f;
m_flCoilVelocity = 1000.0f;
return;
}
开发者ID:Sub-Zero1324,项目名称:HL2-DM-Gauss-Gun-Code,代码行数:24,代码来源:weapon_gauss.cpp
示例20: ToBasePlayer
//-----------------------------------------------------------------------------
// Purpose: Prepare the launcher to fire
//-----------------------------------------------------------------------------
void CGEWeaponRocketLauncher::PrimaryAttack( void )
{
CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );
if (!pPlayer)
return;
// If my clip is empty (and I use clips) start reload
if ( UsesClipsForAmmo1() && !m_iClip1 )
{
Reload();
return;
}
// Bring us back to center view
pPlayer->ViewPunchReset();
// Note that this is a primary attack and prepare the grenade attack to pause.
m_bPreLaunch = true;
SendWeaponAnim( GetPrimaryAttackActivity() );
ToGEPlayer(pPlayer)->DoAnimationEvent( PLAYERANIMEVENT_ATTACK_PRIMARY );
m_flRocketSpawnTime = gpGlobals->curtime + GetFireDelay();
m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();
}
开发者ID:Entropy-Soldier,项目名称:ges-legacy-code,代码行数:27,代码来源:weapon_rocket_launcher.cpp
注:本文中的GetFireRate函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论