hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 19:16



Jelenlévő felhasználók

Jelenleg 231 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 231 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: [New Syntax] Menük
HozzászólásElküldve: 2022.06.08. 09:56 
Offline
SM Fejlesztő
Avatar

Csatlakozott: 2012.10.18. 15:58
Hozzászólások: 2486
Megköszönt másnak: 28 alkalommal
Megköszönték neki: 132 alkalommal
Sziasztok!
Az erről szóló előző tutorial-om ne használjátok! Akkor még élhető megoldásnak bizonyult, mára már nagyon outdated. Működik még(tesztelve), de már senki nem úgy csinálja. Sokkal bonyolultabb mint ez, továbbá jobban terheli valamivel a szervert.
Kezdjünk bele: menük.
Kód:
#include <sourcemod>

#pragma semicolon 1
#pragma newdecls required
//..

public void OnPluginStart() {
    //parancs létrehozása. (!menu-ként is működik)
    RegConsoleCmd("sm_menu", myMenu, "A mi teszt menü-nk");
}
public Action myMenu(int client, int args) {
    /*
    * Létrehozzuk a menüt, itt 'menu' a változó.
    * Nagyon fontos: ha new változót hozunk létre, azért "felelősek vagyunk"
    * a plugin élettartalmán keresztül,
    * Tehát illik törölni ha már nem használjuk.
    */
    Menu menu = new Menu(Menu_Callback);
    //Menü címe
    menu.SetTitle("Menü címe");
    //Egy szimpla menüpont
    menu.AddItem("option1", "Első menüpont");
    menu.AddItem("option2", "Második menüpont");
    //Egy kikapcsolt menüpont, szürkén jeleníti meg, nem lehet kiválasztani.
    menu.AddItem("option3", "Kikapcsolt menüpont", ITEMDRAW_DISABLED);
    //Megjelenítjük 40mp-re a játékosnak aki beírta a parancsot.
    menu.Display(client, 40);
    //Vissza kell térni!!
    return Plugin_Handled;
}
public int Menu_Callback(Menu menu, MenuAction action, int param1, int param2) {
    //Ha az akció megegyezik azzal, hogy kiválaszt egy menüpontot
    if (action == MenuAction_Select) {
        //Belekérjük egy változóba az opciót amit kiválasztott
        char option[32];
        menu.GetItem(param2, option, sizeof(option));
        //Ha az opció 'option1' mint a 22. sorban
        if (StrEqual(option, "option1")) {
            //TODO
            PrintToServer("Első menüpont kiválasztva!");
        //...
        } else if (StrEqual(option, "option2")) {
            PrintToServer("Második menüpont kiválasztva!");
        }
    //Ha az akció, a menü ciklustartalmának a vége
    } else if (action == MenuAction_End) {
        /*
        * Töröljük a menü változót!!
        * Ha nem töröljük, itt fog lebegni, ami nem éppen a legjobb dolog a világon.
        * Igaz, új értéket kaphat, magyarul létrejöhet újra a menü, gondot nem okoz,
        * egészen addig amíg sokszor ilyen hibát nem vétünk, és kifagy a szerver.
        */
        delete menu;
        // Tehát ha valahol használtok new-t, mindig delete a végén!
    }
}
 

► Spoiler mutatása

Ez lényegében, szerintem sokkal egyszerűbb mint a régi, mára már outdated változat.

Köszönöm a figyelmet!
Bármi hibát találtok, kérlek jelezzétek, benne van, hogy hibázom 3 műszak mellett.

Üdv,
Maxi

_________________
www.akosvagyok.hu


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole