All pastes #929194 Raw Edit

silenced

public text v1 · immutable
·published 2008-03-05 16:36 UTC
rendered paste body
INT NearestTeamCHTarget( )
{
	FLOAT	CHDist		=	0;
	FLOAT   lastCHDist  =	9999;
	FLOAT	AngleX, AngleY;

	INT	iBestTargetCH	=	-1;
	
	for ( INT i = 0; i < 64; i++ ) 
	{
		if( Game->cg_entities[i].currentValid == 1 &&
			Game->clientInfo[ Game->cg_entities[i].currentState.clientNum ].infoValid &&
			Game->clientInfo[ Game->cg_entities[i].currentState.clientNum ].clientNum != Game->cg->clientNum && 
			Game->clientInfo[ Game->cg_entities[i].currentState.clientNum ].team != TEAM_SPECTATOR )
		{
			if( Game->clientInfo[ Game->cg_entities[i].currentState.clientNum ].team != Game->clientInfo[ Game->cg->clientNum ].team )
			{
				GetTag_15( &Game->cg_entities[i], aimSpot );

				if( IsVisible( aimSpot ) )
				{
					aimSpot[YAW]	+= Mom_AimVecX->integer;
					aimSpot[PITCH]	+= Mom_AimVecY->integer;
					aimSpot[ROLL]	+= Mom_AimVecZ->integer;

					VectorMA( aimSpot, Game->cg->snap->ping, Game->cg_entities[i].currentState.trDelta, aimSpot );
					PingPredict( &Game->cg_entities[i], aimSpot, aimSpot );

					GetAngleToOrigin( aimSpot, AngleX, AngleY );

					CHDist   = sqrt( AngleX*AngleX + AngleY*AngleY );

					if ( (CHDist < lastCHDist)  )
					{
						lastCHDist	= CHDist;
						iBestTargetCH	= i;
					}
				}
			}
		}
	}

	return iBestTargetCH;
}


VOID DoTeamAim( INT i )
{
	FLOAT	AngleX, AngleY;

	GetTag_15( &Game->cg_entities[i], aimSpot );

	if( i < 0 )
	{
		return;
	}

	GetAngleToOrigin( aimSpot, AngleX, AngleY );
	
	*Game->ViewAngleX += AngleX;
	*Game->ViewAngleY += AngleY;
}

DoTeamAim( NearestTeamCHTarget );