[ROZWIĄZANE] Problem z true false..
pfkers 17.07.2012
Witam.. mam pewien problem .. niestety nie wiem jak sobie podolac z tym dlatego mam nadzieje ze ktos mi wytlumaczy i poprawi owy kod
w skrocie.. gdy zdobede 20 pkt doswiadczenie zmienna "awans_damage_z1_na2[id]" przybiera wartosc true i wszystko jest naliczane wtedy przez
lecz problem jest w tym( tak mi sie wydaje)
nie zmienia wartosci gdy osiagne 20 doswiadczenia..
a i jeszcze w public connect mam :
To jest opcja dla gracza ktory jest pierwszy raz na serwerze aby mu sprawdzalo hud(nie wiem czy dobrze ze to jest)
wszystko sie zapisuje na vault
public SprawdzPoziom_Damage(id)
{
if(awans_damage_na1[id] == true)
{
if(doswiadczenie_damage[id] < 20)
{
while(doswiadczenie_damage[id] >= exp_poziom_dmg[poziom_damage[id]])
{
poziom_damage[id]++;
set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
ShowSyncHudMsg(id, SyncHudObj, "Twoje Ulepszenie DAMAGE wynosi 100%");
}
}
if(doswiadczenie_damage[id] == 20 )
{
awans_damage_z1_na2[id] = true;
awans_damage_na1[id] = false;
awans_damage_z2_na3[id] = false;
}
}
if(awans_damage_z1_na2[id] == true)
{
if(doswiadczenie_damage[id] < 50)
{
while(doswiadczenie_damage[id] >= exp_poziom_dmg2[poziom_damage[id]])
{
poziom_damage[id]++;
set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
ShowSyncHudMsg(id, SyncHudObj, "Twoje Ulepszenie DAMAGE wynosi 100%");
}
}
if(doswiadczenie_damage[id] == 50 )
{
awans_damage_z2_na3[id] = true;
awans_damage_z1_na2[id] = false;
awans_damage_na1[id] = false;
}
}
if(awans_damage_z2_na3[id] == true)
{
if(doswiadczenie_damage[id] < 10000)
{
while(doswiadczenie_damage[id] >= exp_poziom_dmg3[poziom_damage[id]])
{
poziom_damage[id]++;
set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
ShowSyncHudMsg(id, SyncHudObj, "Twoje Ulepszenie DAMAGE wynosi 100%");
}
}
awans_damage_na1[id] = false;
awans_damage_z1_na2[id] = false;
}
}
w skrocie.. gdy zdobede 20 pkt doswiadczenie zmienna "awans_damage_z1_na2[id]" przybiera wartosc true i wszystko jest naliczane wtedy przez
if(awans_damage_z1_na2[id] == true)
{
if(doswiadczenie_damage[id] < 50)
{
while(doswiadczenie_damage[id] >= exp_poziom_dmg2[poziom_damage[id]])
{
poziom_damage[id]++;
set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
ShowSyncHudMsg(id, SyncHudObj, "Twoje Ulepszenie DAMAGE wynosi 100%");
}
}
if(doswiadczenie_damage[id] == 50 )
{
awans_damage_z2_na3[id] = true;
awans_damage_z1_na2[id] = false;
awans_damage_na1[id] = false;
}
}
lecz problem jest w tym( tak mi sie wydaje)
if(doswiadczenie_damage[id] == 20 )
{
awans_damage_z1_na2[id] = true;
awans_damage_na1[id] = false;
awans_damage_z2_na3[id] = false;
}
nie zmienia wartosci gdy osiagne 20 doswiadczenia..
a i jeszcze w public connect mam :
awans_damage_na1[id] = true;
To jest opcja dla gracza ktory jest pierwszy raz na serwerze aby mu sprawdzalo hud(nie wiem czy dobrze ze to jest)
wszystko sie zapisuje na vault
public ZapiszDane(id)
{
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s-%i-sol", nazwa_gracza[id], bron_gracza[id]);
format(vaultdata,255,"%i#%i#%i#%i#%i#%i",doswiadczenie_damage[id],doswiadczenie_ammo[id],doswiadczenie_reload[id],awans_damage_na1[id],awans_damage_z1_na2[id],awans_damage_z2_na3[id]);
nvault_set(g_vault,vaultkey,vaultdata);
}
public WczytajDane(id, bron)
{
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s-%i-sol", nazwa_gracza[id], bron);
format(vaultdata,255,"%i#%i#%i#%i#%i#%i", doswiadczenie_damage[id],doswiadczenie_ammo[id],doswiadczenie_reload[id],awans_damage_na1[id],awans_damage_z1_na2[id],awans_damage_z2_na3[id]);
nvault_get(g_vault,vaultkey,vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new doswiadczeniedmg[32], doswiadczenieammo[32], doswiadczeniereload[32],dmgawansna1[32],dmgawans1na2[32],dmgawans2na3[32];
parse(vaultdata, doswiadczeniedmg, 31, doswiadczenieammo, 31, doswiadczeniereload, 31,dmgawansna1, 31, dmgawans1na2, 31, dmgawans2na3, 31);
doswiadczenie_damage[id] = str_to_num(doswiadczeniedmg);
doswiadczenie_ammo[id] = str_to_num(doswiadczenieammo);
doswiadczenie_reload[id] = str_to_num(doswiadczeniereload);
awans_damage_na1[id] = bool:str_to_num(dmgawansna1);
awans_damage_z1_na2[id] = bool:str_to_num(dmgawans1na2);
awans_damage_z2_na3[id] = bool:str_to_num(dmgawans2na3);
}
Droso
17.07.2012
skoro nie wywołuje się to warunek nie jest spełniony może jak zdobywasz xp to liczba 20 została ominięta (np. od razu wbiłeś 21)
lub w złym momencie sprawdzasz xp.
Smiem tak twierdzić bo kod już na początku działa wadliwie
p.s jak nie jesteś pewien to dodaj client_print do warunku, jak sie wywola to problem leży gdzie indziej
Edited by HubertTM, 17.07.2012 21:15.
lub w złym momencie sprawdzasz xp.
Smiem tak twierdzić bo kod już na początku działa wadliwie
p.s jak nie jesteś pewien to dodaj client_print do warunku, jak sie wywola to problem leży gdzie indziej
Edited by HubertTM, 17.07.2012 21:15.
pfkers 17.07.2012
nom wlasnie juz sprawdzalem... dostaje 10 pkt wiec nie ominie mi 20.. a sprawdzalem ze jak
to przy respie daje mi granat.. lecz nie dalo..
if(awans_damage_z1_na2[id] == true)
to przy respie daje mi granat.. lecz nie dalo..
Gość_21977_* 17.07.2012
Zamiast tworzyć zmienne typu boolowskiego typu awans_damage_z2_na3, zastosuj jedną tablicę awans[33] przechowującą poziom gracza.
Wiadomo, że nastąpił awans z poziomu awans[id]-1 na awans[id] lub nie nastąpił żaden, o ile awans[id]==0
Wiadomo, że nastąpił awans z poziomu awans[id]-1 na awans[id] lub nie nastąpił żaden, o ile awans[id]==0
pfkers 18.07.2012
przeksztalcilem troche kod i jest wszystko ok.. dzięki za pomoc + // do zamkniecia
Gość_21977_* 18.07.2012
Wiadomość wygenerowana automatycznie
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL