Sobre un derby
#1

estoy haciendo un pequeсo sistema de derby pero como haria para que cuando un jugador entre al derby no aparezca en la misma posiciones de un jugador, osea que caiga encima en la misma posicion, si lo hago random hay una posibilidad que caiga en la misma posiciones que otro, ese es el problema y me gustaria que un jugador cuando ocupe una posicion del mapa, otro no la pueda ocupar? ojala me haya explicado bien, gracias
Reply
#2

HACE POSICIONES Y ENUMERALAS LUEGO SE LA DAS AL JUGADOR CUANDO SE CONECTE O EN CAMBIO DE MAPA
Reply
#3

crea una variable. Depende a esa variable vas a darle la posiciуn al jugador (como dice jurgen, enumeralas con enum). Cada vez que mandes a alguien al derby le vas sumando 1 a la variable que creaste (++)
Reply
#4

pawn Код:
new Float:PosicionesRandom[][]={
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0}
    //etc ...
};

new rand = random(sizeof(PosicionesRandom));
SetPlayerPos(playerid, PosicionesRandom[rand][0], PosicionesRandom[rand][1], PosicionesRandom[rand][2]);
https://sampforum.blast.hk/showthread.php?tid=162488
https://sampwiki.blast.hk/wiki/Random


pawn Код:
new Posiciones;
new Float:PosicionesRandom[][]={
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0}
    //etc ...
};

SetPlayerPos(playerid, PosicionesRandom[Posiciones][0], PosicionesRandom[Posiciones][1], PosicionesRandom[Posiciones][2]);
Posiciones++;
Reply
#5

Quote:
Originally Posted by OTACON
Посмотреть сообщение
pawn Код:
new Float:PosicionesRandom[][]={
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0}
    //etc ...
};

new rand = random(sizeof(PosicionesRandom));
SetPlayerPos(playerid, PosicionesRandom[rand][0], PosicionesRandom[rand][1], PosicionesRandom[rand][2]);
https://sampforum.blast.hk/showthread.php?tid=162488
https://sampwiki.blast.hk/wiki/Random


pawn Код:
new Posiciones;
new Float:PosicionesRandom[][]={
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0}
    //etc ...
};

Posiciones++;
SetPlayerPos(playerid, PosicionesRandom[Posiciones][0], PosicionesRandom[Posiciones][1], PosicionesRandom[Posiciones][2]);
pawn Код:
new Posiciones;
new Float:PosicionesRandom[][]={
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0}
    //etc ...
};

SetPlayerPos(playerid, PosicionesRandom[Posiciones][0], PosicionesRandom[Posiciones][1], PosicionesRandom[Posiciones][2]);
Posiciones++;
asн men
Reply
#6

ups ... cierto, se saltearia el array 0 xD
Reply
#7

Y si un jugador del Derby se sale del juego?
Reply
#8

se queda sin divertirse. xD
Reply
#9

Lo mejor serнa hacer una posiciуn para cada ID, o sea...

pawn Код:
new Float:PLAYER_SPAWN[MAX_PLAYERS][3] = // Supongamos que el mбximo de jugador es 10
{
    {0.0, 0.0, 0.0}, // SPAWN ID: 0
    {0.0, 0.0, 0.0}, // SPAWN ID: 1
    {0.0, 0.0, 0.0}, // SPAWN ID: 2
    {0.0, 0.0, 0.0}, // SPAWN ID: 3
    {0.0, 0.0, 0.0}, // SPAWN ID: 4
    {0.0, 0.0, 0.0}, // SPAWN ID: 5
    {0.0, 0.0, 0.0}, // SPAWN ID: 6
    {0.0, 0.0, 0.0}, // SPAWN ID: 7
    {0.0, 0.0, 0.0}, // SPAWN ID: 8
    {0.0, 0.0, 0.0}  // SPAWN ID: 9
};

SetPlayerPos(playerid, PLAYER_SPAWN[playerid][0], PLAYER_SPAWN[playerid][1], PLAYER_SPAWN[playerid][2]);
Reply
#10

