Wstęp wróć↵
Flagi gracza: wróć↵
W pliku "amxconst.inc"
Spoiler
Dodatkowo przydatny będzie ten temat -> http://amxx.pl/topic/60353-flagi/
Wywołanie funkcji komendą: wróć↵
Potrzebne/użyte funkcje:
- register_clcmd
register_clcmd(const client_cmd[], const function[], flags = -1, info[] = "");
client_cmd[] - komenda która musi zostać wpisana w konsoli gracza
function[] - nazwa funkcji która zostanie uruchomiona (musi to być funkcja publiczna)
flags - flagi dostępu
info - opis funkcji - lub register_concmd
register_concmd(const cmd[], const function[], flags = -1, info[] = "");
cmd[] - komenda która musi zostać wpisana w konsoli gracza lub w konsoli serwera
function[] - nazwa funkcji która zostanie uruchomiona (musi to być funkcja publiczna)
flags - flagi dostępu
info - opis funkcji - client_print
- do wyświetlenia tekstu u gracza
client_print(index, type, const message[], any:...);
index - id gracza
type - typ wiadomości
print_chat - wiadomość na czacie
message[] - wiadomość
print_center - na środku ekranu
print_console - w konsoli
print_notify - w konsoli w trybie developerskim
any:... - ciągi formatujące - cmd_access
- do sprawdzania praw dostępu do funkcji, która jest wywoływana komendą
cmd_access(id, level, cid, num, bool:accesssilent = false);
id - indeks gracza wywołującego komendę
level - poziom dostępu
cid - identyfikator komendy
num - ilość parametrów razem z komendą (gdy brak parametrów podajemy 1)
accesssilent - opcjonalny, jeśli podasz true, to komunikaty z błędami nie będą pokazywane
Spoiler
Formatowanie tekstu: wróć↵
^n - nowa linia
^t - odstęp, inaczej tabulator (różniący się od spacji)
\w - dalszy tekst będzie miał kolor biały
\y - dalszy tekst będzie miał kolor zółty
\r - dalszy tekst będzie miał kolor czerwony
\d - dalszy tekst będzie miał kolor szary
\R - dalszy tekst będzie wyrównany do prawej
Do formatowania tekstu (nie tylko w menu), można używać format


