Podmínka IF a operátory

Určitě víte co znamená anglické slovíčko IF. Pro neznalé to je „když“, neboli když něco platí proveď tohle a pokud ne udělej onohle :-). Fuknce ma jeden hlavní ukol, rozhodovat o dané podmínce a provádět podle toho funkce či skoky. Podmínka IF je velmi užitečná i při kontrolách a jiných ověření. Brzy pochopíte, že složitý script je složen jen s „Ifu“ a „Mesu“ :-). Opérátory zná určitě každy již ze školy a ten kdo ne tak se to doví zde. Asi bych začal právě operátory.

Operátory

Existuji tři základní druhy operátorů. Matematické, podmíněné (děsné slovo, ale je to překlad pokud má někdo lepší slovo at jej napise) a logické operátory.

Matematické

Výsledek všech matematických operaci je vždy číslo. Až na několik výjimek.

  • + - součet dvou čísel. Jeho speciální fuknci jsem zde již zmiňoval. Jde o spojeni dvou stringu v jeden.
  • - - odečte od sebe dvě čísla.
  • * - vynásobí mezi sebou dvě čísla. Pozor na velikost výsledku.
  • / - celočíselné dělení dvou čísel. Tzn 7/2 neni 3,5 ale 3. Pozor na to!!
  • % - vrací hodnotu zbytku po celočíselném dělení. např. 7%2 je 1.
Podmíněné

Tyto operátory vrací hodnotu typu boolean. Asi si řikate co to je? Ale nebojte nic sprostého. Typ boolean nabývá dvou hodnot. True = pravda neboli taky 1 a False = nepravda nebo taky 0. Občas se setkame i s -1 a možna i až s -5, ale to pořádně popíšu až na to dojde.

  • == - rovná se “=“ vyjadřuje rovnost dvou hodnot.
  • >= - větší nebo rovno
  • < = - menší nebo rovno
  • > - větší
  • < - meší
  • != - negace neboli nerovnááá se :-)


Příklad:

  • 5==5 výsledek je True
  • 5>9 výsledek je False
  • @var >= 5 - pokud proměnná @var nabývá hodnot 5 a více je výsledek True jinak False.

Jednotlivé výrazy mužou být spojovány do jedné podmínky.

  • && - Nahrazuje AND při slučování pomínek, pokud jsou oba výrazy pravdivé výsledek je taky True.
  • || - Nahrazuje OR při slučování pomínek, pokud je alespon jeden výraz pravdivý, výsledek je také True.

Příklad:

  • 5==5 && 3==3 True
  • 5==5 && 3==5 False
  • 5==5 || 3==5 True

Samozřejmě je možné použít více podmínek než pouze dvě. Příklad:

  • 5==5 && 3==3 && 6==6 True
  • 5==5 && 3==3 && 3==5 False
  • 5==5 || 3==5 || 2==4 True
Logické

Logické oprátory se dají použí pouze na číslech.

  • » - posun vpravo
  • « - posun vlevo
  • & - And.
  • | - Or.
  • ^ - Xor.

Poznámka - pochybuji, že budete hojne používat logické operátory, ale až ta chvíle nastane tak ať víte, že existují :-)

Podmínka IF

Konečně jsem se dostal k hlavní věci této lekce. Nebudu to okecávat a přejdu rovnou k věci.

Funkce
  • goto <label>; - skok na daný label.
  • end; - velmi podobná funkce jako close; end se používá tam kde neni použito žádne dialogové okno.
  • if (<výraz>) {<kód>}
    • <výraz> - výraz tvrzení, o kterém mužeme říct zda je pravdivé, čí nikoli. Příklad výrazu je 5==5. Další přiklad je @jmeno$ == strcharinfo(0). Jak je vidět, můžeme ve výrazech používat čísla, „text“, proměnné a funkce.
    • <kód> - vše co se provede pokud je výraz pravdivý.


prontera.gat,100,100,0	script	Honza	120,{
      if (BaseLevel < 80) end; // pokud je level postavy mensi jak 80 nebude se s clovekem vubec bavit.
      mes "Ahoj ja jsem Honza.";
skok: mes "Opakuj po me tohle cislo: 1";
      next;
      mes "Ted je rada na tobe";
      input @cislo;
      if (@cislo == 1) 
         {
         mes "Spravne jsi sikovny";
         close;
         }
      mes "Spatne zkus to znovu.";
      next;
      goto skok;
      close;
 }

NEBO s použitím else:
      if (@cislo == 1) 
         {
         mes "Spravne jsi sikovny";
         close;
         }
         else
      { // - viz nize
      mes "Spatne zkus to znovu.";
      next;
      goto skok;
      close;
      } // - "prikazova zavorka", else plati pouze na 1 prikaz primo nasledujici po else,
              proto pro vice prikazu se pouziva tato zavorka {} (napr. stejne jako begin end v pascalu)
 }

Poznámka - snad jsem na něco nezapomněl, pokud maté jakýkoliv dotaz nebo mate pocit, že tomu něco chýbí nebojte se napsat.

operator_npc.txt · Poslední úprava: 2016/08/20 14:33 (upraveno mimo DokuWiki)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki