Quote:
Originally Posted by addons_zz
Done.
Code:
public display_random_reset( id )
{
new random = GetRandomPlayer()
if( random == 0 )
{
ResetSelected()
random = GetRandomPlayer()
}
server_print( "Random ID = %d ~ g_Min = %d ~ g_Max = %d", random, g_Min, g_Max );
}
|
ty again i edited it a bit cause when no players connected it will print 0 is this right ?
Code:
public display_random_reset( id )
{
new random = GetRandomPlayer()
// all players have been selected clearing selection and picking a new random
if( random == -1 )
{
ResetSelected()
random = GetRandomPlayer()
if(random)
server_print( "Random ID = %d ~ g_Min = %d ~ g_Max = %d", random, g_Min, g_Max );
}
else if (random == 0)
{
server_print( "No players Found" );
ResetSelected() // no players in server or met the rules of selection
}
else
{
server_print( "Random ID = %d ~ g_Min = %d ~ g_Max = %d", random, g_Min, g_Max );
}
}
Code:
GetRandomPlayer()
{
//No players are connected or all have been selected already
if( !g_Players
|| ( g_Players == g_Selected ) )
{
return 0; // no players to select
}
new iRandomID;
//Keep looping while there is players that haven't yet been selected.
while( g_Players != g_Selected )
{
//Get random player id
iRandomID = random_num( g_Min, g_Max );
//If player is connected and has not yet been selected
if( ( g_Players & ( 1 << iRandomID ) )
&& !( g_Selected & ( 1 << iRandomID ) ) )
{
//Set bit for this ID in g_Selected bit-field so the player will now be considered selected
g_Selected |= ( 1 << iRandomID );
return ( iRandomID + 1 );
}
}
//All players have already been selected.
return -1; // making this -1 so we now we will know when all players are selected
}
edit:
is this the right way of making to pick from specific team ?
Code:
GetMaxMin( &iMin, &iMax )
{
for( new i = 0; i < g_MaxPlayers; i++ )
{
if( g_Players & ( 1 << i ) && is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT )
{
if( i < iMin )
{
iMin = i;
}
if( i > iMax )
{
iMax = i;
}
}
}
}
__________________