NPC scripting, díl čtvrtý - Scriptování
událostí
Dobře teď přijde ta zábavná
část. Teď si vlastně trochu pohrajeme se samotnými principy hry.
První script se bude vztahovat
k druhé NPC. Konkrétně k předání dopisu hráči.
Tak začneme. Na horní liště
editoru je spousta barevných ikonek. My zmáčkneme tu poslední,
je na ní tužka. Tím si otevřeme script editor. Klikněte na položku
Script a zvolte New. Nyní je před vámi nepopsaný list. To se
brzy změní. Teď napíšu první příkaz a vysvětlím vám co to vlastně
udělá.

Begin jimScript
short state
if ( MenuMode == 1 )
return
endif
if (
GetJournalIndex Tutorial_001 >=
10 )
return
endif
if (
Player->GetItemCount, "sc_npcbob" ==
1 )
set state to 850
Player->RemoveItem, "sc_npcbob" 1
return
endif
End
Vysvětlení:
první
řádek:
Begin -
Začíná script
jimScript -
Jméno scriptu. Sem můžete napsat cokoli chcete.
druhý řádek:
short state -
Udržuje variabilitu proměnných.
třetí až pátý řádek:
if (MenuMode == 1 ) -
Tohle je nejlepší vložit do každého scriptu.
return - návrat
endif -
Tímto ukončíte každý příkaz.
devátý až třináctý řádek:
if
( Player->GetItemCount, "sc_npcbob
== 1) - Ujištění, že hráč dostal
dopis.
set state to 850 -
Jestliže dá hráč při rozhovoru ano, spustí se příkaz dialogu
850 a uvidíte dialog o dopisu.
Player->RemoveItem, "sc_npcbob" 1
- Player->RemoveItem - odstraní dopis
s inventáře hráče při rozmluvě s NPC.
return - návrat
endif -
Tímto ukončíte každý příkaz.
črtnáctý řádek:
End -
Konec scriptu.
Když script napíšete a
uložíte, přejděte zpětně do NPC interface. Podívejte se do kolonky
Script a najděte v ní ten, který jste si právě vytvořili. Teď
si svůj Plugin uložte a jděte vyzkoušet zda vše pracuje správně.
Jestliže vše funguje tak, jak má, měli bychom testovat.
Jestliže si chcete promluvit
prvně s druhou NPC, měli by jste ji pořídit, nějaký normální
základní pozdrav.
Jestliže si nejdříve promluvíte
s prvním NPC, měli by jste dostat možnost doručení dopisu. Pokud
kliknete na No, hovor se ukončí. Klikem na Yes by jste měli dostat
dopis a měl by se aktualizovat deník. Pokud jste se jím zabývali.
Teď jste dostali dopis,
tak si běžte promluvit s druhým NPC. Měl by se objevit pozdrav
obsahující klíčové slovo. Pokud na něj kliknete, měli by jste
dostat na vybranou, zda mu jej předáte, nebo ne. Pokud se ho
rozhodnete předat, měl by vám být dopis odstraněn s inventáře
a připočítáno 50 zlato jako kompenzace.

