PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <cstrike>
#include <amxmisc>
#include <fun>
new Float:g_SpawnVecs[ MAX_SPAWNS ][ 3 ]
new Float:g_SpawnAngles[ MAX_SPAWNS ][ 3 ]
new Float:g_SpawnVAngles[ MAX_SPAWNS ][ 3 ]
new g_TotalSpawns = 0
new cvar_respawndelay
public plugin_init( )
{
register_plugin( "Berserker Mod", "1.0", "ƒa†es™" )
register_event( "DeathMsg", "Event_DeathMsg", "a" )
cvar_respawndelay = register_cvar( "berserker_respawndelay", "15.0" )
}
public Event_DeathMsg( )
{
if ( get_pcvar_num( pcvar_berserker_toggle ) == 1 )
{
new id = read_data( 2 )
cooldown_time[ id ] = get_pcvar_num( cvar_respawndelay )
set_task( get_pcvar_float( cvar_respawndelay ), "Respawn_Player", id )
set_task( 1.0, "ShowHUD", id, _, _, "a", cooldown_time[ id ] )
}
}
public Respawn_Player( id )
{
new name[32]
get_user_name( id, name, 31 )
if ( !is_user_connected( id ) || is_user_alive( id ) || cs_get_user_team( id ) == CS_TEAM_SPECTATOR )
return;
client_print( 0, print_chat, "Player %s is respawning.", name )
set_pev( id, pev_deadflag, DEAD_RESPAWNABLE )
dllfunc( DLLFunc_Think, id )
if ( is_user_bot( id ) && pev( id, pev_deadflag ) == DEAD_RESPAWNABLE )
{
dllfunc( DLLFunc_Spawn, id )
}
readSpawns( )
}
readSpawns( )
{
//-617 2648 179 16 -22 0 0 -5 -22 0
// Origin ( x, y, z ), Angles ( x, y, z ), vAngles( x, y, z ), Team ( 0 = ALL ) - ignore
// :TODO: Implement team specific spawns
new Map[ 32 ], config[ 32 ], MapFile[ 64 ]
get_mapname( Map, 31 )
get_configsdir( config, 31 )
format( MapFile, 63, "%s\csdm\%s.spawns.cfg", config, Map )
g_TotalSpawns = 0
if ( file_exists( MapFile ) )
{
new Data[ 124 ], len
new line = 0
new pos[ 12 ][ 8 ]
while( g_TotalSpawns < MAX_SPAWNS && ( line = read_file( MapFile , line , Data , 123 , len ) ) != 0 )
{
if ( strlen( Data ) <2 || Data[ 0 ] == '[' )
continue;
parse( Data, pos[ 1 ], 7, pos[ 2 ], 7, pos[ 3 ], 7, pos[ 4 ], 7, pos[ 5 ], 7, pos[ 6 ], 7, pos[ 7 ], 7, pos[ 8 ], 7, pos[ 9 ], 7, pos[ 10 ], 7 )
// Origin
g_SpawnVecs[ g_TotalSpawns][ 0 ] = str_to_float( pos[1 ] )
g_SpawnVecs[ g_TotalSpawns][ 1 ] = str_to_float( pos[ 2 ] )
g_SpawnVecs[ g_TotalSpawns][ 2 ] = str_to_float( pos[ 3 ] )
//Angles
g_SpawnAngles[ g_TotalSpawns ][ 0 ] = str_to_float( pos[ 4 ] )
g_SpawnAngles[ g_TotalSpawns ][ 1 ] = str_to_float( pos[ 5 ] )
g_SpawnAngles[ g_TotalSpawns ][ 2 ] = str_to_float( pos[ 6 ] )
//v-Angles
g_SpawnVAngles[g_TotalSpawns][ 0 ] = str_to_float( pos[ 8 ] )
g_SpawnVAngles[g_TotalSpawns][ 1 ] = str_to_float( pos[ 9 ] )
g_SpawnVAngles[g_TotalSpawns][ 2 ] = str_to_float( pos[ 10 ] )
//Team - ignore - 7
g_TotalSpawns++;
}
log_amx("Loaded %d spawn points for map %s.", g_TotalSpawns, Map )
} else {
log_amx("No spawn points file found (%s)", MapFile )
}
return 1;
}