[AYUDA]Comandos con tiempo -
Karkanos - 03.01.2010
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
Re: [AYUDA]Comandos con tiempo -
Miguel - 03.01.2010
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;
}
Re: [AYUDA]Comandos con tiempo -
Zoutdaxv - 03.01.2010
>
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.
Re: [AYUDA]Comandos con tiempo -
CristianTdj - 03.01.2010
Vaya cracks estais hechos
Lo voy a poner para mis carreras
Re: [AYUDA]Comandos con tiempo -
Miguel - 03.01.2010
Quote:
|
Originally Posted by Infierno
>
Tendrнa que ir asн para que cada jugador tenga su tiempo de disponibilidad.
|
Corregido.
Re: [AYUDA]Comandos con tiempo -
Karkanos - 03.01.2010
gracias
Re: [AYUDA]Comandos con tiempo -
Miguel - 03.01.2010
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...
Re: [AYUDA]Comandos con tiempo -
Zoutdaxv - 04.01.2010
Pero igual hay que darle valor inicial de
true, si no tu codigo no funcionara.
Re: [AYUDA]Comandos con tiempo -
Donuts - 04.01.2010
Si la variable no esta usando MAX_PLAYERS, porque usar el parametro playerid en reset(), no sirve de nada.
Re: [AYUDA]Comandos con tiempo -
Miguel - 05.01.2010
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