Další příkaz bude takový,
aby tě druhé NPC (Jim), následovalo k prvnímu NPC (Bob) a to
bude chtít něco více, než jen editaci textu, ale taky trochu
dalšího scriptování. Ale stejně si tu dialogovku uděláme, protože
je to základ.
Otevřete dialogové okno
a nastavte filtr na druhé NPC, Jima. Najděte klíčové slovo, které
vyvolává možnost předání dopisu. Vyberte dialog, který se zobrazí
při předání dopisu. Nyní přepněte do Topic, nastavte filtr na
prázdné pole a zvolte nové klíčové slovo. Klíčové slovo bude
Bob (nebo takové jaké jste dali vaší první NPC).
Efekt
klíčového slova by měl být věta: "Bob!? Ten zavšivený parchant? Kde je? Zavedeš
mě k němu?" ("Bob!? That no good lousy trouble
maker? Where is he? Will you take me to him?").
Teď opět zadáme dvě možnosti
na výběr. První bude možnost dovést Jima k Bobovi a druhá, nechat
ho tam stát.
Tak a toto napište do okna Result:
choice "Lead Jim to
Bob." 1 "Don't lead Jim to Bob." 2
Teď 2 aktivuje při zmáčknutí
klíčového slova Boba více dialogů. Používejme 1 pro všechny výběry.
Všechny dialogy se řídí pomocí příkazu zadaných v Functions/Variable.
Ten náš je 850.
My to uvidíme jako dialogy.
Když se NPC dostane k příkazu 850 quest se aktivuje.
Když aktivujete dialog "Přivedení
Jima k Bobovi" nastaví Functions/Variable funkci výběru
a nastaví se na 1. Potom se přepne s Function na Local, vyhledá
hodnotu 850 a tím se quest aktivuje.
Do okna Result přibude:
StartScript jimfollowScript
Tento script samozřejmě ještě nemáme, ale vytvoříme si ho.
To samé platí při odmítnutí
doprovodu, jenomže místo 1 zvolíte 2 a do Resultu nepřibude hláška
StartScript.
Tak teď uděláme ten script.
Potřebujeme, aby nás Jim po skončení rozhovoru následoval. Tady
je script:
StartScript jimfollowScript
short followNow
if ( GetCurrentAIPackage
!= 3 )
set followNow to 1
AiFollow Player 0 0 0 0
0
endif
if (
GetDistance npc_bob <=
200 )
set followNow to 0
StartCombat npc_bob
endif
if ( GetTarget npc_bob
== 1 )
if ( GetHealth <= 0
)
set followNow to 0
StopCombat
AiWander 280 6 0 40 30
20 0 0 0
endif
endif
End
První co musíme u NPC nastavit,
je umělá inteligence, aby mohlo následovat hráče. Jestliže je
npc_bob viditelný na 200 stop, měl by Jim v této vzdálenosti
přestat následovat hráče a napadnout Boba. Poslední příkaz řekne
Jimovi, že jeho cíl je skutečně Bob a zkontroluje jeho zdraví.
Jestliže Bobův život klesne na nulu, měl by jim přestat následovat
hráče a měla by se aktivovat jeho umělá inteligence.
Teď jestliže chceme, aby
Jim vyhrál, musíme editovat Bobovo zdraví a dát Jimovi zbraň.
Teď je třeba se vrátit do interface Boba a změnit jeho statistiky.
Vypněte auto-calc stats, aby jste je mohli editovat. Pokud jde
o zbraň, dělá se to stejně, jako s oblečením, akorát že zbraně
jsou v záložce Weapon.
Teď je třeba udělat script,
jenž nám zajistí, že nám Jim dá prsten, jako odměnu za zprostředkování
Bobovy smrti. Nejlepší bude, když jej bude mít Bob po své smrti
u sebe.
Script zajistí, aby se prsten objevil ve vašem inventáři
po jeho smrti:
Begin deadbobScript
if ( OnDeath == 1 )
Player->AddItem, "ring_keley" 1
PlaySound, "mysticism
cast"
MessageBox, "You've
recieved a magic ring!
return
endif
End
Když máte prsten z Bobovy
mrtvoly, měla by být odstraněna část textu správy. Otevřete Bobův
NPC interface a přidejte script o prstenu k jedné s možností
výzvy Jima k vraždě Boba.
Ještě vymyslete nějaké
Jimovo poděkováni a máte to z krku.
Toto vše je jenom tutoriál.
Pokud jste dostatečně ambiciózní, jistě se od vás brzy dočkáme
spousty Pluginů - rádi je uveřejníme. Pokud budete mít nějaké
problémy, nebo otázky směrujte je na můj mail.
Hexx
korekci
provedl Polin :o)
|