Lecke bevallásának (vissza)

* Ez az állítás két fontos alkalmazások:

Először. mint már említettük, ez biztosítja azonnali kilépés egy funkciót, azaz Ez okozza, hogy a virtuális gép a vezérlést a kódot, hogy hívják ezt a funkciót.
Második. Ez az operátor lehet használni, hogy visszatérjen egy bizonyos értéket, a kód (funkció), amelyből a jelenlegi, megszakította az hívtak meg.


* A formátum az üzemeltető visszatérés

visszatérési értéke; // Ha az „érték” nem kötelező

• Miért kell ez ki a funkciót:

Először is, ezzel a kijelentéssel, tudjuk kezelni a virtuális gép akciók, amikor a kód végrehajtódik. Például nem kell elvégezni egy bizonyos funkciót kódot, ha egy játékos nem kéznél $ 5,000. Itt aztán jön a támogatás és az üzemeltető. De ez még nem minden.


Tegyük fel, hogy van egy hasonló, nem a legjobb minőségű szerkezeti szempontból, parancskódot

nyilvános OnPlayerCommandText (playerid. cmdtext # 91; # 93;)
if (! strcmp ( "/ komanda_1". cmdtext. true))
SetPlayerHealth (playerid 98304.);
SendClientMessage (playerid .. 0xFF0000FF "Most, az egészségügyi villog: 3");
>
if (! strcmp ( "/ komanda_2". cmdtext. true))
printf ( "garázs eladó");
>
if (! strcmp ( "/ komanda_3". cmdtext. true))
Ban (playerid);
>
if (! strcmp ( "/ komanda_4". cmdtext. true))
Kick (playerid);
>
vissza 1;
>

És itt van, hogy a kódot kell kinéznie

nyilvános OnPlayerCommandText (playerid. cmdtext # 91; # 93;)
if (! strcmp ( "/ komanda_1". cmdtext. true))
SetPlayerHealth (playerid 98304.);
SendClientMessage (playerid .. 0xFF0000FF "Most, az egészségügyi villog: 3");
vissza 1;
>
else if (! strcmp ( "/ komanda_2". cmdtext. true))
printf ( "garázs eladó");
vissza 1;
>
else if (! strcmp ( "/ komanda_3". cmdtext. true))
Ban (playerid);
vissza 1;
>
else if (! strcmp ( "/ komanda_4". cmdtext. true))
Kick (playerid);
vissza 1;
>
vissza 0;
>

De mindkét lehetőség működik gyakorlatilag azonos (eltekintve attól a ténytől, hogy az első esetben, visszatértünk a visszahívás egység, annak érdekében, hogy megszabaduljon az üzenet „ismeretlen parancs” (a reakció néhány kolbekkov visszatérítés később térünk ki), és ez az, amit én írok többet ). akkor mi a különbség, kérdezed?

És a különbség, hogy az első esetben, a megállapítás csapat és a végrehajtó a kód, nem jelzi a virtuális gép (szerver), hogy ő találta meg a kódot, hogy meg kell találni (ebben az esetben a kód található szempontjából egység (parancs)). És ha nem adnak egyértelmű utasításokat, ahol meg kell állítani kódfuttatást, a virtuális gép továbbra is rendezni végig a kód található a visszahívás (a zárójel bezárása visszahívási egység), mert a gép nem ismeri a gondolatait, és végre mindent megadott neki, .

A második esetben van:
  1. Mi történt a megfelelő feltételeket.

Micsoda képtelenség hordozza ezt az őrült?

Ugyanazt a parancsot nem lehet olyan szerencsés az összes fordító jelzi, ellenőrizze minden csapat után, amíg meg nem találja a megfelelőt. Azaz, ha az egyik feltétele az alábbi feltételek dobni, mint szoktuk másik üzemben - más (nem). Ez körülbelül, a szerkezet egy ilyen állapot:

almazöld?
igen
>
sz. de most almazöld. // Ha működik, például ez a feltétel
Tehát igen // almazöld
>
sz. de most almazöld. // Apple már zöld, és azt jelenti, hogy ez a vizsgálat értelmetlen => ez lehet dobni
igen
>
az ég kék. // De ez a teszt kell dolgozni, ha nem rámutatni, hogy ő az else és nem használja a feltételeket a felső bevallását. Ebben az esetben, ha miután a fenti feltételek, amit tennie kell, és ezek a feltételek, a magasabb hozam szett nem szükséges, mert nem kell, hogy hagyja abba kódfuttatást, ha egy zöld alma
igen
>


  • Azt mondja a fordító „határ” az egyes feltételek azzal az elvárással, hogy miután a parancs futtatása, minden egyéb kívánt kódot a visszahívás szakaszban (lásd alább a csapat), és hogy nincs szükség a kód végrehajtását fel ezt a nagyon „felderítő”.
  • Mindez, már kiadott egy virtuális gép teljesítő szükségtelen intézkedések (az első esetben is, miután a jobb csapat, AMX gép folytatta volna a feltételek teljesítésére, folyamatos kutatás megtalálta a csapat). Ezért AMX gép gyorsan rendezni a parancsot kódot, és kezelhetjük más kód gyorsabb. Ez az úgynevezett optimalizálás;)


    Más szóval, az üzemeltető lehetővé ellenőrzés formájában érthetőbb formában a Scripter. Elfogadom, hogy sokkal könnyebb megérteni a jelentését az ilyen feltételek

    Ha visszatérő printf ( "A játékos ID az offline". playerid.) (IsPlayerConnected (playerid)!);

    Az ellenőrzést a következőképpen néz ki:

    Minden más esemény nincs külön utalás a visszatérési érték, az egyetlen különbség az, hogy:
    1- polnost esemény befejeződik.
    0- esemény feladása és dolgozza fel az összes szkriptet.

    Események ahol meg tudod csinálni, hogy nem tér vissza (lehetséges varningov compiler):

    • OnVehicleStreamIn
    • OnVehicleStreamOut
    • OnPlayerStreamIn
    • OnPlayerStreamOut
    • OnDialogResponse
    • OnPlayerClickPlayer
    • OnPlayerSelectedMenuRow
    • OnPlayerExitedMenu
    • OnRconLoginAttempt
    • OnVehicleDamageStatusUpdate
    • OnVehiclePaintjob
    • OnVehicleRespray
    • OnVehicleMod


    Így, ha visszatér ezekre a visszahívások, meg kell vizsgálni ezeket az adatokat annak érdekében, hogy a kívánt eredményt.

    Azt is érdemes megjegyezni, hogy a funkció vissza értéket. Pontosabban a függvény értéket ad vissza.
    Megmutatom egy példa:

    main ()
    printf (. "Funkció 1 (25-18) ==" FuncOne ()); // Ennek eredményeként megkapjuk 7
    printf ( "Funkció 2 (20 + 5) ==." FuncTwo ().); // A második függvény mi lesz 25
    printf ( "funkció 3 (20) ==." FuncThree ().); // A harmadik függvény egy értéket 20
    >
    Stock FuncOne ()
    vissza FuncTwo () - 18;
    >
    Stock FuncTwo ()
    vissza 5 + FuncThree ();
    >
    Stock FuncThree ()
    20 visszatérés; // A harmadik függvény a 20
    >

    Az előző részben beszéltünk a reakció a szokásos visszahívók bizonyos értékeket, és visszatér a funkció figyelembe kell vennie, hogy milyen fontos ez a funkció visszatér.
    Még a standard funkciók visszaút konkrét értékeket. Mik ezek az értékek - megtalálható az oldalon wiki.sa-mp.com. keres a kívánt funkciót, és látta a leírását.

    Lecke bevallásának (vissza)

    Ennyi =)
    Ha bármilyen kérdése van, ha nem értesz valamit magyarázni, vagy bármilyen kiegészítők / korrekciók ez a bemutató, kérjük, írjon az alábbiakban.
    Mindenki megpróbál segíteni a véleményét tudomásul fogja venni.

    A tanulság az, nem a végleges változat, és végül lehetséges kiegészítései / korrekciókat.
    Veled volt Deimos. Köszönöm a figyelmet

    Akkor keressen meg privát üzenetek ebbe a csoportba

    Széles körben ismert, hogy az ötletek 0,8333 centért (a piaci ára 10 cent tucat).
    Teljes a nagy ötlet, nincs kereslet.
    Végrehajtása az ötletből kész a játék megköveteli a hosszú munka,
    tehetség, a türelem és a kreativitás, nem is beszélve a költségek pénzt, időt és erőforrásokat.
    Javasolj egy ötlet, csak hogy észre - ez a probléma

    S Teve P avlina

    Írva egy menetben, és különböző részein a leckét más sorrendben, tehát valahol lehet nesostykovochka vagy téveszmék már nagyon szemét „zamylilsya”, és minden, hogy látta átkelés. Ha úgy találja, hibák - írj, ne habozzon: 3
    A tervek, hogy a leírás az egyes szereplők hasonló formában, de szervezettebb

    Akkor keressen meg privát üzenetek ebbe a csoportba

    Széles körben ismert, hogy az ötletek 0,8333 centért (a piaci ára 10 cent tucat).
    Teljes a nagy ötlet, nincs kereslet.
    Végrehajtása az ötletből kész a játék megköveteli a hosszú munka,
    tehetség, a türelem és a kreativitás, nem is beszélve a költségek pénzt, időt és erőforrásokat.
    Javasolj egy ötlet, csak hogy észre - ez a probléma

    S Teve P avlina