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