SA-MP Forums Archive
como puedo hacer esto... - 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 puedo hacer esto... (/showthread.php?tid=276152)



como puedo hacer esto... - Braz_y - 12.08.2011

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.


Respuesta: como puedo hacer esto... - leoals - 12.08.2011

Puedes usar timers.


Re: como puedo hacer esto... - Mr.GeEk - 12.08.2011

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


Respuesta: como puedo hacer esto... - [J]ulian - 12.08.2011

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.


Respuesta: como puedo hacer esto... - TheChaoz - 12.08.2011

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.


Re: como puedo hacer esto... - Mr.GeEk - 12.08.2011

ahorrar timers xD


Respuesta: como puedo hacer esto... - TheChaoz - 12.08.2011

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



Respuesta: como puedo hacer esto... - [J]ulian - 12.08.2011

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


Respuesta: como puedo hacer esto... - Braz_y - 12.08.2011

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


Respuesta: como puedo hacer esto... - TheChaoz - 12.08.2011

que es exactamente lo que queres hacer?