您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ GetFireRate函数代码示例

51自学网 2021-06-01 21:07:57
  C++
这篇教程C++ GetFireRate函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中GetFireRate函数的典型用法代码示例。如果您正苦于以下问题:C++ GetFireRate函数的具体用法?C++ GetFireRate怎么用?C++ GetFireRate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了GetFireRate函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例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,


示例21: GetMarine

void CASW_Weapon_Hornet_Barrage::PrimaryAttack(){		CASW_Marine *pMarine = GetMarine();	if ( !pMarine )		return;	CASW_Player *pPlayer = GetCommander();	if ( !pPlayer )		return;	if ( m_iRocketsToFire.Get() > 0 )		return;		// mine weapon is lost when all mines are gone	if ( UsesClipsForAmmo1() && !m_iClip1 ) 	{		return;	}	SetRocketsToFire();	m_flFireInterval = GetRocketFireInterval();	m_flNextLaunchTime = gpGlobals->curtime;			const char *pszSound = "ASW_Hornet_Barrage.Fire";	CPASAttenuationFilter filter( this, pszSound );	if ( IsPredicted() && CBaseEntity::GetPredictionPlayer() )	{		filter.UsePredictionRules();	}	EmitSound( filter, entindex(), pszSound );	// decrement ammo	m_iClip1 -= 1;	m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();}
开发者ID:BenLubar,项目名称:SwarmDirector2,代码行数:36,


示例22: ToBasePlayer

//-----------------------------------------------------------------------------// Purpose: //////-----------------------------------------------------------------------------void CHLMachineGun::PrimaryAttack( void ){	// Only the player fires this way so we can cast	CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );	if (!pPlayer)		return;		// Abort here to handle burst and auto fire modes	if ( (UsesClipsForAmmo1() && m_iClip1 == 0) || ( !UsesClipsForAmmo1() && !pPlayer->GetAmmoCount(m_iPrimaryAmmoType) ) )		return;	m_nShotsFired++;	pPlayer->DoMuzzleFlash();	// To make the firing framerate independent, we may have to fire more than one bullet here on low-framerate systems, 	// especially if the weapon we're firing has a really fast rate of fire.	int iBulletsToFire = 0;	float fireRate = GetFireRate();	// MUST call sound before removing a round from the clip of a CHLMachineGun	while ( m_flNextPrimaryAttack <= gpGlobals->curtime )	{		WeaponSound(SINGLE, m_flNextPrimaryAttack);		m_flNextPrimaryAttack = m_flNextPrimaryAttack + fireRate;		iBulletsToFire++;	}	// Make sure we don't fire more than the amount in the clip, if this weapon uses clips	if ( UsesClipsForAmmo1() )	{		if ( iBulletsToFire > m_iClip1 )			iBulletsToFire = m_iClip1;		m_iClip1 -= iBulletsToFire;	}	m_iPrimaryAttacks++;	gamestats->Event_WeaponFired( pPlayer, true, GetClassname() );	// Fire the bullets	FireBulletsInfo_t info;	info.m_iShots = iBulletsToFire;	info.m_vecSrc = pPlayer->Weapon_ShootPosition( );	info.m_vecDirShooting = pPlayer->GetAutoaimVector( AUTOAIM_SCALE_DEFAULT );	info.m_vecSpread = pPlayer->GetAttackSpread( this );	info.m_flDistance = MAX_TRACE_LENGTH;	info.m_iAmmoType = m_iPrimaryAmmoType;	info.m_iTracerFreq = 2;	FireBullets( info );	//Factor in the view kick	AddViewKick();	CSoundEnt::InsertSound( SOUND_COMBAT, GetAbsOrigin(), SOUNDENT_VOLUME_MACHINEGUN, 0.2, pPlayer );		if (!m_iClip1 && pPlayer->GetAmmoCount(m_iPrimaryAmmoType) <= 0)	{		// HEV suit - indicate out of ammo condition		pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); 	}	SendWeaponAnim( GetPrimaryAttackActivity() );	pPlayer->SetAnimation( PLAYER_ATTACK1 );	// Register a muzzleflash for the AI	pPlayer->SetMuzzleFlashTime( gpGlobals->curtime + 0.5 );}
开发者ID:Adidasman1,项目名称:source-sdk-2013,代码行数:72,


示例23: ToBasePlayer

//------------------------------------------------------------------------------// Purpose : Starts the swing of the weapon and determines the animation// Input   : bIsSecondary - is this a secondary attack?//------------------------------------------------------------------------------void CBaseHL2MPBludgeonWeapon::Swing( int bIsSecondary ){    trace_t traceHit;    // Try a ray    CBasePlayer *pOwner = ToBasePlayer( GetOwner() );    if ( !pOwner )        return;    Vector swingStart = pOwner->Weapon_ShootPosition( );    Vector forward;    pOwner->EyeVectors( &forward, NULL, NULL );    Vector swingEnd = swingStart + forward * GetRange();    UTIL_TraceLine( swingStart, swingEnd, MASK_SHOT_HULL, pOwner, COLLISION_GROUP_NONE, &traceHit );    Activity nHitActivity = ACT_VM_HITCENTER;#ifndef CLIENT_DLL    // Like bullets, bludgeon traces have to trace against triggers.    CTakeDamageInfo triggerInfo( GetOwner(), GetOwner(), GetDamageForActivity( nHitActivity ), DMG_CLUB );    TraceAttackToTriggers( triggerInfo, traceHit.startpos, traceHit.endpos, vec3_origin );#endif    if ( traceHit.fraction == 1.0 )    {        float bludgeonHullRadius = 1.732f * BLUDGEON_HULL_DIM;  // hull is +/- 16, so use cuberoot of 2 to determine how big the hull is from center to the corner point        // Back off by hull "radius"        swingEnd -= forward * bludgeonHullRadius;        UTIL_TraceHull( swingStart, swingEnd, g_bludgeonMins, g_bludgeonMaxs, MASK_SHOT_HULL, pOwner, COLLISION_GROUP_NONE, &traceHit );        if ( traceHit.fraction < 1.0 && traceHit.m_pEnt )        {            Vector vecToTarget = traceHit.m_pEnt->GetAbsOrigin() - swingStart;            VectorNormalize( vecToTarget );            float dot = vecToTarget.Dot( forward );            // YWB:  Make sure they are sort of facing the guy at least...            if ( dot < 0.70721f )            {                // Force amiss                traceHit.fraction = 1.0f;            }            else            {                nHitActivity = ChooseIntersectionPointAndActivity( traceHit, g_bludgeonMins, g_bludgeonMaxs, pOwner );            }        }    }    WeaponSound( SINGLE );    // -------------------------    //	Miss    // -------------------------    if ( traceHit.fraction == 1.0f )    {        nHitActivity = bIsSecondary ? ACT_VM_MISSCENTER2 : ACT_VM_MISSCENTER;        // We want to test the first swing again        Vector testEnd = swingStart + forward * GetRange();        // See if we happened to hit water        ImpactWater( swingStart, testEnd );    }    else    {        Hit( traceHit, nHitActivity );    }    // Send the anim    SendWeaponAnim( nHitActivity );    pOwner->SetAnimation( PLAYER_ATTACK1 );    ToHL2MPPlayer(pOwner)->DoAnimationEvent( PLAYERANIMEVENT_ATTACK_PRIMARY );    //Setup our next attack times    m_flNextPrimaryAttack = gpGlobals->curtime + GetFireRate();    m_flNextSecondaryAttack = gpGlobals->curtime + SequenceDuration();}
开发者ID:dreckard,项目名称:dhl2,代码行数:87,


示例24: GetCommander

void CASW_Weapon_Buff_Grenade::PrimaryAttack( void ){		// Only the player fires this way so we can cast	CASW_Player *pPlayer = GetCommander();	if (!pPlayer)		return;	CASW_Marine *pMarine = GetMarine();#ifndef CLIENT_DLL	bool bThisActive = (pMarine && pMarine->GetActiveWeapon() == this);#endif	// mine weapon is lost when all mines are gone	if ( UsesClipsForAmmo1() && !m_iClip1 ) 	{		//Reload();#ifndef CLIENT_DLL		if (pMarine)		{			pMarine->Weapon_Detach(this);			if (bThisActive)				pMarine->SwitchToNextBestWeapon(NULL);		}		Kill();#endif		return;	}	if ( !pMarine || pMarine->GetWaterLevel() == 3 )		return;	// MUST call sound before removing a round from the clip of a CMachineGun	//WeaponSound(SINGLE);	// tell the marine to tell its weapon to draw the muzzle flash	//pMarine->DoMuzzleFlash();	// sets the animation on the weapon model iteself	SendWeaponAnim( GetPrimaryAttackActivity() );	//pMarine->DoAnimationEvent(PLAYERANIMEVENT_HEAL);	// sets the animation on the marine holding this weapon	//pMarine->SetAnimation( PLAYER_ATTACK1 );#ifndef CLIENT_DLL	Vector	vecSrc		= pMarine->Weapon_ShootPosition( );	Vector	vecAiming	= pPlayer->GetAutoaimVectorForMarine(pMarine, GetAutoAimAmount(), GetVerticalAdjustOnlyAutoAimAmount());	// 45 degrees = 0.707106781187		if ( !pMarine->IsInhabited() && vecSrc.DistTo( pMarine->m_vecOffhandItemSpot ) < 150.0f )	{		vecSrc.x = pMarine->m_vecOffhandItemSpot.x;		vecSrc.y = pMarine->m_vecOffhandItemSpot.y;		vecSrc.z += 50.0f;	}	QAngle ang = pPlayer->EyeAngles();	ang.x = 0;	ang.z = 0;	CShotManipulator Manipulator( vecAiming );	AngularImpulse rotSpeed(0,0,720);		// create a pellet at some random spread direction				Vector newVel = Manipulator.ApplySpread(GetBulletSpread());	newVel *= ASW_MINE_VELOCITY;	if ( !pMarine->IsInhabited() )	{		newVel = vec3_origin;	}	float flRadius = asw_damage_amp_radius.GetFloat();	float flDuration = asw_damage_amp_duration.GetFloat();	CASW_BuffGrenade_Projectile::Grenade_Projectile_Create( vecSrc, ang, newVel, rotSpeed, pMarine, flRadius, flDuration );	pMarine->OnWeaponFired( this, 1 );	pMarine->GetMarineSpeech()->Chatter(CHATTER_MINE_DEPLOYED);#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:jtanx,项目名称:ch1ckenscoop,代码行数:92,


示例25: GetCommander

void CASW_Weapon_HealGrenade::PrimaryAttack( void ){		CASW_Player *pPlayer = GetCommander();	if (!pPlayer)		return;	CASW_Marine *pMarine = GetMarine();#ifndef CLIENT_DLL	bool bThisActive = (pMarine && pMarine->GetActiveWeapon() == this);#endif	if ( !pMarine )		return;	// MUST call sound before removing a round from the clip of a CMachineGun	WeaponSound(SINGLE);	// sets the animation on the weapon model iteself	SendWeaponAnim( GetPrimaryAttackActivity() );	// sets the animation on the marine holding this weapon	//pMarine->SetAnimation( PLAYER_ATTACK1 );#ifndef CLIENT_DLL	Vector	vecSrc		= pMarine->Weapon_ShootPosition( );	Vector	vecAiming	= pPlayer->GetAutoaimVectorForMarine(pMarine, GetAutoAimAmount(), GetVerticalAdjustOnlyAutoAimAmount());	// 45 degrees = 0.707106781187	if ( !pMarine->IsInhabited() && vecSrc.DistTo( pMarine->m_vecOffhandItemSpot ) < 150.0f )	{		vecSrc.x = pMarine->m_vecOffhandItemSpot.x;		vecSrc.y = pMarine->m_vecOffhandItemSpot.y;		vecSrc.z += 50.0f;	}	QAngle ang = pPlayer->EyeAngles();	ang.x = 0;	ang.z = 0;	CShotManipulator Manipulator( vecAiming );	AngularImpulse rotSpeed(0,0,720);	// create a pellet at some random spread direction				Vector newVel = Manipulator.ApplySpread(GetBulletSpread());	if ( pMarine->GetWaterLevel() != 3 )	{		CreateProjectile( vecSrc, ang, newVel, rotSpeed, pMarine );		pMarine->OnWeaponFired( this, 1 );	}	pMarine->GetMarineSpeech()->Chatter(CHATTER_MEDKIT);#endif	// decrement ammo	m_iClip1 -= 1;#ifndef CLIENT_DLL	// destroy if empty	if ( UsesClipsForAmmo1() && !m_iClip1 ) 	{		ASWFailAdvice()->OnMedSatchelEmpty();		pMarine->GetMarineSpeech()->Chatter( CHATTER_MEDS_NONE );		if ( pMarine )		{			pMarine->Weapon_Detach(this);			if ( bThisActive )				pMarine->SwitchToNextBestWeapon(NULL);		}		Kill();		return;	}#endif	m_flSoonestPrimaryAttack = gpGlobals->curtime + GetRefireTime();	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;	//m_flLastFireTime = gpGlobals->curtime;}
开发者ID:Cre3per,项目名称:hl2sdk-csgo,代码行数:81,


示例26: GetPlayerOwner

//=====================================================================================//// Purpose: Swing the weapon. bIsSecondary determines which Attack() function was used//=====================================================================================//void CTDPWeaponMaul::Swing( int bIsSecondary ){	// Do we have a valid owner holding the weapon?	CTDPPlayer *pPlayer = GetPlayerOwner();	if ( !pPlayer )		return;	// Get the player's position	Vector vSwingStart = pPlayer->Weapon_ShootPosition( );	Vector vForward;	pPlayer->EyeVectors( &vForward, NULL, NULL );	// Get the attack end position by using the weapon's range	Vector vSwingEnd = vSwingStart + vForward * GetRange();	trace_t tr;	UTIL_TraceLine( vSwingStart, vSwingEnd, MASK_SHOT_HULL, pPlayer, COLLISION_GROUP_NONE, &tr );	// Let's get our animation sequence depending on the attack type	Activity nHitActivity = ( bIsSecondary ) ? GetSecondaryAttackActivity() : GetPrimaryAttackActivity();#if defined( GAME_DLL )	// Like bullets, bludgeon traces have to trace against triggers.	CTakeDamageInfo triggerInfo( GetOwner(), GetOwner(), GetDamageForActivity( nHitActivity ), DMG_CLUB );	TraceAttackToTriggers( triggerInfo, tr.startpos, tr.endpos, vec3_origin );#endif	// We didn't hit anything. Let's check for hull trace now	if ( tr.fraction == 1.0f )	{		// hull is +/- 16, so use cuberoot of 2 to determine how big the hull is from center to the corner point		float bludgeonHullRadius = 1.732f * BLUDGEON_HULL_DIM;		// Back off by hull "radius"		vSwingEnd -= vForward * bludgeonHullRadius;		UTIL_TraceHull( vSwingStart, vSwingEnd, g_bludgeonMins, g_bludgeonMaxs, MASK_SHOT_HULL, pPlayer, COLLISION_GROUP_NONE, &tr );		// Check if we hit something and if we have hit an entity		if ( tr.fraction < 1.0 && tr.m_pEnt )		{			// Get the position of the entity we just hit			Vector vToTarget = tr.m_pEnt->GetAbsOrigin() - vSwingStart;			VectorNormalize( vToTarget );			float dot = vToTarget.Dot( vForward );			// Make sure they are sort of facing the guy at least...			if ( dot < 0.70721f )			{				// Force a miss				tr.fraction = 1.0f;			}			else			{				// We are sort of facing something. Let's see we should impact based on the melee swing trajectory				BaseClass::ChooseIntersectionPointAndActivity( tr, g_bludgeonMins, g_bludgeonMaxs, pPlayer );			}		}	}	// See if we happened to hit water along the way	BaseClass::ImpactWater( vSwingStart, tr.endpos );	// Check for hit results	if ( tr.fraction == 1.0f )	{		// We didn't hit anything so let's change the animation sequence to full swing		nHitActivity = ( bIsSecondary ) ? GetSecondaryMissActivity() : GetPrimaryMissActivity();	}	else	{		// We hit something. We can keep the same animation sequence.		BaseClass::Hit( tr, nHitActivity );	}	//Play swing sound	WeaponSound( SINGLE );	// Send the anim	SendWeaponAnim( nHitActivity );	// Setup our next attack times	m_flNextPrimaryAttack = m_flNextSecondaryAttack = gpGlobals->curtime + GetFireRate();	// Setup our next time to idle	m_flTimeWeaponIdle = gpGlobals->curtime + GetTime2Idle();}
开发者ID:jrbedard,项目名称:troy-divine-playground,代码行数:92,


示例27: Reload

//.........这里部分代码省略.........	// MUST call sound before removing a round from the clip of a CMachineGun	WeaponSound(SINGLE);	if (m_iClip1 <= AmmoClickPoint())		BaseClass::WeaponSound( EMPTY );	m_bIsFiring = true;	// tell the marine to tell its weapon to draw the muzzle flash	pMarine->DoMuzzleFlash();	// sets the animation on the weapon model iteself	//SendWeaponAnim( GetPrimaryAttackActivity() );	// sets the animation on the marine holding this weapon	//pMarine->SetAnimation( PLAYER_ATTACK1 );#ifdef GAME_DLL	// check for turning on lag compensation	if (pPlayer && pMarine->IsInhabited())	{		CASW_Lag_Compensation::RequestLagCompensation( pPlayer, pPlayer->GetCurrentUserCommand() );	}#endif	FireBulletsInfo_t info;	info.m_vecSrc = pMarine->Weapon_ShootPosition( );	if ( pPlayer && pMarine->IsInhabited() )	{		info.m_vecDirShooting = pPlayer->GetAutoaimVectorForMarine(pMarine, GetAutoAimAmount(), GetVerticalAdjustOnlyAutoAimAmount());	// 45 degrees = 0.707106781187	}	else	{#ifdef CLIENT_DLL		Msg("Error, clientside firing of a weapon that's being controlled by an AI marine/n");#else		info.m_vecDirShooting = pMarine->GetActualShootTrajectory( info.m_vecSrc );#endif	}		info.m_iShots = 1;				// Make sure we don't fire more than the amount in the clip	if ( UsesClipsForAmmo1() )	{		info.m_iShots = MIN( info.m_iShots, m_iClip1 );		m_iClip1 -= info.m_iShots;#ifdef GAME_DLL		CASW_Marine *pMarine = GetMarine();		if (pMarine && m_iClip1 <= 0 && pMarine->GetAmmoCount(m_iPrimaryAmmoType) <= 0 )		{			// check he doesn't have ammo in an ammo bay			CASW_Weapon_Ammo_Bag* pAmmoBag = dynamic_cast<CASW_Weapon_Ammo_Bag*>(pMarine->GetASWWeapon(0));			if (!pAmmoBag)				pAmmoBag = dynamic_cast<CASW_Weapon_Ammo_Bag*>(pMarine->GetASWWeapon(1));			if (!pAmmoBag || !pAmmoBag->CanGiveAmmoToWeapon(this))				pMarine->OnWeaponOutOfAmmo(true);		}#endif	}	else	{		info.m_iShots = MIN( info.m_iShots, pMarine->GetAmmoCount( m_iPrimaryAmmoType ) );		pMarine->RemoveAmmo( info.m_iShots, m_iPrimaryAmmoType );	}	info.m_flDistance = asw_weapon_max_shooting_distance.GetFloat();	info.m_iAmmoType = m_iPrimaryAmmoType;	info.m_iTracerFreq = 1;	info.m_flDamageForceScale = asw_weapon_force_scale.GetFloat();	info.m_vecSpread = GetBulletSpread();	info.m_flDamage = GetWeaponDamage();#ifndef CLIENT_DLL	if (asw_debug_marine_damage.GetBool())		Msg("Weapon dmg = %f/n", info.m_flDamage);	info.m_flDamage *= pMarine->GetMarineResource()->OnFired_GetDamageScale();#endif	int iPenetration = 1;	if ( pMarine->GetDamageBuffEndTime() > gpGlobals->curtime )		// sniper rifle penetrates more targets when marine is in a damage amp	{		iPenetration = 3;	}	pMarine->FirePenetratingBullets( info, iPenetration, 3.5f, 0, true, NULL, false  );	// increment shooting stats#ifndef CLIENT_DLL	if (pMarine && pMarine->GetMarineResource())	{		pMarine->GetMarineResource()->UsedWeapon(this, 1);		pMarine->OnWeaponFired( this, 1 );	}#endif		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;	m_fSlowTime = gpGlobals->curtime + 0.03f;}
开发者ID:BenLubar,项目名称:riflemod,代码行数:101,


示例28: GetCommander

void CASW_Weapon_T75::PrimaryAttack( void ){		// Only the player fires this way so we can cast	CASW_Player *pPlayer = GetCommander();	if (!pPlayer)		return;	CASW_Marine *pMarine = GetMarine();#ifndef CLIENT_DLL	bool bThisActive = (pMarine && pMarine->GetActiveWeapon() == this);#endif	// weapon is lost when all charges are gone	if ( UsesClipsForAmmo1() && !m_iClip1 ) 	{		//Reload();#ifndef CLIENT_DLL		if (pMarine)		{			pMarine->Weapon_Detach(this);			if (bThisActive)				pMarine->SwitchToNextBestWeapon(NULL);		}		Kill();#endif		return;	}	if ( !pMarine || pMarine->GetWaterLevel() == 3 )		// firing from a marine		return;	// sets the animation on the weapon model iteself	SendWeaponAnim( GetPrimaryAttackActivity() );#ifndef CLIENT_DLL	Vector	vecSrc		= pMarine->Weapon_ShootPosition( );	// TODO: Fix for AI	Vector	vecAiming	= pPlayer->GetAutoaimVectorForMarine(pMarine, GetAutoAimAmount(), GetVerticalAdjustOnlyAutoAimAmount());	if ( !pMarine->IsInhabited() && vecSrc.DistTo( pMarine->m_vecOffhandItemSpot ) < 150.0f )	{		vecSrc.x = pMarine->m_vecOffhandItemSpot.x;		vecSrc.y = pMarine->m_vecOffhandItemSpot.y;		vecSrc.z += 50.0f;	}		QAngle ang = pPlayer->EyeAngles();	ang.x = 0;	ang.z = 0;	CShotManipulator Manipulator( vecAiming );	AngularImpulse rotSpeed(0,0,720);				Vector newVel = Manipulator.ApplySpread(GetBulletSpread());	newVel *= ASW_MINE_VELOCITY;	if ( !pMarine->IsInhabited() )	{		newVel = vec3_origin;	}	CASW_T75 *pT75 = CASW_T75::ASW_T75_Create( vecSrc, ang, newVel, rotSpeed, pMarine, this );	if ( pT75 && !pMarine->IsInhabited() )	{		pT75->ActivateUseIcon( pMarine, ASW_USE_RELEASE_QUICK );	}	//pMarine->GetMarineSpeech()->Chatter(CHATTER_MINE_DEPLOYED);#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:BenLubar,项目名称:riflemod,代码行数:82,


示例29: Reload

//.........这里部分代码省略.........		if ( pPlayer && pMarine->IsInhabited() )		{			vecAiming = pPlayer->GetAutoaimVectorForMarine(pMarine, GetAutoAimAmount(), GetVerticalAdjustOnlyAutoAimAmount());	// 45 degrees = 0.707106781187		}		else		{#ifndef CLIENT_DLL			vecAiming = pMarine->GetActualShootTrajectory( vecSrc );#endif		}		if (true)		// hitscan pellets		{#ifndef CLIENT_DLL			if (asw_DebugAutoAim.GetBool())			{				NDebugOverlay::Line(vecSrc, vecSrc + vecAiming * asw_weapon_max_shooting_distance.GetFloat(), 64, 0, 64, false, 120.0);			}#endif			int iPellets = GetNumPellets();			for (int i=0;i<iPellets;i++)			{				FireBulletsInfo_t info( 1, vecSrc, vecAiming, GetAngularBulletSpread(), asw_weapon_max_shooting_distance.GetFloat(), m_iPrimaryAmmoType );				info.m_pAttacker = pMarine;				info.m_iTracerFreq = 1;				info.m_nFlags = FIRE_BULLETS_NO_PIERCING_SPARK | FIRE_BULLETS_HULL | FIRE_BULLETS_ANGULAR_SPREAD;				info.m_flDamage = GetWeaponDamage();				info.m_flDamageForceScale = asw_weapon_force_scale.GetFloat();	#ifndef CLIENT_DLL				if (asw_debug_marine_damage.GetBool())					Msg("Weapon dmg = %f/n", info.m_flDamage);				info.m_flDamage *= pMarine->GetMarineResource()->OnFired_GetDamageScale();	#endif				// shotgun bullets have a base 50% chance of piercing				//float fPiercingChance = 0.5f;				//if (pMarine->GetMarineResource() && pMarine->GetMarineProfile() && pMarine->GetMarineProfile()->GetMarineClass() == MARINE_CLASS_SPECIAL_WEAPONS)					//fPiercingChance += MarineSkills()->GetSkillBasedValueByMarine(pMarine, ASW_MARINE_SKILL_PIERCING);								//pMarine->FirePenetratingBullets(info, 5, fPiercingChance);				//pMarine->FirePenetratingBullets(info, 5, 1.0f, i, false );				pMarine->FirePenetratingBullets(info, 0, 1.0f, i, false );			}		}		else	// projectile pellets		{#ifndef CLIENT_DLL			CShotManipulator Manipulator( vecAiming );								int iPellets = GetNumPellets();			for (int i=0;i<iPellets;i++)			{				// create a pellet at some random spread direction				//CASW_Shotgun_Pellet *pPellet = 							Vector newVel = Manipulator.ApplySpread(GetBulletSpread());				//Vector newVel = ApplySpread( vecAiming, GetBulletSpread() );				if ( pMarine->GetWaterLevel() == 3 )					newVel *= PELLET_WATER_VELOCITY;				else					newVel *= PELLET_AIR_VELOCITY;				newVel *= (1.0 + (0.1 * random->RandomFloat(-1,1)));				CreatePellet(vecSrc, newVel, pMarine);								//CASW_Shotgun_Pellet_Predicted::CreatePellet(vecSrc, newVel, pPlayer, pMarine);			}#endif		}		// increment shooting stats#ifndef CLIENT_DLL		if (pMarine && pMarine->GetMarineResource())		{			pMarine->GetMarineResource()->UsedWeapon(this, 1);			pMarine->OnWeaponFired( this, GetNumPellets() );		}#endif		// decrement ammo		m_iClip1 -= 1;#ifdef GAME_DLL		CASW_Marine *pMarine = GetMarine();		if (pMarine && m_iClip1 <= 0 && pMarine->GetAmmoCount(m_iPrimaryAmmoType) <= 0 )		{			// check he doesn't have ammo in an ammo bay			CASW_Weapon_Ammo_Bag* pAmmoBag = dynamic_cast<CASW_Weapon_Ammo_Bag*>(pMarine->GetASWWeapon(0));			if (!pAmmoBag)				pAmmoBag = dynamic_cast<CASW_Weapon_Ammo_Bag*>(pMarine->GetASWWeapon(1));			if (!pAmmoBag || !pAmmoBag->CanGiveAmmoToWeapon(this))				pMarine->OnWeaponOutOfAmmo(true);		}#endif	}		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;	m_fSlowTime = gpGlobals->curtime + 0.1f;}
开发者ID:Cre3per,项目名称:hl2sdk-csgo,代码行数:101,


示例30: ToBasePlayer

void CWeaponSMG1::PrimaryAttack( void ){	// Only the player fires this way so we can cast	CBasePlayer *pPlayer = ToBasePlayer( GetOwner() );	if (!pPlayer)		return;		// Abort here to handle burst and auto fire modes	if ( (UsesClipsForAmmo1() && m_iClip1 == 0) || ( !UsesClipsForAmmo1() && !pPlayer->GetAmmoCount(m_iPrimaryAmmoType) ) )		return;	m_nShotsFired++;	pPlayer->DoMuzzleFlash();	// To make the firing framerate independent, we may have to fire more than one bullet here on low-framerate systems, 	// especially if the weapon we're firing has a really fast rate of fire.	int iBulletsToFire = 0;	float fireRate = GetFireRate();	while ( m_flNextPrimaryAttack <= gpGlobals->curtime )	{		// MUST call sound before removing a round from the clip of a CHLMachineGun		WeaponSound(SINGLE, m_flNextPrimaryAttack);		m_flNextPrimaryAttack = gpGlobals->curtime + fireRate;		iBulletsToFire++;	}	// Make sure we don't fire more than the amount in the clip, if this weapon uses clips	if ( UsesClipsForAmmo1() )	{		if ( iBulletsToFire > m_iClip1 )			iBulletsToFire = m_iClip1;		m_iClip1 -= iBulletsToFire;	}	CSDKPlayer *pSDKPlayer = ToSDKPlayer( pPlayer );	// Fire the bullets	FireBulletsInfo_t info;	info.m_iShots = iBulletsToFire;	info.m_vecSrc = pSDKPlayer->Weapon_ShootPosition( );	info.m_vecDirShooting = pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );	info.m_vecSpread = GetBulletSpread();	info.m_flDistance = MAX_TRACE_LENGTH;	info.m_iAmmoType = m_iPrimaryAmmoType;	info.m_iTracerFreq = 2;	info.m_iDamage = GetSDKWpnData().m_iDamage;	pPlayer->FireBullets( info );	//Factor in the view kick	AddViewKick();		if (!m_iClip1 && pPlayer->GetAmmoCount(m_iPrimaryAmmoType) <= 0)	{		// HEV suit - indicate out of ammo condition		pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0); 	}	SendWeaponAnim( GetPrimaryAttackActivity() );	pPlayer->SetAnimation( PLAYER_ATTACK1 );	pSDKPlayer->DoAnimationEvent( PLAYERANIMEVENT_ATTACK_PRIMARY );}
开发者ID:hekar,项目名称:luminousforts-codebase,代码行数:63,



注:本文中的GetFireRate函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ GetFirmwareParams函数代码示例
C++ GetFileVersionInfoSize函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。