Definicje klawiszy: wróć↵
W pliku "amxconst.inc"
Spoiler
Użycie switcha: wróć↵
Warto używać, szczególnie gdy w menu (i nie tylko) mamy dużo opcji.
Przykład:
Spoiler
Stare menu wróć↵
Do stworzenia starego menu, potrzebujemy:
- register_menucmd
register_menucmd(menuid, keys, const function[]);
menuid - id naszego menu, które tworzy się za pomocą "register_menuid"
keys - jakie klawisze ma rozpoznawać nasze menu, liczba 1023 jest dla wszystkich (od 1 do 0)
function[] - nazwa funkcji w której pokazujemy menu - register_menuid
register_menuid(const menu[], outside = 0);
menu[] - nazwa menu
outside - zamieniamy na 1, gdy menu jest z innego źródła, np. inny plugin - show_menu
show_menu(index, keys, const menu[], time = -1, const title[] = "");
index - id gracza
keys - jakie klawisze ma rozpoznawać nasze menu, liczba 1023 jest dla wszystkich (od 1 do 0)
menu[] - treść menu
time - czas (w sekundach) wyświetlania menu, -1 oznacza, że menu zamknie się dopiero, gdy gracz naciśnie jakiś dostępny klawisz
title[] - nazwa menu - Jest jeszcze register_menu
, ale ja nigdy z tego nie korzystałem, więc nie będę teraz tej funkcji opisywał.
Spoiler
Nowe menu wróć↵
Do stworzenia nowego menu, potrzebujemy:
- menu_create
- tworzenie menu oraz jego uchwytu
menu_create(const title[], const handler[], ml = 0);
title[] - nazwa menu oraz jego nagłówek gdy MPROP_TITLE nie ustawione
handler[] - nazwa funkcji do której będą przekazywane informacje (musi to być funkcja publiczna)
ml - nie trzeba podawać - menu_makecallback
- tworzenie funkcji kontrolnej
menu_makecallback(const function[]);
function[] - nazwa funkcji kontrolnej (musi to być funkcja publiczna), w dalszej części będzie to bardziej opisane - menu_additem
- dodawania opcji
menu_additem(menu, const name[], const info[] = "", paccess = 0, callback = -1);
menu - uchwyt stworzonego wcześniej menu
name[] - nazwa dodawanej opcji
info[] - dodatkowe informacje, które można przekazać do menu
paccess - flagi dostępu do danej opcji, w dalszej części będzie to bardziej opisane
callback - funkcja kontrolna, w dalszej części będzie to bardziej opisane - menu_setprop
- konfiguracja menu
menu_setprop(menu, prop, ...);
menu - uchwyt stworzonego wcześniej menu
prop - opcja z listy (plik "newmenus.inc"):
#define MPROP_PERPAGE 1 /* Liczba opcji na stronę (param1 = liczba, 0=bez stronnicowania, 7=domyślnie oraz maksymalnie) */
#define MPROP_BACKNAME 2 /* Nazwa opcji Back/Wstecz (param1 = tekst) */
#define MPROP_NEXTNAME 3 /* Nazwa opcji Next/Dalej (param1 = tekst) */
#define MPROP_EXITNAME 4 /* Nazwa opcji Exit/Wyjście (param1 = tekst) */
#define MPROP_TITLE 5 /* Nagłówek menu (param1 = tekst) */
#define MPROP_EXIT 6 /* Opcja wyjścia? (param1 = liczba, MEXIT_ALL - zawsze, MEXIT_NEVER - nidgy) */
#define MPROP_NOCOLORS 8 /* Czy usunąć automatyczne kolory(param1 = liczba, 0=domyślnie) */
#define MPROP_NUMBER_COLOR 10 /* Kolor numerów opcji (param1 = tekst, "\r"=domyślny) */
... - wartość wybranej opcji - menu_display
- wyświetlenie menu
menu_display(id, menu, page = 0);
id - id gracza
menu - uchwyt stworzonego wcześniej menu
page - strona w menu, którą ma wyświetlić jako pierwszą - menu_destroy
- niszczenie menu
menu_destroy(menu);
menu - uchwyt stworzonego wcześniej menu - menu_item_getinfo
- pobieranie informacji z menu (nie do końca opisane)
menu_item_getinfo(menu, item, &access, info[], infolen, name[] = "", namelen = 0, &callback);
menu - uchwyt stworzonego wcześniej menu
item - podajemy numer opcji z menu (zaczyna się od 0)
access - flagi dostępu do danej opcji
info[] - dodatkowe informacje danej opcji
infolen - maksymalna długość tablicy info[]
name[] - nazwa danej opcji
namelen - maksymalna długość tablicy name[]
callback - ? (chyba id/uchwyt z funkcji "menu_makecallback")
Gdy menu jest zawsze takie same dla każdego gracza, wystarczy utworzyć je tylko raz
Spoiler
Gdy menu zmienia się, czyli nie jest ciągle takie same, wtedy trzeba tworzyć je oraz niszczyć za każdym razem (z wykorzystaniem get_user_team

Spoiler
Przykład wykorzystania menu_item_getinfo





Spoiler
Funkcja kontrolna: wróć↵
Każda opcja w menu może mieć swoją funkcję kontrolną, która może ją włączyć lub wyłączyć.
Do tworzenia funkcji kontrolnej wykorzystujemy menu_makecallback

Przykład:
Spoiler
Przykłady menu na flagę wróć↵
Zarówno w starym menu, jak i nowym można ograniczać dostęp albo do całego menu, albo do poszczególnych opcji w menu. Poniżej będzie to pokazane w obu stylach menu.
W starym menu wróć↵
Blokowanie całego menu, gdy można je wywołać tylko poprzez komendę
Spoiler
Blokowanie całego menu, gdy można je wywołać nie tylko poprzez komendę, np. menu wyświetla się także przy spawnie
Spoiler
Blokowanie opcji w menu po wciśnięciu klawisza (czyli bez blokowania klawiszy)
Spoiler
Blokowanie opcji w menu przed wciśnięciem klawisza (czyli z blokowaniem klawiszy)
Spoiler
W nowym menu wróć↵
Blokowanie całego menu, gdy można je wywołać tylko poprzez komendę
Spoiler
Blokowanie całego menu, gdy można je wywołać nie tylko poprzez komendę, np. menu wyświetla się także przy spawnie
Spoiler
Blokowanie opcji w menu po wciśnięciu klawisza
Spoiler
Blokowanie opcji w menu przed wciśnięciem klawisza
Spoiler
Można jeszcze daną opcję dodawać na flagę przy użyciu menu_makecallback

Paczka pluginów użytych w tym poradniku:

No i tym sposobem doszliśmy do końca ;]
Wróć na początek↵