hlmod.hu

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



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Bing [Bot] 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: [TUT] Args
HozzászólásElküldve: 2022.06.15. 20:20 
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!

Biztosan láttátok már, hogy egy parancs által meghívott függvénynél létrehozunk egy args megnevezésű második változót(kaptam még annó PÜ-t is), most erről fogunk beszélni ugyanis elég fontosnak tartom néhány pluginnál. Egy parancs esetében megadhatunk további paramétereket, ez(ek) lenné(nek) az args változó feladata.
public Action smth(int client, int args) {}

Próbálok egy konkrét példát hozni, kezdjünk bele.

Most egy olyan plugint hozunk létre, aminek sok értelme nincs, de tökéletes arra, hogy átadjam mire is való. A következő paranccsal:
sm_parancs "Maxi" "420"

Ezt az üzenetet kapjuk vissza:
Név: Maxi || Szám + 1: 421

Parancs létrehozása

Kód:
public void OnPluginStart() {
    //Regisztráljuk a parancsot
    RegConsoleCmd("sm_parancs", fCommandParancs, "Használata: sm_parancs <név> <szám>");
}

/*
* A parancs kifejtése:
* Fontos, hogy ezek a változó nevek nem adottak, bárminek elnevezhetjük őket
* Általában viszont ezek szoktak lenni.
*/
public Action fCommandParancs(int client, int args) {
    //TODO
}


Ellenőrzés

Kód:
public Action fCommandParancs(int client, int args) {
    //Feltétel: Ha nem két paraméter van akkor >>
    if (args != 2) {
        //Válaszolunk, hogy hogyan is használja
        ReplyToCommand(client, "Használat: sm_parancs <név> <szám>");
        
        
//return
        return Plugin_Handled;
    }
}


Tárolás

Kód:
public Action fCommandParancs(int client, int args) {
    if (args != 2) {
        ReplyToCommand(client, "Használat: sm_parancs <név> <szám>");
        return Plugin_Handled;
    }
    
    
//Létrehozunk két tömböt
    //MAX_NAME_LENGTH -> Név maximális megengedett hossza (internal)
    //szamArg tetszőleges nagyságú nincs kifejezett oka annak, hogy
    //32-t használtam.
    char nevArg[MAX_NAME_LENGTH], szamArg[32];
    
    
/*
    * Belekérjük a tömbökbe a megfelelő paramétert
    * GetCmdArg(int[] paraméter száma, változó, ...)
    */
    GetCmdArg(1, nevArg, sizeof(nevArg));
    GetCmdArg(2, szamArg, sizeof(szamArg));
    
    
//Fontos: Jelenleg a szamArg még String tipusú tehát, nem tudunk vele számolni!!


Befejezés

Kód:
public Action fCommandParancs(int client, int args) {
    if (args != 2) {
        ReplyToCommand(client, "Használat: sm_parancs <név> <szám>");
        return Plugin_Handled;
    }
    char nevArg[MAX_NAME_LENGTH], szamArg[32];
    
    GetCmdArg
(1, nevArg, sizeof(nevArg));
    GetCmdArg(2, szamArg, sizeof(szamArg));
    
    
//Alakítsuk át integerré.
    //Ehhez hozzunk létre egy új változót
    int szam = StringToInt(szamArg) + 1; // Ezzel így már lehet matekozni
    
    
//Egyszerűen irassuk ki.
    ReplyToCommand(client, "Név: %s || Szám + 1: %i", nevArg, szam);
    //return
    return Plugin_Handled;
}




Teljes kód:
► Spoiler mutatása


Compiler:
► Spoiler mutatása


Remélem érthető volt, bármi kérdés van, válaszolok!

Üdv, Maxi.

_________________
www.akosvagyok.hu

Ők köszönték meg Maxi nek ezt a hozzászólást: Nexd (2022.06.22. 15:13)
  Népszerűség: 2.27%


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 0 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