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;
}