Funkce a příkazy skriptu

Postupně překládaný popis skriptovacích příkazu eAtheny z eathena\doc\script_commands.txt.
Zatím jsem skončil u hideoffnpc, a ne u všech je přeložený popis.
Tak kdyby měl někdo chuť tak pomožte :-)

Seznam všech dostupných funkcí a příkazů pro skriptování npc přeložený z dokumentace k eAtheně. Rozdíl mezi funkcí a příkazem je v tom, že příkaz pouze mění stav systému, ale nezanechává návratovou hodnotu, kdežto funkce ano. Návratová hodnota může být použita např. v podmínce nebo jako argument jiného příkazu. Při skriptování je třeba rozlišit kdy použít funkci a kdy příkaz. Volání příkazu místo funkce může někdy fungovat, ale není to doporučeno, protože to může vést k těžko zjistitelným chybám. Volání funkce místo příkazu zaneřádí zásobník, takže příkaz 'return' pak v tomto skriptu nebude fungovat správně. Všechny příkazy musí končit středníkem (;). Lze tedy použít i několik příkazů na řádce, pokud je správně ukončíte středníkem. Tento způsob však není doporučen, zejména kvůli přehlednosti skriptu. V textu %TAB% označuje obyčejný tabelátor.

Rychlonavigace

A:A B:B C:C D:D E:E F:F G:G H:H I:I J:J K:K L:L M:M N:N O:O P:P Q:Q R:R S:S T:T U:U V:V W:W X:X Y:Y Z:Z


A

Addtoskill
Announce
Areaannounce
Areamonster
Areawarp

B

Basicskillcheck
Bonus

C

Callfunc
place.gat,50,50,6%TAB%script%TAB%Dežo%TAB%115,{
  mes "[Dežo]"
  mes "Vyber si skořápku...";
  next;
  callfunc "funcNPC";
  mes "Oh, vyhrál jsi!";
  close;
}
function%TAB%script%TAB%funcNPC%TAB%{
  set @win, rand(4);
  if(@win==0) return;
  mes "Bohužel jsi prohrál.";
  end;
}

Je možné předat funkci argumenty - hodnoty říkající přesně co dělat - které pak budou dostupné pomocí Getarg:getarg(). Za povšimnutí také stojí to, že není třeba používat Return:return a je možné ukončit provádění skriptu pomocí End:end. Pokud chcete vrátit hodnotu uvnitř funkce, je lepší napsat ji ve funkční formě, což dělá kód čistší.

place.gat,50,50,6%TAB%script%TAB%Gauss%TAB%115,{
  mes "[Gauss]"
  mes "Řekni číslo!";
  next;
  input @number;
  if (callfunc("OverCislo",@number)) mes "Ale tohle číslo je liché!";
  close;
}
function%TAB%script%TAB%OverCislo%TAB%{
    if (getarg(0)%2==0) goto JeSude;
    return (1);
  JeSude:
    return (0);
}
Callsub
mes "[Žena]"
  mes "Podívejme se zda jsi vyhrál...";
  callsub Check;
  mes "Výborně, vyhrál jsi!";
Check:
  set @win, rand(2);
  if(@win==0) return;
  mes "Bohužel jsi prohrál...";
Checkcart
Checkfalcon
Checkoption
Checkriding
Checkweight
Cleararray
Clone
Close
Close2
Copyarray
Countitem
mes "[Celník]";
mes "Hmmm, zdá se že pašuješ "+countitem(502)+" jablek!";
close;
Countitem2
Cutin
Cutincard

D

Deletearray
Delitem
Delitem2
Disableitems
Disablenpc
Doevent
Donpcevent

E

Eaclass
Enableitems
Enablenpc
End

F

Failedrefitem

* failedrefitem <equipment slot>;


G

Getareadropitem
Getareausers
Getarg
Getarraysize
Getbrokenid

* getbrokenid(<číslo>);

Getcharid
Getelementofarray
Getequipisenableref
Getequipisequiped
Getequipisidentify
Getequipid
Getequipname

* getequipname(<equpment slot>);

Getequippercentrefinery
Getequiprefinerycnt
Getequipweaponlv
Getgdskilllv
Getgmlevel
Getguildmaster
Getguildmasterid
Getguildname
Getitem
Getitem2
Getmapusers
Getpartyleader
Getpartymember
Getpartyname
Getskilllv
Gettime
Gettimetick
Gettimestr
Getusers
Goto
goto Label;
  mes "Toto hráč neuvidí.";
Label:
  mes "Toto hráč uvidí.";
Grouprandomitem
Guildchangegm
Guildopenstorage
Guildskill

H

Heal
Hideoffnpc
Hideonnpc

I

If
Input
Itemheal
Itemskill

J

Jobchange
Jobname

K

Killmonster
Killmonsterall

L


M

Makeitem
Mapannounce
Menu
Mes
Monster

N


O

Openstorage

P

Percentheal
Playerattached
Produce

Q


R

Rand
Readparam
Repair
Return

Nezapomeňte na kulaté závorky. Jsou potřeba kdykoliv 'hodnota' není přímo číslo. Např. return (@x+@y); Je třeba dávat pozor na to, že if (<podmínka>) return (<cokoliv>); vždy nefunguje! I když by to pomohlo k čitelnosti kódu, pokuste se této konstrukci vyhnout. Pro příklad použití viz Callfunc:callfunc a Callsub:callsub.

Roclass

S

Save
Savepoint
Set
Setarray
Setcart
Setfalcon
Setlook
Setoption
Setriding

* setriding;

Skill
Statusup
Statusup2
Strcharinfo

* strcharinfo(<typ>);

Successrefitem

T


U


V

Viewpoint

W

Warp

X


Y


Z