Posts: 2,041
	Threads: 97
	Joined: Jun 2013
	
	
 
	
	
		He intentado tantas cosas que no me quedу otra que pedir ayuda.
Necesito saber cуmo hacer para que una funciуn devuelva la ID del jugador con mбs puntos.
Hice esto:
pawn Код:
stock SearchPlayerWhitHighPoints()
{
    new Value = -1;
    new player = -1;
    new Float:Var;
    
    foreach(new i: Player)
    {
        Var = PlayerInfo[i][RadarSpeed]; // Los puntos serнa 'PlayerInfo[i][RadarSpeed]'.
        if(Var > Value)
        {
            player = i;
        }
    }
    return player;
}
 
Y no funciona, es mбs, ni yo le veo la lуgica a esa funciуn 
.
Alguien me podrнa decir cуmo hacer eso?
Saludos.
	 
	
	
	
		
	
 
 
	
	
	
		
	Posts: 2,041
	Threads: 97
	Joined: Jun 2013
	
	
 
	
	
		
Quote:
					Originally Posted by  CrossOv3r
 
 
return i; ? 
 | 
 
Darнa errores. La funciуn que quiero hacer devolverнa la ID con mбs puntos.
	 
	
	
	
		
	
 
 
	
	
	
		
	Posts: 4,930
	Threads: 467
	Joined: Dec 2010
	
	
 
	
	
		explicate un poco mas,  como con mas puntos?, explica un poco para que quieres la funcion.
	
	
	
	
		
	
 
 
	
	
	
		
	Posts: 2,041
	Threads: 97
	Joined: Jun 2013
	
	
 
	
	
		
Quote:
					Originally Posted by  OTACON
 
 
explicate un poco mas,  como con mas puntos?, explica un poco para que quieres la funcion. 
 | 
 
Estoy haciendo un FS de carreras de Radar (Tipo NFS), y cada vez que un jugador llega a 'X' checkpoint, se extrae la velocidad del vehнculo y se le suma a la variable 'RadarSpeed'. Entonces, cada vez que el jugador llega al checkpoint, que la funciуn que necesito extraiga al jugador con mбs puntos.
Cappichi? xd.
	 
	
	
	
		
	
 
 
	
	
	
		
	Posts: 4,930
	Threads: 467
	Joined: Dec 2010
	
	
 
	
	
		
pawn Код:
static PuntosPlayers[MAX_PLAYERS],
SumandoPuntosPlayers[MAX_PLAYERS];
 
pawn Код:
SumandoPuntosPlayers[playerid]++;
PuntosPlayers[playerid] = VELOCIDAD * SumandoPuntosPlayers[playerid];
 
pawn Код:
stock SearchPlayerWhitHighPoints(puntosMAX){
    new puntos=0;
    foreach(new user: Player){
        if(PuntosPlayers[user] > puntosMAX){
            puntos = user;
        }
    } return puntos;
}
 
pawn Код:
stock SearchPlayerWhitHighPoints(puntosMAX){
    new puntos=0, contar=0;
    foreach(new user: Player){
        if(PuntosPlayers[user] > puntosMAX){
            puntos = user;
            contar++;
        }
    } 
    if(contar == 1) return puntos;
    else if(contar > 1) return -1;
}
 es lo que entendi :/...
	 
	
	
	
		
	
 
 
	
	
	
		
	Posts: 2,041
	Threads: 97
	Joined: Jun 2013
	
	
 
	
	
		
Quote:
					Originally Posted by  the_chaoz
 
 
Esta forma es un poco mas rбpida ya que evitas asignaciones extra. (Si quieres una versiуn aun mas optimizada, te sugiero utilizar el algoritmo bubblesort, u otros algoritmos de bъsqueda) 
pawn Код: 
stock SearchPlayerWhitHighPoints() {     new         tmp,         Float:val;
      foreach(new i : Player)     {         if(PlayerInfo[i][RadarSpeed] > val)         {             tmp = i;             val = PlayerInfo[i][RadarSpeed];         }     }          return tmp; }  
  
 | 
 
Tienes razуn xD. Reciйn me doy cuenta que las otras variables eran innecesarias xd.
Muchas gracias, y a los demбs tambiйn se lo agradezco xd.
EDIT: Tu cуdigo no funciona :/.
EDIT2: Sн, ahora funciona xd.
	 
	
	
	
		
	
 
 
	
	
	
		
	Posts: 4,930
	Threads: 467
	Joined: Dec 2010
	
	
 
	
	
		yo pregunto ...
la variable Float:val no esta de mas o esta mal colocada?.
pawn Код:
stock SearchPlayerWhitHighPoints()
{
    new
        tmp,
        Float:val; //xa se xrea cuando utiliza SearchPlayerWhitHighPoints
    foreach(new i : Player)
    {
        if(PlayerInfo[i][RadarSpeed] > val) //aca estaria en 0.0 la variable val
        {
            tmp = i;
            val = PlayerInfo[i][RadarSpeed]; //aca le establetemos el valor de la variable RadarSpeed a la variable val, pero despues no se usa o_O.
        }
    }
    return tmp;
}
 
EDIT: por lo que tu me explicaste, lo que quieres es esto peor bueh ...
pawn Код:
stock SearchPlayerWhitHighPoints(){
    new puntos=0;
    foreach(new user: Player){
        if(PlayerInfo[user][RadarSpeed] > puntosMAX){
            puntos = user;
        }
    } return puntos;
}
 
pawn Код:
stock SearchPlayerWhitHighPoints(){
    new puntos=0, contar=0;
    foreach(new user: Player){
        if(PlayerInfo[user][RadarSpeed] > puntosMAX){
            contar++;
            puntos = user;
        }
    }
    if(contar == 1) return puntos;
    else if(contar > 1) return INVALID_PLAYER_ID;
}