SA-MP Forums Archive
Ordenar jugadores por coordenadas. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Ordenar jugadores por coordenadas. (/showthread.php?tid=451283)



Ordenar jugadores por coordenadas. - xSeveNx - 16.07.2013

Hola.

Bueno, quiero hacer un script que trata de un comando para admin, (ya esta hecho) el cual tira un mensaje a todos que se ha iniciado un evento y deben poner /unirse.

Es sobre un derby, como el del Single Player en el estadio de SF.

El problema es que no sй como hacer para que una coordenada no se repita al momento de que el jugador ponga /unirse, quedarнa en cima de otro, y bueno esa es mi duda.


Respuesta: Ordenar jugadores por coordenadas. - Glimma - 16.07.2013

Se me ocurre algo ultra sencillo, usar el SetPlayerPos con tus coordenadas, pero en la parte de X o Y (ejes) le sumes playerid (no en los dos, sуlo en uno)..


Respuesta: Ordenar jugadores por coordenadas. - xSeveNx - 16.07.2013

Disculpa, pero no entendн mucho Dx.
Si podrнas mandarme el cуdigo hecho para entenderlo mejor te lo agradecerнa.


Respuesta: Ordenar jugadores por coordenadas. - Glimma - 16.07.2013

Ahн lo armo.


Re: Ordenar jugadores por coordenadas. - rubensm - 16.07.2013

Puedes hacer algo muy facil, en plan.

pawn Код:
CMD:unirse(playerid, params[])
{
      Unirse(playerid);
      SendClientMessageToPlayerd(playerid, -1, "* Te has unido.");
      return 1;
}

stock Unirse(playerid)
{
      switch(playerid)
      {
            case 0: SetPlayerPos(playerid, x, y, z); //Posiciуn del jugador ID 0
            case 1: SetPlayerPos(playerid, x, y, z); //Posiciуn del jugador ID 1
            case 2: SetPlayerPos(playerid, x, y, z); //Posiciуn del jugador ID 2
            /* Ir implementando aquн todas las posiciones que quieras aсadir. */
      }
}
Espero que te sirva.


Respuesta: Ordenar jugadores por coordenadas. - Glimma - 16.07.2013

Ya lo terminй, es asн: Un admin RCON usa el comando /evento, entonces su posiciуn queda guardada, es enviado un mensaje global avisando que se activу el evento, entonces un jugador usa /participar, y es enviado al evento, es decir, a la posiciуn del admin RCON que lo activу, sуlo que con un pequeсo cambio de posiciуn debido a un cбlculo de su ID. Cuando un admin RCON desactiva el evento, el jugador es enviado a la comisarнa de Los Santos, por simplemente elegir yo un lugar donde enviarlo.

La posiciуn donde va a spawnear el jugador va a ser cercana pero NUNCA se va a repetir, ya que utilicй mъltiplos o divisores (no me acuerdo quй serнan xdd) diferentes.

pawn Код:
#include <a_samp>
#include <zcmd>

new EstadoEvento = 0;
new EstaEnEvento[MAX_PLAYERS];

new Float:PosEvento[3];
CMD:evento(playerid, params[]){
    if(IsPlayerAdmin(playerid)){
        new string[128];
        if(EstadoEvento == 0){
            EstadoEvento = 1;
            SendClientMessage(playerid, 0xFFFFFFAA, "Has activado el modo evento, para desactivarlo, utiliza nuevamente el comando '/evento'.");
            format(string, sizeof(string), "El administrador %s [ID: %d] activу el modo evento, utiliza el comando '/participar' para entrar.", Nombre(playerid), playerid);
            SendClientMessageToAll(0x21DD00FF, string);
            GetPlayerPos(playerid, PosEvento[0], PosEvento[1], PosEvento[2]);
        }
        else{
            EstadoEvento = 0;
            SendClientMessage(playerid, 0xFFFFFFAA, "Has desactivado el modo evento, para activarlo, utiliza nuevamente el comando '/evento'.");
            format(string, sizeof(string), "El administrador %s [ID: %d] desactivу el modo evento.", Nombre(playerid), playerid);
            SendClientMessageToAll(0xBF0000FF, string);
            static jugadores;
            jugadores = GetMaxPlayers();
            for(new j; j < jugadores; j++){
                if(EstaEnEvento[j] == 1){
                    EstaEnEvento[j] = 0;
                    SetPlayerPos(j, 1529.6, -1691.2, 13.3);
                }
            }
        }
    }else SendClientMessage(playerid, 0xBFC0C2FF, "[ERROR] No estбs autorizado para utilizar este comando administrativo.");
    return 1;
}

CMD:participar(playerid, params[]){
    if(EstadoEvento == 1){
        if(EstaEnEvento[playerid] == 0){
            switch(playerid){
                case 0..20: SetPlayerPos(playerid, PosEvento[0]+playerid, PosEvento[1], PosEvento[2]);
                case 21..40: SetPlayerPos(playerid, PosEvento[0]+playerid/2, PosEvento[1], PosEvento[2]);
                case 41..100: SetPlayerPos(playerid, PosEvento[0]+playerid/5, PosEvento[1], PosEvento[2]);
                case 101..500: SetPlayerPos(playerid, PosEvento[0]+playerid/9, PosEvento[1], PosEvento[2]);
            }
            EstaEnEvento[playerid] = 1;
            SetPlayerHealth(playerid, 100);
            SetPlayerArmour(playerid, 100);
            ResetPlayerWeapons(playerid);
            SendClientMessage(playerid, 0xFFFFFFAA, "Has ingresado al modo evento, sigue las instrucciones del organizador.");
        }else SendClientMessage(playerid, 0xBFC0C2FF, "[ERROR] Ya estбs dentro del evento.");
    }else SendClientMessage(playerid, 0xBFC0C2FF, "[ERROR] El modo evento no se encuentra activado.");
    return 1;
}

stock Nombre(playerid){
    new string[32];
    GetPlayerName(playerid, string, 32);
    return string;
}
Si me explicбs mбs como lo querйs lo puedo modificar y hacer eso de derby de no se quй, y me podйs decir si usбs el procesador de comandos zcmd o lo paso a la funciуn strcmp.


Respuesta: Ordenar jugadores por coordenadas. - xSeveNx - 16.07.2013

Bueno, si resulto, el problema, es que las coordenadas estбn en un interior, lo tengo que los jugadores deben estar en un vehнculo para unirse, la cosa es que cuando se teletransportan, los vehнculos se ponen invisibles, no se ven Dx


Respuesta: Ordenar jugadores por coordenadas. - Glimma - 16.07.2013

Es que a los vehнculos hay que enlazarlos a los interiores, no establecйrselos, pero sн enlazarlos (linkearlos).. Usб йsta funciуn;

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