HUD w pętli i poza nią
RasiaQ
19.02.2014
Witam,
stworzyłem HUD, który pokazuje info o graczu
public PokazInformacje(id) { id -= ZADANIE_POKAZ_INFORMACJE; if(!is_user_connected(id)) { remove_task(id+ZADANIE_POKAZ_INFORMACJE); return PLUGIN_CONTINUE; } set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0); ShowSyncHudMsg(id, SyncHudObj, "[Postac : %s]^n[Doswiadczenie : %i]^n[Poziom : %i]", g_GameClasses[g_iClass[id]][ClassName], g_iEXP[id], g_iLevel[id]); return PLUGIN_CONTINUE; }
Ale później zobaczyłem coś takiego:
public Gameplay_ForceHUD() { new players[32], pnum, id get_players(players, pnum, "a") for( new i; i<pnum; i++ ) { id = players[i] if(g_iClass[id] == CLASS_YODA || g_iClass[id] == CLASS_YODA_PLUS || g_iClass[id] == CLASS_OBIWAN || g_iClass[id] == CLASS_OBIWAN_PLUS || g_iClass[id] == CLASS_SIDIUS || g_iClass[id] == CLASS_SIDIUS_PLUS || g_iClass[id] == CLASS_VADER || g_iClass[id] == CLASS_VADER_PLUS) { set_hudmessage(0, 255, 255, 0.8, 0.8, 0, 6.0, 1.0) ShowSyncHudMsg(id, g_SyncObj, "Moc : %i / %i", g_iForce[id], GAME_FORCE_MAX) } } }
I tutaj także jest wyświetlana wiadomość w HUD, tylko już w innym publicu. Da się to jakoś połączyć, żeby nie kolidowało ze sobą na ekranie ?
GwynBleidD
20.02.2014
RasiaQ
20.02.2014
Żeby nie kolidowało to znaczy? Napisy Ci migają? nakładają się na siebie? jeden z nich znika? Czy może chcesz ustawić je obok siebie, ale nie wiesz jak?
W takim ustawieniu oba będą na ekranie, tylko obawiam się, że ten HUD z pętlą będzie nachodził na mój HUD i chcę je ustawić tak, żeby na siebie nie nachodziły (nie nakładały się na siebie)
GwynBleidD
20.02.2014
Możesz np podzielić, że coś ma się wyświetlać na środku ekranu, coś z lewej, coś z prawej mniej więcej wyżej od tamtego, ale żeby wypozycjonować 2 elementy blisko siebie - nie da się...
Jeśli nie zależy Ci na tym, żeby te 2 elementy były różnego koloru, możesz je walnąć jako jeden hud, nawet jeśli są w 2ch różnych pluginach, zainteresuj się forwardami i natywami. Jeśli bardzo Ci zależy na kolorach, możesz to zrobić w postaci menu, tylko trzeba w odpowiednich momentach je ukrywać i wyzwalać, tj ukrywać gdy ktoś wejdzie w jakiekolwiek inne menu, a wyzwalać, gdy nie ma żadnego na ekranie. Masz jednak wtedy ograniczone kolory.
RasiaQ
20.02.2014
Na kolorach w ogóle mi nie zależy. Wystarczy, żeby po prostu działało.
Jeśli nie zależy Ci na tym, żeby te 2 elementy były różnego koloru, możesz je walnąć jako jeden hud, nawet jeśli są w 2ch różnych pluginach, zainteresuj się forwardami i natywami. J
To jest w silniku moda i właśnie dlatego nie wiem jak to połączyć ;x
GwynBleidD
20.02.2014
ShowSyncHudMsg(id, SyncHudObj, "[Postac : %s]^n[Doswiadczenie : %i]^n[Poziom : %i]", g_GameClasses[g_iClass[id]][ClassName], g_iEXP[id], g_iLevel[id]);na to:
new hud[256] formatex(hud, charsmax(hud),"[Postac : %s]^n[Doswiadczenie : %i]^n[Poziom : %i]", g_GameClasses[g_iClass[id]][ClassName], g_iEXP[id], g_iLevel[id]); new iRet; ExecuteForward(gFW, iRet, id, PrepareArray(hud, 256, 1), 255) ShowSyncHudMsg(id, SyncHudObj, hud)Do plugin_init dodaj:
gFW = CreateMultiForward ( "add_to_hud", ET_CONTIUNUE, FP_CELL, FP_ARRAY, FP_CELL)i zarejestruj gFW jako zmienną globalną w pluginie. W 2 pluginie robisz zamiast Twojej funkcji tak:
public add_to_hud(id, string, maxlength) if(g_iClass[id] == CLASS_YODA || g_iClass[id] == CLASS_YODA_PLUS || g_iClass[id] == CLASS_OBIWAN || g_iClass[id] == CLASS_OBIWAN_PLUS || g_iClass[id] == CLASS_SIDIUS || g_iClass[id] == CLASS_SIDIUS_PLUS || g_iClass[id] == CLASS_VADER || g_iClass[id] == CLASS_VADER_PLUS) { format(string, maxlength, "%s^nMoc : %i / %i", string, g_iForce[id], GAME_FORCE_MAX) } }Kod jest kompletnie nie testowany, powinien działać, ale czy zadziała? nie wiem, sprawdź