Dynamiczny HUD
R3X
24.08.2010
Dynamiczny HUD
dHUD.inc
v.1.03
Temat w budowie, stworzenie dokumentacji potrwa pewnie dłużej niż pisanie kodu
Tymczasem angielski opis wszystkich funkcji można znaleźć w pliku .inc
Demonstracja
Eksperymentalna biblioteka do tworzenia różnych efektów na wiadomościach HUD. Jej głównym (lecz nie jedynym) zadaniem jest zautomatyzowanie ruchu i zmian koloru wyświetlanych komunikatów.
Plugin udostępnia szereg funkcji do pracy z efektami. Podstawowe operacje odbywają się na pojedynczych klatkach animacji, jak we flashu. Tak też wyświetlana jest wiadomość - klatka po klatce - zastąpienie napisu jego kopią w innym miejscu czy kolorze stworzy wrażenie ruchu i przekształceń kolorystycznych.
Download
Instalacja
Plik dHUD.sma należy skompilować i zainstalować na serwerze. Plugin korzystający z efektów skompiluje się wyłącznie lokalnie z dostępem do dHUD.inc.
Interfejs
Wszystkie udostępniane funkcje mają prefiks DHUD_*.
Pierwsze co trzeba zrobić to stworzyć 'obiekt' dhud. DHUD_create() zwraca uchwyt, którego używa się z pozostałymi funkcjami. Można utworzyć kopię istniejącego obiektu przez podanie jego uchwytu DHUD_create(dhud) [działa to podobnie jak konstruktor kopiujący w językach obiektowych].
Animację możemy zaprojektować manualnie przypisując właściwości każdej klatce z osobna (dHUD_test -> dhud) lub użyć filtrów (dHUD_test -> dhud3).
frame - numer klatki, zaczynają się od 0, w przypadku numeru większego niż liczba dostępnych akurat klatek animacja zostaje wypełniona pustymi klatkami aż do podanego rozmiaru
iColor[3] - kolor napisu
x, y, - położenie napisu
iLen - długość klatki; w miejsce dwóch identycznych klatek z iLen=1 można dać jedną z iLen=2
Filtry służą do przetwarzania kilku klatek zgodnie z danym algorytmem.
szFilter[] - nazwa filtra, lista dostępnych jest drukowana po użyciu komendy "dhud info" przez admina z flagą od konfiguracji (H)
startFrame, endFrame - przedział klatek
dx, dy - przyrost wartości x i y, przydatne w funkcjach, funkcja realizująca filtr otrzymuje współrzędne x i y, z których może wyliczyć nowe położenie (przykład z sinusem w dHUD_test), każda ramka dostaje wartości x<poprzedniej ramki> + dx i y<poprzedniej ramki> + dy
any:.. dodatkowe parametry filtrów, opisane także w "dhud info"
Dwoma podstawowymi filtrami dHUD są SetPosition i SetColor. Dzięki nim, możemy ustawić kolor i położenie w wielu klatkach jednocześnie.
SetPosition ustawia podaną pozycję wszystkim klatkom z zakresu startFrame-endFrame
SetColor ustawia podany kolor wszystkim klatkom z zakresu startFrame-endFrame
Ten kod ustawi dhud długości 50 klatek w pozycji 0.5 0.5 w kolorze białym (255, 255, 255)
Jak już zbudujemy animację nadejdzie mement na wyświetlenie jej graczowi:
dhud - uchwyt
fInterval - długość trwania klatki w sekundach; czas od pokazania pewnej ramki do następnej mnożony przez wartość iLen klatki
channel - kanał HUD, 1-4
szMessage[], ... - wiadomość; można użyć ciągów formatujących; %L + LANG_PLAYER z id = 0 niestety nie zadziała! może w przyszłym wydaniu
Forward
W momencie zakończenia animacji wykonywany jest forward
czyli w pluginie można dopisać publiczną funkcję, która zareaguje na to zdarzenie
parametr finished jest ustawiany na true, kiedy animacja zostanie zakończona zgodnie z planem i false jeśli zostanie zatrzymana/zastąpiona nową
Historia
1.03
- poprawione: rejestrowanie filtrów z parametrami w zewnętrznych pluginach
1.02
- poprawione: pierwsza ramka wyświetlana bez opóźnienia
- poprawione: forward wykonywany dokładnie w momencie końca animacji (a nie po puszczeniu ostatniej klatki)
- dodane: ustawienie iLen na 0 usuwa klatkę z animacji
- dodane: stock DHUD_removeFrames
- dodane: stock DHUD_removeAllFrames
1.01
- poprawa interfejsu
- dodane: czyszczenie nieużywanych tablic Array:
- dodane: forward onStopAnimation
- dodane: komenda "dhud info"
1.0
- pierwsza, nie publikowana szerzej wersja
dHUD.inc
v.1.03
Temat w budowie, stworzenie dokumentacji potrwa pewnie dłużej niż pisanie kodu
Tymczasem angielski opis wszystkich funkcji można znaleźć w pliku .inc
Eksperymentalna biblioteka do tworzenia różnych efektów na wiadomościach HUD. Jej głównym (lecz nie jedynym) zadaniem jest zautomatyzowanie ruchu i zmian koloru wyświetlanych komunikatów.
Plugin udostępnia szereg funkcji do pracy z efektami. Podstawowe operacje odbywają się na pojedynczych klatkach animacji, jak we flashu. Tak też wyświetlana jest wiadomość - klatka po klatce - zastąpienie napisu jego kopią w innym miejscu czy kolorze stworzy wrażenie ruchu i przekształceń kolorystycznych.
Download
- v1.03 (zalecane)
dHUD-1.03.rar 5,94 KB
647 Ilość pobrań - v1.02
dHUD-1.02.rar 5,97 KB
240 Ilość pobrań - v1.01
dHUD.rar 5,78 KB
230 Ilość pobrań
- przykładowy kod
dHUD_test.sma 2,31 KB
546 Ilość pobrań
Instalacja
Plik dHUD.sma należy skompilować i zainstalować na serwerze. Plugin korzystający z efektów skompiluje się wyłącznie lokalnie z dostępem do dHUD.inc.
Interfejs
Wszystkie udostępniane funkcje mają prefiks DHUD_*.
Pierwsze co trzeba zrobić to stworzyć 'obiekt' dhud. DHUD_create() zwraca uchwyt, którego używa się z pozostałymi funkcjami. Można utworzyć kopię istniejącego obiektu przez podanie jego uchwytu DHUD_create(dhud) [działa to podobnie jak konstruktor kopiujący w językach obiektowych].
Animację możemy zaprojektować manualnie przypisując właściwości każdej klatce z osobna (dHUD_test -> dhud) lub użyć filtrów (dHUD_test -> dhud3).
- klatka po klatce
DHUD_setFrame(dhud, frame, iColor[3], Float:x, Float:y, iLen = 1);dhud - uchwyt
frame - numer klatki, zaczynają się od 0, w przypadku numeru większego niż liczba dostępnych akurat klatek animacja zostaje wypełniona pustymi klatkami aż do podanego rozmiaru
iColor[3] - kolor napisu
x, y, - położenie napisu
iLen - długość klatki; w miejsce dwóch identycznych klatek z iLen=1 można dać jedną z iLen=2
- filtry
Filtry służą do przetwarzania kilku klatek zgodnie z danym algorytmem.
DHUD_applyFilter(dhud, const szFilter[], startFrame, endFrame, Float:dx=D_LONG, Float:dy=D_ZERO, any:...)dhud - uchwyt
szFilter[] - nazwa filtra, lista dostępnych jest drukowana po użyciu komendy "dhud info" przez admina z flagą od konfiguracji (H)
startFrame, endFrame - przedział klatek
dx, dy - przyrost wartości x i y, przydatne w funkcjach, funkcja realizująca filtr otrzymuje współrzędne x i y, z których może wyliczyć nowe położenie (przykład z sinusem w dHUD_test), każda ramka dostaje wartości x<poprzedniej ramki> + dx i y<poprzedniej ramki> + dy
any:.. dodatkowe parametry filtrów, opisane także w "dhud info"
Dwoma podstawowymi filtrami dHUD są SetPosition i SetColor. Dzięki nim, możemy ustawić kolor i położenie w wielu klatkach jednocześnie.
SetPosition ustawia podaną pozycję wszystkim klatkom z zakresu startFrame-endFrame
SetColor ustawia podany kolor wszystkim klatkom z zakresu startFrame-endFrame
Ten kod ustawi dhud długości 50 klatek w pozycji 0.5 0.5 w kolorze białym (255, 255, 255)
DHUD_setFrame(dhud, 50, {0,0,0}, 0.0, 0.0);
DHUD_applyFilter(dhud, "SetPosition", 0, 50, D_ZERO, D_ZERO, 0.5, 0.5);
DHUD_applyFilter(dhud, "SetColor", 0, 50, D_ZERO, D_ZERO, 255, 255, 255);Jak już zbudujemy animację nadejdzie mement na wyświetlenie jej graczowi:
DHUD_display(id, dhud, Float:fInterval = 0.1, channel = 4, const szMessage[], any:...)id - id gracza lub 0 - do wszystkich
dhud - uchwyt
fInterval - długość trwania klatki w sekundach; czas od pokazania pewnej ramki do następnej mnożony przez wartość iLen klatki
channel - kanał HUD, 1-4
szMessage[], ... - wiadomość; można użyć ciągów formatujących; %L + LANG_PLAYER z id = 0 niestety nie zadziała! może w przyszłym wydaniu
Forward
W momencie zakończenia animacji wykonywany jest forward
forward fwStopAnimation(id, dhud, bool:finished);
czyli w pluginie można dopisać publiczną funkcję, która zareaguje na to zdarzenie
public fwStopAnimation(id, dhud, bool:finished){}parametr finished jest ustawiany na true, kiedy animacja zostanie zakończona zgodnie z planem i false jeśli zostanie zatrzymana/zastąpiona nową
Historia
1.03
- poprawione: rejestrowanie filtrów z parametrami w zewnętrznych pluginach
1.02
- poprawione: pierwsza ramka wyświetlana bez opóźnienia
- poprawione: forward wykonywany dokładnie w momencie końca animacji (a nie po puszczeniu ostatniej klatki)
- dodane: ustawienie iLen na 0 usuwa klatkę z animacji
- dodane: stock DHUD_removeFrames
- dodane: stock DHUD_removeAllFrames
1.01
- poprawa interfejsu
- dodane: czyszczenie nieużywanych tablic Array:
- dodane: forward onStopAnimation
- dodane: komenda "dhud info"
1.0
- pierwsza, nie publikowana szerzej wersja
Dudix
24.08.2010
Najs
Kawał dobrej, solidnej roboty
+ dla Ciebie i jeszcze dzisiaj sprobuje wytestowac
Dudix
25.08.2010
Testowalismy i musze przyznac, ze nie wyobrazalem sobie, ze to bedzie mialo tak ogromne i ciekawe mozliwosci
Juz mam kilka pomyslow co dzięki temu zrobic 
Goraco polecam!
Goraco polecam!
R3X
25.08.2010
Nagrałem niskiej jakości film z testowego pluginu, który po konwersji na używany przez YT flv robi się całkiem paskudny
Załączone pliki
R3X
29.08.2010
No to zapomniałem dopisać, że wymaga AMXX 1.8.x 
Edit.
Aktualizacja kodu do v1.02 i obszerniejszy opis
Edit.
Aktualizacja kodu do v1.03, naprawiłem spory błąd przy rejestrowaniu filtrów w innych pluginach
Edit.
Aktualizacja kodu do v1.02 i obszerniejszy opis
Edit.
Aktualizacja kodu do v1.03, naprawiłem spory błąd przy rejestrowaniu filtrów w innych pluginach
K!113r
28.03.2013
Musisz sobie edytować pliki klienta, czyli samodzielnie. A jak z poziomu serwera zrobić to u wszystkich? Na szczęście się tego tutaj nie dowiesz.





