Może mi ktoś wytłumaczyć jak zrobić HUD, z różnymi statystykami(forum, hp, vip etc.) tylko nie chciałbym gotowca, a kod(najlepiej z opisami).
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|

Jak zrobić HUD

Najlepsza odpowiedź Kot-CSHH, 31.07.2013 07:36
Kot masz tu wszystko dodane masz:
Nie dodam amxx problem mam:/
Sam dałem radę zrobić. Dzięki wszystkim za pomoc, oczywiście + dla każdego

#2
Napisano 29.07.2013 12:28
W amxx-studio masz hud generator. Później do opisu dodajesz np "mam %d hp", zmienna od hp np. get_user_health(id)
set_hudmessage(255, 0, 0, 0.0, 0.0, 0, 6.0, 12.0) show_hudmessage(id, "asdfasdfasdf %d", get_user_health(id))
Może coś takiego
#3
Napisano 29.07.2013 12:52
W amxx-studio masz hud generator. Później do opisu dodajesz np "mam %d hp", zmienna od hp np. get_user_health(id)
set_hudmessage(255, 0, 0, 0.0, 0.0, 0, 6.0, 12.0) show_hudmessage(id, "asdfasdfasdf %d", get_user_health(id))Może coś takiego
O tym już wcześniej wiedziałem, ale ja chcę wiedzieć, jak to połączyć z tym, ze gdy gracz wejdzie na serwer to od razu będą mu się wyświetlać te informacje
#4
Napisano 29.07.2013 14:39
Od razu jak wejdzie i dojdzie do gry, czy nawet jak będzie dead ( na spectatorze )?
#5
Napisano 29.07.2013 20:38
Dobra, na razie wykombinowałem coś takiego:
#include <amxmodx> #include <amxmisc> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "author" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_concmd("say /hud","Hud") } public Hud(id) { set_hudmessage(0, 160, 0, 0.75, 0.25, 0, 6.0, 12.0) show_hudmessage(id, sync, "[Forum: CS-HH.PL]^n[HP: %d]^n[VIP: %d]^n", get_user_health(id), get_user_flags(id) & ADMIN_LEVEL_H ? "Tak" : "Nie"); }
ale chciałbym jeszcze dodać odświeżanie, no i żeby HUD działał od razu, a nie poprzez komendę.
#6
Napisano 29.07.2013 21:01
Był błąd czy dwa, więc poprawiłem. Nie sprawdzałem czy działa.
#include <amxmodx> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "author" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) //rejestrujesz poczatek rundy i mowisz jaka funkcja ma byc wtedy wykonana register_logevent("nowa_runda", 2, "0=World triggered", "1=Round_Start") } public nowa_runda() { //tworzysz petle, aby funkcja byla wykonana dla kazdego z graczy na serwerze for(new i=1; i<=get_maxplayers(); i++) { if(is_user_connected(i) && is_user_alive(i)) { Hud(i); } } } public Hud(id) { //sprawdzasz czy gracz jest zywy, aby nie wyswietlac huda martwym osobom if(is_user_alive(id)) { set_hudmessage(0, 160, 0, 0.75, 0.25, 0, 6.0, 1.0) show_hudmessage(id, "[Forum: CS-HH.PL]^n[HP: %d]^n[VIP: %d]^n", get_user_health(id), get_user_flags(id) & ADMIN_LEVEL_H ? "Tak" : "Nie"); //tworzysz taska, aby hud sie odswiezal (pojawial zaraz po zniknieciu poprzedniego) set_task(1.0, "Hud"); } }
#8
Napisano 29.07.2013 21:29
Chcesz człowiekowi pomóc, robisz to za darmo i za nie zauważenie JEDNEJ źle napisanej literki dostajesz minusa. To forum się kończy.
#9
Napisano 29.07.2013 21:32
Był błąd czy dwa, więc poprawiłem. Nie sprawdzałem czy działa.
#include <amxmodx> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "author" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) //rejestrujesz poczatek rundy i mowisz jaka funkcja ma byc wtedy wykonana register_logevent("nowa_runda", 2, "0=World triggered", "1=Round_Start") } public nowa_runda() { //tworzysz petle, aby funkcja byla wykonana dla kazdego z graczy na serwerze for(new i=1; i<=get_maxplayers(); i++) { if(is_user_connected(i) && is_user_alive(i)) { Hud(i); } } } public Hud(id) { //sprawdzasz czy gracz jest zywy, aby nie wyswietlac huda martwym osobom if(is_user_alive(id)) { set_hudmessage(0, 160, 0, 0.75, 0.25, 0, 6.0, 1.0) show_hudmessage(id, "[Forum: CS-HH.PL]^n[HP: %d]^n[VIP: %d]^n", get_user_health(id), get_user_flags(id) & ADMIN_LEVEL_H ? "Tak" : "Nie"); //tworzysz taska, aby hud sie odswiezal (pojawial zaraz po zniknieciu poprzedniego) set_task(1.0, "Hud"); } }
Hud się nie wyświetla gdy gracz jest żywy
[VIP: %d]na
VIP: %s]
Napis VIP robił kolega, a że działało, to nie sprawdzałem
#10
Napisano 29.07.2013 23:20
[VIP: %d]na
VIP: %s]
Srr, że double post, ale może wytłumaczysz, jak mam robić tego HUD'a. Poza tematem, to chciałbym wiedzieć, czemu dostałem od ciebie -(nie żeby mi zależało czy coś, ale tak z ciekawości, pewnie dla tego, że dałem + dla Norbiego, a + dałem, ponieważ wytłumaczył mi jak mogę dodać task'a, bo wcześniej nie wiedziałem...).
#11
Napisano 29.07.2013 23:46
Do tworzenia HUDA wykorzystaj synchronizację [jeśli masz więcej wiadomośći HUD na serwerze]:
http://amxx.pl/dokum...reateHudSyncObj
Przykład:
zmienna globalna:
new info;
w plugin_init:
info = CreateHudSyncObj();
I w publicu:
set_hudmessage(0, 160, 0, 0.75, 0.25, 0, 6.0, 1.0) ShowSyncHudMsg(0, info, "[Forum: CS-HH.PL]^n[HP: %d]^n[VIP: %d]^n", get_user_health(id), get_user_flags(id) & ADMIN_LEVEL_H ? "Tak" : "Nie");
Jeśli chcesz wyświetlać wiadomość wszystkim to chyba lepszym rozwiązaniem będzie 0 a nie id, bo wydaje mi się, że wiadomość będzie wyświetlana X razy dla każdego gracza osobno zamiast raz dla wszystkich. [tego nie jestem pewien]
Jeśli wiadomość ma się wyświetlać od razu po uruchomieniu pluginu to:
w plugin_init:
set_task(0.5, "Hud")
0.5 - czas po jakim wyświetli się hud po załadowaniu pluga
i do publica:
set_task(0.1, "Hud")
czyli odświeżanie HUD
Użytkownik Scorpion Flail edytował ten post 29.07.2013 23:48
#12
Napisano 30.07.2013 00:21
Jeśli chcesz wyświetlać wiadomość wszystkim to chyba lepszym rozwiązaniem będzie 0 a nie id, bo wydaje mi się, że wiadomość będzie wyświetlana X razy dla każdego gracza osobno zamiast raz dla wszystkich. [tego nie jestem pewien]
Mylisz się,
A czy gracz o id 0 - to nie jest czasem serwer
Gracz wbijący na serwer dostaje Id (od 1 do 32 - Dlatego for zaczyna się od 1 i musi być mniejszy od 33) Wpisz status i pierwsza liczba to ID. Brak Zera - zero to nie gracz.Od siebie dodam żeby było jasne, "0" to serwer.
Co do samego tematu zastosowałbym zamiast HudSyncObj Director Hud Message ale przykład dam rano bo teraz nie mam dostępu do kompilatora ani edytora żeby sklejać plugin
Użytkownik playaz44 edytował ten post 30.07.2013 00:28
1:0 dla BeniaW odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

