Új AMXX menürendszer - orosz közösség scripting AMXX

Ez a cikk ismerteti és példákat mutat létre egy új játék menüben a AMX Mod X
  • Ha létrehoz egy menüt, amely nem változtatja meg a beállításokat (állandó), akkor a legjobb, hogy hozza létre a globális. Nem kell pusztítani, és újra több alkalommal.
  • Ha nebhodimo igazítsa a szöveget a menü jobb oldalán, majd a \ R.
  • A menü nem jelenik meg, ha nincs lehetőség.
  • Annak érdekében, hogy távolítsa el a menü megjelenítése a játékos a képernyőn, akkor a kód:






    Kód: Az összes show_menu (id 0. "^ n" 1 ..)
  • A listát a színek, amelyek segítségével létrehozásakor menü:
    • White - \ w
    • Sárga - \ y
    • Piros - \ r
    • Szürke - \ d

funkciók:
  • létrehozása menük
    Kód: Egész kiválasztása menu_create (cím # 91; # 93;, felvezető # 91; # 93;, ml = 0)
    cím - a címe a megjelenő menüben a tetején.
    handler - funkció, ami kölcsönhatásba, amikor volt egy gomb megnyomásával az alábbi lehetőségek közül.
    ml - használt kialakulását többnyelvű menü.
  • Hozzáadása menüpont
    Kód: Egész kiválasztása menu_additem (menü const nevét. # 91; # 93;, const parancs # 91; # 93;, paccess = 0. visszahívási = - 1)
    menü - menü amivel kölcsönhatásba lépnek.
    neve - a név a menüpont (a számozás automatikusan történik).
    parancs - az információt, hogy küldjük el, ha ezt a lehetőséget.
    paccess - szintű hozzáférés ezt az opciót (admin zászló).
    visszahívás - ha ez az opció engedélyezve van (ez lehet az eredménye menu_makecallback funkció), akkor hívja meg a függvényt, hogy megjelenjen a lehetőségek a képernyőn, amely megadja a lehetőséget, hogy módosítsa a lehetőséget, valós időben.
  • Beállítás menü tulajdonságok
    Kód: Egész kiválasztása menu_setprop (menü prop ..)
    menü - menü amivel kölcsönhatásba lépnek.
    prop - Property menüben.
  • A menü megjelenítésével
    Kód: Egész kiválasztása menu_display (id menü oldal ..)
    id - a játékos index, amire szükségünk van, a menü megjelenítéséhez.
    menü - menü meg akar mutatni.
    oldal - menü a kijelző kezd.
  • megsemmisítés menü
    Kód: Egész kiválasztása menu_destroy (menü)
    menü - egy menüt, meg kell semmisíteni. Hívása után ez a funkció használatához szükséges visszatérés PLUGIN_HANDLED.
  • Kérjen információt a menüpontok
    Kód: Egész kiválasztása menu_item_getinfo (menüpont .. hozzáférést. parancs # 91; # 93;, cmdlen. név # 91; # 93; = "". namelen = 0. callback)

    menü - a menü, ahonnan információt szerezni.
    tétel - a lehetőséget, hogy melyik információra van szüksége.
    hozzáférés - a hozzáférési szintet a megadott opciót.
    parancs - által továbbított adatok ezt az opciót.
    cmdlen - az adatok hosszát.
    neve - a név a menüpontok.
    namelen - a név hossza.
    visszahívás - értékét visszahívás.
  • Ahhoz, hogy hozzá egy üres opció (üres)
    Kód: Egész kiválasztása menu_addblank (menü slot = 1).
    menü - menü, amely egy művelet végrehajtásához.
    slot - Ha az érték nagyobb, mint 0, akkor növeli a rések egy adott idő alatt.
    Ez csak akkor használható után menu_additem.
  • Mégsem menü Player
    Kód: Egész kiválasztása menu_cancel (játékos)
    játékos - a játékos, aki meg akarja szakítani a menüt, a menü képernyőn maradnak játékos, de minden művelet törlődik.
  • A lehetőségek száma a menü
    Kód: Egész kiválasztása menu_items (menü)
    menü - menü, ami szükséges, hogy megkapjuk a lehetőségek száma.
  • Oldalak száma a menüben
    Kód: Egész kiválasztása menu_pages (menü)
    menü - menüben, amely eléréséhez szükséges az oldalak számát.
  • Egy callback egy menüpont
    Kód: Egész kiválasztása menu_item_setcall (menüpont = callback - 1 ..)
    menü - menü, amellyel a kölcsönhatás lép fel.
    tétel - menüpont.
    Visszahívás - érték a visszahívás.
  • Állítsa be a parancsot, hogy a menüpont
    Kód: Egész kiválasztása menu_item_setcmd (menüpont cmd .. # 91; # 93;)
    menü - menü, amellyel a kölcsönhatás lép fel.
    tétel - menüpont.
    cmd - parancs lehetőségeket.
  • Állítsa be a nevét a menüpontok
    Kód: Egész kiválasztása menu_item_setname (menüpont neve .. # 91; # 93;)
    menü - menü, amellyel a kölcsönhatás lép fel.
    tétel - menüpont.
    neve - a név a lehetőséget.
  • Létrehozása visszahívási funkció
    Kód: Egész kiválasztása menu_makecallback (függvény # 91; # 93;)
    funkció - a függvény nevét a visszahívás.
    Ez a funkció halad érvek játékos id, id és id menüpont:
    Kód: Egész kiválasztása közfeladatá- (id menüpont ..)
    A funkció vissza a következő értékeket: ITEM_IGNORE, ITEM_ENABLED vagy ITEM_DISABLED.

Létrehozása az alap menüt (egyszerű példa)
Kód: Egész kiválasztása #include

nyilvános plugin_init ()
// Az adatok a bővítmény

// Az ügyfél csapat a menü megnyitásához
register_clcmd ( "my_menu". "My_Menu")
>

// Létrehozunk egy függvényt, amely generálja a menü
nyilvános My_Menu (id)
// Először létre kell hozni egy változót a menü, amely azt fogja dolgozni a jövőben
új i_Menu = menu_create ( "\ rTitle én menü:" "menu_handler".)

// Most adjunk hozzá néhány lehetőséget a menüből
menu_additem (i_Menu. "\ wFirst opció # 1". "1". 0)
menu_additem (i_Menu. "\ wSecond opció # 2", "2". 0)
menu_additem (i_Menu. "\ wAdmin opció # 3." "3". ADMIN_ADMIN)







// Állítsa be a menü tulajdonságok
menu_setprop (i_Menu. MPROP_EXIT. MEXIT_ALL)

// megjeleníti a lejátszó menüjében
menu_display (id. i_Menu. 0)
>

// Létrehozunk egy menü akciók Most dolgozzuk funkció
nyilvános menu_handler (id. menü. tétel)
// Ha a játékos megüt ki a menüből
if (elem == MENU_EXIT)
// Destruction menü
menu_destroy (menü)

// Most hozza létre a szükséges változókat, hogy információt szerezzenek a menüt, és nyomja meg az opció
új s_Data # 91; 6 # 93;, s_Name # 91; 64 # 93;, i_Access. i_Callback

// A tájékoztatás a lehetőségek
menu_item_getinfo (menü. tétel. i_Access. s_Data. charsmax (s_Data) s_Name. charsmax (s_Name) i_Callback)

// Ha megnézzük a korábbi használó menu_additem, azt látjuk, hogy az általunk küldött néhány információt
// Ebben az esetben, az összes információ - egész
új i_Key = str_to_num (s_Data)

// Most azt látjuk, hogy milyen lehetőséggel éltek
kapcsolót (i_Key)
1. eset:
client_print (id. print_chat. "Te kiválasztott első választási lehetőség")
// Destruction menü
menu_destroy (menü)
visszaút PLUGIN_HANDLED
>
2. eset:
client_print (id. print_chat. "Te választott második lehetőség")
>
3. eset:
client_print (id. print_chat. "Te választott admin lehetőség")
>
>

// Destruction menü
menu_destroy (menü)
visszaút PLUGIN_HANDLED
>

Létrehozása menü generált játékos a szerveren
Kód: Egész kiválasztása #include
#include

nyilvános plugin_init ()
// Az ügyfél csapat a menü megnyitásához
register_clcmd ( "my_menu". "My_Menu")
>

nyilvános My_Menu (id)
// Először létre kell hozni egy változót a menü, amely azt fogja dolgozni a jövőben
új i_Menu = menu_create ( "\ rPlayer menü:" "menu_handler")

// szüksége van egy változót, hogy szükség lesz a levezetés a játékosok menü
új s_Players # 91; 32 # 93;, i_Num. i_Player

// Változó információ tárolására a játékosok
új s_Name # 91; 32 # 93;, s_Player # 91; 10 # 93;

// Az tömb játékos
get_players (s_Players. i_Num)

// Áthurkolt a játékosok
az (új i; i <
// tárolja az aktuális játékos i_Player
i_Player = s_Players # 91; én # 93;

// A név és az ID a játékos
get_user_name (i_Player. s_Name. charsmax (s_Name))
num_to_str (i_Player. s_Player. charsmax (s_Player))

// hozzáadása opciót a lejátszó
menu_additem (i_Menu. s_Name. s_Player. 0)

// hoztunk létre egy menü a játékosok jelen a szerveren, most szedi
menu_display (id. i_Menu. 0)
>

nyilvános menu_handler (id. menü. tétel)
if (elem == MENU_EXIT)
menu_destroy (menü)
visszaút PLUGIN_HANDLED
>

új s_Data # 91; 6 # 93;, s_Name # 91; 64 # 93;, i_Access. i_Callback
menu_item_getinfo (menü. tétel. i_Access. s_Data. charsmax (s_Data) s_Name. charsmax (s_Name) i_Callback)

// Az azonosító a játékos, aki a menüből választható
új i_Player = str_to_num (s_Data)

// Ellenőrizze, hogy a játékos él
if (is_user_alive (i_Player))
// állítsa az egészségügyi 100 LE
set_user_health (i_Player. 100)

menu_destroy (menü)
visszaút PLUGIN_HANDLED
>

Létrehozása menü szavazásra
Kód: Egész kiválasztása #include

// tárolásához golsoovany menü
új g_VoteMenu
// tárolása a szavazatokat minden opció
új g_Votes # 91; 2 # 93;
// Annak ellenőrzésére, ha a szavazás már fut
új g_Voting

nyilvános plugin_init ()
register_clcmd ( "start_vote". "StartVote")
>

nyilvános StartVote (id)
// Ha a szavazás már fut, akkor kilép
if (g_Voting)
client_print (id. print_chat. "Már van egy szavazás lesz.")
// Visszatérünk PLUGIN_HANDLED, hogy a játékos konzol nem volt ismeretlen parancs üzenete
visszaút PLUGIN_HANDLED
>

g_VoteMenu = menu_create ( "\ rVote Menü:" "menu_handler".)

menu_additem (g_VoteMenu. "Szavazz Opció 1". "0". 0)
menu_additem (g_VoteMenu. "Szavazz Opció 2". "1". 0)

új s_Players # 91; 32 # 93;, i_Num. i_Player
get_players (s_Players. i_Num)

az (új i; i i_Player = s_Players # 91; én # 93;

menu_display (i_Player. g_VoteMenu. 0)

// növelése tudni, hogy hány szavazatot játékosok
g_Voting ++
>

// állítsa le a szavazást, 10 másodperc
set_task (10,0. "EndVote")

nyilvános menu_handler (id. menü. tétel)
if (elem == MENU_EXIT)
visszaút PLUGIN_HANDLED

új s_Data # 91; 6 # 93;, s_Name # 91; 64 # 93;, i_Access. i_Callback
menu_item_getinfo (menü. tétel. i_Access. s_Data. charsmax (s_Data) s_Name. charsmax (s_Name) i_Callback)

// Polchaem információkat az opció
új i_Vote = str_to_num (s_Data)

// Növekszik a szavazatok száma ezt az opciót
g_Votes # 91; i_Vote # 93; ++

nyilvános EndVote ()
// Ha az első lehetőség nyert több szavazatot, mint a második
if (g_Votes # 91; 0 # 93;> g_Votes # 91; 1 # 93;)
client_print (0 print_chat. "Első lehetőség kapta a legtöbb szavazatot (.)". g_Votes # 91; 0 # 93;)
// Egyébként, ha a második opció nyert több szavazatot, mint az első
else if (g_Votes # 91; 1 # 93;> g_Votes # 91; 0 # 93;)
client_print (0 print_chat. "Második lehetőség kapta a legtöbb szavazatot (.)". g_Votes # 91; 1 # 93;)
// Egyébként azonos számú szavazatot
más
client_print (0 print_chat. "A szavazás holtversenyben. szavaz minden.". g_Votes # 91; 0 # 93;)

// visszaállítása Az információ, hogy a játékosok szavazás
g_Voting = 0
>

Hozzon létre egy menü almenüket
Kód: Egész kiválasztása #include

nyilvános plugin_init ()
register_clcmd ( "my_menu". "My_Menu")
>

nyilvános My_Menu (id)
új i_Menu = menu_create ( "\ rmy menü:" "menu_handler")

menu_additem (i_Menu. "\ wFirst opció # 1". "1". 0)
menu_additem (i_Menu. "\ wSub-menü # 2". "2." 0)

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

nyilvános menu_handler (id. menü. tétel)
if (elem == MENU_EXIT)
menu_destroy (menü)
visszaút PLUGIN_HANDLED
>

új s_Data # 91; 6 # 93;, s_Name # 91; 64 # 93;, i_Access. i_Callback
menu_item_getinfo (menü. tétel. i_Access. s_Data. charsmax (s_Data) s_Name. charsmax (s_Name) i_Callback)

új i_Key = str_to_num (s_Data)

kapcsolót (i_Key)
1. eset:
client_print (id. print_chat. "Te kiválasztott első választási lehetőség")
>
2. eset:
// megnyitása almenü
Sub_Menu (id)
>
>

menu_destroy (menü)
visszaút PLUGIN_HANDLED
>

nyilvános Sub_Menu (id)
// Létrehozunk egy új menü, de az akció lesz egy másik feldolgozó funkció
új i_Menu = menu_create ( "\ rSub-Menu:". "submenu_handler")

menu_additem (i_Menu. "\ wSub-opció # 1." "1". 0)
menu_additem (i_Menu. "\ wSub-opció # 2", "2". 0)

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

nyilvános submenu_handler (id. menü. tétel)
if (elem == MENU_EXIT)
menu_destroy (menü)

// Ha a játékos a szerveren, megjelenik a főmenü
if (is_user_connected (id))
My_Menu (id)

új s_Data # 91; 6 # 93;, s_Name # 91; 64 # 93;, i_Access. i_Callback
menu_item_getinfo (menü. tétel. i_Access. s_Data. charsmax (s_Data) s_Name. charsmax (s_Name) i_Callback)

új i_Key = str_to_num (s_Data)

kapcsolót (i_Key)
1. eset:
client_print (id. print_chat. "Te választott első al-opció")
>
2. eset:
client_print (id. print_chat. "Te választott második al-opció")
>
>

// Ha azt szeretnénk, hogy a főmenü megjelenítéséhez, majd
My_Menu (id)

Ne írjon nekem egy PM. Ha segítségre van szüksége, ingyenesen. Bármilyen kérdése van a fórum.