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

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

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

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

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

示例1: MaxAmmoCarry

//=========================================================// CWeaponBox - Touch: try to add my contents to the toucher// if the toucher is a player.//=========================================================void CWeaponBox::Touch( CBaseEntity *pOther ){	if ( !(pev->flags & FL_ONGROUND ) )	{		return;	}	if ( !pOther->IsPlayer() )	{		// only players may touch a weaponbox.		return;	}	if ( !pOther->IsAlive() )	{		// no dead guys.		return;	}	CBasePlayer *pPlayer = (CBasePlayer *)pOther;	int i;// dole out ammo	for ( i = 0 ; i < MAX_AMMO_SLOTS ; i++ )	{		if ( !FStringNull( m_rgiszAmmo[ i ] ) )		{			// there's some ammo of this type. 			pPlayer->GiveAmmo( m_rgAmmo[ i ], (char *)STRING( m_rgiszAmmo[ i ] ), MaxAmmoCarry( m_rgiszAmmo[ i ] ) );			//ALERT ( at_console, "Gave %d rounds of %s/n", m_rgAmmo[i], STRING(m_rgiszAmmo[i]) );			// now empty the ammo from the weaponbox since we just gave it to the player			m_rgiszAmmo[ i ] = iStringNull;			m_rgAmmo[ i ] = 0;		}	}// go through my weapons and try to give the usable ones to the player. // it's important the the player be given ammo first, so the weapons code doesn't refuse // to deploy a better weapon that the player may pick up because he has no ammo for it.	for ( i = 0 ; i < MAX_ITEM_TYPES ; i++ )	{		if ( m_rgpPlayerItems[ i ] )		{			CBasePlayerItem *pItem;			// have at least one weapon in this slot			while ( m_rgpPlayerItems[ i ] )			{				//ALERT ( at_console, "trying to give %s/n", STRING( m_rgpPlayerItems[ i ]->pev->classname ) );				pItem = m_rgpPlayerItems[ i ];				m_rgpPlayerItems[ i ] = m_rgpPlayerItems[ i ]->m_pNext;// unlink this weapon from the box				if ( pPlayer->AddPlayerItem( pItem ) )				{					pItem->AttachToPlayer( pPlayer );				}			}		}	}	EMIT_SOUND( pOther->edict(), CHAN_ITEM, "items/gunpickup2.wav", 1, ATTN_NORM );	SetTouch(NULL);	UTIL_Remove(this);}
开发者ID:fmoraw,项目名称:SpiritOfHalfLife,代码行数:71,


示例2: DyingThink

//.........这里部分代码省略.........		MESSAGE_BEGIN( MSG_BROADCAST, gmsgTempEntity );			WRITE_BYTE( TE_EXPLOSION);		// This just makes a dynamic light now			WRITE_COORD( vecSpot.x );			WRITE_COORD( vecSpot.y );			WRITE_COORD( vecSpot.z + 512 );			WRITE_SHORT( m_iExplode );			WRITE_BYTE( 250 ); // scale * 10			WRITE_BYTE( 10  ); // framerate		MESSAGE_END();		*/		// gibs		MESSAGE_BEGIN( MSG_PVS, gmsgTempEntity, vecSpot );			WRITE_BYTE( TE_SPRITE );			WRITE_COORD( vecSpot.x );			WRITE_COORD( vecSpot.y );			WRITE_COORD( vecSpot.z + 512 );			WRITE_SHORT( m_iExplode );			WRITE_BYTE( 250 ); // scale * 10			WRITE_BYTE( 255 ); // brightness		MESSAGE_END();		/*		MESSAGE_BEGIN( MSG_BROADCAST, gmsgTempEntity );			WRITE_BYTE( TE_SMOKE );			WRITE_COORD( vecSpot.x );			WRITE_COORD( vecSpot.y );			WRITE_COORD( vecSpot.z + 300 );			WRITE_SHORT( g_sModelIndexSmoke );			WRITE_BYTE( 250 ); // scale * 10			WRITE_BYTE( 6  ); // framerate		MESSAGE_END();		*/		// blast circle		MESSAGE_BEGIN( MSG_PAS, gmsgTempEntity, pev->origin );			WRITE_BYTE( TE_BEAMCYLINDER );			WRITE_COORD( pev->origin.x);			WRITE_COORD( pev->origin.y);			WRITE_COORD( pev->origin.z);			WRITE_COORD( pev->origin.x);			WRITE_COORD( pev->origin.y);			WRITE_COORD( pev->origin.z + 2000 ); // reach damage radius over .2 seconds			WRITE_SHORT( m_iSpriteTexture );			WRITE_BYTE( 0 ); // startframe			WRITE_BYTE( 0 ); // framerate			WRITE_BYTE( 4 ); // life			WRITE_BYTE( 32 );  // width			WRITE_BYTE( 0 );   // noise			WRITE_BYTE( 255 );   // r, g, b			WRITE_BYTE( 255 );   // r, g, b			WRITE_BYTE( 192 );   // r, g, b			WRITE_BYTE( 128 ); // brightness			WRITE_BYTE( 0 );		// speed		MESSAGE_END();		EMIT_SOUND(ENT(pev), CHAN_STATIC, "weapons/mortarhit.wav", 1.0, 0.3);		RadiusDamage( pev->origin, pev, pev, 300, CLASS_NONE, DMG_BLAST );		// gibs		vecSpot = pev->origin + (pev->mins + pev->maxs) * 0.5;		MESSAGE_BEGIN( MSG_PAS, gmsgTempEntity, vecSpot );			WRITE_BYTE( TE_BREAKMODEL);			// position			WRITE_COORD( vecSpot.x );			WRITE_COORD( vecSpot.y );			WRITE_COORD( vecSpot.z + 64);			// size			WRITE_COORD( 800 );			WRITE_COORD( 800 );			WRITE_COORD( 128 );			// velocity			WRITE_COORD( m_velocity.x ); 			WRITE_COORD( m_velocity.y );			WRITE_COORD( fabs( m_velocity.z ) * 0.25 );			// randomization			WRITE_BYTE( 40 ); 			// Model			WRITE_SHORT( m_iBodyGibs );	//model id#			// # of shards			WRITE_BYTE( 128 );			// duration			WRITE_BYTE( 200 );// 10.0 seconds			// flags			WRITE_BYTE( BREAK_METAL );		MESSAGE_END();		UTIL_Remove( this );	}}
开发者ID:a1batross,项目名称:Xash3D_ancient,代码行数:101,


示例3: EMIT_SOUND_DYN

