Teoretycznie HUDu nie da się zrobić w kilku kolorach, ale w praktyce, jeśli ktoś ruszy głową i dobrze pomyśli, to można to obejść. Można osiągnąć efekt wielu kolorów poprzez użycie kilku osobnych HUDów. Maksymalnie na ekranie można wyświetlić 4 HUDy przy użyciu funkcji show_hudmessage.
Praktycznie i teoretycznie nie da się zrobić żeby jeden obiekt hud był w kilku kolorach, a co do dzielenia na kilka obiektów hud. Powodzenia w zarządzaniu czymś takim. W typowych pluginach typu hud zajmujesz cały czas kanały, więc przy większych modach (więcej obiektów hud) po prostu wiadomości nie będą się wyświetlać czy w inny sposób będą się bugować.
Tutaj trzymaj na szybko coś wykombinowane oraz z wyczyszczonym kodem, nie wiem nawet czy działa bo dawno już w amxxie nie pisałem i nie miałem gdzie tego spradzić ale sama logika działania powinna być git nawet jakbyś chciał coś po swojemu pokombinować to już masz rozpisane jak to zrobić.
Nie będzie to działać. W tym przypadku class_perk_message będzie nadpisywać hud_message w przypadku, gdy cod_get_user_class_id będzie prawdą, więc będzie tylko pokazywać się jedna rzecz.
#include <amxmodx> #include <amxmisc> #define PLUGIN "Multi HUD" #define VERSION "1.0.0" #define AUTHOR "Boski Z Polski" new hud1, hud2, hud3, hud4, hud5; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); hud1 = CreateHudSyncObj(); hud2 = CreateHudSyncObj(); hud3 = CreateHudSyncObj(); hud4 = CreateHudSyncObj(); hud5 = CreateHudSyncObj(); } public client_putinserver(index) { set_task(1.0, "showHud", index, .flags="b"); } public client_disconnected(index) { remove_task(index); } public showHud(index) { new name[33]; get_user_name(index, name, 32); set_hudmessage(255, 0, 0, 0.01, 0.20, 0, 6.0, 12.0); ShowSyncHudMsg(index, hud1, "NAME1: %s", name); set_hudmessage(0, 255, 0, 0.01, 0.20, 0, 6.0, 12.0); ShowSyncHudMsg(index, hud2, "^nNAME2: %s", name); set_hudmessage(0, 0, 255, 0.01, 0.20, 0, 6.0, 12.0); ShowSyncHudMsg(index, hud3, "^n^nNAME3: %s", name); set_hudmessage(255, 255, 0, 0.01, 0.20, 0, 6.0, 12.0); ShowSyncHudMsg(index, hud4, "^n^n^nNAME4: %s", name); set_hudmessage(0, 255, 255, 0.01, 0.20, 0, 6.0, 12.0); ShowSyncHudMsg(index, hud5, "^n^n^n^nNAME5: %s", name); }
Rezultat:
jeden obiekt HUD się nie będzie wyświetlać bo wszystkie kanały zajęte czytaj rzeczy takie jak wiadomości z immesage, pokazywanie obrażeń (standard plugin abd) nie będą po prostu działać (nie będą się wyświetlać albo tak jak na powyższym przykładzie, coś sobie zniknie). Jeżeli kogoś będzie satysfakcjonować takie rozwiązanie to tak, w pierwszym poście źle napisałem.
Boski jest ten świat ukłony dla PANA
Robię ukłon do podłogi