All pastes #414973 Raw Edit

Anonymous

public lua v1 · immutable
#414973 ·published 2007-03-29 13:10 UTC
rendered paste body
/*---------------------------------------------------------   Name: gamemode:PlayerSelectSpawn( player )   Desc: Find a spawn point entity for this player---------------------------------------------------------*/function GM:PlayerSelectSpawn( pl )	if ( !self.Spawns ) then		self.Spawns = {}		self.Spawns[ RED_TEAM  ] = ents.FindByClass( "red_team" )		self.Spawns[ RED_TEAM  ] = table.Add( self.Spawns[ RED_TEAM  ], ents.FindByClass( "info_player_combine" ) )		self.Spawns[ RED_TEAM  ] = table.Add( self.Spawns[ RED_TEAM  ], ents.FindByClass( "info_player_terrorist" ) )		self.Spawns[ RED_TEAM  ] = table.Add( self.Spawns[ RED_TEAM  ], ents.FindByClass( "info_player_axis" ) )		self.Spawns[ BLUE_TEAM ] = ents.FindByClass( "blue_team" )		self.Spawns[ BLUE_TEAM ] = table.Add( self.Spawns[ BLUE_TEAM ], ents.FindByClass( "info_player_rebel" ) )		self.Spawns[ BLUE_TEAM ] = table.Add( self.Spawns[ BLUE_TEAM ], ents.FindByClass( "info_player_counterterrorist" ) )		self.Spawns[ BLUE_TEAM ] = table.Add( self.Spawns[ BLUE_TEAM ], ents.FindByClass( "info_player_allies" ) )		self.Spawns["fallback"] = ents.FindByClass( "info_player_start" )	end	local team = pl:Team()	local SpawnTable = self.Spawns[ team ]	local Spawnpoint = nil	// I didn't like how spawn points were allocated as players could sometimes get stuck inside each other, or inside props.	// This method should be a bit more reliable	if ( SpawnTable ) then		//Put the spawnpoints in a random order		local temp = {}		for _,v in pairs( SpawnTable ) do table.insert( temp, math.random( 1, #temp+1 ), v ) end		//Check each spawnpoint to see if we're gonna get stuck & use the first 'empty' one we come across		for _,Spawnpoint in pairs( temp ) do			if !( #ents.FindInSphere( Spawnpoint:GetPos(), 16 ) > 1 ) then return Spawnpoint end		end	end	// In case there's no spawnpoints available use an info_player_start.	return self.Spawns[ "fallback" ][ 1 ]end