[ROZWIĄZANE] Wyświetlanie informacji wszys...
Najlepsza odpowiedź
sebul
09.08.2014 19:07
else if(zdobyl_poziom) { punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id]; tutorMake(id,TUTOR_GREEN,5.0,"Awansowales do %i poziomu!", poziom_gracza[id]) //TUTOR //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0); //ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]); client_cmd(id, "spk QTM_CodMod/levelup"); } if( poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 ) { client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]); }na
else if(zdobyl_poziom) { punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id]; tutorMake(id,TUTOR_GREEN,5.0,"Awansowales do %i poziomu!", poziom_gracza[id]) //TUTOR //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0); //ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]); client_cmd(id, "spk QTM_CodMod/levelup"); if( poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 ) { client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]); } }a jeśli chcesz, żeby wiadomość pokazywała się po prostu co 50 poziom, to od tego masz % (reszta z dzielenia), czyli
if(!(poziom_gracza[id] % 50))Przejdź do postu

kakus002
08.08.2014
Witam, zastanawiałem się jak zrobić by ta wiadomość:
client_print(0, print_chat, "[COD:MW] Gracz %s awansowal do %i poziomu!", nazwa_gracza[id], poziom_gracza[id]);
wyświetlana była gdy ktoś wbije 50/100/150/200 level. Kombinowałem już troche ale nic nie działało ;x
Z góry dziękuje : ]
Użytkownik kakus002 edytował ten post 08.08.2014 18:20
dredek
08.08.2014
if(poziom_gracza[id] < 200) { client_print(0, print_chat, "[COD:MW] Gracz %s awansowal do %i poziomu!", nazwa_gracza[id], poziom_gracza[id]); }
Użytkownik dredek edytował ten post 08.08.2014 21:17
kakus002
08.08.2014
if(poziom_gracza[id] < 200) { client_print(0, print_chat, "[COD:MW] Gracz %s awansowal do %i poziomu!", nazwa_gracza[id], poziom_gracza[id]); }: x
Gdyby to działało to bym nawet nie napisał tego tematu : ] Przy tym informacja wyświetla się potrójnie, w dodatku co level & i to oznacza że informacja będzie pokazywana aż do 200 level'a : ]
dredek
08.08.2014
Sprawdź teraz.
if(poziom_gracza[id] == 50 || poziom_gracza[id] == 100 || poziom_gracza[id] == 150 || poziom_gracza[id] == 200) { client_print(0, print_chat, "[COD:MW] Gracz %s awansowal do %i poziomu!", nazwa_gracza[id], poziom_gracza[id]); }
To ,że Ci się potrójnie wyświetla to już nie moja wina... obczaj teraz bo wcześniej nie zakumałem tematu.
Użytkownik dredek edytował ten post 08.08.2014 22:19
radim
08.08.2014
Najłatwiejszym sposobem jest użycie warunków ( if ) czy dany grasz o danym id osiągnał dany level.
if( poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 ) client_print( 0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]);
A to że wyskakuje CI kilka razy wiadomość to prawdopodobnie w/w kod masz w funkcji która jest powtarzana w jakimś tasku.
kakus002
08.08.2014
Sprawdź teraz.
A to że wyskakuje CI kilka razy wiadomość to prawdopodobnie w/w kod masz w funkcji która jest powtarzana w jakimś tasku.
Wszystko działa ale gdy gracz ma np. 50 level bądz 100 przy każdym uderzeniu wroga wyskakuje ta informacja : ]
Użytkownik kakus002 edytował ten post 08.08.2014 22:40
radim
08.08.2014
Być może kod umieściłeś w evencie damage lub damage w kanapce. Pokaz cały public i wszystkie linijki z nim związane (np. gdy jest on gdzieś indziej używany)
kakus002
08.08.2014
Być może kod umieściłeś w evencie damage lub damage w kanapce. Pokaz cały public i wszystkie linijki z nim związane (np. gdy jest on gdzieś indziej używany)
public SprawdzPoziom(id) { if(!is_user_connected(id)) return; new limit_poziomu = get_pcvar_num(cvar_limit_poziomu); new bool:zdobyl_poziom = false, bool:stracil_poziom = false; while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu) { poziom_gracza[id]++; punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id]; zdobyl_poziom = true; } while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1)) { poziom_gracza[id]--; stracil_poziom = true; } if(poziom_gracza[id] > limit_poziomu) { poziom_gracza[id] = limit_poziomu; ResetujPunkty(id); } if(stracil_poziom) { ResetujPunkty(id); tutorMake(id,TUTOR_GREEN,5.0,"Spadles do %i poziomu!", poziom_gracza[id]) //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0); //ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]); } else if(zdobyl_poziom) { punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id]; tutorMake(id,TUTOR_GREEN,5.0,"Awansowales do %i poziomu!", poziom_gracza[id]) //TUTOR //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0); //ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]); client_cmd(id, "spk QTM_CodMod/levelup"); } if( poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 ) { client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]); } ZapiszDane(id); }
W publicu ObrazeniaPost jest coś takiego
SprawdzPoziom(attacker);
To przez to ? : ]
Użytkownik kakus002 edytował ten post 08.08.2014 23:34
radim
08.08.2014
Tak to przez to. Zamiast 'if' użyj 'while'.
while( poziom_gracza[ id ] == 50 || poziom_gracza ==100 ) client_print(0, print_chat, "Blablabla")
kakus002
08.08.2014
Śmieszny sposób ale zadziała
Cały public ma wyglądać tak? Bo jeśli Tak to nie działa to : ] + Gdy uderzymy swojego to także wyskakuje informacja że gracz osiagnął 100 lvl .
public SprawdzPoziom(id) { if(!is_user_connected(id)) return; if(poziom_gracza[id] != 50 || poziom_gracza[id] != 100) costam[id] = false; new limit_poziomu = get_pcvar_num(cvar_limit_poziomu); new bool:zdobyl_poziom = false, bool:stracil_poziom = false; while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu) { poziom_gracza[id]++; punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id]; zdobyl_poziom = true; } while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1)) { poziom_gracza[id]--; stracil_poziom = true; } if(poziom_gracza[id] > limit_poziomu) { poziom_gracza[id] = limit_poziomu; ResetujPunkty(id); } if(stracil_poziom) { ResetujPunkty(id); tutorMake(id,TUTOR_GREEN,5.0,"Spadles do %i poziomu!", poziom_gracza[id]) //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0); //ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]); } else if(zdobyl_poziom) { punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id]; tutorMake(id,TUTOR_GREEN,5.0,"Awansowales do %i poziomu!", poziom_gracza[id]) //TUTOR //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0); //ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]); client_cmd(id, "spk QTM_CodMod/levelup"); } if( !costam[id] && (poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 )) { client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]); costam[id] = true; } ZapiszDane(id); }
Użytkownik kakus002 edytował ten post 08.08.2014 23:59
radim
08.08.2014
Edytowałem post, sprawdź jak napisałem wyżej. Tamten był głupi sposób ale by zadziałał, zapomniałem o pętli while, która jest tutaj najlepszym wyjściem.
kakus002
09.08.2014
Edytowałem post, sprawdź jak napisałem wyżej. Tamten był głupi sposób ale by zadziałał, zapomniałem o pętli while, która jest tutaj najlepszym wyjściem.
Nadal to samo : ] Rozumiem że bool:costam nie potrzebna i to także :
if(poziom_gracza[id] != 50 || poziom_gracza[id] != 100) costam[id] = false;
?
Jeśli to ma wyglądać tak:
while(poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 ) { client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]); }
To przy uderzeniu gracza serwer się zatrzymuje, zero logów: ]
Użytkownik kakus002 edytował ten post 09.08.2014 00:15
Najlepsza odpowiedź
sebul
09.08.2014
else if(zdobyl_poziom) { punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id]; tutorMake(id,TUTOR_GREEN,5.0,"Awansowales do %i poziomu!", poziom_gracza[id]) //TUTOR //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0); //ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]); client_cmd(id, "spk QTM_CodMod/levelup"); } if( poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 ) { client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]); }na
else if(zdobyl_poziom) { punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id]; tutorMake(id,TUTOR_GREEN,5.0,"Awansowales do %i poziomu!", poziom_gracza[id]) //TUTOR //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0); //ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]); client_cmd(id, "spk QTM_CodMod/levelup"); if( poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 ) { client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]); } }a jeśli chcesz, żeby wiadomość pokazywała się po prostu co 50 poziom, to od tego masz % (reszta z dzielenia), czyli
if(!(poziom_gracza[id] % 50))