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,63 KB 134 Ilość pobrań
FiliColorMenu.amxx