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/