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;
}