Tworzenie bardziej złożonych dialogów

NAZWA:  Tworzenie bardziej złożonych dialogów
AUTOR:  R.I.C.K.(KAIL)

 

LEKCJA NR 1 - TWORZENIE ZŁOŻONEGO DIALOGU Z KILKOMA GAŁĘZIAMI:

Spoiler

Stworzymy bardziej złożony dialog z Sidorowiczem, powiedzmy, że zapytamy go o Kła, Barmana i wioskę kotów.

Co się przyda:

  • character_desc_lokacja.xml
  • dialogs_lokacja.xml
  • stable_dialogs_lokacja.xml

Wchodzimy do character_desc_lokacja.xml, w przykładzie wzięto character_desc_escape.xml a teraz szukamy handlarza; poniżej są takie linijki:

\<start\_dialog\>hello\_dialog\</start\_dialog\> - jakiś dialog na przywitanie\<actor\_dialog\>esc\_trader\_queshion\_actor\</actor\_dialog\> - nasz dialog

wszystko zapisujemy.

Teraz wchodzimy do dialogs_lokacja.xml, w przykładzie dialogs_escape.xml:
Trzeba stworzyć szkielet dialogu. Na samym dole zaczynami pisać przed słowem </dialogs>:

\<dialog id="esc\_trader\_queshion\_actor"\> -- nazwa dialogu powinna być tak jak napisana jest w character\_desc\__lokacja_\<dont\_has\_info\>esc\_trader\_queshion\_actor\</dont\_has\_info\>\<phrase\_list\> - szkielet\<phrase id="0"\> - pierwszy ID\<text\>esc\_trader\_queshion\_0\</text\> - pierwsza fraza aktora typu odpowiedz na moje pytania\<next\>1\</next\> -- przechodzimy do następnej frazy\</phrase\>\<phrase id="1"\> - nast. ID, tak jak było w next\<text\>esc\_trader\_queshion\_1\</text\> - fraza handlarza typu Pytaj, ale na wszystkie pytania mogę nie znać odpowiedzi\<next\>2\</next\> -- tutaj przechodzimy do następnych gałęzi, to znaczy rozgałęzieniu dialogu można zapytać o 3 pytania\<next\>4\</next\>\<next\>8\</next\>\</phrase\>\<phrase id="2"\>\<text\>esc\_trader\_queshion\_2\</text\> - opowiedz o sobie себе актер\<next\>3\</next\> - co ci powiedzieć handlarzu\</phrase\>\<phrase id="3"\>\<text\>esc\_trader\_queshion\_3\</text\>\</phrase\>\<phrase id="4"\>\<text\>esc\_trader\_queshion\_4\</text\> -- pytanie 2 opowiedz o zonie\<next\>5\</next\> -- zona to ogromna dziura\</phrase\>\<phrase id="5"\>\<text\>esc\_trader\_queshion\_5\</text\>\<next\>6\</next\>\</phrase\>\<phrase id="6"\>\<text\>esc\_trader\_queshion\_6\</text\>\<next\>7\</next\>\</phrase\>\<phrase id="7"\>\<text\>esc\_trader\_queshion\_7\</text\>\</phrase\>\<phrase id="8"\>\<text\>esc\_trader\_queshion\_8\</text\> opowiedz o spełniaczu życzeń\<next\>9\</next\>\</phrase\>\<phrase id="9"\>\<text\>esc\_trader\_queshion\_9\</text\> w dwóch słowach powiedz życzenie\</phrase\>\</phrase\_list\>\</dialog\>

I to wszystko. Szkielet został napisany, gdy zadajemy pytanie, rozmawimy, pierwsze pytanie, i wracamy do początku. Pozostaje tylko napisać tekst.

Wchodzimy do stable_dialogs_lokacja.xml, w przykładzie stable_dialogs_escape.xml i piszemy:

