[[vars_npc]]

Proměnné v NPC scriptech

Takže již umíme pomocí NPC mluvit a povídat si s okolím :-) Je na čase trošku postoupit.

Co je to proměnná? V angličtině taky var. Častější označení a já jej taky budu občas používat, tak se prosím nelekejte :-). K čemu je taková proměnná dobrá? Je to jednoduché, každé programování se bez ní neobejde. Ukládají se do ni veškerá data. Takže lajcky řečeno jsou to takové schránky :-). V našich scriptech se používají různé druhy proměnných.
Každá proměnná se sklada ze tří částí. Tím se řekne jakého bude typu a v jakém vztahu bude vzhledem ke hře.
První části je tzv prefix. Potom je název proměnné. A vše je zakončeno sufixem.

Prefix

  • “ “ - přesně tak, vůbec nic před proměnnou :) Je vázaná permanentně k postavě. Velmi používaná při questech.
  • “@“ - jedná se o dočasnou proměnnou vázanou na postavu. Maže se při restartu nebo při ukončení práce s NPC. (Myšleno jako hovoru.)
  • „$“ - globální permanentní proměnná. Ukláda se do save/mapreg.txt.
  • „$@“ - globální dočasná proměnná. Velmi důležitá proměnná zejména pro složitejší scripta.
  • “#“ - permanentní proměnná vázaná na celý učet. Velmi užitečná při questech.
  • “.“ - proměnná uložená v NPC až do restartu serveru. Dá se volat pouze uvnitř NPC, jinak „getvariableofnpc“.

Sufix

  • “ “ - žádný sufix znamená, že půjde o číselnou proměnnou. A to pouze celé číslo.
  • „$“ - jedná se o textovou proměnnou. Délka je omezena na 255 znaku.


Takže tohle je základni deklarace proměnných. Stačí si teď jen ukázat jak taková proměnná vypadá a můžeme začít psat.

příklad proměnné: @var$ z výše uvedených mouder je jasné, že se jedná o dočasnou proměnnou vázanou na postavu a bude textová.

Funkce:

  • set <var>,“<hodnota>“; - velmi používaná fuknce pro nastaveni proměnné na určitou hodnotu.
  • input <var>; - vytvoří okno a rádek do kterého lze psát. A obsah toho řádku uloží do proměnné var. Pozor doporucuji používat vždy textové proměnné, nikdy nevíte co tam člověk napíše.



prontera.gat,100,100,0	script	Honza	120,{
      set @jmeno$,"Honza";
      mes "Ahoj ja jsem " + @jmeno$;
      next;
      mes "A jak se jmenujes ty?";
      input @dalsijmeno$;
      next;
      mes "Zdravim te "+ @dalsijmeno$;
      close;
 }



Vypadá to jako by proměnné byli zbytečné, ale tohle je jen jednoduchý příklad jak se dají pořádně proměnné použít poznáte později.
V eathene existuji i specialni proměnné. Ty se nastasvují hlavně při praci s NPC. Malý výběr těch nejpoužívanějšich.

Speciální proměnné

  • StatusPoint - Počet nerozdělených status bodů
  • BaseLevel - Aktuální level
  • SkillPoint - Počet nerozdělených skill boduů
  • Class - Povolaní
  • Upper - 1 když je advanced class
  • Zeny - Počet zenu dané postavy
  • Sex - Pohlaví postavy. 0 female(žena), 1 male(muž).
  • Weight - Aktuální váha postavy.
  • MaxWeight - Maximální nosnost postavy.
  • JobLevel - Job level postavy
  • BaseExp - Aktuálni počet zkušeností z dalšího levelu.
  • JobExp - To samé pro job.
  • NextBaseExp - Počet zkušenosti potřebných k dosažení dalšího levelu.
  • NextJobExp - To samé pro job.
  • Hp - Současný počet hit pointu.
  • MaxHp - Maximální počet hit pointu.
  • Sp - Současný počet spell pointu.
  • MaxSp - Maximální počet spell pointu.



Takže úkol pro vás! Kdo mi sem jako první napíše NPC script, který toho řekne co nejvíce o postavě se kterou právě mluví, dostane odměnu :-)
Taky bych chtěl říct, že jsem na něco možná zapomněl. Takže pokud mate dotaz nebo vam není něco jasné nebojte se optat. Mé icq je zde i na foru. Taky se nebojte opravovat moje chyby. nikdo neni dokonalej.

  • Úkol

(O´Neill) Nevim, jestli sem správně pochopil ůkol,ale něco sem sesmolil, odzkoušel a dokonce to i funguje:)

prontera.gat,150,169,4	script	Ukol	865,{
	set @jmeno$,"Ukol";
	mes "Vitam te poutniku";
	next;
	mes "Me jmeno je "+ @jmeno$;
	next;
	mes "Zjistime jak si uber:) ";
	next;
	mes "Zacneme treba tim,co jsi za char";
	next;
	mes "Hm...Ty jsi "+ Class;
	mes " pekne";
	next;
	mes "Ted se podivame na tvuj level";
	next;
	mes "Nadhera tvuj level je "+ BaseLevel;
	next;
	mes "No a tvuj job level je "+ JobLevel;
	mes "To je parada";
	next;
	mes "Zeny taky nejake mas:)";
	next;
	mes "Mas jich "+ Zeny;
	next;
	mes "Sice nejsi tak bohaty(a) jako ja,ale jde to";
	next;
	mes "Tvoje nejvyssi nosnost je "+ MaxWeight/10;
	next;
	mes "To taky ujde";
	next;
	mes "Jeste si mi nerekl(a) tve jmeno ";
	next;
	mes "..?";
	next;
	input @jmenohrace$;
	mes "Krasne jmeno to "+ @jmenohrace$;
	next;
	mes "Mno to je asi tak vse co ti reknu";
	next;
	mes "Mej se.Cau";
	close;
}
 

Vytvořil Typhoon | Provozováno na dokuwiki | Optimalizováno pro Firefox, Opera, Chrome. |  podpora. | Některé z obrázků mohou spadat pod ochrannou známku Gravity Corp. & Lee Myoungjin.  | Vygenerováno během: 0.674 s |   | Copyright 2011-2019