Nie pomagam za darmo na pw.
#13
Napisano 30.07.2013 00:28
Hmm, sugerowałem się ColorChatem, w którym 0 = wiadomość dla wszystkich
Mój błąd polega na tym, że on pobiera informacje danego usera, tak? Gdyby wyświetlał zwykłą wiadomość, bez pobierania nicku gracza itd, to 0 byłoby poprawne?
#15
Napisano 30.07.2013 00:34
Wszystko co napisałem było poprawne, tylko zamiast 0 użyj id.
A jeśli chodzi o get_user name to powinno być tak:
[Nick: %s], get_user_name(id)
#16
Napisano 30.07.2013 00:45
Wszystko co napisałem było poprawne, tylko zamiast 0 użyj id.
A jeśli chodzi o get_user name to powinno być tak:
[Nick: %s], get_user_name(id)
Miałem takie coś
set_hudmessage(0, 160, 0, 0.75, 0.25, 0, 6.0, 1.0) ShowSyncHudMsg(0, info, "[Forum: CS-HH.PL]^n[Nick: %s]^n[HP: %d]^n[VIP: %d]^n", get_user_name(id), get_user_health(id), get_user_flags(id) & ADMIN_LEVEL_H ? "Tak" : "Nie");
i pokazywało tak:
[Forum: CS-HH.PL]
[Nick: ]
[HP: 100]
[VIP: Tak]
#17
Napisano 30.07.2013 00:56
Hmm, sugerowałem się ColorChatem, w którym 0 = wiadomość dla wszystkich
Mój błąd polega na tym, że on pobiera informacje danego usera, tak? Gdyby wyświetlał zwykłą wiadomość, bez pobierania nicku gracza itd, to 0 byłoby poprawne?
Tak, "0" wyświetli wiadomość dla wszystkich i jest tak jak piszesz, przykładowo w codmodzie są "dwa hudy", jeden z "id" do wyświetlania na przykład aktualnego hp graczowi który żyje i gra, a drugi dla obserwatora też "id" żeby wyświetlało hp aktualnie oglądanego gracza.
Ale można też zrobić żeby wyświetliło hp danego gracza "id" wszystkim na serwerze za pomocą "0" ale to mija się z celem tematu (taki właśnie kod wyżej podałeś)
1:0 dla BeniaW odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