\<string id="esc\_trader\_queshion\_0"\>\<text\>Odpowiesz mi na kilka pytań?\</text\>\</string\>\<string id="esc\_trader\_queshion\_1"\>\<text\>Pytaj, może odpowiem\</text\>\</string\>\<string id="esc\_trader\_queshion\_2"\>\<text\>Kim jest stalker Kieł?\</text\>\</string\>\<string id="esc\_trader\_queshion\_3"\>\<text\>Hmm, gdzieś słyszałem, że Kieł to legenda zony, jeden z członków grupy Striełoka. Byli ponoć w centrum zony i nawet przeżyli. Często go widziano w Barze, rok temu był u mnie i interesował się rzadkimi częściami, a gdzie jest teraz pojęcia nie mam.\</text\>\</string\>\<string id="esc\_trader\_queshion\_4"\>\<text\>Opowiedz o Barmanie.\</text\>\</string\>\<string id="esc\_trader\_queshion\_5"\>\<text\>A co tu opowiadać, Barman jak barman, znajduje się w Barze 100 Radów, można u niego kupić wyposażenie i zapytać odnośnie pracy.\</text\>\</string\>\<string id="esc\_trader\_queshion\_6"\>\<text\>Jaką pracę może zaproponować?\</text\>\</string\>\<string id="esc\_trader\_queshion\_7"\>\<text\>Różną. Od szukania artefaktów do zabijania stada mutantów lub przyniesienia cennego ładunku.\</text\>\</string\>\<string id="esc\_trader\_queshion\_8"\>\<text\>Co to za obóz tutaj niedaleko?\</text\>\</string\>\<string id="esc\_trader\_queshion\_9"\>\<text\>To tutejszy obóz nowicjuszy, dowodzi w nim Wilk, jeśli chcesz możesz pójść z nim pogadać albo z miejscowymi stalkerami, ale oni mało ci powiedzą, bo wszyscy są jeszcze zieloni.\</text\>\</string\>

I to wszystko, napisaliśmy dialog.

 

LEKCJA NR 2 - TWORZENIE ZŁOŻONEGO DIALOGU Z WARUNKIEM:

Spoiler

Dzisiaj stworzymy złożony dialog z dwiema opcjami odpowiedzi i warunkiem, powiedzmy, że musisz zapytać postać o coś ważnego, ale on nie chce ot tak rozmawiać i za informację żąda “przynieś mi wódkę i ci powiem” .

Czego będziesz potrzebować:

  • dialogs_new.script
  • character_desc_lokacja.xml
  • dialogs_lokacja.xml
  • info_l-lokacja.xml
  • stable_dialogs_lokacja.xml

Tworzymy skrypt w folderze scripts z nazwą dialogs_new.script i piszemy funkcję/warunek:

-przepustka ochroniarza function have\_vodka(first\_speaker, second\_speaker) -- funkcja sprawdza czy akto ma w inwentarzu 1 butelkę wódki return first\_speaker:object("vodka") ~= nil end function give\_vodka(first\_speaker, second\_speaker) -- funkcja oddajemy przedmiot postaci dialogs.relocate\_item\_section(second\_speaker, "vodka", "out") end

Zakończyliśmy i zapisujemy.

Następnie przechodzimy do pliku character_desc_lokacja.xml, znajdujemy swoją postać, a dokładniej jej profil:

#include "gameplay\character\_food.xml"\</supplies\>#include "gameplay\character\_criticals\_3.xml"\<!--\<actor\_dialog\>dialog\_helo\</actor\_dialog\> -- jakieś dialogi \<actor\_dialog\>kuda\_otvesti\</actor\_dialog\>--\>\<actor\_dialog\>spawn\_npc1\_wpn\_pm\_m1\_quest\</actor\_dialog\>\<actor\_dialog\>spawn\_npc1\_wpn\_pm\_m1\_quest\_completed\</actor\_dialog\>\<actor\_dialog\>dialog\_who\</actor\_dialog\>\<actor\_dialog\>esc\_talk\_item\</actor\_dialog\> -- nasz dialog\</specific\_character\>

Zapisujemy, będziemy pisać teraz szkielet dialogu.

Przechodzimy do pliku dialogs_Lokacja.xml i po słowie:

\</dialogs\>

piszemy:

