Would you like to react to this message? Create an account in a few clicks or log in to continue.

    [TuT] Vytvárame si vlastné Publicy, Stocky a Definície

    avatar
    QWER
    Znalec


    Posts : 60
    Join date : 28.04.2011

    [TuT] Vytvárame si vlastné Publicy, Stocky a Definície Empty [TuT] Vytvárame si vlastné Publicy, Stocky a Definície

    Odoslať pre QWER Št apríl 28, 2011 10:02 am

    Áno ! Zase som tu s mojím novým návodom. Dúfam že ho nepíšem len tak do vzduchu, a že to čo máte na krku nenosíte iba aby vám do krku nešla voda Very Happy. Tak začíname, idete ?

    [size=150]Definície[/size]


    Teória

    Toto je to najzákladnejšie, najpotrebnejšie a zároveň najľahšie z týchto troch možností, ktoré tu opíšem.
    Určite ste sa s tým stretli, či už pri definovaný farby alebo funkcie. Ale prejdime k praxi.

    Prax
    V móde určite máte niečo takéto
    kód:
    #define COLOR_BIELA 0xFFFFFFAA
    a máte to pre to aby ste nemuseli písať
    kód:
    0xFFFFFFAA
    ale jednoducho
    kód:
    COLOR_BIELA

    Alebo definovanie funkcie npr.
    kód:
    #define SCM SendClientMessage
    a potom iba
    kód:
    SCM(playerid,COLOR_BIELA,"Kša ! choď preč!")
    Môžme nadefinovať celé vety npr.
    kód:
    #define WELCOME "Vitaj na QWER-ovom servery !"
    a potom iba
    SCM(playerid,COLOR_BIELA,WELCOME);

    Ale toto není jediné čo sa dá nadefinovať.
    Ukážem vám kód npr.
    kód:
    #define KratDesat(%0) %0*10
    a potom iba
    GivePlayerMoney(playerid,KratDesat(500));
    a dá mu 5 000 dolárov
    alebo
    GivePlayerMoney(playerid,KratDesat(random(500));
    a dá mu náhodné číslo od 0 do 500 ktoré vynásobí 10

    Ak si pozrete definíciu tak vidíte že som použil parameter (%0) dá sa použiť od 0% do %9
    npr.
    kód:
    #define Nasob(%0,%1,%2) %0*%1*%2
    a potom iba
    GivePlayerMoney(playerid,Nasob(10,3,7))
    a dá mu to x penazí (nechce sa mi to počítať Very Happy)
    alebo pridáme premenu
    kód:
    #define GivePlayerMoneyEx(%0,%1) GivePlayerMoney(%0,%1); peniaze[%0] += %1;
    a iba GivePlayerMoneyEx(playerid,5000);
    a máte aj Anti Money Hack Very Happy
    Verdikt
    výhody
    + Nezvačšuje súbor (veľkosť súboru)
    + Po načítaní sa tvári že tam nieje (zmizne ako keby) a tým pádom keď tam máte náročnejšie scripty tak sa tvári ako kebyže to tam nieje Very Happy (no keď máte stock tak sa vždy po použití "obnoví" tu nie...)

    nevýhody
    - Menší hokej z tých %0....
    - Nenapadá ma nič iné...


    [size=150]Stocky (funkcie)[/size]


    Teória

    Určite v móde máte minimálne jeden stock ! Stock môžeme využiť na vačšie scripty, ktoré chceme skrátiť do jedného riadka. Môžeme robiť z návratovými hodnotami, floatmy, boolmy. Môžeme funkcie kombinovať a tak si uľahčiť prácu ešte viac. (teda u kopirákov to neplatí...)

    Prax
    Jeden stock (podobný) určite máte
    kód:
    stock Jmeno(playerid)
    {
      new pName[MAX_PLAYER_NAME];
      if(IsPlayerConnected(playerid))
      {
            GetPlayerName(playerid, pName, sizeof(pName));
      }
      return pName;
    }
    Vďaka tomuto nemusíme stále používať premenu, a zisťovať hráčov nick...
    v tomto stocku vytvorý premenu, zistí hráčov nick a odošle.

    Stocky možno využiť na Float-y na Bool-y ukážem ku každému príklad
    bool
    kód:
    stock ServerTips(bool:tipy){
    switch(tipy){
    case true: ServerTipy = true;
    case false: ServerTipy = false;
    }
    }
    a do príkazu
    ServerTips(true);
    alebo
    ServerTips(fasle);
    a to publicu s tipmy dáte
    if(ServerTipy == false) return 0;
    jednoduché nie ?

    Float
    kód:

    stock Float:GetPlayerHealthEx(playerid)
    {
    new Float:health;
    GetPlayerHealth(playerid, health);
    return health;
    }
    a potom iba
    if(GetPlayerHealthEx(playerid) > 80) return SCM("Nemôžeš si dať život veď ho máš skoro plný");

    Obyčajná premena
    kód:
    stock GivePlayerMoneyEx(playerid,suma){
    GivePlayerMoney(playerid,suma);
    PlayerMoney[playerid] += suma;
    }
    a už iba použiť...

    Verdikt
    výhody
    + Priehľadnosť
    + Jednoduchosť

    [size=150]Publicy[/size]


    Teória

    Určite máte v móde základné publicy Very Happy no a to je to isté, funguje to na rovnakom princípe ako stock lenže potrebuje forward, môže biť vyvolaný a následne poučitý ako obyčajný public npr. OnPlayerText ale môže biť použitý aj ako stock ! Wink

    Prax
    Potrebujete forward ukážeme si to
    kód:

    forward Tips();

    public Tips(){
    SendClientMessageToAll(COLOR_BIELA,"TIP ! Návody by QWER");
    }
    public môže biť vyvolaný timerom...
    Keďže public má rovnaké využitie ako stock nenapíšem sem viac príkladov, prejdem rovno k tomu čo stock nemá
    Vyvolanie public a následne využitie publicu ako npr. OnPlayerText

    Takže dáme si forward
    kód:
    forward OnPlayerChangeHealth(playerid,Float:oldhealth,Float:newhealth);

    do OnPlayerUpdate dáte
    new Float:hp[2];
    GetPlayerHealth(playerid,hp[0]);
    GetPlayerHealth(playerid,hp[1]);
    if(hp[0] != hp[1]) OnPlayerChangeHealth(playerid,hp[0],hp[1]);
    a potom iba
    kód:

    public OnPlayerChangeHealth(playerid,oldhealth,newhealth){
    if(newhealth > 100) BanEx(playerid,"Health Hack");
    }


    Verdikt
    výhody
    + Využitie

    Fujha, Dakujem že ste to prečítali a dúfam že ste to pochopili.
    Made by QWER

      Práve je Ut november 26, 2024 6:42 pm