←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Problem z true false..

Locked

pfkers's Photo 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

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

}
Quote

  • +
  • -
Droso's Photo 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.
Quote

pfkers's Photo pfkers 17.07.2012

nom wlasnie juz sprawdzalem... dostaje 10 pkt wiec nie ominie mi 20.. a sprawdzalem ze jak

if(awans_damage_z1_na2[id] == true)

to przy respie daje mi granat.. lecz nie dalo..
Quote

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
Quote

pfkers's Photo pfkers 18.07.2012

przeksztalcilem troche kod i jest wszystko ok.. dzięki za pomoc + // do zamkniecia
Quote

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, Posted Image raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked