Problem z hudem i sprite'ami
SopeleQ1337
07.06.2017
Witam.
Mam pewien problem z hudem, ponieważ chciałbym aby wyświetlał się on podczas gry, czyli jak jesteśmy żywi, oraz jak umrzemy, czyli żebyśmy widzieli nick, rangę etc. innych osób. Pierwsza część działa, natomiast hud, który ma być wyświetlany po śmierci niestety nie działa. Wyskakują mi błędy w kompilacji i nie wiem jak je naprawić.
Jakby ktoś mógł jeszcze tylko dodać ścieżki do sprite'ów, tzn. jeżeli ktoś ma range silver 1 w hudzie, to nad jego głową jest sprite silver1, itd. Wystarczy mi sprite dla jednej rangi, zresztą sobie poradzę.
Będę bardzo wdzięczny za wszelką pomoc!
Plugin w załączniku.
Załączone pliki
d0naciak
07.06.2017
Wywal to i sprawdź
public client_PreThink(id) { if(!is_user_alive(id)) { set_hudmessage(0, 64, 128, 0.01, 0.22) ShowSyncHudMsg(id, sync, "^n| Forum: Frag-Armia.pl |^n| Nick: %s |^n| Ranga: %s |^n| Zabojstwa: %d |^n| K/D ratio: %0.2f% |^n| VIP: %s |", name , rangi[ranga[id]][1], stats[0], kdratio[id], get_user_flags(id) & VIP_FLAG ? "Tak" : "Nie") } }
SopeleQ1337
07.06.2017
Hud się wyświetla, ale co to ma za sens, skoro po przejściu na innego gracza mam cały czas swój. Powinno być tak, że przechodząc na innego gracza, widzimy jego rangę, nick, k/d ratio etc.
_McHappy
08.06.2017
1. Gracz obserwujący żyje {chyba oksymoron } (wtedy widzi swoje statystyki) - to już posiadasz
2. Gracz obserwujący nie żyje ( wtedy widzi statystyki osoby obserwowanej - identyfikator pev(id, pev_iuser2) ) - to też, z tego co widzę posiadasz, lecz w błędnej formule.
W funkcji wyświetlającej hud musisz sprawdzić, czy gracz jest żywy i w zależności od tego, wyświetlać mu statystyki własne lub innego gracza.
Jednak cały problem tkwi w zmiennej 'id'. Zauważ, że sprytnie zmieniasz ją na początku funkcji na wspomnianą pev(id, pev_iuser2), lecz jak widzisz, pod koniec funkcji używasz tego samego, zmienionego 'id' do wyświetlania HUD'u. Wniosek? Gdy ty nie żyjesz i obserwujesz gracza, to napis zamiast Tobie, wyświetla się podwójnie temu właśnie graczowi
Odseparuj zmienną 'id' do obliczeń, a może raczej ją sklonuj i modyfikuj, podczas gdy oryginalną zastosuj do wyświetlania HUD'a.
SopeleQ1337
08.06.2017
_McHappy, napisałeś to takim profesjonalnym językiem, że mnie (jako osobie nie tak bardzo zaawansowanej) jest cholernie trudno to zrozumieć
Jakbyś mógł pokazać mi, jak wykonać te czynności na podstawie mojego sma, byłbym Ci bardzo wdzięczny!
Ps. Oczywiście punkt reputacji przyznałem, ponieważ rozwiązanie napisałeś, ale ja sam nie wiem jak się do niego ustosunkować :c
Yellon
14.06.2017
Trzymaj dodałem ci sprite i naprawiłem hud. Tylko zmień scieżki do sprite bo dałem przykładowe. I jak coś to nie testowałem ale raczej powinno być okej.
Załączone pliki
_McHappy
14.06.2017
Ciało funkcji rank():
public rank(param[]) { static id, stats[8], body[8], iTarget; id = param[0]; //id obserwatora iTarget = ( is_user_alive(id) ? id : pev(id, pev_iuser2) ); //obserwator żyje? TAK: obliczenia dla obserwatora (czyli gracza). NIE: obliczenia dla obserwowanego gracza if(!iTarget) //jeżeli gracz nie obserwuje nikogo (free cam itp) - dajemy spokój return PLUGIN_CONTINUE; get_user_stats(iTarget, stats, body) static Float:kdratio[33] kdratio[iTarget] = float(stats[0]) / float(stats[1]) if((kdratio[iTarget] >= liczby[ranga[iTarget]]) && (stats[0] >= rangi[ranga[iTarget]][0]) && ranga[iTarget] < limit) ranga[iTarget]++ else if(kdratio[iTarget] < liczby[ranga[iTarget]] || stats[0] < rangi[ranga[iTarget]][0]) { if(ranga[iTarget] > limit_min) ranga[iTarget]-- } static name[33] get_user_name(iTarget,name,32) cvar = get_cvar_num("rangi_kolor") switch(cvar) { case 0: { set_hudmessage(255, 255, 255, 0.01, 0.22) ShowSyncHudMsg(id, sync, "[Nick: %s]^n[Ranga: %s]^n[Zabojstwa: %d/%d]^n[K/d ratio %0.2f%]", name , rangi[ranga[iTarget]][1], stats[0], rangi[ranga[iTarget]][0], kdratio[iTarget]) } case 1: { set_hudmessage(255, 0, 0, 0.01, 0.22) ShowSyncHudMsg(id, sync, "[Nick: %s]^n[Ranga: %s]^n[Zabojstwa: %d/%d]^n[K/d ratio %0.2f%]", name , rangi[ranga[iTarget]][1], stats[0], rangi[ranga[iTarget]][0], kdratio[iTarget]) } case 2: { set_hudmessage(0, 255, 0, 0.01, 0.22) ShowSyncHudMsg(id, sync, "[Nick: %s]^n[Ranga: %s]^n[Zabojstwa: %d/%d]^n[K/d ratio %0.2f%]", name , rangi[ranga[iTarget]][1], stats[0], rangi[ranga[iTarget]][0], kdratio[iTarget]) } case 3: { set_hudmessage(0, 64, 128, 0.01, 0.22) ShowSyncHudMsg(id, sync, "^n| Forum: Frag-Armia.pl |^n| Nick: %s |^n| Ranga: %s |^n| Zabojstwa: %d |^n| K/D ratio: %0.2f% |^n| VIP: %s |", name , rangi[ranga[iTarget]][1], stats[0], kdratio[iTarget], get_user_flags(iTarget) & VIP_FLAG ? "Tak" : "Nie") } } return PLUGIN_CONTINUE; }
Poanalizuj, potestuj, popytaj etcetera...
Użytkownik _McHappy edytował ten post 14.06.2017 11:49
_McHappy
14.06.2017
Ale to już temat na odrębny wątek.
Yellon
14.06.2017
No ja skopiowałem to z tych twoich rang nawet nie zwracałem na to uwagi tylko zająłem się hudem i sprite
A tak ogólnie to jak one ci się dokładnie zmieniają ?
Sprawdz może to bd działać.
Załączone pliki
Użytkownik Yellon edytował ten post 14.06.2017 18:44
d0naciak
14.06.2017
To że plugin jest w cholerę nieoptymalny swoją drogą, ale nie działa m.in. dlatego że po 1. get_user_stats z tego co mi wiadomo nie zmienia na bieżąco fragów w rankingu, tylko co rundę jak nie lepiej (sam nie wiem dokładnie, raz próbowałem zmieniać wczytywać co zabójstwo i lipa). Druga sprawa to sprawdzanie czy awansował - nie klej się kupy, przeanalizuj dokładnie:
@edit i **** w pizde strzelił, napisałem już chyba można to nazwać referatem pod [.code] co tutaj jest źle, a było po prostu o czym pisać, to mi się usunęło, poprawcie to w końcu
To co napisałem wyżej to tylko garstka błędów w tym pluginie, ale one pierwsze rzucają mi się w oczy.
@edit2 nawet ta wersja z while nie zadziała, to else działa tak: nie możesz awansować? spadek
if((kdratio[target] >= liczby[ranga[target]]) && (stats[0] >= rangi[ranga[target]][0]) && ranga[target] < limit) ranga[target]++ else if(kdratio[target] < liczby[ranga[target]] || stats[0] < rangi[ranga[target]][0]) { if(ranga[target] > limit_min) ranga[target]-- }
SopeleQ1337
15.06.2017
Oke jakoś to ogarnę. Wszyscy dostają po plusie i można zamknąć temat