←  Gotowe funkcje

AMXX.pl: Support AMX Mod X i SourceMod

»

Color Menu - 16 777 216 możliwych kolorów

  • +
  • -
Fili:P's Photo Fili:P 24.11.2012

opis
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 ).

screenshot
Posted Image

inne informacje
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.

download
Attached File  FiliColorMenu.sma   5.63KB   134 downloads
Quote

  • +
  • -
QuahodronN's Photo QuahodronN 24.11.2012

Dzięki za udostępnienie :)
Quote

  • +
  • -
Pan PrO's Photo Pan PrO 24.11.2012

Dobra robota
Quote

  • +
  • -
Krytykiewicz's Photo 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.
Quote

  • +
  • -
Fili:P's Photo Fili:P 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.

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.
Quote

  • +
  • -
Nestea****Lemon's Photo Nestea****Lemon 24.11.2012

Bardzo przydatne , na pewno wykorzystam to w jakimś pluginie lub modzie :)
Quote

  • +
  • -
ToRRent's Photo ToRRent 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.

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.


Zawsze można przerobić na dHUD ^D^
Quote

  • +
  • -
Fili:P's Photo Fili:P 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.

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.


Zawsze można przerobić na dHUD ^D^

Właśnie też o tym myślałem, ale to może kiedyś :D
Quote

  • +
  • -
speedkill's Photo speedkill 25.11.2012

Przepraszam za brzydki kod, ale tabulacja nie działa mi w edytorze na forum.

Kod poprawiony. Dodałem tabulację oraz teraz kod się kompiluje, brakowało trzech define ;)

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Fili:P"
Quote

  • +
  • -
Fili:P's Photo Fili:P 25.11.2012

Przepraszam za brzydki kod, ale tabulacja nie działa mi w edytorze na forum.

Kod poprawiony. Dodałem tabulację oraz teraz kod się kompiluje, brakowało trzech define ;)

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Fili:P"

Dzięki usunąłem żeby kod był krótszy, a potem zapomniałem zamienić w plugin_init :)
Quote

  • +
  • -
sebul's Photo 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.
Quote

  • +
  • -
Droso's Photo Droso 25.11.2012

Jedyny plusik tego dla mnie to ustawianie menu w dowolnej pozycji, może się komuś przyda. Kolory mnie nie obchodzą :P
Quote