Como funcionan los timers
#1

Hola chicos me pueden dar unos mini tutoriales acб de como se usan los timer
ya que veo mucha gente que dice usa un timer para tal cosa en vez de onplayerUpdate
pero de la forma mas optimas posible muchas gracias los amo.
Reply
#2

  • Los timers se usan para ejecutar determinadas acciones(funciones) cada X tiempo, o al terminar X tiempo.
  • Los timers se asignan mediante milisegundos
  • Cuando se habla de usar timers en vez de "OnPlayerUpdate" , es para referirse a que OnPlayerUpdate es llamado infinitas veces en un solo segundo (o menos) por lo que para optimizar el gamemode, es mejor usar un timer aunque sea llamado cada 1 segundo
  • Los timers con loops se pueden parar con la funciуn "KillTimer"
Al menos lo mбs bбsico
Reply
#3

Quote:
Originally Posted by CrossOv3r
Посмотреть сообщение
  • Los timers se usan para ejecutar determinadas acciones(funciones) cada X tiempo, o al terminar X tiempo.
  • Los timers se asignan mediante milisegundos
  • Cuando se habla de usar timers en vez de "OnPlayerUpdate" , es para referirse a que OnPlayerUpdate es llamado infinitas veces en un solo segundo (o menos) por lo que para optimizar el gamemode, es mejor usar un timer aunque sea llamado cada 1 segundo
  • Los timers con loops se pueden parar con la funciуn "KillTimer"
Al menos lo mбs bбsico
gracias bebй ya eso lo sabia haha, yo solo queria ejemplos como seria en un cуdigo :3 varios
Reply
#4

Mira la Wiki: https://sampwiki.blast.hk/wiki/SetTimer y https://sampwiki.blast.hk/wiki/SetTimerEx.
Reply
#5

Por ejemplo, un timer para usar comando solo 5 segundos despues de spawnear:

Код:
// Arriba del GM

new Puede[MAX_PLAYERS];

// En OnPlayerSpawn

 Puede[playerid] = 0; 
SetTimer("PuedeUsarCMD",5000,false);

// Creando la funcion que llama el timer
forward PuedeUsarCMD(playerid);
public PuedeUsarCMD(playerid)
{
       Puede[playerid] = 1; 
       return 1;
}

CMD:vehiculo(playerid,params[])
{
	if(PuedeUsarCMD[playerid] == 1)
	{
		// Codigo bla bla
		return 1;
	}
	else
	{
		SendClientMessage(playerid,-1,"Espera 5 segundos!");
	}
	return 1;
}
Reply
#6

Quote:
Originally Posted by Galileo
Посмотреть сообщение
Por ejemplo, un timer para usar comando solo 5 segundos despues de spawnear:

Код:
// Arriba del GM

new Puede[MAX_PLAYERS];

// En OnPlayerSpawn

 Puede[playerid] = 0; 
SetTimer("PuedeUsarCMD",5000,false);

// Creando la funcion que llama el timer
forward PuedeUsarCMD(playerid);
public PuedeUsarCMD(playerid)
{
       Puede[playerid] = 1; 
       return 1;
}

CMD:vehiculo(playerid,params[])
{
	if(PuedeUsarCMD[playerid] == 1)
	{
		// Codigo bla bla
		return 1;
	}
	else
	{
		SendClientMessage(playerid,-1,"Espera 5 segundos!");
	}
	return 1;
}
Tъ tambiйn lee la wiki.

Serнa asн:


pawn Код:
// Arriba del GM

new Puede[MAX_PLAYERS];

// En OnPlayerSpawn

 Puede[playerid] = 0;
SetTimerEx("PuedeUsarCMD", 5000, false, "d", playerid);

// Creando la funcion que llama el timer
forward PuedeUsarCMD(playerid);
public PuedeUsarCMD(playerid)
{
       Puede[playerid] = 1;
       return 1;
}

CMD:vehiculo(playerid,params[])
{
    if(PuedeUsarCMD[playerid] == 1)
    {
        // Codigo bla bla
        return 1;
    }
    else
    {
        SendClientMessage(playerid,-1,"Espera 5 segundos!");
    }
    return 1;
}
Reply
#7

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
Tъ tambiйn lee la wiki.

Serнa asн:


pawn Код:
// Arriba del GM

new Puede[MAX_PLAYERS];

// En OnPlayerSpawn

 Puede[playerid] = 0;
SetTimerEx("PuedeUsarCMD", 5000, false, "d", playerid);

// Creando la funcion que llama el timer
forward PuedeUsarCMD(playerid);
public PuedeUsarCMD(playerid)
{
       Puede[playerid] = 1;
       return 1;
}

CMD:vehiculo(playerid,params[])
{
    if(PuedeUsarCMD[playerid] == 1)
    {
        // Codigo bla bla
        return 1;
    }
    else
    {
        SendClientMessage(playerid,-1,"Espera 5 segundos!");
    }
    return 1;
}
Una pregunta que siempre tuve en duda, los timers como este: SetTimerEx("PuedeUsarCMD", 5000, false, "d", playerid);

їHace falta matarlos, osea con KillTimer, o el false ya lo hace?
Reply
#8

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
Tъ tambiйn lee la wiki.

Serнa asн:


pawn Код:
// Arriba del GM

new Puede[MAX_PLAYERS];

// En OnPlayerSpawn

 Puede[playerid] = 0;
SetTimerEx("PuedeUsarCMD", 5000, false, "d", playerid);

// Creando la funcion que llama el timer
forward PuedeUsarCMD(playerid);
public PuedeUsarCMD(playerid)
{
       Puede[playerid] = 1;
       return 1;
}

CMD:vehiculo(playerid,params[])
{
    if(PuedeUsarCMD[playerid] == 1)
    {
        // Codigo bla bla
        return 1;
    }
    else
    {
        SendClientMessage(playerid,-1,"Espera 5 segundos!");
    }
    return 1;
}
Error fatal mio, me olvide de que era SetTimerEx.

Gracias por corregir el error Enzo!
Reply
#9

pawn Код:
#include <a_samp>
#include <zcmd>

new bool:PuedeUsarCMD[MAX_PLAYERS],
MatarPuede[MAX_PLAYERS];

public OnPlayerDisconnect(playerid, reason){
    PuedeUsarCMD[playerid] = false;
    KillTimer(MatarPuede[playerid]);
    return true;
}

public OnPlayerSpawn(playerid){
    PuedeUsarCMD[playerid] = false;
    KillTimer(MatarPuede[playerid]);
    MatarPuede[playerid] = SetTimerEx("TimerCargar", 5*1000, false, "d", playerid);
    return true;
}

forward TimerCargar(playerid);
public TimerCargar(playerid){
   PuedeUsarCMD[playerid] = true;
   KillTimer(MatarPuede[playerid]);
   return true;
}

COMMAND:vehiculo(playerid,params[]){
    if(PuedeUsarCMD[playerid]!=false){
        // Codigo bla bla
    }else{
        SendClientMessage(playerid,-1,"Espera 5 segundos!");
    }
    return true;
}
Reply
#10

Quote:
Originally Posted by MillerUTL
Посмотреть сообщение
Una pregunta que siempre tuve en duda, los timers como este: SetTimerEx("PuedeUsarCMD", 5000, false, "d", playerid);

їHace falta matarlos, osea con KillTimer, o el false ya lo hace?
No, ya que cuando usas 'false', se detienea y llama su funciуn...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)