Color Menu - 16 777 216 możliwych kolorów
Fili:P
24.11.2012
Przedstawiam zapowiadany już plugin Color Menu. Daje nam on możliwość tworzenia zupełnie nowych menu, składających się maksymalnie z 10 itemów ( 1 2 3 4 5 6 7 8 9 0 ).
Opis natywów i forwardów:
native cmenu_create( keys, title[ 256], numberstyle[ 6 ], nc1, nc2, nc3, tc1, tc2, tc3, header[ 17 ], Float:positionX, Float:positionY);
native cmenu_define_item( item_number, value[ 20 ] );
native cmenu_display( id );
native cmenu_close( id );
native cmenu_delete( );
forward cmenu_handle( id, key );
cmenu_create - rejestruje menu ( możemy zarejestrować jak na razie maksymalnie 1 menu ), wywołujemy na początku mapy ( plugin_init )
keys - zdefiniowane przyciski jak w starym menu ( np. MENU_KEY_1|MENU_KEY_2|MENU_KEY_3 )
title[ 256 ] - tablica z tytułem menu ( nie nagłówkiem ) nie będzie to widoczne dla gracza
numberstyle[ 6 ] - styl numeracji przedmiotów w menu, standardowo w nowym menu byłoby "%d."
nc1 - nasycenie koloru czerwonego w kolorze numerów menu
nc2 - nasycenie koloru zielonego w kolorze numerów menu
nc3 - nasycenie koloru niebieskiego w kolorze numerów menu ( miałem problem z przekazywaniem tablicy natywem )
tc1 - nasycenie koloru czerwonego w kolorze przedmiotów menu
tc2 - nasycenie koloru zielonego w kolorze przedmiotów menu
tc3 - nasycenie koloru niebieskiego w kolorze przedmiotów menu
header[ 17 ] - nagłówek naszego menu ( będzie miał kolor naszej numeracji )
positionX - pozycja naszego menu w osi X, czyli lewo-prawo ( ustawiamy jak HUD )
positionY - pozycja naszego menu w osi Y, czyli góra-dół ( ustawiamy jak HUD )
cmenu_define_item - definiuje wartość przedmiotu menu, polecam używać po cmenu_create
item_number - numer naszego przedmiotu ( czyli ten numerek w menu )
value[ 20 ] - wartość naszego przedmiotu
cmenu_display - wyświetla graczu menu
id - indeks gracza, któremu chcemy wyświetlić menu
cmenu_close - zamyka graczu menu
id - indeks gracza, któremu chcemy zamknąć menu
cmenu_delete - usuwa menu ( używać w plugin_end )
cmenu_handle - wywoływany w handle naszego menu, tworzymy w nim switcha, dzięki któremu mamy władze nad reakcjami po kliknięciu danego przedmiotu menu ( jak handle w starym menu )
Przykładowe menu:
#include <amxmodx> #include <amxmisc> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "Fili:P" #define KEYS MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_0 native cmenu_create( keys, title[ 256], numberstyle[ 6 ], nc1, nc2, nc3, tc1, tc2, tc3, header[ 17 ], Float:positionX, Float:positionY); native cmenu_define_item( item_number, value[ 20 ] ); native cmenu_display( id ); native cmenu_close( id ); native cmenu_delete( ); forward cmenu_handle( id, key ); public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); cmenu_create( KEYS, "MojeMenu", "%d. ", 255, 255, 255, 80, 80, 255, "Menu", 0.1, 0.5 ); cmenu_define_item( 1, "Opcja 1" ); cmenu_define_item( 2, "Opcja 2" ); cmenu_define_item( 3, "Opcja 3" ); cmenu_define_item( 0, "Wyjscie" ); register_clcmd( "say /menu", "menu" ); } public plugin_end() cmenu_delete(); public menu(id) cmenu_display( id ); public cmenu_handle( id, key ) { switch( key ) { case 0: client_print( id, print_chat, "Opcja 1" ); case 1: client_print( id, print_chat, "Opcja 2" ); case 2: client_print( id, print_chat, "Opcja 3" ); } }
Jeżeli są jakieś pytania proszę pisać w temacie, postaram się nie wszystkie skutecznie odpowiedzieć.
Ciekawostka:
Jeżeli chcesz pobawić się trochę wyglądem menu, a raczej hmm... efektem menu ( miganie ) zmieniaj wartość makrodefinicji REFRESH w FiliColorMenu.sma.
Wada:
ColorMenu zajmuje pierwszy i drugi kanał HUD.
FiliColorMenu.sma 5.63KB 134 downloads
Krytykiewicz
24.11.2012
Świetna robota, a mam takie nietypowe pytanie: jak z optymalnością? Ciekawi mnie czy to gorsze rozwiązanie od, np. nowego menu.
Edited by Krytykiewicz, 24.11.2012 16:20.
Edited by Krytykiewicz, 24.11.2012 16:20.
Fili:P
24.11.2012
Według mnie najgorszą tutaj wadą jest, to że tracimy aż 2 kanały HUD. Jednak myślę że warto, iż to menu możemy ustawić w dowolnym miejscu.Świetna robota, a mam takie nietypowe pytanie: jak z optymalnością? Ciekawi mnie czy to gorsze rozwiązanie od, np. nowego menu.
Nestea****Lemon
24.11.2012
Bardzo przydatne , na pewno wykorzystam to w jakimś pluginie lub modzie
ToRRent
24.11.2012
Według mnie najgorszą tutaj wadą jest, to że tracimy aż 2 kanały HUD. Jednak myślę że warto, iż to menu możemy ustawić w dowolnym miejscu.Świetna robota, a mam takie nietypowe pytanie: jak z optymalnością? Ciekawi mnie czy to gorsze rozwiązanie od, np. nowego menu.
Zawsze można przerobić na dHUD
Fili:P
24.11.2012
Właśnie też o tym myślałem, ale to może kiedyśWedług mnie najgorszą tutaj wadą jest, to że tracimy aż 2 kanały HUD. Jednak myślę że warto, iż to menu możemy ustawić w dowolnym miejscu.Świetna robota, a mam takie nietypowe pytanie: jak z optymalnością? Ciekawi mnie czy to gorsze rozwiązanie od, np. nowego menu.
Zawsze można przerobić na dHUD
speedkill
25.11.2012
Kod poprawiony. Dodałem tabulację oraz teraz kod się kompiluje, brakowało trzech definePrzepraszam za brzydki kod, ale tabulacja nie działa mi w edytorze na forum.
#define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "Fili:P"
Fili:P
25.11.2012
Dzięki usunąłem żeby kod był krótszy, a potem zapomniałem zamienić w plugin_initKod poprawiony. Dodałem tabulację oraz teraz kod się kompiluje, brakowało trzech definePrzepraszam za brzydki kod, ale tabulacja nie działa mi w edytorze na forum.
#define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "Fili:P"
sebul
25.11.2012
Kolorowe menu kosztem dwóch kanałów hud gdzie naraz można wyświetlić 4 wiadomości? Menu może ciekawe, ale mi do niczego potrzebne nie będzie.
Droso
25.11.2012
Jedyny plusik tego dla mnie to ustawianie menu w dowolnej pozycji, może się komuś przyda. Kolory mnie nie obchodzą