void CGauss::SecondaryAttack(){	// don't fire underwater	if ( m_pPlayer->pev->waterlevel == 3 )	{		if ( m_fInAttack != 0 )		{			EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/electro4.wav", 1.0, ATTN_NORM, 0, 80 + RANDOM_LONG(0,0x3f));			SendWeaponAnim( GAUSS_IDLE );			m_fInAttack = 0;		}		else		{			PlayEmptySound( );		}		m_flNextSecondaryAttack = m_flNextPrimaryAttack = GetNextAttackDelay(0.5);		return;	}	if ( m_fInAttack == 0 )	{		if ( m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 )		{			EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/357_cock1.wav", 0.8, ATTN_NORM);			m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;			return;		}		m_fPrimaryFire = FALSE;		m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;// take one ammo just to start the spin		m_pPlayer->m_flNextAmmoBurn = UTIL_WeaponTimeBase();		// spin up		m_pPlayer->m_iWeaponVolume = GAUSS_PRIMARY_CHARGE_VOLUME;				SendWeaponAnim( GAUSS_SPINUP );		m_fInAttack = 1;		m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.5;		m_pPlayer->m_flStartCharge = gpGlobals->time;		m_pPlayer->m_flAmmoStartCharge = UTIL_WeaponTimeBase() + GetFullChargeTime();		PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usGaussSpin, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, 110, 0, 0, 0 );		m_iSoundState = SND_CHANGE_PITCH;	}	else if (m_fInAttack == 1)	{		if (m_flTimeWeaponIdle < UTIL_WeaponTimeBase())		{			SendWeaponAnim( GAUSS_SPIN );			m_fInAttack = 2;		}	}	else	{		// during the charging process, eat one bit of ammo every once in a while		if ( UTIL_WeaponTimeBase() >= m_pPlayer->m_flNextAmmoBurn && m_pPlayer->m_flNextAmmoBurn != 1000 )		{#ifdef CLIENT_DLL	if ( bIsMultiplayer() )#else	if ( g_pGameRules->IsMultiplayer() )#endif			{				m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;				m_pPlayer->m_flNextAmmoBurn = UTIL_WeaponTimeBase() + 0.1;			}			else			{				m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;				m_pPlayer->m_flNextAmmoBurn = UTIL_WeaponTimeBase() + 0.3;			}		}		if ( m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 )		{			// out of ammo! force the gun to fire			StartFire();			m_fInAttack = 0;			m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0;			m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 1;			return;		}				if ( UTIL_WeaponTimeBase() >= m_pPlayer->m_flAmmoStartCharge )		{			// don't eat any more ammo after gun is fully charged.			m_pPlayer->m_flNextAmmoBurn = 1000;		}		int pitch = ( gpGlobals->time - m_pPlayer->m_flStartCharge ) * ( 150 / GetFullChargeTime() ) + 100;		if ( pitch > 250 ) 			 pitch = 250;				// ALERT( at_console, "%d %d %d/n", m_fInAttack, m_iSoundState, pitch );		if ( m_iSoundState == 0 )			ALERT( at_console, "sound state %d/n", m_iSoundState );//.........这里部分代码省略.........
开发者ID:bjorni2,项目名称:halflife,代码行数:101,


示例4: switch

BOOL CItemWeapon::MyTouch( CBasePlayer *pPlayer ){	BOOL bLeaveWeapon = FALSE;	if (gpGlobals->deathmatch == 2 || gpGlobals->deathmatch == 3 || gpGlobals->deathmatch == 5 || CVAR_GET_FLOAT("mp_weaponstay") > 0  )		bLeaveWeapon = TRUE;	// Leave the weapon if the player's already got it	if ( bLeaveWeapon && (pPlayer->m_iQuakeItems & m_iWeapon) )		return FALSE;	if ( pPlayer->pev->health <= 0)		return FALSE;	// Give the player some ammo	switch (m_iWeapon)	{	case IT_NAILGUN:		pPlayer->m_iAmmoNails += 30;		break;	case IT_SUPER_NAILGUN:		pPlayer->m_iAmmoNails += 30;		break;	case IT_SUPER_SHOTGUN:		pPlayer->m_iAmmoShells += 5;		break;	case IT_ROCKET_LAUNCHER:		pPlayer->m_iAmmoRockets += 5;		break;	case IT_GRENADE_LAUNCHER:		pPlayer->m_iAmmoRockets += 5;		break;	case IT_LIGHTNING:		pPlayer->m_iAmmoCells += 15;		break;	default:		break;	}	pPlayer->CheckAmmo();	EMIT_SOUND( ENT(pev), CHAN_ITEM, "weapons/pkup.wav", 1, ATTN_NORM );	// Change to new weapon?	int iOldItems = pPlayer->m_iQuakeWeapon;	pPlayer->m_iQuakeItems |= m_iWeapon;		pPlayer->Deathmatch_Weapon(iOldItems, m_iWeapon);	// Update HUD	pPlayer->W_SetCurrentAmmo();	pPlayer->m_iClientQuakeWeapon  = -1;	pPlayer->m_fWeapon = FALSE;	pPlayer->m_fKnownItem = FALSE;	pPlayer->UpdateClientData();	if (bLeaveWeapon)		return FALSE;	// Respawn	m_flRespawnTime = 30;	return TRUE;}
开发者ID:bmk10,项目名称:sing-engine,代码行数:64,


示例5: vector

void CMP5::MP5FireSilenced( float flSpread , float flCycleTime, BOOL fUseAutoAim, BOOL Silenced ){ 	    if ( m_fDefaultAnim == SILENCER_ON_SEMI )    {		if (!(m_pPlayer->m_afButtonPressed & IN_ATTACK)) 		return;    }// Aiming Mechanics float targetx=0.312; // these are the numbers we will use for the aiming vector (X Y Z) float targety=0.312; // these are the numbers the will be loward accordingly to adjust the aim float targetz=0.312; // Aiming Mechanics if (m_iClip <= 0) { 	if (m_fFireOnEmpty) 	{ 		//PlayEmptySound();//for some reason, doesn't work		EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/357_cock1.wav", 0.8, ATTN_NORM);		m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.2; 	} 	return; } m_iClip--; //m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH; int flags; #if defined( CLIENT_WEAPONS ) flags = FEV_NOTHOST; #else flags = 0; #endif // player "shoot" animation m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); m_pPlayer->m_iWeaponVolume = QUIET_GUN_VOLUME; m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH; Vector vecSrc = m_pPlayer->GetGunPosition( ); Vector vecAiming; if ( fUseAutoAim ) { vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES ); } else { vecAiming = gpGlobals->v_forward; } // Aiming Mechanics if(!(m_pPlayer->pev->button & (IN_FORWARD|IN_BACK))) //test to see if you are moving forward or back { targetx-=0.090; //if you are not moving forward or back then we lower these numbers targety-=0.132; targetz-=0.090; } else { targetx-=0.058; //if you are moving forward or back then we lower these numbers targety-=0.018; //notice the diffrence in the values from the code above targetz-=0.058; } if(!(m_pPlayer->pev->button & (IN_MOVELEFT|IN_MOVERIGHT))) //test to see if you are moving left or right { targetx-=0.132; //do not mistake the above test for looking left or right this test is for straifing not turning targety-=0.090; // these values are almost the same as the above only we alter the x more then y and z targetz-=0.090; } else { targetx-=0.018; targety-=0.058; targetz-=0.058; } if((m_pPlayer->pev->button & (IN_DUCK))) //this test checks if you are crouched { targetx-=0.090; //the values here are only slightly diffrent from the above here we alter the z more then anything targety-=0.090; targetz-=0.132; } else { targetx-=0.020; targety-=0.020; targetz-=0.020; } // Aiming Mechanics Vector vecDir; //vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, Vector( targetx, targety, targetz ), 8192, BULLET_PLAYER_UZI, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed ); // ### COD RECOIL START ###	if ( m_pPlayer->pev->velocity.Length2D() <= 120 )	{//.........这里部分代码省略.........
开发者ID:JoelTroch,项目名称:am_src_30jan2011,代码行数:101,


示例6: ClientPrint

/* <2464e8> ../cstrike/dlls/wpn_shared/wpn_c4.cpp:152 */void CC4::__MAKE_VHOOK(PrimaryAttack)(void){	BOOL PlaceBomb;	int inBombZone, onGround;	if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)	{		return;	}	inBombZone = (m_pPlayer->m_signals.GetState() & SIGNAL_BOMB) == SIGNAL_BOMB;	onGround = (m_pPlayer->pev->flags & FL_ONGROUND) == FL_ONGROUND;	PlaceBomb = (onGround && inBombZone);	if (!m_bStartedArming)	{		if (!inBombZone)		{			ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#C4_Plant_At_Bomb_Spot");			m_flNextPrimaryAttack = GetNextAttackDelay(1.0);			return;		}		if (!onGround)		{			ClientPrint(m_pPlayer->pev, HUD_PRINTCENTER, "#C4_Plant_Must_Be_On_Ground");			m_flNextPrimaryAttack = GetNextAttackDelay(1);			return;		}		m_bStartedArming = true;		m_bBombPlacedAnimation = false;		m_fArmedTime = gpGlobals->time + C4_ARMING_ON_TIME;		SendWeaponAnim(C4_ARM, UseDecrement() != FALSE);		SET_CLIENT_MAXSPEED(m_pPlayer->edict(), 1.0);		m_pPlayer->SetAnimation(PLAYER_ATTACK1);		m_pPlayer->SetProgressBarTime(C4_ARMING_ON_TIME);	}	else	{		if (PlaceBomb)		{			CBaseEntity *pEntity = NULL;			CBasePlayer *pTempPlayer = NULL;			if (m_fArmedTime <= gpGlobals->time)			{				if (m_bStartedArming)				{					m_bStartedArming = false;					m_fArmedTime = 0;					Broadcast("BOMBPL");					m_pPlayer->m_bHasC4 = false;					if (pev->speed != 0 && g_pGameRules != NULL)					{						g_pGameRules->m_iC4Timer = (int)pev->speed;					}					CGrenade *pBomb = CGrenade::ShootSatchelCharge(m_pPlayer->pev, m_pPlayer->pev->origin, Vector(0, 0, 0));					MESSAGE_BEGIN(MSG_SPEC, SVC_DIRECTOR);						WRITE_BYTE(9);						WRITE_BYTE(DRC_CMD_EVENT);						WRITE_SHORT(m_pPlayer->entindex());						WRITE_SHORT(0);						WRITE_LONG(DRC_FLAG_FACEPLAYER | 11);					MESSAGE_END();					MESSAGE_BEGIN(MSG_ALL, gmsgBombDrop);						WRITE_COORD(pBomb->pev->origin.x);						WRITE_COORD(pBomb->pev->origin.y);						WRITE_COORD(pBomb->pev->origin.z);						WRITE_BYTE(1);					MESSAGE_END();					UTIL_ClientPrintAll(HUD_PRINTCENTER, "#Bomb_Planted");					TheBots->OnEvent(EVENT_BOMB_PLANTED, m_pPlayer, pBomb);					if (g_pGameRules->IsCareer() && !m_pPlayer->IsBot())					{						TheCareerTasks->HandleEvent(EVENT_BOMB_PLANTED, m_pPlayer);					}					UTIL_LogPrintf					(						"/"%s<%i><%s><TERRORIST>/" triggered /"Planted_The_Bomb/"/n",						STRING(m_pPlayer->pev->netname),						GETPLAYERUSERID(m_pPlayer->edict()),						GETPLAYERAUTHID(m_pPlayer->edict())					);					g_pGameRules->m_bBombDropped = FALSE;					EMIT_SOUND(edict(), CHAN_WEAPON, "weapons/c4_plant.wav", VOL_NORM, ATTN_NORM);//.........这里部分代码省略.........
开发者ID:coolmans,项目名称:ReGameDLL_CS,代码行数:101,


示例7: EMIT_SOUND

// Powerup TouchBOOL CItemPowerup::MyTouch( CBasePlayer *pPlayer ){	if (pPlayer->pev->health <= 0)		return FALSE;	EMIT_SOUND( ENT(pev), CHAN_ITEM, STRING(pev->noise), 1, ATTN_NORM );	pPlayer->m_iQuakeItems |= m_iPowerupBit;		int iPowerUp = 0;	// Invincibility	if (invincible_finished)	{		// Make them glow red		if ( pPlayer->m_iQuakeItems & IT_QUAD )		{			pPlayer->pev->renderfx = kRenderFxGlowShell;			pPlayer->pev->rendercolor = Vector( 255, 125, 255 );	// RGB			pPlayer->pev->renderamt = 100;	// Shell size						iPowerUp = 3;		}		else		{			pPlayer->pev->renderfx = kRenderFxGlowShell;			pPlayer->pev->rendercolor = Vector( 255, 128, 0 );	// RGB			pPlayer->pev->renderamt = 100;	// Shell size			iPowerUp = 2;		}		if ( pPlayer->m_iQuakeItems & IT_INVISIBILITY )		{			pPlayer->pev->rendermode = kRenderTransColor;			pPlayer->pev->renderamt = 1;		}		pPlayer->m_flInvincibleFinished = gpGlobals->time + invincible_finished;	}		// Quad Damage	if (super_damage_finished)	{		// Make them glow blue		if ( pPlayer->m_iQuakeItems & IT_INVULNERABILITY )		{			pPlayer->pev->renderfx = kRenderFxGlowShell;			pPlayer->pev->rendercolor = Vector( 255, 125, 255 );	// RGB			pPlayer->pev->renderamt = 100;	// Shell size			iPowerUp = 3;		}		else		{			pPlayer->pev->renderfx = kRenderFxGlowShell;			pPlayer->pev->rendercolor = Vector( 128, 128, 255 );	// RGB			pPlayer->pev->renderamt = 100;	// Shell size			iPowerUp = 1;		}		if ( pPlayer->m_iQuakeItems & IT_INVISIBILITY )		{			pPlayer->pev->rendermode = kRenderTransColor;			pPlayer->pev->renderamt = 1;		}		pPlayer->m_flSuperDamageFinished = gpGlobals->time + super_damage_finished;		// Remove armor and cells if DM==4		if (gpGlobals->deathmatch == 4)		{			pPlayer->pev->armortype = 0;			pPlayer->pev->armorvalue = 0; 			pPlayer->m_iAmmoCells = 0;		}	}	// Radiation suit	if (radsuit_finished)		pPlayer->m_flRadsuitFinished = gpGlobals->time + radsuit_finished;	// Invisibility	if (invisible_finished)	{		pPlayer->m_flInvisibleFinished = gpGlobals->time + invisible_finished;		pPlayer->pev->renderfx = kRenderFxGlowShell;		pPlayer->pev->rendercolor = Vector( 128, 128, 128 );	// RGB		pPlayer->pev->renderamt = 5;	// Shell size		}		// tell director about it	MESSAGE_BEGIN( MSG_SPEC, SVC_DIRECTOR );//.........这里部分代码省略.........
开发者ID:bmk10,项目名称:sing-engine,代码行数:101,


示例8: STOP_SOUND

void CMomentaryDoor::MomentaryMoveDone( void ){	STOP_SOUND(ENT(pev), CHAN_STATIC, (char*)STRING(pev->noiseMoving));	EMIT_SOUND(ENT(pev), CHAN_STATIC, (char*)STRING(pev->noiseArrived), 1, ATTN_NORM);}
开发者ID:Rhoin,项目名称:Xash3D-CrossPlatform-Port,代码行数:5,


示例9: Think

//// cycler think//void CCycler :: Think( void ){	pev->nextthink = gpGlobals->time + 0.1;		CBaseEntity *pPlayer = UTIL_PlayerByIndex( 1 );	if ( FClassnameIs ( pev, "info_commentary" ) )	{		int iAllowCommentary = CVAR_GET_FLOAT( "commentary" );		if (iAllowCommentary >= 1)		{//			if ( pPlayer )//only if we have a player, jo jo//			pPlayer->g_bGodMode = TRUE;		}		else		{//			if ( pPlayer )//only if we have a player, jo jo//			pPlayer->g_bGodMode = FALSE;			//stop previous sound			if (pev->message)			EMIT_SOUND(ENT(pev), CHAN_ITEM, "common/null.wav", 0.1, ATTN_NORM );			UTIL_Remove( this );		}		if ( pPlayer )//only if we have a player, jo jo		if ( pPlayer->g_bPlayerPointCommentary == TRUE)		{			if (pev->skin == 1)			pev->framerate = 2.0;			else			pev->framerate = 1.0;//			ALERT(at_console, "g_bPlayerPointCommentary == TRUE/n");		}		else		{			pev->animtime = gpGlobals->time;			pev->framerate = 0.0;			m_fSequenceFinished = FALSE;					//			ALERT(at_console, "g_bPlayerPointCommentary == FALSE/n");		}	}	else	{		if (m_animate)		{			StudioFrameAdvance ( );		}		if (m_fSequenceFinished && !m_fSequenceLoops)		{			// ResetSequenceInfo();			// hack to avoid reloading model every frame			pev->animtime = gpGlobals->time;			pev->framerate = 1.0;			m_fSequenceFinished = FALSE;			m_flLastEventCheck = gpGlobals->time;			pev->frame = 0;			if (!m_animate)				pev->framerate = 0.0;	// FIX: don't reset framerate		}	}}
开发者ID:JoelTroch,项目名称:am_src_rebirth,代码行数:69,


示例10: MonsterSight

void CSoldier :: MonsterSight( void ){	EMIT_SOUND( edict(), CHAN_VOICE, "soldier/sight1.wav", 1.0, ATTN_NORM );}
开发者ID:nekonomicon,项目名称:QuakeRemakeDevkit,代码行数:4,


示例11: PlayLockSounds

void PlayLockSounds(entvars_t *pev, locksound_t *pls, int flocked, int fbutton){	// LOCKED SOUND		// CONSIDER: consolidate the locksound_t struct (all entries are duplicates for lock/unlock)	// CONSIDER: and condense this code.	float flsoundwait;	if (fbutton)		flsoundwait = BUTTON_SOUNDWAIT;	else		flsoundwait = DOOR_SOUNDWAIT;	if (flocked)	{		int fplaysound = (pls->sLockedSound && gpGlobals->time > pls->flwaitSound);		int fplaysentence = (pls->sLockedSentence && !pls->bEOFLocked && gpGlobals->time > pls->flwaitSentence);		float fvol;		if (fplaysound && fplaysentence)			fvol = 0.25;		else			fvol = 1.0;		// if there is a locked sound, and we've debounced, play sound		if (fplaysound)		{			// play 'door locked' sound			EMIT_SOUND(ENT(pev), CHAN_ITEM, (char*)STRING(pls->sLockedSound), fvol, ATTN_NORM);			pls->flwaitSound = gpGlobals->time + flsoundwait;		}		// if there is a sentence, we've not played all in list, and we've debounced, play sound		if (fplaysentence)		{			// play next 'door locked' sentence in group			int iprev = pls->iLockedSentence;						pls->iLockedSentence = SENTENCEG_PlaySequentialSz(ENT(pev), STRING(pls->sLockedSentence), 					  0.85, ATTN_NORM, 0, 100, pls->iLockedSentence, FALSE);			pls->iUnlockedSentence = 0;			// make sure we don't keep calling last sentence in list			pls->bEOFLocked = (iprev == pls->iLockedSentence);					pls->flwaitSentence = gpGlobals->time + DOOR_SENTENCEWAIT;		}	}	else	{		// UNLOCKED SOUND		int fplaysound = (pls->sUnlockedSound && gpGlobals->time > pls->flwaitSound);		int fplaysentence = (pls->sUnlockedSentence && !pls->bEOFUnlocked && gpGlobals->time > pls->flwaitSentence);		float fvol;		// if playing both sentence and sound, lower sound volume so we hear sentence		if (fplaysound && fplaysentence)			fvol = 0.25;		else			fvol = 1.0;		// play 'door unlocked' sound if set		if (fplaysound)		{			EMIT_SOUND(ENT(pev), CHAN_ITEM, (char*)STRING(pls->sUnlockedSound), fvol, ATTN_NORM);			pls->flwaitSound = gpGlobals->time + flsoundwait;		}		// play next 'door unlocked' sentence in group		if (fplaysentence)		{			int iprev = pls->iUnlockedSentence;						pls->iUnlockedSentence = SENTENCEG_PlaySequentialSz(ENT(pev), STRING(pls->sUnlockedSentence), 					  0.85, ATTN_NORM, 0, 100, pls->iUnlockedSentence, FALSE);			pls->iLockedSentence = 0;			// make sure we don't keep calling last sentence in list			pls->bEOFUnlocked = (iprev == pls->iUnlockedSentence);			pls->flwaitSentence = gpGlobals->time + DOOR_SENTENCEWAIT;		}	}}
开发者ID:Rhoin,项目名称:Xash3D-CrossPlatform-Port,代码行数:84,


示例12: FireGun

BOOL CApache :: FireGun( ){	UTIL_MakeAimVectors( pev->angles );			Vector posGun, angGun;	GetAttachment( 1, posGun, angGun );	Vector vecTarget = (m_posTarget - posGun).Normalize( );	Vector vecOut;	vecOut.x = DotProduct( gpGlobals->v_forward, vecTarget );	vecOut.y = -DotProduct( gpGlobals->v_right, vecTarget );	vecOut.z = DotProduct( gpGlobals->v_up, vecTarget );	Vector angles = UTIL_VecToAngles (vecOut);	angles.x = -angles.x;	if (angles.y > 180)		angles.y = angles.y - 360;	if (angles.y < -180)		angles.y = angles.y + 360;	if (angles.x > 180)		angles.x = angles.x - 360;	if (angles.x < -180)		angles.x = angles.x + 360;	if (angles.x > m_angGun.x)		m_angGun.x = min( angles.x, m_angGun.x + 12 );	if (angles.x < m_angGun.x)		m_angGun.x = max( angles.x, m_angGun.x - 12 );	if (angles.y > m_angGun.y)		m_angGun.y = min( angles.y, m_angGun.y + 12 );	if (angles.y < m_angGun.y)		m_angGun.y = max( angles.y, m_angGun.y - 12 );	m_angGun.y = SetBoneController( 0, m_angGun.y );	m_angGun.x = SetBoneController( 1, m_angGun.x );	Vector posBarrel, angBarrel;	GetAttachment( 0, posBarrel, angBarrel );	Vector vecGun = (posBarrel - posGun).Normalize( );	if (DotProduct( vecGun, vecTarget ) > 0.98)	{#if 1		FireBullets( 1, posGun, vecGun, VECTOR_CONE_4DEGREES, 8192, BULLET_MONSTER_12MM, 1 );		EMIT_SOUND(ENT(pev), CHAN_WEAPON, "turret/tu_fire1.wav", 1, 0.3);#else		static float flNext;		TraceResult tr;		UTIL_TraceLine( posGun, posGun + vecGun * 8192, dont_ignore_monsters, ENT( pev ), &tr );		if (!m_pBeam)		{			m_pBeam = CBeam::BeamCreate( "sprites/lgtning.spr", 80 );			m_pBeam->PointEntInit( pev->origin, entindex( ) );			m_pBeam->SetEndAttachment( 1 );			m_pBeam->SetColor( 255, 180, 96 );			m_pBeam->SetBrightness( 192 );		}		if (flNext < gpGlobals->time)		{			flNext = gpGlobals->time + 0.5;			m_pBeam->SetStartPos( tr.vecEndPos );		}#endif		return TRUE;	}	else	{		if (m_pBeam)		{			UTIL_Remove( m_pBeam );			m_pBeam = NULL;		}	}	return FALSE;}
开发者ID:Hammermaps-DEV,项目名称:Spirit-of-Half-Life-1.8--VC2010,代码行数:80,


示例13: DyingThink

//.........这里部分代码省略.........		// fireball		MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, vecSpot );			WRITE_BYTE( TE_SPRITE );			WRITE_COORD( vecSpot.x );			WRITE_COORD( vecSpot.y );			WRITE_COORD( vecSpot.z + 256 );			WRITE_SHORT( m_iExplode );			WRITE_BYTE( 120 ); // scale * 10			WRITE_BYTE( 255 ); // brightness		MESSAGE_END();				// big smoke		MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, vecSpot );			WRITE_BYTE( TE_SMOKE );			WRITE_COORD( vecSpot.x );			WRITE_COORD( vecSpot.y );			WRITE_COORD( vecSpot.z + 512 );			WRITE_SHORT( g_sModelIndexSmoke );			WRITE_BYTE( 250 ); // scale * 10			WRITE_BYTE( 5  ); // framerate		MESSAGE_END();		// blast circle		MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );			WRITE_BYTE( TE_BEAMCYLINDER );			WRITE_COORD( pev->origin.x);			WRITE_COORD( pev->origin.y);			WRITE_COORD( pev->origin.z);			WRITE_COORD( pev->origin.x);			WRITE_COORD( pev->origin.y);			WRITE_COORD( pev->origin.z + 2000 ); // reach damage radius over .2 seconds			WRITE_SHORT( m_iSpriteTexture );			WRITE_BYTE( 0 ); // startframe			WRITE_BYTE( 0 ); // framerate			WRITE_BYTE( 4 ); // life			WRITE_BYTE( 32 );  // width			WRITE_BYTE( 0 );   // noise			WRITE_BYTE( 255 );   // r, g, b			WRITE_BYTE( 255 );   // r, g, b			WRITE_BYTE( 192 );   // r, g, b			WRITE_BYTE( 128 ); // brightness			WRITE_BYTE( 0 );		// speed		MESSAGE_END();		EMIT_SOUND(ENT(pev), CHAN_STATIC, "weapons/mortarhit.wav", 1.0, 0.3);		RadiusDamage( pev->origin, pev, pev, 300, CLASS_NONE, DMG_BLAST );		if (/*!(pev->spawnflags & SF_NOWRECKAGE) && */(pev->flags & FL_ONGROUND))		{			CBaseEntity *pWreckage = Create( "cycler_wreckage", pev->origin, pev->angles );			// SET_MODEL( ENT(pWreckage->pev), STRING(pev->model) );			UTIL_SetSize( pWreckage->pev, Vector( -200, -200, -128 ), Vector( 200, 200, -32 ) );			pWreckage->pev->frame = pev->frame;			pWreckage->pev->sequence = pev->sequence;			pWreckage->pev->framerate = 0;			pWreckage->pev->dmgtime = gpGlobals->time + 5;		}		// gibs		vecSpot = pev->origin + (pev->mins + pev->maxs) * 0.5;		MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, vecSpot );			WRITE_BYTE( TE_BREAKMODEL);			// position			WRITE_COORD( vecSpot.x );			WRITE_COORD( vecSpot.y );			WRITE_COORD( vecSpot.z + 64);			// size			WRITE_COORD( 400 );			WRITE_COORD( 400 );			WRITE_COORD( 128 );			// velocity			WRITE_COORD( 0 ); 			WRITE_COORD( 0 );			WRITE_COORD( 200 );			// randomization			WRITE_BYTE( 30 ); 			// Model			WRITE_SHORT( m_iBodyGibs );	//model id#			// # of shards			WRITE_BYTE( 200 );			// duration			WRITE_BYTE( 200 );// 10.0 seconds			// flags			WRITE_BYTE( BREAK_METAL );		MESSAGE_END();		SetThink(&CApache :: SUB_Remove );		SetNextThink( 0.1 );	}}
开发者ID:Hammermaps-DEV,项目名称:Spirit-of-Half-Life-1.8--VC2010,代码行数:101,


示例14: while

//.........这里部分代码省略.........					}					if (!hostages_)					{						++m_eventsSeen;						SendPartialNotification();					}				}				else if (!Q_strcmp(m_name, "winfast"))				{					if (m_eventsNeeded >= TheCareerTasks->GetRoundElapsedTime())					{						m_eventsSeen = m_eventsNeeded;						SendPartialNotification();					}				}				else if (IsTaskCompletableThisRound())				{					++m_eventsSeen;					SendPartialNotification();				}			}			else			{				++m_eventsSeen;				SendPartialNotification();			}		}	}	if (event == m_event && !m_mustLive && m_eventsSeen >= m_eventsNeeded && IsTaskCompletableThisRound())	{		CBasePlayer *player = UTIL_GetLocalPlayer();		EMIT_SOUND(ENT(player->pev), CHAN_VOICE, "events/task_complete.wav", VOL_NORM, ATTN_NORM); 		m_isComplete = true;		MESSAGE_BEGIN(MSG_ALL, gmsgCZCareer);			WRITE_STRING("TASKDONE");			WRITE_BYTE(m_id);		MESSAGE_END();		if (TheTutor)		{			TheTutor->OnEvent(EVENT_CAREER_TASK_DONE);		}		UTIL_LogPrintf("Career Task Done %d/n", m_id);		if (m_event == EVENT_ROUND_WIN && !Q_strcmp(m_name, "winfast"))		{			TheCareerTasks->SetFinishedTaskTime((int)TheCareerTasks->GetRoundElapsedTime());			UTIL_GetLocalPlayer()->SyncRoundTimer();		}	}	else if (event >= EVENT_ROUND_DRAW)	{		if (event > EVENT_ROUND_LOSS)		{			if (event == EVENT_DIE && (m_mustLive || m_crossRounds))			{				m_eventsSeen = 0;				SendPartialNotification();				m_diedThisRound = true;			}				}		else if (m_mustLive)
开发者ID:omertelli,项目名称:ReGameDLL_CS,代码行数:67,


示例15: UTIL_MakeVectors

int CAK74::Swing( int fFirst ){	int fDidHit = FALSE;	TraceResult tr;	UTIL_MakeVectors (m_pPlayer->pev->v_angle);	Vector vecSrc	= m_pPlayer->GetGunPosition( );	Vector vecEnd	= vecSrc + gpGlobals->v_forward * 32;	UTIL_TraceLine( vecSrc, vecEnd, dont_ignore_monsters, ENT( m_pPlayer->pev ), &tr );#ifndef CLIENT_DLL	if ( tr.flFraction >= 1.0 )	{		UTIL_TraceHull( vecSrc, vecEnd, dont_ignore_monsters, head_hull, ENT( m_pPlayer->pev ), &tr );		if ( tr.flFraction < 1.0 )		{			// Calculate the point of intersection of the line (or hull) and the object we hit			// This is and approximation of the "best" intersection			CBaseEntity *pHit = CBaseEntity::Instance( tr.pHit );			if ( !pHit || pHit->IsBSPModel() )				FindHullIntersection_AK( vecSrc, tr, VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX, m_pPlayer->edict() );			vecEnd = tr.vecEndPos;	// This is the point on the actual surface (the hull could have hit space)		}	}#endif	PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usAk_stab, 	0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0,	0.0, 0, 0.0 );	if ( tr.flFraction >= 1.0 )	{		if (fFirst)		{			// miss			m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.5;//0.5						// player "shoot" animation			//m_pPlayer->SetAnimation( PLAYER_ATTACK1 );		}	}	else	{		switch( ((m_iSwing++) % 2) + 1 )// + 1		{		case 0:			SendWeaponAnim( AK_NMC_STAB ); break;		case 1:			SendWeaponAnim( AK_NMC_STAB ); break;		case 2:			SendWeaponAnim( AK_NMC_STAB ); break;		}		// player "shoot" animation	//	m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); // Naaaa		#ifndef CLIENT_DLL		// hit		fDidHit = TRUE;		CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit);		ClearMultiDamage( );		if ( (m_flNextSecondaryAttack + 1 < UTIL_WeaponTimeBase() ) || g_pGameRules->IsMultiplayer() )		{			// first swing does full damage			pEntity->TraceAttack(m_pPlayer->pev, gSkillData.plrDmgKnifeStab, gpGlobals->v_forward, &tr, DMG_CLUB | DMG_NEVERGIB ); //DMG_CLUB );		}		else		{			// subsequent swings do half			pEntity->TraceAttack(m_pPlayer->pev, gSkillData.plrDmgKnifeStab /*/ 2*/, gpGlobals->v_forward, &tr, DMG_CLUB | DMG_NEVERGIB ); //DMG_CLUB );		}			ApplyMultiDamage( m_pPlayer->pev, m_pPlayer->pev );		// play thwack, smack, or dong sound		float flVol = 1.0;		int fHitWorld = TRUE;		if (pEntity)		{			if ( pEntity->Classify() != CLASS_NONE && pEntity->Classify() != CLASS_MACHINE )			{				// play thwack or smack sound				switch( RANDOM_LONG(0,2) )				{				case 0:					EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/ak-47/AK47_stab_hit-1.wav", 1, ATTN_NORM); break;				case 1:					EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/ak-47/AK47_stab_hit-2.wav", 1, ATTN_NORM); break;				case 2:					EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/ak-47/AK47_stab_hit-1.wav", 1, ATTN_NORM); break;				}				m_pPlayer->m_iWeaponVolume = CROWBAR_BODYHIT_VOLUME;				if ( !pEntity->IsAlive() )					  return TRUE;//.........这里部分代码省略.........
开发者ID:JoelTroch,项目名称:am_src_30jan2011,代码行数:101,


示例16: GetClassPtr

void CGrenade::Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value) // Last check: 2013, May 28{	if (!m_bIsC4)	{		return;	}	int barTime = 0;	CBasePlayer* pPlayer = GetClassPtr((CBasePlayer*)pActivator->pev);	if (pPlayer->m_iTeam == CT)	{		if (m_bStartDefuse)		{			m_fNextDefuse = gpGlobals->time + 0.5;			return;		}		g_engfuncs.pfnSetClientMaxspeed(ENT(pPlayer->pev), 1.0);		// TODO: Adds support for bots.		// TheBots->OnEvent( EVENT_BOMB_DEFUSING, pActivator, NULL );		if (g_pGameRules->IsCareer())		{			TheCareerTasks->HandleEvent(EVENT_BOMB_DEFUSING, NULL, NULL);		}		if (pPlayer->m_bHasDefuser)		{			UTIL_LogPrintf("/"%s<%i><%s><CT>/" triggered /"Begin_Bomb_Defuse_With_Kit/"/n",				STRING(pPlayer->pev->netname),				GETPLAYERAUTHID(pPlayer->edict()),				GETPLAYERUSERID(pPlayer->edict()));			ClientPrint(pPlayer->pev, HUD_PRINTCENTER, "#Defusing_Bomb_With_Defuse_Kit");			EMIT_SOUND(ENT(pPlayer->pev), CHAN_ITEM, "weapons/c4_disarm.wav", VOL_NORM, ATTN_NORM);			pPlayer->m_bIsDefusing = true;			m_pBombDefuser		= pActivator;			m_bStartDefuse		= TRUE;			m_flDefuseCountDown	= gpGlobals->time + 5.0;			m_fNextDefuse		= gpGlobals->time + 0.5;			barTime = 5;		}		else		{			UTIL_LogPrintf("/"%s<%i><%s><CT>/" triggered /"Begin_Bomb_Defuse_Without_Kit/"/n",				STRING(pPlayer->pev->netname),				GETPLAYERAUTHID(pPlayer->edict()),				GETPLAYERUSERID(pPlayer->edict()));			ClientPrint(pPlayer->pev, HUD_PRINTCENTER, "#Defusing_Bomb_Without_Defuse_Kit");			EMIT_SOUND(ENT(pPlayer->pev), CHAN_ITEM, "weapons/c4_disarm.wav", VOL_NORM, ATTN_NORM);			pPlayer->m_bIsDefusing = true;			m_pBombDefuser		= pActivator;			m_bStartDefuse		= TRUE;			m_flDefuseCountDown	= gpGlobals->time + 10.0;			m_fNextDefuse		= gpGlobals->time + 0.5;			barTime = 10;		}		pPlayer->SetProgressBarTime(barTime);	}}
开发者ID:Chuvi-w,项目名称:CSSDK,代码行数:71,


示例17: PlayEmptySound

void CGlock::GlockFire( float flSpread , float flCycleTime, BOOL fUseAutoAim ){	if (m_iClip <= 0)	{		if (m_fFireOnEmpty)		{			PlayEmptySound();			m_flNextPrimaryAttack = gpGlobals->time + 0.2;		}		return;	}	m_iClip--;	m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH;#if defined ( OLD_WEAPONS )	if (m_iClip != 0)		SendWeaponAnim( GLOCK_SHOOT );	else		SendWeaponAnim( GLOCK_SHOOT_EMPTY );#endif	if ( fUseAutoAim )	{		PLAYBACK_EVENT_FULL( 0, m_pPlayer->edict(), m_usFireGlock1, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, 0, 0, ( m_iClip == 0 ) ? 1 : 0, 0 );	}	else	{		PLAYBACK_EVENT_FULL( 0, m_pPlayer->edict(), m_usFireGlock2, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, 0, 0, ( m_iClip == 0 ) ? 1 : 0, 0 );	}	// player "shoot" animation	m_pPlayer->SetAnimation( PLAYER_ATTACK1 );#if defined ( OLD_WEAPONS )	UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );			Vector	vecShellVelocity = m_pPlayer->pev->velocity 							 + gpGlobals->v_right * RANDOM_FLOAT(50,70) 							 + gpGlobals->v_up * RANDOM_FLOAT(100,150) 							 + gpGlobals->v_forward * 25;	EjectBrass ( pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_up * -12 + gpGlobals->v_forward * 32 + gpGlobals->v_right * 6 , vecShellVelocity, pev->angles.y, m_iShell, TE_BOUNCE_SHELL ); #endif	// silenced	if (pev->body == 1)	{		m_pPlayer->m_iWeaponVolume = QUIET_GUN_VOLUME;		m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;#if defined ( OLD_WEAPONS )		switch(RANDOM_LONG(0,1))		{		case 0:			EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/pl_gun1.wav", RANDOM_FLOAT(0.9, 1.0), ATTN_NORM);			break;		case 1:			EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/pl_gun2.wav", RANDOM_FLOAT(0.9, 1.0), ATTN_NORM);			break;		}#endif	}	else	{		// non-silenced		m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;		m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;#if defined ( OLD_WEAPONS )		EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/pl_gun3.wav", RANDOM_FLOAT(0.92, 1.0), ATTN_NORM, 0, 98 + RANDOM_LONG(0,3));#endif	}	Vector vecSrc	 = m_pPlayer->GetGunPosition( );	Vector vecAiming;		if ( fUseAutoAim )	{		vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );	}	else	{		vecAiming = gpGlobals->v_forward;	}	m_pPlayer->FireBullets( 1, vecSrc, vecAiming, Vector( flSpread, flSpread, flSpread ), 8192, BULLET_PLAYER_9MM, 0 );	m_flNextPrimaryAttack = m_flNextSecondaryAttack = gpGlobals->time + flCycleTime;	if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)		// HEV suit - indicate out of ammo condition		m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);	m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );#if defined ( OLD_WEAPONS )	m_pPlayer->pev->punchangle.x -= 2;#endif}
开发者ID:HoLyCoWzOrZ,项目名称:sing-engine,代码行数:99,


示例18: UTIL_ScreenShake

void CGrenade::Explode2(TraceResult* pTrace, int bitsDamageType)  // Last check: 2013, May 28{	CHalfLifeMultiplay *pGameRules = (CHalfLifeMultiplay*)g_pGameRules;	pev->model		= iStringNull;	// invisible	pev->solid		= SOLID_NOT;	// intangible	pev->takedamage = DAMAGE_NO;	UTIL_ScreenShake(pTrace->vecEndPos, 25.0, 150.0, 1.0, 3000.0);	pGameRules->m_bTargetBombed = true;	if (pGameRules->IsCareer())	{		TheCareerTasks->LatchRoundEndMessage();	}	m_bJustBlew = true;	pGameRules->CheckWinConditions();	if (pTrace->flFraction != 1.0)	{		pev->origin = pTrace->vecEndPos + (pTrace->vecPlaneNormal * (pev->dmg - 24) * 0.6);	}	bool isInWater = UTIL_PointContents(pev->origin) == CONTENTS_WATER;	MESSAGE_BEGIN(MSG_PAS, SVC_TEMPENTITY, pev->origin);	WRITE_BYTE(TE_SPRITE);	WRITE_COORD(pev->origin.x);	WRITE_COORD(pev->origin.y);	WRITE_COORD(pev->origin.z - 10.0);	WRITE_SHORT(g_sModelIndexFireball3);	WRITE_BYTE((pev->dmg - 275) * 0.6);	WRITE_BYTE(150);	MESSAGE_END();	MESSAGE_BEGIN(MSG_PAS, SVC_TEMPENTITY, pev->origin);	WRITE_BYTE(TE_SPRITE);	WRITE_COORD(pev->origin.x + RANDOM_FLOAT(-512, 512));	WRITE_COORD(pev->origin.y + RANDOM_FLOAT(-512, 512));	WRITE_COORD(pev->origin.z + RANDOM_FLOAT(-10, 10));	WRITE_SHORT(g_sModelIndexFireball2);	WRITE_BYTE(floor((pev->dmg - 275) * 0.6));	WRITE_BYTE(150);	MESSAGE_END();	MESSAGE_BEGIN(MSG_PAS, SVC_TEMPENTITY, pev->origin);	WRITE_BYTE(TE_SPRITE);	WRITE_COORD(pev->origin.x + RANDOM_FLOAT(-512, 512));	WRITE_COORD(pev->origin.y + RANDOM_FLOAT(-512, 512));	WRITE_COORD(pev->origin.z + RANDOM_FLOAT(-10, 10));	WRITE_SHORT(g_sModelIndexFireball3);	WRITE_BYTE(floor((pev->dmg - 275) * 0.6));	WRITE_BYTE(150);	MESSAGE_END();	MESSAGE_BEGIN(MSG_PAS, SVC_TEMPENTITY, pev->origin);	WRITE_BYTE(TE_SPRITE);	WRITE_COORD(pev->origin.x + RANDOM_FLOAT(-512, 512));	WRITE_COORD(pev->origin.y + RANDOM_FLOAT(-512, 512));	WRITE_COORD(pev->origin.z + RANDOM_FLOAT(-10, 10));	WRITE_SHORT(g_sModelIndexFireball);	WRITE_BYTE(floor((pev->dmg - 275) * 0.6));	WRITE_BYTE(17);	MESSAGE_END();	EMIT_SOUND(ENT(pev), CHAN_WEAPON, "weapons/c4_explode1.wav", VOL_NORM, 0.25);	CSoundEnt::InsertSound(bits_SOUND_COMBAT, pev->origin, NORMAL_EXPLOSION_VOLUME, 3.0);	entvars_t *pevOwner;	if (pev->owner)		pevOwner = VARS(pev->owner);	else		pevOwner = NULL;	pev->owner = NULL; // Can't traceline attack owner if this is set.	// TODO: Fix me.	//RadiusDamage( pev, pevOwner, pev->dmg, g_pGameRules->m_flBombRadius, CLASS_NONE, bitsDamageType );	if (pGameRules->IsCareer())	{		TheCareerTasks->UnlatchRoundEndMessage();	}	MESSAGE_BEGIN(MSG_SPEC, SVC_DIRECTOR);	WRITE_BYTE(9);	WRITE_BYTE(DRC_CMD_EVENT);	WRITE_SHORT(ENTINDEX(this->edict()));	WRITE_SHORT(NULL);	WRITE_ENTITY(DRC_FLAG_FINAL | DRC_FLAG_PRIO_MASK);	MESSAGE_END();	UTIL_DecalTrace(pTrace, RANDOM_FLOAT(0, 1) < 0.5 ? DECAL_SCORCH1 : DECAL_SCORCH2);	switch (RANDOM_LONG(0, 2))	{//.........这里部分代码省略.........
开发者ID:Chuvi-w,项目名称:CSSDK,代码行数:101,


示例19: PlayEmptySound

void CPython::PrimaryAttack(){	if (!(m_pPlayer->m_afButtonPressed & IN_ATTACK))    return;	// don't fire underwater	if (m_pPlayer->pev->waterlevel == 3)	{		PlayEmptySound( );		m_flNextPrimaryAttack = 0.15;		return;	}	if (m_iClip <= 0)	{		if (!m_fFireOnEmpty)			Reload( );		else		{			EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/357_cock1.wav", 0.8, ATTN_NORM);			m_flNextPrimaryAttack = 0.15;		}		return;	}	m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;	m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;	m_iClip--;	m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH;	// player "shoot" animation	m_pPlayer->SetAnimation( PLAYER_ATTACK1 );	UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );	Vector vecSrc	 = m_pPlayer->GetGunPosition( );	Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );	Vector vecDir;	vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, VECTOR_CONE_1DEGREES, 8192, BULLET_PLAYER_357, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );    int flags;#if defined( CLIENT_WEAPONS )	flags = FEV_NOTHOST;#else	flags = 0;#endif	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usFirePython, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );	if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)		// HEV suit - indicate out of ammo condition		m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);	m_flNextPrimaryAttack = 0.75;	m_flTimeWeaponIdle = UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 );}
开发者ID:JoelTroch,项目名称:am_src_rebirth,代码行数:61,


示例20: UTIL_Remove

//.........这里部分代码省略.........				WRITE_SHORT(30);				WRITE_SHORT(0);				MESSAGE_END();			}			break;		}		case 4:		{			m_sBeepName = "weapons/c4_beep5.wav";			m_fAttenu = 0.2;			if (UTIL_IsGame("czero"))			{				MESSAGE_BEGIN(MSG_ALL, gmsgScenarioIcon);				WRITE_BYTE(1);				WRITE_STRING("bombticking");				WRITE_BYTE(255);				WRITE_SHORT(20);				WRITE_SHORT(0);				MESSAGE_END();			}			break;		}		}		++m_iCurWave;	}	if (m_flNextBeep < gpGlobals->time)	{		m_flNextBeep = gpGlobals->time + 1.4;		EMIT_SOUND(ENT(pev), CHAN_VOICE, m_sBeepName, VOL_NORM, m_fAttenu);		// TODO: Adds support for bots.		// TheBots->OnEvent( EVENT_BOMB_BEEP, this, NULL );	}	if (m_flNextBlink < gpGlobals->time)	{		m_flNextBlink = gpGlobals->time + 2.0;		MESSAGE_BEGIN(MSG_PVS, SVC_TEMPENTITY, pev->origin);		WRITE_BYTE(TE_GLOWSPRITE);		WRITE_COORD(pev->origin.x);		WRITE_COORD(pev->origin.y);		WRITE_COORD(pev->origin.z + 5.0);		WRITE_SHORT(g_sModelIndexC4Glow);		WRITE_BYTE(1);		WRITE_BYTE(3);		WRITE_BYTE(255);		MESSAGE_END();	}	CHalfLifeMultiplay *pGameRules = (CHalfLifeMultiplay*)g_pGameRules;	if (m_flC4Blow <= gpGlobals->time)	{		// TODO: Adds support for bots.		// TheBots->OnEvent( EVENT_BOMB_EXPLODED, NULL, NULL );		MESSAGE_BEGIN(MSG_ALL, gmsgScenarioIcon);		WRITE_BYTE(0);		MESSAGE_END();
开发者ID:Chuvi-w,项目名称:CSSDK,代码行数:66,


示例21: ClientPrint

// Pickup backpackBOOL CItemBackpack::MyTouch( CBasePlayer *pPlayer ){	if (pPlayer->pev->health <= 0)		return FALSE;	if (gpGlobals->deathmatch == 4 && pPlayer->m_flInvincibleFinished > 0)		return FALSE; 	if (gpGlobals->deathmatch == 4)	{       		pPlayer->pev->health += 10;		ClientPrint( pPlayer->pev, HUD_PRINTNOTIFY, "#Additional_Health" );		if ((pPlayer->pev->health > 250) && (pPlayer->pev->health < 300))			EMIT_SOUND( ENT(pPlayer->pev), CHAN_ITEM, "items/protect3.wav", 1, ATTN_NORM );		else			EMIT_SOUND( ENT(pPlayer->pev), CHAN_ITEM, "weapons/lock4.wav", 1, ATTN_NORM );				// Become invulnerable if the player's reached 300 health		if (pPlayer->pev->health > 299)		{               			if (pPlayer->m_flInvincibleFinished == 0)			{                       				// Give player invincibility and quad				pPlayer->m_flInvincibleFinished = gpGlobals->time + 30;				pPlayer->m_flSuperDamageFinished = gpGlobals->time + 30;				pPlayer->m_iQuakeItems |= (IT_INVULNERABILITY | IT_QUAD);				pPlayer->m_iAmmoCells = 0;						// Make player glow red				pPlayer->pev->renderfx = kRenderFxGlowShell;				pPlayer->pev->rendercolor = Vector( 255, 128, 0 );	// RGB				pPlayer->pev->renderamt = 100;	// Shell size				EMIT_SOUND( ENT(pPlayer->pev), CHAN_VOICE, "items/sight1.wav", 1, ATTN_NORM );				UTIL_ClientPrintAll( HUD_PRINTNOTIFY, "#Bonus_Power", STRING(pPlayer->pev->netname) );			}		}		UTIL_Remove( this );		// We've removed ourself, so don't let CQuakeItem handle respawn		return FALSE;	}	BOOL bPrintComma = FALSE;	// Get the weapon from the pack	if (m_iItems)	{		if ( !(pPlayer->m_iQuakeItems & m_iItems) )		{			bPrintComma = TRUE;			switch ( m_iItems )			{			case IT_SUPER_SHOTGUN:				ClientPrint( pPlayer->pev, HUD_PRINTNOTIFY, "#You_Get_SS", UTIL_dtos1( ammo_shells ), UTIL_dtos2 ( ammo_nails ), UTIL_dtos3 ( ammo_rockets ), UTIL_dtos4 ( ammo_cells ) ); break;			case IT_NAILGUN:				ClientPrint( pPlayer->pev, HUD_PRINTNOTIFY, "#You_Get_NG", UTIL_dtos1( ammo_shells ), UTIL_dtos2 ( ammo_nails ), UTIL_dtos3 ( ammo_rockets ), UTIL_dtos4 ( ammo_cells ) ); break;			case IT_SUPER_NAILGUN:				ClientPrint( pPlayer->pev, HUD_PRINTNOTIFY, "#You_Get_SG", UTIL_dtos1( ammo_shells ), UTIL_dtos2 ( ammo_nails ), UTIL_dtos3 ( ammo_rockets ), UTIL_dtos4 ( ammo_cells ) ); break;			case IT_GRENADE_LAUNCHER:				ClientPrint( pPlayer->pev, HUD_PRINTNOTIFY, "#You_Get_GL", UTIL_dtos1( ammo_shells ), UTIL_dtos2 ( ammo_nails ), UTIL_dtos3 ( ammo_rockets ), UTIL_dtos4 ( ammo_cells ) ); break;			case IT_ROCKET_LAUNCHER:				ClientPrint( pPlayer->pev, HUD_PRINTNOTIFY, "#You_Get_RL", UTIL_dtos1( ammo_shells ), UTIL_dtos2 ( ammo_nails ), UTIL_dtos3 ( ammo_rockets ), UTIL_dtos4 ( ammo_cells ) ); break;			case IT_LIGHTNING:				ClientPrint( pPlayer->pev, HUD_PRINTNOTIFY, "#You_Get_LG", UTIL_dtos1( ammo_shells ), UTIL_dtos2 ( ammo_nails ), UTIL_dtos3 ( ammo_rockets ), UTIL_dtos4 ( ammo_cells ) ); break;			}		}		else			ClientPrint( pPlayer->pev, HUD_PRINTNOTIFY, "#You_Get_NoGun", UTIL_dtos1( ammo_shells ), UTIL_dtos2 ( ammo_nails ), UTIL_dtos3 ( ammo_rockets ), UTIL_dtos4 ( ammo_cells ) );	} 	// Get ammo from pack	pPlayer->m_iAmmoShells += ammo_shells;	pPlayer->m_iAmmoNails += ammo_nails;	pPlayer->m_iAmmoRockets += ammo_rockets;	pPlayer->m_iAmmoCells += ammo_cells;	pPlayer->CheckAmmo();	int iNewWeapon = m_iItems;	if (!iNewWeapon)		iNewWeapon = pPlayer->m_iQuakeWeapon;	int iOldWeapon = pPlayer->m_iQuakeItems;	pPlayer->m_iQuakeItems |= m_iItems;	// Give them at least 5 rockets in DM==3 and DM==5	if ( (gpGlobals->deathmatch==3 || gpGlobals->deathmatch == 5) & ( (WeaponCode(iNewWeapon)==6) || (WeaponCode(iNewWeapon)==7) ) & (pPlayer->m_iAmmoRockets < 5) )		pPlayer->m_iAmmoRockets = 5;	EMIT_SOUND( ENT(pPlayer->pev), CHAN_ITEM, "weapons/lock4.wav", 1, ATTN_NORM );	// Switch to a better weapon	if ( WeaponCode(iNewWeapon) <= pPlayer->m_iBackpackSwitch )	{		if (pPlayer->pev->flags & FL_INWATER)		{			if (iNewWeapon != IT_LIGHTNING)//.........这里部分代码省略.........
开发者ID:bmk10,项目名称:sing-engine,代码行数:101,


示例22: TrackTarget

//=========================================================// Hornet is flying, gently tracking target//=========================================================void CMHornet :: TrackTarget ( void ){	Vector	vecFlightDir;	Vector	vecDirToEnemy;	float	flDelta;	StudioFrameAdvance( );	if (gpGlobals->time > m_flStopAttack)	{		SetTouch( NULL );		SetThink( SUB_Remove );		pev->nextthink = gpGlobals->time + 0.1;		return;	}	// UNDONE: The player pointer should come back after returning from another level	if ( m_hEnemy == NULL )	{// enemy is dead.		Look( 512 );		m_hEnemy = BestVisibleEnemy( );	}		if ( m_hEnemy != NULL && UTIL_FVisible( m_hEnemy, ENT(pev) ))	{		m_vecEnemyLKP = UTIL_BodyTarget( m_hEnemy, pev->origin );	}	else	{		m_vecEnemyLKP = m_vecEnemyLKP + pev->velocity * m_flFlySpeed * 0.1;	}	vecDirToEnemy = ( m_vecEnemyLKP - pev->origin ).Normalize();	if (pev->velocity.Length() < 0.1)		vecFlightDir = vecDirToEnemy;	else 		vecFlightDir = pev->velocity.Normalize();	// measure how far the turn is, the wider the turn, the slow we'll go this time.	flDelta = DotProduct ( vecFlightDir, vecDirToEnemy );		if ( flDelta < 0.5 )	{// hafta turn wide again. play sound		switch (RANDOM_LONG(0,2))		{		case 0:	EMIT_SOUND( ENT(pev), CHAN_VOICE, "hornet/ag_buzz1.wav", HORNET_BUZZ_VOLUME, ATTN_NORM);	break;		case 1:	EMIT_SOUND( ENT(pev), CHAN_VOICE, "hornet/ag_buzz2.wav", HORNET_BUZZ_VOLUME, ATTN_NORM);	break;		case 2:	EMIT_SOUND( ENT(pev), CHAN_VOICE, "hornet/ag_buzz3.wav", HORNET_BUZZ_VOLUME, ATTN_NORM);	break;		}	}	if ( flDelta <= 0 && m_iHornetType == HORNET_TYPE_RED )	{// no flying backwards, but we don't want to invert this, cause we'd go fast when we have to turn REAL far.		flDelta = 0.25;	}	pev->velocity = ( vecFlightDir + vecDirToEnemy).Normalize();	if ( pev->owner && (pev->owner->v.flags & FL_MONSTER) )	{		// random pattern only applies to hornets fired by monsters, not players. 		pev->velocity.x += RANDOM_FLOAT ( -0.10, 0.10 );// scramble the flight dir a bit.		pev->velocity.y += RANDOM_FLOAT ( -0.10, 0.10 );		pev->velocity.z += RANDOM_FLOAT ( -0.10, 0.10 );	}		switch ( m_iHornetType )	{		case HORNET_TYPE_RED:			pev->velocity = pev->velocity * ( m_flFlySpeed * flDelta );// scale the dir by the ( speed * width of turn )			pev->nextthink = gpGlobals->time + RANDOM_FLOAT( 0.1, 0.3 );			break;		case HORNET_TYPE_ORANGE:			pev->velocity = pev->velocity * m_flFlySpeed;// do not have to slow down to turn.			pev->nextthink = gpGlobals->time + 0.1;// fixed think time			break;	}	pev->angles = UTIL_VecToAngles (pev->velocity);	pev->solid = SOLID_BBOX;}
开发者ID:ET-NiK,项目名称:amxxgroup,代码行数:87,


示例23: EMIT_SOUND

void CMomentaryRotButton::PlaySound( void ){	EMIT_SOUND( ENT( pev ), CHAN_VOICE, ( char* ) STRING( pev->noise ), 1, ATTN_NORM );}
开发者ID:Arkshine,项目名称:HLEnhanced,代码行数:4,


示例24: UTIL_PointContents

// UNDONE: temporary scorching for PreAlpha - find a less sleazy permenant solution.void CGrenade::Explode( TraceResult *pTrace, int bitsDamageType ){	float		flRndSound;// sound randomizer	pev->model = iStringNull;//invisible	pev->solid = SOLID_NOT;// intangible	pev->takedamage = DAMAGE_NO;	// Pull out of the wall a bit	if ( pTrace->flFraction != 1.0 )	{		pev->origin = pTrace->vecEndPos + (pTrace->vecPlaneNormal * (pev->dmg - 24) * 0.6);	}	int iContents = UTIL_PointContents ( pev->origin );	MESSAGE_BEGIN( MSG_PAS, gmsgTempEntity, pev->origin );		WRITE_BYTE( TE_EXPLOSION );		// This makes a dynamic light and the explosion sprites/sound		WRITE_COORD( pev->origin.x );	// Send to PAS because of the sound		WRITE_COORD( pev->origin.y );		WRITE_COORD( pev->origin.z );		if (iContents != CONTENTS_WATER)		{			WRITE_SHORT( g_sModelIndexFireball );		}		else		{			WRITE_SHORT( g_sModelIndexWExplosion );		}		WRITE_BYTE( (pev->dmg - 50) * .60  ); // scale * 10		WRITE_BYTE( 15  ); // framerate		WRITE_BYTE( TE_EXPLFLAG_NONE );	MESSAGE_END();	CSoundEnt::InsertSound ( bits_SOUND_COMBAT, pev->origin, NORMAL_EXPLOSION_VOLUME, 3.0 );	entvars_t *pevOwner;	if ( pev->owner )		pevOwner = VARS( pev->owner );	else		pevOwner = NULL;	pev->owner = NULL; // can't traceline attack owner if this is set	RadiusDamage ( pev, pevOwner, pev->dmg, CLASS_NONE, bitsDamageType );                    CBaseEntity *pHit = CBaseEntity::Instance( pTrace->pHit );		UTIL_DecalTrace( pTrace, DECAL_SCORCH2 );	flRndSound = RANDOM_FLOAT( 0 , 1 );	switch ( RANDOM_LONG( 0, 2 ) )	{		case 0:	EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris1.wav", 0.55, ATTN_NORM);	break;		case 1:	EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris2.wav", 0.55, ATTN_NORM);	break;		case 2:	EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/debris3.wav", 0.55, ATTN_NORM);	break;	}	pev->effects |= EF_NODRAW;	SetThink(&CGrenade:: Smoke );	pev->velocity = g_vecZero;	SetNextThink( 0.3 );	if (iContents != CONTENTS_WATER)	{		int sparkCount = RANDOM_LONG(0,3);			for ( int i = 0; i < sparkCount; i++ )			Create( "spark_shower", pev->origin, pTrace->vecPlaneNormal, NULL );	}}
开发者ID:a1batross,项目名称:Xash3D_ancient,代码行数:73,


示例25: Off

void CRecharge::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ){ 	// if it's not a player, ignore	if (!FClassnameIs(pActivator->pev, "player"))		return;	// if there is no juice left, turn it off	if (m_iJuice <= 0)	{		pev->frame = 1;					Off();	}	// if the player doesn't have the suit, or there is no juice left, make the deny noise	if ((m_iJuice <= 0) || (!(pActivator->pev->weapons & (1<<WEAPON_SUIT))))	{		if (m_flSoundTime <= gpGlobals->time)		{			m_flSoundTime = gpGlobals->time + 0.62;			EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/suitchargeno1.wav", 0.85, ATTN_NORM );		}		return;	}	pev->nextthink = pev->ltime + 0.25;	SetThink(&CRecharge::Off);	// Time to recharge yet?	if (m_flNextCharge >= gpGlobals->time)		return;	// Make sure that we have a caller	if (!pActivator)		return;	m_hActivator = pActivator;	//only recharge the player	if (!m_hActivator->IsPlayer() )		return;		// Play the on sound or the looping charging sound	if (!m_iOn)	{		m_iOn++;		EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/suitchargeok1.wav", 0.85, ATTN_NORM );		m_flSoundTime = 0.56 + gpGlobals->time;	}	if ((m_iOn == 1) && (m_flSoundTime <= gpGlobals->time))	{		m_iOn++;		EMIT_SOUND(ENT(pev), CHAN_STATIC, "items/suitcharge1.wav", 0.85, ATTN_NORM );	}	// charge the player	if (m_hActivator->pev->armorvalue < 100)	{		m_iJuice--;		m_hActivator->pev->armorvalue += 1;		if (m_hActivator->pev->armorvalue > 100)			m_hActivator->pev->armorvalue = 100;	}	// govern the rate of charge	m_flNextCharge = gpGlobals->time + 0.1;}
开发者ID:Solexid,项目名称:halflife,代码行数:70,


示例26: SonicAttack

//=========================================================// SonicAttack//=========================================================void CHoundeye :: SonicAttack ( void ){	float		flAdjustedDamage;	float		flDist;	switch ( RANDOM_LONG( 0, 2 ) )	{	case 0:	EMIT_SOUND(ENT(pev), CHAN_WEAPON, "houndeye/he_blast1.wav", 1, ATTN_NORM);	break;	case 1:	EMIT_SOUND(ENT(pev), CHAN_WEAPON, "houndeye/he_blast2.wav", 1, ATTN_NORM);	break;	case 2:	EMIT_SOUND(ENT(pev), CHAN_WEAPON, "houndeye/he_blast3.wav", 1, ATTN_NORM);	break;	}	// blast circles	MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin );		WRITE_BYTE( TE_BEAMCYLINDER );		WRITE_COORD( pev->origin.x);		WRITE_COORD( pev->origin.y);		WRITE_COORD( pev->origin.z + 16);		WRITE_COORD( pev->origin.x);		WRITE_COORD( pev->origin.y);		WRITE_COORD( pev->origin.z + 16 + HOUNDEYE_MAX_ATTACK_RADIUS / .2); // reach damage radius over .3 seconds		WRITE_SHORT( m_iSpriteTexture );		WRITE_BYTE( 0 ); // startframe		WRITE_BYTE( 0 ); // framerate		WRITE_BYTE( 2 ); // life		WRITE_BYTE( 16 );  // width		WRITE_BYTE( 0 );   // noise		WriteBeamColor();		WRITE_BYTE( 255 ); //brightness		WRITE_BYTE( 0 );		// speed	MESSAGE_END();	MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin );		WRITE_BYTE( TE_BEAMCYLINDER );		WRITE_COORD( pev->origin.x);		WRITE_COORD( pev->origin.y);		WRITE_COORD( pev->origin.z + 16);		WRITE_COORD( pev->origin.x);		WRITE_COORD( pev->origin.y);		WRITE_COORD( pev->origin.z + 16 + ( HOUNDEYE_MAX_ATTACK_RADIUS / 2 ) / .2); // reach damage radius over .3 seconds		WRITE_SHORT( m_iSpriteTexture );		WRITE_BYTE( 0 ); // startframe		WRITE_BYTE( 0 ); // framerate		WRITE_BYTE( 2 ); // life		WRITE_BYTE( 16 );  // width		WRITE_BYTE( 0 );   // noise		WriteBeamColor();				WRITE_BYTE( 255 ); //brightness		WRITE_BYTE( 0 );		// speed	MESSAGE_END();	CBaseEntity *pEntity = NULL;	// iterate on all entities in the vicinity.	while ((pEntity = UTIL_FindEntityInSphere( pEntity, pev->origin, HOUNDEYE_MAX_ATTACK_RADIUS )) != NULL)	{		if ( pEntity->pev->takedamage != DAMAGE_NO )		{			if ( !FClassnameIs(pEntity->pev, "monster_houndeye") )			{// houndeyes don't hurt other houndeyes with their attack				// houndeyes do FULL damage if the ent in question is visible. Half damage otherwise.				// This means that you must get out of the houndeye's attack range entirely to avoid damage.				// Calculate full damage first				if ( SquadCount() > 1 )				{					// squad gets attack bonus.					flAdjustedDamage = gSkillData.houndeyeDmgBlast + gSkillData.houndeyeDmgBlast * ( HOUNDEYE_SQUAD_BONUS * ( SquadCount() - 1 ) );				}				else				{					// solo					flAdjustedDamage = gSkillData.houndeyeDmgBlast;				}				flDist = (pEntity->Center() - pev->origin).Length();				flAdjustedDamage -= ( flDist / HOUNDEYE_MAX_ATTACK_RADIUS ) * flAdjustedDamage;				if ( !FVisible( pEntity ) )				{					if ( pEntity->IsPlayer() )					{						// if this entity is a client, and is not in full view, inflict half damage. We do this so that players still 						// take the residual damage if they don't totally leave the houndeye's effective radius. We restrict it to clients						// so that monsters in other parts of the level don't take the damage and get pissed.						flAdjustedDamage *= 0.5;					}					else if ( !FClassnameIs( pEntity->pev, "func_breakable" ) && !FClassnameIs( pEntity->pev, "func_pushable" ) ) 					{						// do not hurt nonclients through walls, but allow damage to be done to breakables						flAdjustedDamage = 0;//.........这里部分代码省略.........
开发者ID:Solexid,项目名称:halflife,代码行数:101,


示例27: TrackTarget

//=========================================================// Hornet is flying, gently tracking target//=========================================================void CHornet :: TrackTarget ( void ){	Vector	vecFlightDir;	Vector	vecDirToEnemy;	float	flDelta;	StudioFrameAdvance( );	if (gpGlobals->time > m_flStopAttack)	{		SetTouch( NULL );		SetThink(&CBaseEntity::SUB_Remove);		pev->nextthink = gpGlobals->time + 0.1;		return;	}	// UNDONE: The player pointer should come back after returning from another level	if ( m_hEnemy == NULL )	{// enemy is dead.		Look( 512 );		m_hEnemy = BestVisibleEnemy( );	}		if ( m_hEnemy != NULL && FVisible( m_hEnemy ))	{		m_vecEnemyLKP = m_hEnemy->BodyTarget( pev->origin );	}	else	{		m_vecEnemyLKP = m_vecEnemyLKP + pev->velocity * m_flFlySpeed * 0.1;	}	vecDirToEnemy = ( m_vecEnemyLKP - pev->origin ).Normalize();	if (pev->velocity.Length() < 0.1)		vecFlightDir = vecDirToEnemy;	else 		vecFlightDir = pev->velocity.Normalize();	// measure how far the turn is, the wider the turn, the slow we'll go this time.	flDelta = DotProduct ( vecFlightDir, vecDirToEnemy );		if ( flDelta < 0.5 )	{// hafta turn wide again. play sound		switch (RANDOM_LONG(0,2))		{		case 0:	EMIT_SOUND( ENT(pev), CHAN_VOICE, "hornet/ag_buzz1.wav", HORNET_BUZZ_VOLUME, ATTN_NORM);	break;		case 1:	EMIT_SOUND( ENT(pev), CHAN_VOICE, "hornet/ag_buzz2.wav", HORNET_BUZZ_VOLUME, ATTN_NORM);	break;		case 2:	EMIT_SOUND( ENT(pev), CHAN_VOICE, "hornet/ag_buzz3.wav", HORNET_BUZZ_VOLUME, ATTN_NORM);	break;		}	}	if ( flDelta <= 0 && m_iHornetType == HORNET_TYPE_RED )	{// no flying backwards, but we don't want to invert this, cause we'd go fast when we have to turn REAL far.		flDelta = 0.25;	}	pev->velocity = ( vecFlightDir + vecDirToEnemy).Normalize();	if ( pev->owner && (pev->owner->v.flags & FL_MONSTER) )	{		// random pattern only applies to hornets fired by monsters, not players. 		pev->velocity.x += RANDOM_FLOAT ( -0.10, 0.10 );// scramble the flight dir a bit.		pev->velocity.y += RANDOM_FLOAT ( -0.10, 0.10 );		pev->velocity.z += RANDOM_FLOAT ( -0.10, 0.10 );	}		switch ( m_iHornetType )	{		case HORNET_TYPE_RED:			pev->velocity = pev->velocity * ( m_flFlySpeed * flDelta );// scale the dir by the ( speed * width of turn )			pev->nextthink = gpGlobals->time + RANDOM_FLOAT( 0.1, 0.3 );			break;		case HORNET_TYPE_ORANGE:			pev->velocity = pev->velocity * m_flFlySpeed;// do not have to slow down to turn.			pev->nextthink = gpGlobals->time + 0.1;// fixed think time			break;	}	pev->angles = UTIL_VecToAngles (pev->velocity);	pev->solid = SOLID_BBOX;	// if hornet is close to the enemy, jet in a straight line for a half second.	// (only in the single player game)	if ( m_hEnemy != NULL && !g_pGameRules->IsMultiplayer() )	{		if ( flDelta >= 0.4 && ( pev->origin - m_vecEnemyLKP ).Length() <= 300 )		{			MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );				WRITE_BYTE( TE_SPRITE );				WRITE_COORD( pev->origin.x);	// pos				WRITE_COORD( pev->origin.y);				WRITE_COORD( pev->origin.z);				WRITE_SHORT( iHornetPuff );		// model				// WRITE_BYTE( 0 );				// life * 10//.........这里部分代码省略.........
开发者ID:zenithght,项目名称:xash3d,代码行数:101,


示例28: EMIT_SOUND

void CAK74::PrimaryAttack(){    if ( m_fDefaultAnim == FIREMODE_SEMI )    {		if (!(m_pPlayer->m_afButtonPressed & IN_ATTACK)) 		return;    }	if (m_iClip <= 0) 	{ 		if (m_fFireOnEmpty) 		{ 			//PlayEmptySound();//for some reason, doesn't work			EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/357_cock1.wav", 0.8, ATTN_NORM);			m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.2; 		} 		return; 	} 	m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;	m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;	int iShots = 1;	if(	m_fDefaultAnim == FIREMODE_BURST )	{		if (m_iClip >= 3)			iShots = 3;		if (m_iClip == 2)			iShots = 2;	}	m_iClip -= iShots;	// player "shoot" animation	m_pPlayer->SetAnimation( PLAYER_ATTACK1 );	Vector vecSrc	 = m_pPlayer->GetGunPosition( );	Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );	Vector vecDir;	vecDir = m_pPlayer->FireBulletsThroughWalls( iShots, vecSrc, vecAiming, VECTOR_CONE_9DEGREES, 2048, BULLET_PLAYER_AK74, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );/*  int flags;#if defined( CLIENT_WEAPONS )	flags = FEV_NOTHOST;#else	flags = 0;#endif	PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usAK74, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, 0, 0, 0, 0 );*/	if( sModifiers.iSilencer == MOD_ON )	{		m_pPlayer->m_iWeaponVolume = 0;		m_pPlayer->m_iWeaponFlash = 0;				EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/m4a1/m4a1_FireSil-1.wav", RANDOM_FLOAT(0.95, 1.0), ATTN_NORM, 0, 93 + RANDOM_LONG(0,0xF));	}	else	EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/ak-47/AK47_fire-1.wav", RANDOM_FLOAT(0.95, 1.0), ATTN_NORM, 0, 93 + RANDOM_LONG(0,0xF));	SendWeaponAnim( AK_FIRE1 );	float fDelay = 0.1;	if ( m_fDefaultAnim == FIREMODE_BURST )	fDelay = 1.0;	m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + fDelay; // 0.1; delay	m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.01;		if ( m_flNextPrimaryAttack < UTIL_WeaponTimeBase() )		m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + fDelay; // 0.1; delay	m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat( m_pPlayer->random_seed, 10, 15 );}
开发者ID:JoelTroch,项目名称:am_src_30jan2011,代码行数:82,


示例29: AttackSound

//=========================================================// AttackSound//=========================================================void CAGrunt :: AttackSound ( void ){	StopTalking();	EMIT_SOUND ( ENT(pev), CHAN_VOICE, pAttackSounds[RANDOM_LONG(0,ARRAYSIZE(pAttackSounds)-1)], 1.0, ATTN_NORM );}
开发者ID:Solexid,项目名称:halflife,代码行数:9,


示例30: Move

void CPushable :: Move( CBaseEntity *pOther, int push ){	entvars_t*	pevToucher = pOther->pev;	int playerTouch = 0;	// Is entity standing on this pushable ?	if ( FBitSet(pevToucher->flags,FL_ONGROUND) && pevToucher->groundentity && VARS(pevToucher->groundentity) == pev )	{		// Only push if floating		if ( pev->waterlevel > 0 )			pev->velocity.z += pevToucher->velocity.z * 0.1;		return;	}	if ( pOther->IsPlayer() )	{		if ( push && !(pevToucher->button & (IN_FORWARD|IN_USE)) )	// Don't push unless the player is pushing forward and NOT use (pull)			return;		playerTouch = 1;	}	float factor;	if ( playerTouch )	{		if ( !(pevToucher->flags & FL_ONGROUND) )	// Don't push away from jumping/falling players unless in water		{			if ( pev->waterlevel < 1 )				return;			else 				factor = 0.1;		}		else			factor = 1;	}	else 		factor = 0.25;	pev->velocity.x += pevToucher->velocity.x * factor;	pev->velocity.y += pevToucher->velocity.y * factor;	float length = sqrt( pev->velocity.x * pev->velocity.x + pev->velocity.y * pev->velocity.y );	if ( push && (length > MaxSpeed()) )	{		pev->velocity.x = (pev->velocity.x * MaxSpeed() / length );		pev->velocity.y = (pev->velocity.y * MaxSpeed() / length );	}	if ( playerTouch )	{		pevToucher->velocity.x = pev->velocity.x;		pevToucher->velocity.y = pev->velocity.y;		if ( (gpGlobals->time - m_soundTime) > 0.7 )		{			m_soundTime = gpGlobals->time;			if ( length > 0 && FBitSet(pev->flags,FL_ONGROUND) )			{				m_lastSound = RANDOM_LONG(0,2);				EMIT_SOUND(ENT(pev), CHAN_WEAPON, m_soundNames[m_lastSound], 0.5, ATTN_NORM);	//			SetThink( StopSound );	//			pev->nextthink = pev->ltime + 0.1;			}			else				STOP_SOUND( ENT(pev), CHAN_WEAPON, m_soundNames[m_lastSound] );		}	}}
开发者ID:vermagav,项目名称:mechmod,代码行数:68,



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


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