Sistem nou de meniu amxx - comunitate rusă pentru scriere amxx

Acest articol descrie și prezintă exemple de creare a unui nou meniu de joc prin AMX Mod X.
  • Dacă creați un meniu al cărui opțiuni nu se schimbă (permanent), atunci este cel mai bine să îl creați ca unul global. Nu este nevoie să o distrugeți și să o recreați de mai multe ori.
  • Dacă trebuie să aliniați textul din meniu spre dreapta, utilizați \ R.
  • Meniul nu va fi afișat dacă nu are opțiuni.
  • Pentru a ascunde afișarea meniului de pe player pe ecran, puteți folosi codul:






    Cod: Selectați toate show_menu (id 0. "^ n" 1)
  • Lista culorilor care pot fi folosite la crearea meniurilor:
    • Alb - \ w
    • Galben - \ y
    • Roșu -
    • Gri - \ d

funcţii:
  • Crearea unui meniu
    Cod: Selectați toate meniu_create (titlu # 91; # 93; manipulator # 93; # 93; ml = 0)
    titlu - titlul meniului care este afișat din partea de sus.
    handler - funcția cu care interacțiunea va avea loc când una dintre opțiuni a fost apăsată.
    ml - utilizați mai multe limbi atunci când creați meniuri.
  • Adăugarea unei opțiuni de meniu
    Cod: Selectați toate meniurile_additem (meniul # 91; # 93 ;, const comanda # 91; # 93; paccess = 0. apel invers = - 1)
    meniu - meniul cu care vom interacționa.
    nume - numele opțiunii de meniu (numerotarea este automată).
    comandă - informațiile pe care le trimitem când se utilizează această opțiune.
    paccess - nivelul accesului la această opțiune (steagul administratorului).
    inversarea apelului - dacă această opțiune este setată (aceasta ar trebui să fie rezultatul funcției menu_makecallback), va apela funcția până la afișarea opțiunii, ceea ce va permite schimbarea opțiunii în timp real.
  • Setați proprietățile meniului
    Cod: Selectați toate meniul_setprop (meniu.pro.)
    meniu - meniul cu care vom interacționa.
    prop este proprietatea meniului.
  • Afișarea meniului
    Cod: Selectați toate meniurile_display (pagina de meniu id)
    id este indexul jucatorului care trebuie sa afiseze meniul.
    - meniul pe care doriți să îl afișați.
    pagina - pagina din meniul din care începe afișarea.
  • Distrugerea meniului
    Cod: Selectați toate meniul_destroy (meniu)
    meniu - meniul care urmează să fie distrus. După apelarea acestei funcții, trebuie să utilizați PLUGIN_HANDLED întoarcere.
  • Obținerea de informații despre opțiunea de meniu
    Cod: Selectați toate meniul_item_getinfo (meniul. acces. comandă # 91; # 93; cmdlen. nume # 91; # 93; = "". namelen = 0. apel invers)

    meniu - meniul din care doriți să obțineți informații.
    este o opțiune pentru a obține informații despre.
    acces - nivelul de acces pentru opțiunea specificată.
    comandă - datele transmise prin această opțiune.
    cmdlen este lungimea datelor.
    numele este numele opțiunii de meniu.
    namelen este lungimea numelui.
    inversarea apelului este valoarea callback-ului.
  • Adăugați o opțiune goală (spațiu)
    Cod: Selectați toate meniurile_addblank (meniu Slot = 1)
    - meniul cu care doriți să efectuați acțiunea.
    slot - dacă valoarea este mai mare decât 0, crește numărul de spații într-un anumit număr de ori.
    Poate fi folosit numai după meniu_additem.
  • Anulați meniul playerului
    Cod: Selectați toate meniu_cancel (player)
    player - jucătorul care trebuie să anuleze acțiunea din meniu, meniul va rămâne pe ecranul jucătorului, dar orice acțiune va fi anulată.
  • Numărul de opțiuni din meniu
    Cod: Selectați toate meniurile (meniu)
    meniu - meniul, care trebuie să obțină numărul de opțiuni.
  • Numărul de pagini din meniu
    Cod: Selectați toate meniurile (meniu)
    meniu - meniul de care aveți nevoie pentru a obține numărul de pagini.
  • Setați apelul invers la opțiunea de meniu
    Cod: Selectați toate meniu_item_setcall (meniu.
    meniul este meniul cu care are loc interacțiunea.
    este opțiunea de meniu.
    inversarea apelului este valoarea pentru apelul invers.
  • Setați comanda la opțiunea de meniu
    Cod: Selectați toate meniu_item_setcmd (meniu. Item.cmd # 91; # 93;)
    meniul este meniul cu care are loc interacțiunea.
    este opțiunea de meniu.
    cmd este o comandă de opțiune.
  • Setați numele opțiunii de meniu
    Cod: Selectați toate numele meniu_item_set (meniu # 91; # 93;)
    meniul este meniul cu care are loc interacțiunea.
    este opțiunea de meniu.
    numele este numele opțiunii.
  • Crearea unei funcții de apel invers
    Cod: Selectați toate meniul_makecallback (funcția # 91; # 93;)
    funcția - numele funcției pentru apelul invers.
    Această funcție transmite argumentele id-ului jucătorului, id-ul meniului și id-ul opțiunii:
    Cod: Selectați toate funcțiile publice (Meniu id.
    Funcția poate returna următoarele valori: ITEM_IGNORE, ITEM_ENABLED sau ITEM_DISABLED.

Crearea unui meniu de bază (exemplu de bază)
Cod: Selectați toate #include

public plugin_init ()
// Datele pluginului

// Comanda clientului pentru a apela meniul
register_clcmd ("my_menu". "My_Menu")
>

// Creați funcția care va crea meniul
public My_Menu (id)
// În primul rând, trebuie să creăm o variabilă pentru meniu, cu care vom interacționa în viitor
noul i_Menu = menu_create ("\ rTitlul meniului meu:". "menu_handler")

// Acum adăugați câteva opțiuni pentru meniu
menu_additem (i_Menu. "\ wFirst opțiune # 1." "1." 0)
menu_additem (i_Menu. "\ wA doua opțiune # 2." "2." 0)
menu_additem (i_Menu. "\ wAdmin opțiunea # 3." "3." ADMIN_ADMIN)







// Setați proprietățile meniului
menu_setprop (i_Menu.MPROP_EXIT.MEXIT_ALL)

// Afișați meniul în player
meniu_display (id.i_Menu.0)
>

// Acum creăm funcția de procesare a acțiunilor din meniu
public meniu_handler (element de meniu id.)
// Dacă jucătorul apasă ieșirea din meniu
dacă (element == MENU_EXIT)
// Distrugeți meniul
menu_destroy (meniu)

// Creați acum variabilele necesare pentru a obține informații despre meniu și opțiune
nou s_Data # 91; 6 # 93; s_Name # 91; 64 # 93; i_Access. i_Callback

// Obțineți informații despre opțiune
menu_item_getinfo (meniu. element. i_Access. s_Data. charsmax (s_Data), s_Name. charsmax (s_Name), i_Callback)

// Dacă vă uitați mai devreme la utilizarea meniului_additem, puteți vedea că am trimis câteva informații
// În acest caz, toate informațiile sunt un număr întreg
noul i_Key = str_to_num (s_Data)

// Acum găsiți care opțiune a fost utilizată
comutator (i_Key)
cazul 1:
client_print (id. print_chat. "Ați selectat prima opțiune")
// Distrugeți meniul
menu_destroy (meniu)
returnați PLUGIN_HANDLED
>
cazul 2:
client_print (id. print_chat. "Ați selectat a doua opțiune")
>
cazul 3:
client_print (id. print_chat. "Ați selectat opțiunea de administrare")
>
>

// Distrugeți meniul
menu_destroy (meniu)
returnați PLUGIN_HANDLED
>

Crearea unui meniu format din jucători de pe server
Cod: Selectați toate #include
#include

public plugin_init ()
// Comanda clientului pentru a apela meniul
register_clcmd ("my_menu". "My_Menu")
>

public My_Menu (id)
// În primul rând, trebuie să creăm o variabilă pentru meniu, cu care vom interacționa în viitor
noul i_Menu = menu_create ("\ rPlayer meniu:". "menu_handler")

// Variabilele necesare de care avem nevoie când afișăm meniuri de la jucători
noi s_Playeri # 91; 32 # 93 ;, i_Num. i_Player

// Variabile pentru stocarea informațiilor despre jucători
nou s_Name # 91; 32 # 93; s_Player # 91; 10 # 93;

// Obțineți o gamă largă de jucători
get_players (s_Playeri.i_Num)

// Ciclul pentru toți jucătorii
pentru (noul i; i <
// Salvați playerul curent în i_Player
i_Player = s_Playeri # 91; eu # 93;

// Obține numele și ID-ul jucătorului
get_user_name (i_Player.s_Name.charsmax (s_Name))
num_to_str (i_Player.s_Player.charsmax (s_Player))

// Adăugați o opțiune pentru acest jucător
menu_additem (i_Menu.s_Name.s_Player.0)

// Am creat un meniu de jucători prezenți pe server, acum îl afișăm
meniu_display (id.i_Menu.0)
>

public meniu_handler (element de meniu id.)
dacă (element == MENU_EXIT)
menu_destroy (meniu)
returnați PLUGIN_HANDLED
>

nou s_Data # 91; 6 # 93; s_Name # 91; 64 # 93; i_Access. i_Callback
menu_item_getinfo (meniu. element. i_Access. s_Data. charsmax (s_Data), s_Name. charsmax (s_Name), i_Callback)

// Obțineți ID-ul playerului selectat în meniu
noul i_Player = str_to_num (s_Data)

// Verificați dacă playerul este în viață
dacă (is_user_alive (i_Player))
// Stabileste sanatatea sa la 100 CP
set_user_health (i_Player 100)

menu_destroy (meniu)
returnați PLUGIN_HANDLED
>

Crearea unui meniu pentru vot
Cod: Selectați toate #include

// Pentru a stoca meniul jocurilor
noul g_VoteMenu
// Să stocheze voturile pentru fiecare opțiune
g_Votes noi # 91; 2 # 93;
// Pentru a verifica dacă sondajul este deja în desfășurare
nou g_Votare

public plugin_init ()
register_clcmd ("start_vote". "StartVote")
>

public StartVote (id)
// Dacă sondajul este deja în desfășurare, atunci ieșim
dacă (g_Votat)
client_print (id. print_chat. "Există deja un vot.")
// Ne întoarcem PLUGIN_HANDLED astfel încât nu există o comandă necunoscută în consola playerului
returnați PLUGIN_HANDLED
>

g_VoteMenu = menu_create ("Meniu de meniu:". "menu_handler")

menu_additem (g_VoteMenu. "Opțiunea de vot 1". "0". 0)
menu_additem (g_VoteMenu. "Opțiunea de vot 2". "1" .0)

noi s_Playeri # 91; 32 # 93 ;, i_Num. i_Player
get_players (s_Playeri.i_Num)

pentru (noul i; i i_Player = s_Playeri # 91; eu # 93;

meniu_display (i_Player.g_VoteMenu.0)

// Măriți pentru a afla câți jucători votează
g_Voting ++
>

// Opriți votarea în 10 secunde
set_task (10.0. "EndVote")

public meniu_handler (element de meniu id.)
dacă (element == MENU_EXIT)
returnați PLUGIN_HANDLED

nou s_Data # 91; 6 # 93; s_Name # 91; 64 # 93; i_Access. i_Callback
menu_item_getinfo (meniu. element. i_Access. s_Data. charsmax (s_Data), s_Name. charsmax (s_Name), i_Callback)

// Obțineți informații despre opțiunea selectată
noul i_Vote = str_to_num (s_Data)

// Măriți numărul de voturi pentru această opțiune
g_Votes # 91; i_Vote # 93; ++

public EndVote ()
// Dacă prima opțiune are mai multe voturi decât a doua opțiune
dacă (g_Votes # 91; 0 G_Votes # 91; 1 # 93;)
client_print (0. print_chat. "Prima opțiune a primit majoritatea voturilor (.)" g_Votes # 91; 0 # 93;)
// În caz contrar, dacă a doua opțiune are mai multe voturi decât prima opțiune
altfel dacă (g_Votes # 91; 1 G_Votes # 91; 0 # 93;)
client_print (0. print_chat. "A doua opțiune a primit majoritatea voturilor (.)". g_Votes # 91; 1 # 93;)
// În caz contrar numărul egal de voturi
altfel
client_print (0. print_chat. "Votul va fi votat la fiecare vot" # 91; 0 # 93;)

// Resetați informațiile pe care le votează jucătorii
g_Voting = 0
>

Crearea meniurilor utilizând submeniuri
Cod: Selectați toate #include

public plugin_init ()
register_clcmd ("my_menu". "My_Menu")
>

public My_Menu (id)
noul i_Menu = menu_create ("\ rMu meniu:". "meniu_handler")

menu_additem (i_Menu. "\ wFirst opțiune # 1." "1." 0)
menu_additem (i_Menu. "\ wSub-Meniu # 2." "2." 0)

menu_setprop (i_Menu.MPROP_EXIT.MEXIT_ALL)
meniu_display (id.i_Menu.0)
>

public meniu_handler (element de meniu id.)
dacă (element == MENU_EXIT)
menu_destroy (meniu)
returnați PLUGIN_HANDLED
>

nou s_Data # 91; 6 # 93; s_Name # 91; 64 # 93; i_Access. i_Callback
meniu_item_getinfo (meniu, item.i_Access.s_Data.charsmax (s_Data), s_Name.charsmax (s_Name), i_Callback)

noul i_Key = str_to_num (s_Data)

comutator (i_Key)
cazul 1:
client_print (id. print_chat. "Ați selectat prima opțiune")
>
cazul 2:
// Deschideți submeniul
Sub_Menu (id)
>
>

menu_destroy (meniu)
returnați PLUGIN_HANDLED
>

public Sub_Menu (id)
// Creați un nou meniu, dar funcția de procesare a acțiunii va fi diferită
noul i_Menu = menu_create ("\ rSub-Meniu:". "submenu_handler")

menu_additem (i_Menu. "\ wSub-opțiunea # 1." "1." 0)
menu_additem (i_Menu. "\ wSub-opțiunea # 2." "2." 0)

menu_setprop (i_Menu.MPROP_EXIT.MEXIT_ALL)
meniu_display (id.i_Menu.0)
>

public submenu_handler (meniu de meniu id.)
dacă (element == MENU_EXIT)
menu_destroy (meniu)

// Dacă playerul se află pe server, vom afișa meniul principal
dacă (is_user_connected (id))
My_Menu (id)

nou s_Data # 91; 6 # 93; s_Name # 91; 64 # 93; i_Access. i_Callback
meniu_item_getinfo (meniu, item.i_Access.s_Data.charsmax (s_Data), s_Name.charsmax (s_Name), i_Callback)

noul i_Key = str_to_num (s_Data)

comutator (i_Key)
cazul 1:
client_print (id. print_chat. "Ați selectat prima sub-opțiune")
>
cazul 2:
client_print (id. print_chat. "Ați selectat a doua sub-opțiune")
>
>

// Dacă doriți să afișați meniul principal atunci
My_Menu (id)

Nu-mi scrie în droguri. dacă aveți nevoie de ajutor în mod gratuit. Orice întrebări pe forum.







Trimiteți-le prietenilor: