Page 1 of 2

Senosios meniu sistemos naudojimas

Posted: 2011 Mar 30 20:46
by aaarnas
Išmoksime naudoti senąją amxmodx meniu sistemą.

Privalumai:
  • Visą meniu galima suformatuoti kaip norima. Be jokių apribojimų.
  • Galima nustatyti laiką, po kelių sekundžių meniu žaidėjui pradings.
Trūkumai:
  • Sudėtingesnis formatavimas.
  • Sudėtinga kurti puslapiavimą.
Meniu formatavimui naudojami simboliai. Visas tekstas, kuris eis po jų pasikeis pagal jų reikšmę:
\w - Baltas tekstas
\r - Raudonas tekstas
\y - Geltonas tekstas
\d - Permatomas tekstas
\R - Tekstas lygiuojamas dešinėje.

Code: Select all

#include <amxmodx>#include <amxmisc> // Reikės amxmisc modulio, nes jame yra reikalingos meniu funkcijos. public plugin_init() {    register_plugin("Meniu", "1.0", "aaarnas")    register_menu("Meniu", MENU_KEY_2|MENU_KEY_0, "meniu_funkcija")    /* Funkcija registruoja meniu, kurį mes ruošiamės naudoti. Tokių menių galima registruoti daug.    1 argumentas ("Meniu") - Tai yra meniu ID adresas. Pagal jį parodysime į kurį meniu kreiptis kai norime jį parodyti.         Čia gali būti bet koks string tipo žodis, žodžių junginys. Su funkcionavimu pavadinimas nesusijęs.         Žinoma pavadinkime tuo, ką šis meniu atlikinės. Taip bus paprasčiau susigaudyti.    2 argumentas (MENU_KEY_2|MENU_KEY_0) - Čia registruojami mygtukai, kuriuos bus galima paspausti.         Tiksliau kuriuos persiųs į funkciją. Key skaičiai atitinka skaičius, kuriuos spaudžiame norėdami naudotis meniu žaidime.         MENU_KEY_1 - 1, MENU_KEY_2 - 2 ir tt.    3 argumentas ("meniu_funkcija") - funkcijos pavadinimas, kuri bus iškviesta, kai bus paspaustas kuris nors meniu punktas. */} public rodyti_meniu(id) { // Šita funkcija parodys žaidėjui meniu        new menu_body[300], len // Meniu visą nuo pradžios iki pabaigos reikia formatuotis patiems.    // Sukursim tokį meniu, kur būtų meniu pavadinimas, du punktai ir išėjimas. Pirmas punktas bus permatomas ir jį spaudžiant nieko nevyks. Jis tieisog nepasispaus.    len += formatex(menu_body[len], charsmax(menu_body) - len, "\rMeniu pavadinimas:^n^n")  // Meniu pavadinimas    len += formatex(menu_body[len], charsmax(menu_body) - len, "\r1. \dPirmas punktas (nesispaudzia)^n") // Pirmas punktas. Jis bus permatomas ir nesispaus. Kad jis būtų permatomas, naudojame simbolį - \d.    len += formatex(menu_body[len], charsmax(menu_body) - len, "\r2. \wAntras punktas (spaudziasi)^n") // Antras bus normalus.    len += formatex(menu_body[len], charsmax(menu_body) - len, "^n\r0. \wIseiti") // Tieisog išėjimas.        show_menu(id, MENU_KEY_2|MENU_KEY_0, menu_body, -1, "Meniu")     /* Turime funkciją, su kuria iškviesime meniu žaidėjui.    1 argumentas (id) - Nurodome kuriam žaidėjui bus iškviečiamas meniu. Įrašius 0 - bus iškviečiamas visiems žaidėjams.    2 argumentas (MENU_KEY_2|MENU_KEY_0) - registruojame tik mygtukus 0 ir 2, nes norime, kad 1 nesispaustų.    3 argumentas (menu_body) - Perduodame kintamąjį, kuriame yra visas mūsų suformatuotas meniu.    4 argumentas (-1) - Čia galima įrašyti po kelių sekundžių žaidėjui meniu dings automatiškai, jei jis nieko nepaspaus. -1 reiškia, kad meniu automatiškai nepradings.    5 argumentas ("Meniu") - nurodome į kurį meniu kreipiamės. Įrašome id atitinkamą tam, kurį registravome. */} public meniu_funkcija(id, key) { // Iškviečiama kai paspaudžiamas mygtukas.       switch (key) {       case 0: {           // Meniu punktas 1        }        case 1: {           // Meniu punktas 2        }        case 2: {           // Meniu punktas 3        }        case 9: return  // Meniu uzdaromas    }} 
Tai pagrindai senosios meniu sistemos naudojimo. Jei reikia papildyti ar plačiau paaiškinti - rašykite.

Re: Senosios meniu sistemos naudojimas

Posted: 2011 Apr 10 09:05
by zirualas
O kaip pvz padaryti, nū pvz turiu 2 lenteles, ir ten kai jau registruoju keys, kas ką padaro, tai kaip patikrinti ar ten ta menių ar kita?

Re: Senosios meniu sistemos naudojimas

Posted: 2011 Apr 10 10:50
by aaarnas
Teks rišliau parašyti ko nori, nes nieko nesupratau.

Re: Senosios meniu sistemos naudojimas

Posted: 2011 Apr 10 11:14
by zirualas
Kodėl man rašo taip? Čia consoleje:
L 05/11/2011 - 10:36:01: Function "meniu_funkcija" was not found

Re: Senosios meniu sistemos naudojimas

Posted: 2011 Apr 10 12:51
by aaarnas
Pataisiau pamoką. Funkcijos pavadinimo nepakeičiau.

Re: Senosios meniu sistemos naudojimas

Posted: 2011 Apr 10 13:03
by zirualas
Dbr turiu klausima:
Įrašiau šita i plugin_init

Code: Select all

register_menu("CtMeniu", MENU_KEY_1|MENU_KEY_2|MENU_KEY_0, "meniu_funkcija")
Šita kai iškviečiama lentelė:

Code: Select all

new menu_body[300], len                len += formatex(menu_body[len], charsmax(menu_body) - len, "\r1. \w M4A1^n")        len += formatex(menu_body[len], charsmax(menu_body) - len, "\r2. \w AK47^n")        len += formatex(menu_body[len], charsmax(menu_body) - len, "^n\r0. \w Iseiti")                show_menu(id, MENU_KEY_1|MENU_KEY_2|MENU_KEY_0, menu_body, -1, "CtMeniu")
ir šitas:

Code: Select all

public meniu_funkcija(id, key){       if(key == 1)    {        give_item(id, "weapon_m4a1")    }    if(key == 2)    {        give_item(id, "weapon_ak47")    }        if(key == 0) return;        return;}
Bet galiausiai sukompilinęs ir iėjas į game, paspaudžio 1, neivyksta nieko, tik dingsta menu, paspaudžiu 2, duoda m4a1, paspaudžiu 0 išeina iš menu, kame problema?

Re: Senosios meniu sistemos naudojimas

Posted: 2011 Apr 10 13:05
by hleV
Naudokit naują meniu ir viskas. Visas spalvas ir ten galima keist, nebent kažką žiauriai įmantraus (kuo abejoju) norit daryt su tuo meniu.

Re: Senosios meniu sistemos naudojimas

Posted: 2011 Apr 10 13:09
by zirualas
hleV wrote:Naudokit naują meniu ir viskas. Visas spalvas ir ten galima keist, nebent kažką žiauriai įmantraus (kuo abejoju) norit daryt su tuo meniu.
Na gerai :/

Re: Senosios meniu sistemos naudojimas

Posted: 2011 Apr 27 19:36
by Keistas
Kaip suprast meniu? Čia amxmodx? Ar čia kaip sukurt meniu?

Re: Senosios meniu sistemos naudojimas

Posted: 2011 Apr 27 20:13
by aaarnas
Paprastas meniu kurį matai žaidime ir spaudžioji ginklų mygtukus, kad pasirinkti kažką. Yra jo kūrimo 2 būdai. Nauja sistema ir sena. Jos kiek skiriasi. Čia senoji aprašyta. Naująją gal irgi kada aprašysiu.