Error al recibir premio -
laborgward - 17.03.2010
Bueno aver si me pueden dar una mano con esto:
tengo un Textdraw con al version de Zamaroth de un contador de Experiencia, y puse lo siguiente:
pawn Код:
if(Experiencia >= 100)
{
AccountInfo[i][aNivel]++; //esto es para q suba de nivel
GameTextForPlayer(i,"subiste de nivel! ~n~~r~NIVEL 1",4000,1); Es un texto de aviso
ShowPlayerDialog(playerid,122,DIALOG_STYLE_LIST,"PREMIOS NIVEL 1","Katana\nAerosol\nCuchillo","Recibir","Cancelar"); //abre el dialog menu para elegir el arma
}
Bueno el texto y el dialog se abren perfectamente al llegar a esa experiencia pero el problema es q tanto el texto como el dialog aparecen todo el tiempo, osea llegas a esa experiencia y abre ambas cosas, elijes el arma, y cuando se cierra se vuelve abrir, y asi todo el tiempo

Como puedo hacer para q solo le de el premio una sola vez?
Bueno eso es todo espero puedan ayudarme xD
salu2
Re: Error al recibir premio -
Fedee! - 17.03.2010
Quote:
|
Originally Posted by laborgward
Bueno aver si me pueden dar una mano con esto:
tengo un Textdraw con al version de Zamaroth de un contador de Experiencia, y puse lo siguiente:
pawn Код:
if(Experiencia >= 100) { AccountInfo[i][aNivel]++; //esto es para q suba de nivel GameTextForPlayer(i,"subiste de nivel! ~n~~r~NIVEL 1",4000,1); Es un texto de aviso ShowPlayerDialog(playerid,122,DIALOG_STYLE_LIST,"PREMIOS NIVEL 1","Katana\nAerosol\nCuchillo","Recibir","Cancelar"); //abre el dialog menu para elegir el arma }
Bueno el texto y el dialog se abren perfectamente al llegar a esa experiencia pero el problema es q tanto el texto como el dialog aparecen todo el tiempo, osea llegas a esa experiencia y abre ambas cosas, elijes el arma, y cuando se cierra se vuelve abrir, y asi todo el tiempo 
Como puedo hacer para q solo le de el premio una sola vez?
Bueno eso es todo espero puedan ayudarme xD
salu2
|
їLo tenes en un timer? їO que callback estas usando?
Re: Error al recibir premio -
laborgward - 17.03.2010
Si al para ir agregando experiencia al textdraw lo tengo un en timer:
pawn Код:
SetTimer("ScoreTextDrawUpdate2", 3000, true);
y el codigo completo es:
pawn Код:
public ScoreTextDrawUpdate2()
{
new string[256];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(Spawned[i])
{
new Score = AccountInfo[i][aExperiencia];
format(string, sizeof(string), "%d", Score);
TextDrawHideForPlayer(i, ScoreTextDraw2[i]);
ScoreTextDraw2[i] = TextDrawCreate(494.000000, 423.000000, string);
TextDrawAlignment(ScoreTextDraw2[i],0);
TextDrawBackgroundColor(ScoreTextDraw2[i],0x000000ff);
TextDrawFont(ScoreTextDraw2[i],3);
TextDrawLetterSize(ScoreTextDraw2[i],0.709999, 2.100000);
TextDrawSetOutline(ScoreTextDraw2[i],1);
TextDrawSetProportional(ScoreTextDraw2[i],0);
TextDrawSetShadow(ScoreTextDraw2[i],1);
TextDrawShowForPlayer(i, ScoreTextDraw2[i]);
if(Score == 100)
{
AccountInfo[i][aNivel]++; //esto es para q suba de nivel
GameTextForPlayer(i,"subiste de nivel! ~n~~r~NIVEL 1",4000,1); Es un texto de aviso
ShowPlayerDialog(playerid,122,DIALOG_STYLE_LIST,"PREMIOS NIVEL 1","Katana\nAerosol\nCuchillo","Recibir","Cancelar"); //abre el dialog menu para elegir el arma
}
}
}
}
return 1;
}
Re: Error al recibir premio -
Fedee! - 17.03.2010
Claro, tenes que 'matarlo' al timer despuйs de seleccionar. Se utiliza KillTimer.
pawn Код:
public ScoreTextDrawUpdate2()
{
new string[256];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(Spawned[i])
{
new Score = AccountInfo[i][aExperiencia];
format(string, sizeof(string), "%d", Score);
TextDrawHideForPlayer(i, ScoreTextDraw2[i]);
ScoreTextDraw2[i] = TextDrawCreate(494.000000, 423.000000, string);
TextDrawAlignment(ScoreTextDraw2[i],0);
TextDrawBackgroundColor(ScoreTextDraw2[i],0x000000ff);
TextDrawFont(ScoreTextDraw2[i],3);
TextDrawLetterSize(ScoreTextDraw2[i],0.709999, 2.100000);
TextDrawSetOutline(ScoreTextDraw2[i],1);
TextDrawSetProportional(ScoreTextDraw2[i],0);
TextDrawSetShadow(ScoreTextDraw2[i],1);
TextDrawShowForPlayer(i, ScoreTextDraw2[i]);
if(Score == 100)
{
AccountInfo[i][aNivel]++; //esto es para q suba de nivel
GameTextForPlayer(i,"subiste de nivel! ~n~~r~NIVEL 1",4000,1); Es un texto de aviso
ShowPlayerDialog(playerid,122,DIALOG_STYLE_LIST,"PREMIOS NIVEL 1","Katana\nAerosol\nCuchillo","Recibir","Cancelar");
KillTimer(ScoreTextDrawUpdate2);
}
}
}
}
return 1;
}
Re: Error al recibir premio -
laborgward - 17.03.2010
Quote:
|
Originally Posted by Fedee!
Claro, tenes que 'matarlo' al timer despuйs de seleccionar. Se utiliza KillTimer.
pawn Код:
public ScoreTextDrawUpdate2() { new string[256]; for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(Spawned[i]) { new Score = AccountInfo[i][aExperiencia]; format(string, sizeof(string), "%d", Score); TextDrawHideForPlayer(i, ScoreTextDraw2[i]); ScoreTextDraw2[i] = TextDrawCreate(494.000000, 423.000000, string); TextDrawAlignment(ScoreTextDraw2[i],0); TextDrawBackgroundColor(ScoreTextDraw2[i],0x000000ff); TextDrawFont(ScoreTextDraw2[i],3); TextDrawLetterSize(ScoreTextDraw2[i],0.709999, 2.100000); TextDrawSetOutline(ScoreTextDraw2[i],1); TextDrawSetProportional(ScoreTextDraw2[i],0); TextDrawSetShadow(ScoreTextDraw2[i],1); TextDrawShowForPlayer(i, ScoreTextDraw2[i]); if(Score == 100) { AccountInfo[i][aNivel]++; //esto es para q suba de nivel GameTextForPlayer(i,"subiste de nivel! ~n~~r~NIVEL 1",4000,1); Es un texto de aviso ShowPlayerDialog(playerid,122,DIALOG_STYLE_LIST,"PREMIOS NIVEL 1","Katana\nAerosol\nCuchillo","Recibir","Cancelar"); KillTimer(ScoreTextDrawUpdate2); } } } } return 1; }
|
pero si yo mato al timer no seguira apareciendo el textdraw y no seguira contando la experiencia
no hay otra formaї
Re: Error al recibir premio -
Fedee! - 17.03.2010
Que yo sepa no... (no se me ocurre nada xD)
Re: Error al recibir premio -
MrDeath537 - 18.03.2010
Prueba con una variable:
Mira agregas una definicion: new PremioRecibido[MAX_PLAYERS];
Luego cuando se conecta: PremiRecibido[playerid] = 0;
Ahora en la parte de tu codigo:
pawn Код:
if(Score == 100 && PremiRecibido[playerid] == 0)
{
AccountInfo[i][aNivel]++; //esto es para q suba de nivel
GameTextForPlayer(i,"subiste de nivel! ~n~~r~NIVEL 1",4000,1); Es un texto de aviso
ShowPlayerDialog(playerid,122,DIALOG_STYLE_LIST,"PREMIOS NIVEL 1","Katana\nAerosol\nCuchillo","Recibir","Cancelar");
PremioRecibido[playerid] = 1;
}
Eso hace que cuando reciba el premio por primera vez quede por decirlo "recibido" y luego si ya lo recibio no se lo vuelve a dar. Espero que te sirva
Re: Error al recibir premio -
laborgward - 18.03.2010
Quote:
|
Originally Posted by MrDeath
Prueba con una variable:
Mira agregas una definicion: new PremioRecibido[MAX_PLAYERS];
Luego cuando se conecta: PremiRecibido[playerid] = 0;
Ahora en la parte de tu codigo:
pawn Код:
if(Score == 100 && PremiRecibido[playerid] == 0) { AccountInfo[i][aNivel]++; //esto es para q suba de nivel GameTextForPlayer(i,"subiste de nivel! ~n~~r~NIVEL 1",4000,1); Es un texto de aviso ShowPlayerDialog(playerid,122,DIALOG_STYLE_LIST,"PREMIOS NIVEL 1","Katana\nAerosol\nCuchillo","Recibir","Cancelar"); PremioRecibido[playerid] = 1; }
Eso hace que cuando reciba el premio por primera vez quede por decirlo "recibido" y luego si ya lo recibio no se lo vuelve a dar. Espero que te sirva
|
Sos un kpo death funciona perfecto
gracias x la ayuda suerte
CERRAR TEMA