SA-MP Forums Archive
Como funcionan los timers - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Como funcionan los timers (/showthread.php?tid=482211)



Como funcionan los timers - JaimitoxD - 20.12.2013

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.


Respuesta: Como funcionan los timers - CrossOv3r - 20.12.2013

Al menos lo mбs bбsico


Respuesta: Como funcionan los timers - JaimitoxD - 20.12.2013

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


Respuesta: Como funcionan los timers - Swedky - 20.12.2013

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


Re: Como funcionan los timers - Galileo - 20.12.2013

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;
}



Respuesta: Re: Como funcionan los timers - Swedky - 20.12.2013

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;
}



Respuesta: Re: Como funcionan los timers - MillerUTL - 20.12.2013

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?



Re: Respuesta: Re: Como funcionan los timers - Galileo - 20.12.2013

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!


Respuesta: Como funcionan los timers - OTACON - 20.12.2013

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;
}



Respuesta: Re: Como funcionan los timers - Swedky - 20.12.2013

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...