
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 153 Ilość pobrań
FiliColorMenu.amxx


Dodatki SourceMod















