saber cuantos estan
#1

hola tengo una duda y no se como realizarla me podrian indicar como hacer para que cuando un jugador ponga /comando envie un mensaje necesitas 3 jugadores mas para ir a x zona?

es decir que cuando 3 jugadores (minimo) ponga /comando a esos 3 los teletransporte a otra zona

gracias
Reply
#2

Podes hacer asн:

Crea 2 variables, "adentro" y "queriendo". La segunda que sea un array para todos los jugadores.

Si un jugador usa el comando para ingresar comproba si "adentro" es mayor o igual a 3, si se cumple que entre y si no se cumple a la variable del jugador "queriendo" pasala a 1 y envia un mensaje que ha sido puesto en espera para ingresar.

Despuйs de eso, hace un loop para mirar si hay 3 jugadores con la variable "queriendo" en 1, envнalos a los 3 a la zona. Asegъrate tambiйn que si ingresan a otra zona la variable "queriendo" pase a 0, ya que si no luego a ser 3 lo enviarб a la zona del comando.
Reply
#3

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Podes hacer asн:

Crea 2 variables, "adentro" y "queriendo". La segunda que sea un array para todos los jugadores.

Si un jugador usa el comando para ingresar comproba si "adentro" es mayor o igual a 3, si se cumple que entre y si no se cumple a la variable del jugador "queriendo" pasala a 1 y envia un mensaje que ha sido puesto en espera para ingresar.

Despuйs de eso, hace un loop para mirar si hay 3 jugadores con la variable "queriendo" en 1, envнalos a los 3 a la zona. Asegъrate tambiйn que si ingresan a otra zona la variable "queriendo" pase a 0, ya que si no luego a ser 3 lo enviarб a la zona del comando.
Vaya la verdad eso si es mas complicado de lo que crei aun no entiendo ese nivel rayos!!
Reply
#4

Tal vez suene complicado, pero realmente no lo es.

Un ejemplo sensillo:
pawn Код:
//En esta variable global, almacenaremos la cantidad de jugadores que quieren entrar a la zona
new Counter;
//En este array, almacenaremos el estado de cada jugador (true: quiere ingresar; caso contrario false)
new bool:ParaIngresar[MAX_PLAYERS];

public OnPlayerCommandText(playerid, cmdtext[])
{
    //Nuestro comando para ingresar a la zona
    if(!strcmp(cmdtext, "/entrarzona", true))
    {
        //Sumamos 1 a nuestro contador de jugadores que quieren ingresar a la zona
        counter++;
        //Cambiamos el estado del jugador indicando que quiere ingresar a la zona
        ParaIngresar[playerid] = true;
        //Si los jugadores que quieren ingresar son mas de 3, entonces se cumplen los requisitos
        if(counter >= 3)
        {
            //Realizamos un bucle por todos los jugadores
            for(new i, p=GetMaxPlayers(); i<p; i++)
            {
                //Si esta conectado y quiere entrar, entonces
                if(IsPlayerConnected(i) && ParaEntrar[i])
                {
                    SetPlayerPos(playerid, 0.0, 0.0, 0.0);
                    SendClientMessage(playerid, -1, "Has ingresado a la zona");
                }
            }
        }
        return 1;
    }
    //Nuestro comando para salir de la zona
    if(!strcmp(cmdtext, "/salirzona", true))
    {
        //Restamos 1 a nuestro contador de jugadores que quieren ingresar a la zona
        counter--;
        //Cambiamos el estado del jugador, indicando que no quiere ingresar a la zona
        ParaIngresar[playerid] = false;
        return 1;
    }
    return 0;
}

//Evitamos falsos positivos
public OnPlayerDisconnect(playerid, reason)
{
    if(ParaEntrar[playerid])
    {
        ParaEntrar[playerid] = false;
        counter--;
    }
    return 1;
}
Reply
#5

Nada mбs que si el mismo jugador usa 3 veces el comando podrб entrar.
Reply
#6

Mira a ver si te sirve
PHP код:
#define MINIMO_JUGADORES 3 //cantidad minima de jugadores para entrar a la zona
new    Jugadores_Zona 0// variable contadora para habilitar la zona y mover los jugadores
new    boolZona[MAX_PLAYERS] = {false,...}; //variable booleana para indicar q jugador serб movido a la zona
//------------------------------------------------------
public OnPlayerCommandText(playeridcmdtext[])
{
    if(!
strcmp("/zona"cmdtexttrue))
    {
       if(
Zona[playerid]) return 1;      
       
Zona[playerid] = true;
       if(
Jugadores_Zona >= MINIMO_JUGADORESMoverJugadores();
       return 
1;
    }
    return 
1;
}
//-------------------------------------------------------
forward MoverJugadores();
public 
MoverJugadores()
{
    for(new 
0plys GetMaxPlayers(); plysi++)
    {
        if(
Zona[i] && IsPlayerConnected(i))
        {
           
SetPlayerPos(i,x,y,z); //cambiar xyz por las coordenadas de la zona
           
Zona[i] = false;
        }
    }
    return 
1;

Reply
#7

Quote:
Originally Posted by Daniel-92
Посмотреть сообщение
Nada mбs que si el mismo jugador usa 3 veces el comando podrб entrar.
por algo dije un ejemplo simple, no estan contempladas todas las variantes para evitar bugs.
Reply
#8

Quote:
Originally Posted by the_chaoz
Посмотреть сообщение
por algo dije un ejemplo simple, no estan contempladas todas las variantes para evitar bugs.
Solo le advierto, porque lo mбs seguro es que copie el cуdigo tal a como esta.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)