[AYUDA]Comandos con tiempo
#1

bueno me gustaria saber como crear comandos que funcionen en un tiempo determinado

ejemplo cada 10 minutos el comando /dm funcione y despues de esos 10 minutos el comando /dm esta desabilitado

bueno gracias
Reply
#2

Bueno es muy simple, necesitamos:
  • Una variable para saber cuando el comando esta habilitado y cuando no.
  • Configurar un timer para cambiar esta variable.
  • Una funcion para que cuando se acabe el tiempo todo esto pase.
Comenzamos creando una variable para checkear si el comando esta disponible o no:

pawn Код:
new bool:disponibilidad; // las variables bool son las que solo tienen dos valor disponibles, true o false. (false == 0, true == 1)
El comando que queremos delimitar:
pawn Код:
if(strcmp(cmdtext, "/comando", true, 7) == 0)
{
  if(disponibilidad == true) // esto significa si la variable "disponibilidad" es 1... pasa lo que hay entre brackets
  {
    // aqui va todo lo que va a pasar si el comando esta disponible
    disponibilidad = false; // cambiamos "disponibilidad" a false para que el comando no este disponible hasta que el siguiente timer se cumpla
    SetTimerEx("reset", 10*1000, false, "d", playerid); // esto es un timer, su funcion es llamar a una funcion, la cual va a cambiar la disponibilidad a true
  }
  else // lo que pasa si no esta disponible (disponibilidad == false)
  {
    SendClientMessage(playerid, COLOR, "Este comando no esta disponible!");
  }
  return 1;
}
Lo que pasa aqui es:
  • Checkeamos la disponibilidad del comando.
  • Si esta disponible, pasa lo que tiene que pasar normalmente y cambia a no disponible (por medio de la variable).
  • Creamos un cronomentro el cual cambiara la disponibilidad nuevamente a true.
  • Si no esta disponible se manda el mensaje de error y no pasa nada.
Ahora necesitamos crear una funciуn publica la cual reseteara/cambiarб "disponibilidad" a true para que vuelva a estar disponible despuйs del tiempo:

pawn Код:
forward reset(playerid); // declaramos que vamos a crear una funcion llamada "reset"
pawn Код:
public reset(playerid) // este es el "reset" que colocamos en SetTimerEx
{
  // esto es lo que pasa cuando se acaba el tiempo
  disponibilidad = true; // volvemos disponibilidad true otra vez para que el comando este disponible
  return 1;
}
Reply
#3

pawn Код:
disponibilidad == false;
>

pawn Код:
disponibilidad = false;
Ademбs necesitas darle valor inicial de true.

pawn Код:
new bool:disponibilidad[MAX_PLAYERS] = true;
Tendrнa que ir asн para que cada jugador tenga su tiempo de disponibilidad.
Reply
#4

Vaya cracks estais hechos
Lo voy a poner para mis carreras
Reply
#5

Quote:
Originally Posted by Infierno
pawn Код:
disponibilidad == false;
>

pawn Код:
disponibilidad = false;
Tendrнa que ir asн para que cada jugador tenga su tiempo de disponibilidad.
Corregido.
Reply
#6

gracias
Reply
#7

Quote:
Originally Posted by Infierno
pawn Код:
new bool:disponibilidad[MAX_PLAYERS] = true;
Tendrнa que ir asн para que cada jugador tenga su tiempo de disponibilidad.
Estamos suponiendo que el comando no deberнa estar disponible para nadie, pero si fuera para cada jugador entonces si, tendriamos que utilizar MAX_PLAYERS, playerid...
Reply
#8

Pero igual hay que darle valor inicial de true, si no tu codigo no funcionara.
Reply
#9

Si la variable no esta usando MAX_PLAYERS, porque usar el parametro playerid en reset(), no sirve de nada.
Reply
#10

Quote:
Originally Posted by YeahYeahYeahs
Si la variable no esta usando MAX_PLAYERS, porque usar el parametro playerid en reset(), no sirve de nada.
pawn Код:
SetTimerEx("reset", 10*1000, false, "d", playerid);
Aunque si, tienes razуn, no hay porque ponerlo. :P
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)