Nie pomagam za darmo na pw.
#18
Napisano 30.07.2013 01:01
Wszystko co napisałem było poprawne, tylko zamiast 0 użyj id.
A jeśli chodzi o get_user name to powinno być tak:
[Nick: %s], get_user_name(id)
Miałem takie cośset_hudmessage(0, 160, 0, 0.75, 0.25, 0, 6.0, 1.0) ShowSyncHudMsg(0, info, "[Forum: CS-HH.PL]^n[Nick: %s]^n[HP: %d]^n[VIP: %d]^n", get_user_name(id), get_user_health(id), get_user_flags(id) & ADMIN_LEVEL_H ? "Tak" : "Nie");i pokazywało tak:
[Forum: CS-HH.PL]
[Nick: ]
[HP: 100]
[VIP: Tak]
Zamiast tego
set_hudmessage(0, 160, 0, 0.75, 0.25, 0, 6.0, 1.0) ShowSyncHudMsg(0, info, "[Forum: CS-HH.PL]^n[Nick: %s]^n[HP: %d]^n[VIP: %d]^n", get_user_name(id), get_user_health(id), get_user_flags(id) & ADMIN_LEVEL_H ? "Tak" : "Nie");Zrób tak:
new nick[33]; get_user_name(id, nick, 32); set_hudmessage(0, 160, 0, 0.75, 0.25, 0, 6.0, 1.0) ShowSyncHudMsg(id, info, "[Forum: CS-HH.PL]^n[Nick: %s]^n[HP: %d]^n[VIP: %d]^n", nick, get_user_health(id), get_user_flags(id) & ADMIN_LEVEL_H ? "Tak" : "Nie");
Użytkownik playaz44 edytował ten post 30.07.2013 01:01
1:0 dla BeniaW odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

Nie pomagam za darmo na pw.
#20
Napisano 30.07.2013 01:51
zamiast Tak lub Nie przy VIP pisze 84
Ponieważ nikt nie zauważył, że zamiast "%s" do wyświetlania liter było "%d" do wyświetlania liczb
Nadal HUD się nie pokazuje po respawnie
Użyłem do tego modułu "hamsandwich" i już nie powinno być problemu
#include <amxmodx> #include <hamsandwich> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "author" new info; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) //rejestrujesz respawn gracza i mowisz jaka funkcja ma byc wtedy wykonana RegisterHam(Ham_Spawn, "player", "nowa_runda", 1); info = CreateHudSyncObj(); } public nowa_runda(id) { if(is_user_connected(id) || is_user_alive(id)) Hud(id); return PLUGIN_CONTINUE; } public Hud(id) { //sprawdzasz czy gracz jest zywy, aby nie wyswietlac huda martwym osobom if(is_user_alive(id)) { new nick[33]; get_user_name(id, nick, 32); set_hudmessage(0, 160, 0, 0.75, 0.25, 0, 6.0, 1.0) ShowSyncHudMsg(id, info, "[Forum: CS-HH.PL]^n[Nick: %s]^n[HP: %d]^n[VIP: %s]^n", nick, get_user_health(id), get_user_flags(id) & ADMIN_LEVEL_H ? "Tak" : "Nie"); } }
Użytkownik playaz44 edytował ten post 30.07.2013 01:54
1:0 dla BeniaW odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

Nie pomagam za darmo na pw.
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych