[Duda] Ordenar coordenadas de menor a mayor.
#1

Bueno, estaba creando un GM de carreras, en lo que se me ocurriу hacer que detecte cuбl es la posiciуn del jugador en la carrera (si va primero, segundo, tercero o cuarto), e hice esto:

pawn Код:
/*
position[...] almacenarнa la ID del jugador (por нndice, o sea, нndice 0 la ID del jugador que va primero, y asн...)
fX, fY, fZ harнan referencia a la posiciуn de la meta de la carrera.
*/


GetPlayersPositionInRace(Race:raceid, position[4], const Float:fX, const Float:fY, const Float:fZ)
{
    new Float:player_dist[4];
    new idx = -1;

    foreach(new i: Race[_:raceid])
    {
        idx ++;
        player_dist[idx] = GetPlayerDistanceFromPoint(i, fX, fY, fZ);
    }
    return 1;
}

De ahн ya no sй cуmo seguir para ordenar player_dist de menor a mayor para asн, encontrar quiйn estб mбs cerca de la meta.


Saludos .
Reply
#2

No se, pensй en algo como crear un rango en la meta, y el que estй mбs cerca del rango de la meta se enumeran por allн del 1 al 5 o como quieras.
Reply
#3

Con tres variables y esta funciуn, lo puedes hacer:

https://sampwiki.blast.hk/wiki/Floatround

pawn Код:
// OnPlayerEnterRaceCheckPoint ...
new var_1, Float:var_2[numero_de_checkpoints], posicion;

var_1++;
var[var_1]++;
posicion = floatround(var_2[var_1], floatround_floor);
No es necesario explicar ya que deberнas saber cуmo funciona tal cуdigo

es sуlo un ejemplo, tu haces lo demas
Reply
#4

Algo bбsico:

pawn Код:
new Posiciones[3][MAX_PLAYERS];
forward DetectarPosiciones();
public DetectarPosiciones()
{
    new string[128], n[MAX_PLAYER_NAME];
    for(new i=0; i < MAX_PLAYERS; i++)
    {
        if(Posiciones[i][0] == 1)
        {
            format(string, sizeof(string), "Primero %s .", GetPlayerName(i, n, MAX_PLAYER_NAME));
            SendClientMessageToAll(-1, string);
        }
        if(Posiciones[i][1] == 1)
        {
            format(string, sizeof(string), "Segundo %s .", GetPlayerName(i, n, MAX_PLAYER_NAME));
            SendClientMessageToAll(-1, string);
        }
        if(Posiciones[i][2] == 1)
        {
            format(string, sizeof(string), "Tercero %s .", GetPlayerName(i, n, MAX_PLAYER_NAME));
            SendClientMessageToAll(-1, string);
        }
    }
    return 1;
}
Tendrнas que desarrollarlo.
Reply
#5

No creo que me entendieron. Pasa que yo obtengo la distancia de los jugadores hasta la meta, de ahн ordeno esos valores de menor a mayor y extraigo la ID (almacenбndolo en position ). Asн como en el NFS.
Reply
#6

Revisa esto: https://sampforum.blast.hk/showthread.php?tid=458132
Reply
#7

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
No habнa pensado en eso, pero, no funciona con flotantes
Reply
#8

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
No habнa pensado en eso, pero, no funciona con flotantes
usa floatround, si son enteros a flotante usas float.
Reply
#9

Tienes razуn, no me habia percatado de ese detalle cuando lo creй. Haber si actualizo.
Reply
#10

La burbuja sera tu nuevo dios!!!

http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja

Espero te sirva.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)