SA-MP Forums Archive
[Duda]Como crear Timers entre funciones? - 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: [Duda]Como crear Timers entre funciones? (/showthread.php?tid=238083)



[Duda]Como crear Timers entre funciones? - Lunnatiicz - 11.03.2011

Quй mejor dнa que tomar un Cafй Helado Frapucino e.e

Mi duda es la siguiente, cуmo crear timers entre funciones, como por ejemplo.

pawn Код:
if(strcmp,"/ChuckNorris",cmdtext, true)
{
 SendClientMessage(playerid, COLOR, "El vendrб por ti y te violarб en 5 segundos..");
 //El Timer por decнr en el ejemplo de un segundo
 SendClientMessage(playerid, COLOR, "Estarб aquн en 4 Segundos");
 //Otro segundo
 SendClientMessage(playerid, COLOR, "Estarб sobre tu cabeza en 3 Segundos..");
 //Y asн sucesivamente
 Kick(playerid)
 return 1;
} //Sуlo es un ejemplo :P
No trabajo mucho con timers pero me han surgido buenas ideas.

Saludos!



Respuesta: [Duda]Como crear Timers entre funciones? - TheChaoz - 11.03.2011

si queres hacer eso con timers podes hacerlo asi:

pawn Код:
if(strcmp,"/ChuckNorris",cmdtext, true){
    SendClientMessage(playerid, COLOR, "El vendrб por ti y te violarб en 5 segundos..");
    SetTimerEx("Nombre", 1000, false, "i", playerid);
    return 1;
}

forward Nombre(playerid);
forward Nombre2(playerid);

public Nombre(playerid)
{
    SendClientMessage(playerid, COLOR, "Estarб aquн en 4 Segundos");
    SetTimerEx("Nombre2", 1000, false, "i", playerid);
}
public Nombre2(playerid)
{
    SendClientMessage(playerid, COLOR, "Estarб sobre tu cabeza en 3 Segundos..");
    Kick(playerid)
}
= ese codigo no es 100% eficiente, de hecho es muy poco eficiente creo yo

Nota:
Quote:
Originally Posted by Lunnatiicz
Посмотреть сообщение
pawn Код:
SendClientMessage(playerid, COLOR, "Estarб aquн en 4 Segundos
Sarpado fail


Respuesta: [Duda]Como crear Timers entre funciones? - Lunnatiicz - 11.03.2011

Si es poco eficiente, їQuй es mбs eficiente que eso?


Re: [Duda]Como crear Timers entre funciones? - s0nic - 11.03.2011

Eso no va trabajar porque los timers no tienen el "parбmetro" de playerid..
Vas a tener que usar SetTimerEx
Ejemplo:
pawn Код:
if(strcmp,"/ChuckNorris",cmdtext, true)
{
    SendClientMessage(playerid, COLOR, "El vendrб por ti y te violarб en 5 segundos..");
    SetTimerEx("Nombre", 1000, false, "i", playerid);
    return 1;
}

forward Nombre(playerid);
forward Nombre2(playerid);

public Nombre(playerid)
{
    SendClientMessage(playerid, COLOR, "Estarб aquн en 4 Segundos");
    SetTimerEx("Nombre2", 1000, false, "i", playerid);
}
public Nombre2(playerid)
{
    SendClientMessage(playerid, COLOR, "Estarб sobre tu cabeza en 3 Segundos..");
    Kick(playerid);
}
Te puedo ayudar mas..pero para ahorita esto es lo que te puedo dar..si quieres mas ayuda pregunta me


Respuesta: [Duda]Como crear Timers entre funciones? - TheChaoz - 11.03.2011

se alto fail el mio. eso pasa cuando te levantas a las 6am para ir a la facultad salis a las 5pm y de ahi te vas a un curso de barman, y volves a tu casa a las ~11.


Respuesta: [Duda]Como crear Timers entre funciones? - SuperMarioRol - 11.03.2011

No es eficiente porque los timers son la funcion menos eficiente de la historia.
Habia una funciуn de MrDeath que aun era mas ineficiente, congelando el servidor, cosa que te serviria, pero es mejor esto.


Re: [Duda]Como crear Timers entre funciones? - zSuYaNw - 11.03.2011

pawn Код:
static cat[MAX_PLAYERS] = 0, lol;
if(strcmp,"/ChuckNorris",cmdtext, true)
{
    SendClientMessage(playerid, COLOR, "El vendrб por ti y te violarб en 5 segundos..");
    lol = SetTimerEx("Nombre", 1000, true, "i", playerid);
    return 1;
}

forward Nombre(playerid);

public Nombre(playerid)
{

    if(cat[playerid] == 0) return SendClientMessage(playerid, COLOR, "Estarб aquн en 4 Segundos");
    if(cat[playerid] == 2)
    {
        SendClientMessage(playerid, COLOR, "Estarб sobre tu cabeza en 3 Segundos..");
        Kick(playerid);
        KillTimer(lol);
        return false;
    }
    return cat[playerid]++;
}



Respuesta: [Duda]Como crear Timers entre funciones? - [J]ulian - 11.03.2011

Tambiйn podes utilizar GetTickCount(), le pones una referencia en el comando. Y pones en OnPlayerUpdate que mande el mensaje dependiendo cuanto sea la referencia.


Re: [Duda]Como crear Timers entre funciones? - Miguel - 11.03.2011

Puedes usar un timer que corra cada segundo sin parar, y por medio de variables haces que se resten segundos y se busque entre los jugadores.

pawn Код:
new
    ChuckNorris[2][MAX_PLAYERS] =
    {
        {0, ...}, // Para saber si hay que restar los segundos.
        {4, ...} // Cantidad de segundos a restar.
    };

public OnGameModeInit()
{
    SetTimer("CadaSegundo", 999, true);
    return 1;
}

forward CadaSegundo();
public CadaSegundo()
{
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid ++)
    {
        if((ChuckNorris[0][playerid] == 1) && (IsPlayerConnected(playerid)))
        {
            switch(ChuckNorris[1][playerid])
            {
                case 4: // Mensaje
                case 3: // Mensaje
                case 2: // Mensaje
                case 1: // Mensaje
                case 0: // Expulsiуn
            }
            ChuckNorris[1][playerid] --;
        }
    }
    return 1;
}

// OnPlayerCommantText
if(strcmp(cmdtext, "vaginanorris", true) == 0)
{
    if(ChuckNorris[0][playerid] == 1)
    {
        ChuckNorris[0][playerid] = 0;
        ChuckNorris[1][playerid] = 4;
        SendClientMessage(playerid, 0xFFFFFFFF, "* ЎChuck Norris decidiу no violarte!");
    }
    else
    {
        ChuckNorris[0] = 1;
        SendClientMessage(playerid, 0xFFFFFFFF, "* ЎChuck Norris mata dos piedras con un pajaro!");
        SendClientMessage(playerid, 0xFFFFFFFF, "* ЎAhora viene a matar un elefante contigo!);
    }
    return 1;
}



Re: Respuesta: [Duda]Como crear Timers entre funciones? - MrDeath537 - 11.03.2011

Quote:
Originally Posted by SuperMarioRol
Посмотреть сообщение
No es eficiente porque los timers son la funcion menos eficiente de la historia.
Habia una funciуn de MrDeath que aun era mas ineficiente, congelando el servidor, cosa que te serviria, pero es mejor esto.
Mi funciуn congela el server por el tiempo indicado, es bastante inъtil.