como puedo hacer esto...
#1

lo que quiero hacer es que salga un mensaje en la pantalla asi como animacion que salga el primer mensaje y despues salga el 2 y 3 etc.
ejemplo
pawn Код:
if(!strcmp(cmdtext, "/texto", true, 5))
{
        GameTextForPlayer(playerid,"~r~hola",1000,5); //que salga este mensaje primero
        GameTextForPlayer(playerid,"~r~hola1",2000,5);//despues que salga este pero que se quite el primer mensaje
        GameTextForPlayer(playerid,"~r~hola2",3000,5);//despues que salga este pero que se quite el 2 mensaje etc.
        GameTextForPlayer(playerid,"~r~hola3",4000,5);//4
        GameTextForPlayer(playerid,"~r~hola4",5000,5);//5
        return 1;
}
es como una animacion.
Reply
#2

Puedes usar timers.
Reply
#3

pawn Код:
if(!strcmp(cmdtext, "/texto", true, 5))
{
        Texto(5);
        return 1;
}



stock Texto(num)
{
 if(num==0) return 1; // termina cuando num se hace 0

 switch(num)
 {
  case 5: GameTextForAll("~r~hola",500,5);//primer mensaje
  case 4: GameTextForAll("~b~hola",500,5);//segundo mensaje
  case 3: GameTextForAll("~y~hola",500,5);//tercer mensaje
  case 2: GameTextForAll("~w~hola",500,5);//cuarto mensaje
  case 1: GameTextForAll("~r~hola",500,5);//quinto mensaje xD
 }
 num = num - 1;
 return Texto(num);

}
dime si te funciona xD
Reply
#4

pawn Код:
#include <a_samp>

new texto_var[MAX_PLAYERS], timer[MAX_PLAYERS];

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/texto", true, 5))
    {
        texto_var[playerid] = 1;
        timer[playerid] = SetTimerEx("MensajesTimer", texto_var[playerid] * 1000, 0, "i", playerid);
        MensajesTimer(playerid);
        return 1;
    }
    return 0;
}

forward MensajesTimer(playerid);
public MensajesTimer(playerid)
{
    if(texto_var[playerid] == 1)
    {
        KillTimer(timer[playerid]);
        SendClientMessage(playerid, -1, "1 seg.");
        timer[playerid] = SetTimerEx("MensajesTimer", texto_var[playerid] * 1000, 0, "i", playerid);
        texto_var[playerid]++;
        return 1;
    }
    if(texto_var[playerid] == 2)
    {
        KillTimer(timer[playerid]);
        SendClientMessage(playerid, -1, "2 seg.");
        timer[playerid] = SetTimerEx("MensajesTimer", texto_var[playerid] * 1000, 0, "i", playerid);
        texto_var[playerid]++;
        return 1;
    }
    if(texto_var[playerid] == 3)
    {
        KillTimer(timer[playerid]);
        SendClientMessage(playerid, -1, "3 seg.");
        timer[playerid] = SetTimerEx("MensajesTimer", texto_var[playerid] * 1000, 0, "i", playerid);
        texto_var[playerid]++;
        return 1;
    }
    if(texto_var[playerid] == 4)
    {
        KillTimer(timer[playerid]);
        SendClientMessage(playerid, -1, "4 seg.");
        timer[playerid] = SetTimerEx("MensajesTimer", texto_var[playerid] * 1000, 0, "i", playerid);
        texto_var[playerid]++;
        return 1;
    }
    if(texto_var[playerid] == 5)
    {
        KillTimer(timer[playerid]);
        SendClientMessage(playerid, -1, "5 seg.");
        return 1;
    }
    return 1;
}
No lo probй, pero deberнa funcionar.
Reply
#5

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
pawn Код:
#include <a_samp>

new texto_var[MAX_PLAYERS], timer[MAX_PLAYERS];

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/texto", true, 5))
    {
        texto_var[playerid] = 1;
        timer[playerid] = SetTimerEx("MensajesTimer", texto_var[playerid] * 1000, 0, "i", playerid);
        MensajesTimer(playerid);
        return 1;
    }
    return 0;
}

forward MensajesTimer(playerid);
public MensajesTimer(playerid)
{
    if(texto_var[playerid] == 1)
    {
        KillTimer(timer[playerid]);
        SendClientMessage(playerid, -1, "1 seg.");
        timer[playerid] = SetTimerEx("MensajesTimer", texto_var[playerid] * 1000, 0, "i", playerid);
        texto_var[playerid]++;
        return 1;
    }
    if(texto_var[playerid] == 2)
    {
        KillTimer(timer[playerid]);
        SendClientMessage(playerid, -1, "2 seg.");
        timer[playerid] = SetTimerEx("MensajesTimer", texto_var[playerid] * 1000, 0, "i", playerid);
        texto_var[playerid]++;
        return 1;
    }
    if(texto_var[playerid] == 3)
    {
        KillTimer(timer[playerid]);
        SendClientMessage(playerid, -1, "3 seg.");
        timer[playerid] = SetTimerEx("MensajesTimer", texto_var[playerid] * 1000, 0, "i", playerid);
        texto_var[playerid]++;
        return 1;
    }
    if(texto_var[playerid] == 4)
    {
        KillTimer(timer[playerid]);
        SendClientMessage(playerid, -1, "4 seg.");
        timer[playerid] = SetTimerEx("MensajesTimer", texto_var[playerid] * 1000, 0, "i", playerid);
        texto_var[playerid]++;
        return 1;
    }
    if(texto_var[playerid] == 5)
    {
        KillTimer(timer[playerid]);
        SendClientMessage(playerid, -1, "5 seg.");
        return 1;
    }
    return 1;
}
No lo probй, pero deberнa funcionar.
el codigo de Mr.GeEk es mucho mas eficiente. y funciona. la forma en la cual realizo el bucle es muy buena, aun q no se si lo penso o le salio de suerte , parece pensado.

La diferencia es q tu texto tiene tiempos en el medio, mientras que el de Mr.GeEk no.
Reply
#6

ahorrar timers xD
Reply
#7

otpimizada al maximo, aun q diferencia notoria en velocidad es casi nula seria:
pawn Код:
Texto(num)
{
    switch(num){
        case 5: GameTextForAll("~r~hola",500,5);
        case 4: GameTextForAll("~b~hola",500,5);
        case 3: GameTextForAll("~y~hola",500,5);
        case 2: GameTextForAll("~w~hola",500,5);
        case 1: GameTextForAll("~r~hola",500,5);
        default: return 1;
    }
    num--;
    return Texto(num);
}
Reply
#8

Pero creo que eso no es lo que quiere йl :S
Reply
#9

lo probe la funcion de Mr.GeEk pero no me funciona como yo quiero no se cambia.
Reply
#10

que es exactamente lo que queres hacer?
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)