Como usar timers [Consulta]
#1

Como puedo hacer que vayan apareciendo los texdrawing en orden cada 3 segundos?

Nota: Los textdraw estan ubicados en posiciones diferentes y apareceran en toda la pantalla..

Primero Timer 1

pawn Код:
Textdraw1 = TextDrawCreate(427.000000, 198.000000, "Informacion");
Despues de 3 segundo aparesaca esto

Segundo Timer 2

pawn Код:
Textdraw2 = TextDrawCreate(437.000000, 218.000000, "Sistema de Puntos:");
Despues de 3 segundo aparesaca esto

Tercero Timer 3

pawn Код:
Textdraw3 = TextDrawCreate(434.000000, 237.000000, "Rangos.");
Despues de 3 segundo se quiten todos los texdrawing en el Timer 4

pawn Код:
TextDrawHideForAll(Textdraw1);
   
    TextDrawHideForAll(Textdraw2);
   
    TextDrawHideForAll(Textdraw3)
gracias
Reply
#2

algo asi como un tutorial o como un anuncio
Reply
#3

Quote:
Originally Posted by Parka
Посмотреть сообщение
algo asi como un tutorial o como un anuncio
Son como anuncios que van apareciendo en la pantalla despues de 4 timers desaparecen todos.
Reply
#4

Mira mi ejemplo
pawn Код:
#include <a_samp>
public OnGameModeInit()
{
    SetTimer("M_Anuncios", 3000, true);//Creamos un timer que sea llamado cada 3 segundos y se estй repitiendo constantemente
    return 1;
}
forward M_Anuncios();
public M_Anuncios()//Funciуn a la que llamarб
{
    static step = 0;//Variable estбtica para que conserve el valor en el paso que vamos
    switch(step++)//Vemos que cosa hacer segъn la variable y luego incrementamos en 1 la variable "step"
    {
        case 0://Cuando sea 0 la variable mostrar el textdraw 1 y asн hasta el caso 3
            TextDrawShowForAll(Textdraw1);
        case 1:
            TextDrawShowForAll(Textdraw2);
        case 2:
            TextDrawShowForAll(Textdraw3);
        case 3://Oculta todos los Textdraws y asigna a la variable step el valor 0 para que vuelva a repetir todo
        {
            TextDrawHideForAll(Textdraw1);    
            TextDrawHideForAll(Textdraw2);  
            TextDrawHideForAll(Textdraw3);
            step = 0;
        }
    }
}
Reply
#5

Quote:
Originally Posted by Su37Erich
Посмотреть сообщение
Mira mi ejemplo
pawn Код:
#include <a_samp>
public OnGameModeInit()
{
    SetTimer("M_Anuncios", 3000, true);//Creamos un timer que sea llamado cada 3 segundos y se estй repitiendo constantemente
    return 1;
}
forward M_Anuncios();
public M_Anuncios()//Funciуn a la que llamarб
{
    static step = 0;//Variable estбtica para que conserve el valor en el paso que vamos
    switch(step++)//Vemos que cosa hacer segъn la variable y luego incrementamos en 1 la variable "step"
    {
        case 0://Cuando sea 0 la variable mostrar el textdraw 1 y asн hasta el caso 3
            TextDrawShowForAll(Textdraw1);
        case 1:
            TextDrawShowForAll(Textdraw2);
        case 2:
            TextDrawShowForAll(Textdraw3);
        case 3://Oculta todos los Textdraws y asigna a la variable step el valor 0 para que vuelva a repetir todo
        {
            TextDrawHideForAll(Textdraw1);    
            TextDrawHideForAll(Textdraw2);  
            TextDrawHideForAll(Textdraw3);
            step = 0;
        }
    }
}
Muchas gracias por responder y como irнa en
pawn Код:
public OnPlayerSpawn(playerid)
{
    return 1;
}
ya quue quiero que aparesca despues de haber spawneado..
Reply
#6

revivo tema.. solo quiero saber como iria en OnPlayerSpawn
Reply
#7

Poniendo el "timer" en la pъblica OnPlayerSpawn
Reply
#8

їPara que en OnPlayerSpawn?
їLos textdraws son globales?
їPuedes especificar como deseas que se muestren los textdraws?
Por ejemplo segъn la idea que tenнa era:
A todos los jugadores les aparecieran estos textdraws en el orden que mencionaste, a todos al mismo tiempo en el mismo orden.
Reply
#9

Quote:
Originally Posted by Su37Erich
Посмотреть сообщение
їPara que en OnPlayerSpawn?
їLos textdraws son globales?
їPuedes especificar como deseas que se muestren los textdraws?
Por ejemplo segъn la idea que tenнa era:
A todos los jugadores les aparecieran estos textdraws en el orden que mencionaste, a todos al mismo tiempo en el mismo orden.
Creo que me explique mal, me gustaria que los textdrawing comienzen a verse desde que se spawnea el jugador que entre al server.
Reply
#10

Bien, entonces quedarнa de la siguiente manera:
pawn Код:
#include <a_samp>
new ti_id[MAX_PLAYERS];
new i_step[MAX_PLAYERS];

public OnPlayerConnect(playerid)//No puse los returns :p
{
    i_step[playerid] = 0;//Variable del paso en que va
    ti_id[playerid] = -1;//Como es nuevo el jugador, asignamos el id del timer a -1 para que sepamos que aun no tiene timer
}
public OnPlayerSpawn(playerid)
{
    if(ti_id[playerid] == -1)//Si no se ha inicializado un timer, entonces:
        ti_id[playerid] = SetTimerEx("M_Anuncios", 3000, true, "d", playerid);//Inicializar timer y asignar su id a la variable
}
public OnPlayerDisconnect(playerid, reason)
{
    if(ti_id[playerid] != -1)//Si el timer si se inicializу, entonces
        KillTimer(ti_id[playerid]);//Asesinarlo
}
forward M_Anuncios(playerid);
public M_Anuncios(playerid)//Funciуn a la que llamarб
{
    if(!IsPlayerConnected(playerid))//Comprobar si el jugador estб conectado
        return printf("ERROR");//Si no lo estб entonces algo va mal y creo no hay modo de asesinar el timer(este error nunca deberнa aparecer) pero por cuestiones raras a veces pasa (OFFTOPIC: estas cosas raras pasan tambiйn por estar usando cosas como threaded queries de MySQL u cosas en dos hilos), yo siempre pongo esto para prevenir otros errores y ademбs que el timer estarнa consumiendo CPU
    switch(i_step[playerid]++)//Vemos que cosa hacer segъn la variable y luego incrementamos en 1 la variable "step"
    {
        case 0://Cuando sea 0 la variable mostrar el textdraw 1 y asн hasta el caso 3
            TextDrawShowForPlayer(playerid, Textdraw1);
        case 1:
            TextDrawShowForPlayer(playerid, Textdraw2);
        case 2:
            TextDrawShowForPlayer(playerid, Textdraw3);
        case 3://Oculta todos los Textdraws y asigna a la variable step el valor 0 para que vuelva a repetir todo
        {
            TextDrawHideForPlayer(playerid, Textdraw1);    
            TextDrawHideForPlayer(playerid, Textdraw2);  
            TextDrawHideForPlayer(playerid, Textdraw3);
            i_step[playerid] = 0;
        }
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)