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?