Y si el mбximo de jugadores es 300? No es la mejor opciуn. De hecho, es la peor.
Reply
#11

Quote:
Originally Posted by Pipe98
Посмотреть сообщение
si pero, si hice eso, mira pongo un ejemplo como lo tengo y lo que pasa:

Al entran 8 jugadores al minijuego, la variable estб en 9, cosa que al entrar el jugador 9 ocupe la posicion 9, y asi sucesivamente, pero pasa que si se va el jugador por ejemplo que tomу la posicion 4, y resta uno a la variable, para dejar desocupado un puesto, el nuevo jugador que entrarб estбra en la posicion del ultimo jugador, no se si me explico s

new FloaterbyPos[15][4] = {
{370.5317, 5334.2036, 21.5007, 90.0000},
{471.6571, 5268.3271, 10.0410, 0.0000},
{331.5957, 5257.8633, 10.0410, -90.0000},
{461.1842, 5268.4790, 10.0410, 45.0000},
{318.8594, 5270.2227, 10.0410, 0.0000},
{318.7415, 5398.4912, 10.0410, 180.0000},
{328.9519, 5400.3428, 10.0410, 225.0000},
{458.5728, 5410.6563, 10.0410, 90.0000},
{461.5033, 5400.9453, 10.0410, 135.0000},
{395.5331, 5361.3579, 21.5007, 359.3239},
{395.5331, 5361.3579, 21.5007, 359.3239},
{376.8490, 5352.4053, 10.1472, 45.0000},
{420.8829, 5334.2803, 21.5007, -90.0000},
{414.3392, 5353.3311, 10.1472, -45.0000},
{376.9891, 5315.6880, 10.1472, 135.0000}
};

CMD:entrar...
CrearVehiculoEx(playerid, 411, DerbyPos[PosicionesDerby][0], DerbyPos[PosicionesDerby][1], DerbyPos[PosicionesDerby][2], DerbyPos[PosicionesDerby][3]);
PosicionesDerby++;
return 1;
}

CMDalir...
PosicionesDerby--;
return 1;
}

asi es un ejemplo de como lo tengo el minijuego :Ss

lo que quiero es que se detecte una posicion de las 15, que este desocupada, y la que este desocupada, la tome el jugador... con tal que un jugador no tome la misma que otro... gracias
No uses йsa variable de йsa forma, ponle una variable para cada posiciуn DerbyPos, ejemplo:
pawn Код:
new PosicionesDerby[15];
new Esta_En_Derby[15][MAX_PLAYERS];

CMD:entrar...
{
    if(PosicionesDerby[0] == 0)
    {
        CrearVehiculoEx(playerid, 411, DerbyPos[0][0], DerbyPos[0][1], DerbyPos[0][2], DerbyPos[0][3]);
        PosicionesDerby[0] = 1;
        Esta_En_Derby[0][playerid] = 1;
    }
    if(PosicionesDerby[1] == 0)
    {
        CrearVehiculoEx(playerid, 411, DerbyPos[1][0], DerbyPos[1][1], DerbyPos[1][2], DerbyPos[1][3]);
        PosicionesDerby[1] = 1;
        Esta_En_Derby[1][playerid] = 1;
    }
    //etc
    else SendClientMessage(playerid, -1, "no hay pocision mas.");
    return 1;
}

CMD:salir...
{
    if(Esta_En_Derby[0][playerid] == 1){PosicionesDerby[0] = 0; Esta_En_Derby[0][playerid] = 0;}
    if(Esta_En_Derby[1][playerid] == 1){PosicionesDerby[1] = 0; Esta_En_Derby[1][playerid] = 0;}
    //etc
    //etc
    return 1;
}

//Le pones en los callback onplayerdisconnect y OnPlayerDeath o segun como veas necesario.

if(Esta_En_Derby[0][playerid] == 1){PosicionesDerby[0] = 0; Esta_En_Derby[0][playerid] = 0;}
    if(Esta_En_Derby[1][playerid] == 1){PosicionesDerby[1] = 0; Esta_En_Derby[1][playerid] = 0;}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)