[align=left]Jest to tłumaczenie tutoriala tworzenia kwestu w rodzaju:
Art dla sierżanta Pliczko za wpuszczenie do bazy Powinności[/align]
Źródło - forum AMK, autor=‘potap’ data='23.5.2008
- Trzeba stworzyć dialog. Szukamy pliku stable_dialogs_bar(ścieżka gamedata\config\text\rus) i na końcu dodajemy dwa dialogi, na przykład takie:
Słuchaj stary, mam bardzo ważna informacje dla twojego dowódcy, może się jakoś dogadamy?
W zasadzie można, ale przysluga za przysługę, Naznaczony. Mam klienta, dobrze płaci, ale szuka jedynie naprawdę cennych artefaktów. Możesz mi przynieść artefakt Pancerz?
Dałeś do pieca ... dobra, czekaj, znajde ci pancerz, ty nasz żółwiku.
Eh ty żłobie, lepiej dobrze sie rozglądaj, bo jeszcze jakas zabłakana kulka nadleci.
Czołem sierżancie, nie zapomniałeś o naszej umpowie?.
Tak, pamiętam, coś tam było. Jakoś niespieszno ci było, mnie żólwirm nazwałeś, a sam... no dobra, przyniosłeś?.
A jakże, trzymaj, tylko ostrożnie, sporo mnie to trudu kosztowało.
No, w naszym fachu bez tego sie nie da... i czego stoisz, przechodź.
[/php]
Pierwszy dialog nazywa się bar_ohran_propusk, a drugi bar_friend_propusk. Zwróćcie uwagę, że wszystkie dialogi powinny zaczynać się od kwestii Naznaczonego.
2)Znajdujemy plik dialogs_bar(ścieżka gamedata\config\gameplay) i tworzymy szkielet naszego dialogu znowu na końcu pliku:
[php]
bar_ohran_propusk_0
1
bar_ohran_propusk_1
2
3
bar_ohran_propusk_2
bar_ohran_propusk_3
dialogs.break_dialog
bar_friend_propusk_0
1
bar_friend_propusk_1
2
bar_friend_propusk_2
3
bar_friend_propusk_3
To wszystko, mamy już dialog. Właśnie ta linijka dialogs.break_dialog oznacza, że z pliku skryptowego dialogs wywoływana jest funkcja break_dialog. T.zn. jeśli my odmówimy przyniesienia artu dla Pliczko, to dialog zostanie przerwany.
Jesli wszystko zrobilismy dobrze, to zapisujemy nasze zmiany.
- Znajdujemy plik character_desc_bar, szukamy Pliczko(tego, który nas nie puszcza do Woronina) i dodajemy mu dwa dialogi:
bar_ohran_propusk
bar_friend_propusk - to są nasze dialogi.
bar_dolg_base_guard_start
bar_dolg_base_guard_talk
bar_dolg_base_guard_story
bar_dolg_base_guard_rules
#include “gameplay\character_dialogs.xml”
Zapisujemy nasze zmiany i uruchamiamy grę. Jeśli zrobiliśmy wszystko prawidłowo, to u Pliczko pojawią się dwa nowe dialogi.
Dialogi mamy, ale teraz trzeba zrobić tak, żeby on nas wpuścił do Woronina t.zn. trzeba dodać Pliczko kwest.
W katalogu gameplay jest dużo plików tego rodzaju: info_known_objects,info_l05dark_valley i t.d. To wszystko są infoportions gry, bez nich kwest nie zadziała. Musimy stworzyć swoje infoportions. Stworzymy swój plik, gdzie będą sie mieścić nasze infoportions. Ja nazwałem swój plik info_dan_way(nie zapomnijcie dopisać go w pliku system t.zn. dodać swojego pliku do pozostałych plików z infoportions)
Wewnętrzna struktura plikubędzie mniej więcej taka
to nasz infoportion Nr1
bar_dolg_propusk to jest cel zadania, który ukazuje sie w game_tasks
to nasz infoportion Nr2
to nasz infoportion Nr3
Następnie otwieramy game_tasks i po wszystkich include wpisujemy nasz kwest
Przynieść art Pliczko
Znaleźć artefakt Pancerz
ui_iconsTotal_artefact
bar_dolg_propusk_done
Znaleźć artefakt Pancerz
ui\ui_icons_task
dan_dialog.bar_dolg_propusk_have
bar_dolg_propusk_have
Przynieść artefakt Pliczko
blue_location
bar_dolg_guard_commander
bar_dolg_propusk_done
To wszystko, teraz musimy podłaczyć infoportions do naszego dialogu, znajdujemy dialogs_bar szukamy w nim naszych dialogów i dodajemy inforpotions;
bar_dolg_propusk_start to znaczy, że dialog nie pojawi sie u Pliczko
bar_dolg_propusk_have jeśli zadziałały nasze inforpotions наши инфопоршни t.zn. żeby
bar_dolg_propusk_done po wypełnieniu zadania dialog nie pojawił sie znowu
bar_ohran_propusk_0
1
bar_ohran_propusk_1
2
3
bar_ohran_propusk_2
dan_dialog.bar_dolg_propusk_have****t.zn. będzie wykonywana funkcja
bar_dolg_propusk_startbar_dolg_propusk_have z pliku skryptowego dan_dialog.
bar_ohran_propusk_3
bar_dolg_propusk_startinformacja o otrzymaniu pierwszego infoportion.
dialogs.break_dialog
bar_dolg_propusk_done nie pokazywać po otrzymaniu 3 infoportion
bar_dolg_propusk_have pokazywać, jesli jest drugi infoportion
bar_friend_propusk_0
1
bar_friend_propusk_1
2
bar_friend_propusk_2
dan_dialog.bar_dolg_propusk_done wywoływana jest funkcja bar_dolg_propusk_done
bar_dolg_propusk_done informacja o otrzymaniu 3 infoportion zadanie wypełnione
3
bar_friend_propusk_3
bar_dolg_base_pass tu działa infoportion o przxepuszczeniu nas na bazę Powinności.
bar_dolg_community_start
bar_dolg_community_leader
Teraz musimy stworzyć swój plik skryptowy i dodać 2 funkcje. Jedna konieczna jest do sprawdzenia obecności w inwentarzu Pancerza o odpowiednio do włączenia infoportion bar_dolg_propusk_have. Druga dla przekazania Pliczko artu. Na przykład nazwiemy go dan_dialog i wpiszemy nasze funkcje.
function bar_dolg_propusk_have(task, objective) ta funkcja sprawdza obecność artu
if db.actor ~= nil then
return db.actor:object(“af_armor_3”) ~= nil
end
return false
end
function bar_dolg_propusk_done(first_speaker, second_speaker) ta funkcja oddaje art Pliczko
dialogs.relocate_item_section(second_speaker, “af_armor_3”, “out”)
second_speaker:set_relation(game_object.friend, first_speaker) ta linia zmienia Pliczko w przyjaciela.
end
I to jakby wszystko. Jesli zrobiliście wszystko prawidłowo, to po tym, jak przyniesiecie art Pliczko, zostaniecie wpuszczeni do bazy Powinności.
Pytanie:
bar_ohran_propusk_01
Może to głupie pytanie, ale co znaczy: ?
Odpowiedź:
- to identyfikator kolejnej frazy. Piszesz jakie frazy mogą nastapić po tej.
Wytłumaczę po kolei.
Tag, rozpoczynający frazę - oznacza, że ta fraza otrzymuje “nazwę” “1”. Przy pomoicy tej “nazwy” fraza jest pózniej wywoływana z innych fraz przez tag .
Tag , w ktorym, na przykład, jest “bar_ohran_propusk_1” - to odwolanie do linii, w której znajduje sie tekst frazy, znajdujący sie w innym pliku. Przykład:
Walnij się o ścianę
Pytanie:
Z tego co tu było napisane, mogę zrozumiec co nastepuje:
- słowa NPC-a + słowa naznaczonego,
a - jak może Naznaczony odpowiedzieć.
Jesli nie, to będę musiał zrobić to, co proponował ochroniarz. Walnąć sie o ścianę.
Odpowiedź:
Hmmm… Z HTML miałes do czynienia?
Przystaw do ściany materac ))
Plik “bar_dialogs.xml”
…
– otwarcie ciała frazy
text1 – wpisujemy, co będzie tekstem frazy - odniesienie do linii
2 – odniesienie (identyfikator) do nastepnej frazy - piszemy to, co jest w jej parametrze id
– zamknięcie ciała frazy
– otwarcie ciała frazy, do której jest odniesienie z pierwszej
text2 – odniesienie ndo linii z tekstem tej frazy
– zamknięcie ciała frazy
…
Plik “stable_bar_dialogs.xml”
…
– otwieramy ciało linii
Walnij się o ścianę – dodajemy tekst
– zamykamy ciało linii
Dobra, tylko daj materac
…
Ale oczywiście, najlepiej dochodzić samemu.