\<dialog id="esc\_talk\_item"\>\<has\_info\>new\_info\</has\_info\>-- вставить сдесь\<dont\_has\_info\>esc\_talk\_item\</dont\_has\_info\>\<phrase\_list\>\<phrase id="0"\>\<text\>esc\_talk\_item\_0\</text\> -- 1-sza fraza aktora\<next\>1\</next\>\</phrase\>\<phrase id="1"\>\<text\>esc\_talk\_item\_1\</text\> -- odpowiedź postaci\<next\>2\</next\> - przechodzimy do następnej frazy\</phrase\>\<phrase id="2"\>\<text\>esc\_talk\_item\_2\</text\>\<next\>3\</next\>\</phrase\>\<phrase id="3"\>\<text\>esc\_talk\_item\_3\</text\>\<next\>4\</next\>\</phrase\>\<phrase id="4"\>\<text\>esc\_talk\_item\_4\</text\>\<next\>5\</next\>\</phrase\>\<phrase id="5"\>\<text\>esc\_talk\_item\_5\</text\>\<next\>6\</next\>\</phrase\>\<phrase id="6"\>\<text\>esc\_talk\_item\_6\</text\>\</phrase\>\<phrase id="7"\>\<text\>esc\_talk\_item\_7\</text\>\<next\>8\</next\>\<next\>10\</next\>\</phrase\>\<phrase id="8"\>\<text\>esc\_talk\_item\_8\</text\>\<precondition\>dialogs\_new.have\_vodka\</precondition\> -- warunek ze skryptu\<action\>dialogs\_new.give\_vodka\</action\> - aktywujemy oddanie przedmiotu ze skryptu\<next\>9\</next\>\<phrase id="9"\>\<text\>trader\_ohranik\_whois\_9\</text\>\<give\_info\>esc\_talk\_item\</give\_info\> - umieszczamy wszystko tutaj po zdaniu postaci, gdy mówi o doktorze i kończymy dialog\</phrase\>\<phrase id="10"\>\<text\>esc\_talk\_item\_10\</text\>\<next\>11\</next\>\</phrase\>\<phrase id="11"\>\<text\>esc\_talk\_item\_11\</text\>\<next\>12\</next\>\</phrase\>\<phrase id="12"\>\<text\>esc\_talk\_item\_12\</text\> -- zrozumiano\<action\>dialogs.break\_dialog\</action\>\</phrase\>\</phrase\_list\>\</dialog\>

I tak, szkielet został napisany. Napiszemy infoportion.

Jeśli chcesz, aby twój dialog był aktywowany przez infoportion, napisz tak:

\<has\_info\>new\_info\</has\_info\>

Dalej przechodzimy do info_l-lokacja.xml, i piszemy:

\<info\_portion id="esc\_talk\_item"\>\</info\_portion\>

Jeśli chcesz, aby twój dialog nie pojawiał się ponownie, wydamy infoportion:

\<give\_info\>esc\_talk\_item\</give\_info\>

A teraz pozostało tylko napisać tekst.

Wchodzimy do stable_dialogs_lokacja.xml, otwieramy i piszemy:

\<string id="esc\_talk\_item\_0"\>\<text\>Potrzebuję informacji.\</text\>\</string\>\<string id="esc\_talk\_item\_1"\>\<text\>Co chcesz wiedzieć?\</text\>\</string\>\<string id="esc\_talk\_item\_2"\>\<text\>Wiesz, kim jest Doktor?\</text\>\</string\>\<string id="esc\_talk\_item\_3"\>\<text\>Wiem, ale tak po prostu nie opowiem o nim.\</text\>\</string\>\<string id="esc\_talk\_item\_4"\>\<text\>Dobra, co chcesz w zamian?\</text\>\</string\>\<string id="esc\_talk\_item\_5"\>\<text\>Przynieś mi butelkę wódki i pogadamy wtedy.\</text\>\</string\>\<string id="esc\_talk\_item\_6"\>\<text\>Dobrze.\</text\>\</string\>\<string id="esc\_talk\_item\_7"\>\<text\>Ok, poczekam.\</text\>\</string\>\<string id="esc\_talk\_item\_8"\>\<text\>Trzymaj wódkę.\</text\>\</string\>\<string id="esc\_talk\_item\_9"\>\<text\>Wspaniale, później będzie można się zrelaksować. Odnośnie Doktora, to gdzie go znaleźć wie tylko Striełok. Doktor jest jednym z pierwszych stalkerów, którzy przyszli do zony. Leczy on stalkerów od radiacji, a także niektórych mutantów zony. Słyszałem nawet, że Doktor to były wojskowy, przyszedł do zony z oddziałem, na początku kiedy zona się pojawiła. On i inni wojskowi ochraniali perymetr.\</text\>\</string\>\<string id="esc\_talk\_item\_10"\>\<text\>Nie mam niestety wódki.\</text\>\</string\>\</string\>\<string id="esc\_talk\_item\_11"\>\<text\>W takim razie i rozmowy nie będzie. Przyniesiesz to pogadamy.\</text\>\</string\>\<string id="esc\_talk\_item\_12"\>\<text\>Rozumiem.\</text\>\</string\>

I to wszystko, zakończyliśmy nasz dialog.

 

ŹRÓDŁO:

https://ap-pro.ru/forums/topic/1183-sozdanie-bolee-slozhnyh-dialogov/