http://teseditor.doupe.czfanpage o Morrowindu,, jeho datadiscích, editoru a češtině :o)
 Morrowind, Tribunal, Bloodmoon, návody, tipy a triky, obrázkyConstruction set, návody pro tvorbu vlastních pluginůDownload
     
     základní informace
     základní funkce
     systém souborů
     úvod do editoru
     klávesové zkratky
 
     část 1 - buňka
     část 2 - RAD
     část 3 - vybavení
     část 4 - dveře
     část 5 - světla
 
     část 1 - exteriér
     část 2 - interiér
     část 3 - teleport
 
     tvorba nové rasy
     definování modelu
 
     část 1 - tvorba NPC
     část 2 - dialogy
     část 3 - druhé NPC
     část 4 - scriptování
 
     část 1 - úvod
     část 2 - texturování
     část 3 - oživení
 
     editace NIF souborů
     tvorba příšer
     tvorba zbraní
 


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)

     
 
 
     FAQ
     ekvivalenty
     jak to s ní vypadá ?
     screenshoty
 
     FAQ
     první informace
     scany
     screenshoty
     wallpapery
 
 
 
 











 
 
 
http://teseditor.doupe.cz
CNW:Counter
Polin @ seznam . cz