Call of Duty 4: Useful Functions

From COD Modding & Mapping Wiki
Revision as of 15:53, 23 February 2012 by Ingram (talk | contribs) (Small optimizations)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


NOTE: These scripts are only adding functionality into game. They do not add things such as mines, artillery, kaboom etc...

Returns array of all players on the server.

getAllPlayers()
{
	return getEntArray( "player", "classname" );
}

Play local sound on all players.

playSoundOnAllPlayers( soundAlias )
{
	players = getAllPlayers();
	for( i = 0; i < players.size; i++ )
		players[i] playLocalSound( soundAlias );
}

Removes all text messages from screen.

cleanScreen()
{
	for( i = 0; i < 6; i++ )
	{
		iPrintlnBold( " " );
		iPrintln( " " );
	}
}

Delete object after time.

deleteAfterTime( time )
{
	wait time;
	if( isDefined( self ) )
		self delete();
}

Return BOOL (true of false) when player is really alive and playing.

Note: CoD's isAlive() function seems to be bugged.

isReallyAlive()
{
	return self.sessionstate == "playing";
}

isPlaying()
{
	return isReallyAlive();
}

Toggle third person camera.

thirdPerson()
{
	if( isDefined( self.tp ) )
	{
		self.tp = undefined;
		self setClientDvar( "cg_thirdPerson", 0 );
	}
	else
	{
		self.tp = true;
		self setClientDvar( "cg_thirdPerson", 1 );
	}
}

Waits for enough players to start game.

// Use: waitForPlayers( 3 ); Code after this function call will be executed when there is required number of alive players.
waitForPlayers( requiredPlayersCount )
{
	for(;;)
	{
		wait 0.5;
		count = 0;
		players = getAllPlayers();
		for( i = 0; i < players.size; i++ )
			if( players[i] isPlaying() )
				count++;

		if( count >= requiredPlayersCount )
			break;
	}
}

Return player with that nick name or its part.

getPlayerByName( nickname ) 
{
	players = getAllPlayers();
	for ( i = 0; i < players.size; i++ )
		if ( isSubStr( toLower(players[i].name), toLower(nickname) ) ) 
			return players[i];
}

Return player with that slot number.

getPlayerByNum( pNum ) 
{
	players = getAllPlayers();
	for ( i = 0; i < players.size; i++ )
		if ( players[i] getEntityNumber() == pNum ) 
			return players[i];
}

Return true when victim was killed through world geometry.

isWallBang( attacker, victim )
{
	return !bulletTracePassed( attacker getEye(), victim getEye(), false, attacker );
}

Feel free to use these functions in your own mod. Just remember to put "Brax" in credits.

By Brax - Sources

--Zeroy 12:36, 13 May 2011 (IST)