[Duda] Cuenta regresiva + Funciуn
#1

Hola, emm tengo pensado hacer un comando que tenga una cuenta regresiva, es decir:
"El servidor sera reiniciado en 10" "9" "8" "7" "6" "5" "4" "3" "2" "1" y cuando llega a 0 que se ejecute el comando RCON 'GMX'
Que creo que era algo asн: 'SendRconCommand("gmx");'
їAlguien me ayuda explicandome como hacer una funciуn asн?
Gracias de antemano.
Reply
#2

Hariamos una variable global que es la que ira cambiando a medida pasa el tiempo determinado, un cmd, y otra variable para sostener el timer y killearlo:

pawn Код:
new TiempoRestart; // var global
new MyTimer; // var del timer
pawn Код:
CMDEjemplo(restart)
{
TiempoRestart = 10; // aca ponemos los segundos que va a tener en la variable
MyTimer = SetTimer("Reinicio", 1000, true); // el timer repetira la funcion cada 1000 milisg, osea 1 segundo hasta que lo matemos
return 1;
}

Ahora vamos a hacer la funciуn que el timer va a repetir

pawn Код:
forward Reinicio();
public Reinicio()
{
new Info[64]; //este array contendra el texto y los segundos que iran pasando
format(Info, sizeof(Info), "Reiniciando en %d", TiempoRestart); //damos formato al texto del GameText
GameTextForAll(Info, 1000, 4); //enviamos el gametext a los jugadores
TiempoRestart--; // aca restamos 1 al tiempo de restart, cada vez que se repita osea cada segundo
if ( TiempoRestart <= 0 ) // si el tiempo, la var llego a 0 lo reiniciamos
{
KillTimer(MyTimer); // matamos el timer
SendRconCommand("gmx");// enviamos el comando
}
return 1;
}
En resumen cada segundo en la funciуn del timer va bajando 1 a la variable, asi contamos los 10 segundos que aviso y podemos reinciniar, cualquier duda que surja podes postearla y te ayudamos. Saludos
Reply
#3

o tambien puedes usar este , modificandolo.
https://sampforum.blast.hk/showthread.php?tid=466886

saludos.
Reply
#4

їY como le pongo para que se utilize el comando solo estando logeado con la RCON?

PD: Es que lo puse asн el comando y no sй si esta bien:

pawn Код:
CMD:reiniciarservidor(playerid, params[])
{
    if(IsPlayerAdmin (playerid)) return SendClientMessage(playerid, Color_Rojo, "Usted no es admin");
    {
        TiempoRestart = 10;
        MyTimer = SetTimer("Reinicio", 1000, true);
        return 1;
}
Ese esta bien o este?

pawn Код:
CMD:reiniciarservidor(playerid, params[])
{
    if(IsPlayerAdmin (playerid))
    {
        TiempoRestart = 10;
        MyTimer = SetTimer("Reinicio", 1000, true);
        return 1;
    }
    else return SendClientMessage(playerid, Color_Rojo, "Usted no es admin");
}
Reply
#5

pawn Код:
CMD:reiniciarservidor(playerid, params[])
{
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, Color_Rojo, "Usted no es admin");
        TiempoRestart = 10;
        MyTimer = SetTimer("Reinicio", 1000, true);
        return 1;
}
El segundo estб bien.
Reply
#6

їEste?, es que me entreveraste, pusiste "El segundo estб bien." y pusiste el primer comando xD

pawn Код:
CMD:reiniciarservidor(playerid, params[])
{
    if(IsPlayerAdmin (playerid))
    {
        TiempoRestart = 10;
        MyTimer = SetTimer("Reinicio", 1000, true);
        return 1;
    }
    else return SendClientMessage(playerid, Color_Rojo, "Usted no es admin");
}
Reply
#7

Ese mismo. Te corregн el primer comando, se puede hacer como yo lo he hecho, o como el segundo comando. En el primeo te olvidabas de cerrar una llave, ademбs de que definias que si el usuario era admin, que le envнe el mensaje de restricciуn
Reply


Forum Jump:


Users browsing this thread: