Tworzenie zadań

Tworzenie zadań

Postprzez barin w 11 Maj 2008, 22:58

Pewna osoba poprosiła mnie o opisanie w jaki sposób tworzyć nowe zadania w Stalkerze. Pomyślałem, że może innym również się to przyda ...

Są dwa rodzaje zadań w stalkerze: takie które można otrzymać tylko poprzez dialog (zabij kogoś, znajdź artefakt/broń, obroń stalkerów itd i wróć po nagrodę) oraz takie, które kontrolowane są przez infoportion (wszystkie zadania typu storyline są tego typu).

Opiszę pierwszy typ zadań, ponieważ z drugim typem jest znaczenie więcej roboty (jeśli ktoś na prawde będzie chciał to mogę również opisać drugi sposób).

Zadania pierwszego typu dotyczą właściwie tylko trzech plików:

- config\text\eng\stable_task_manager.xml

zawiera tytuły i opisy zadań

- scripts\task_manager.script

skrypt, który daje zadanie, sprawdza czy zadanie zostało wykonane, daje nagrode itd. Generalnie jeśli nie macie jakiegoś ważnego powodu to nie musicie tego skryptu edytować

- config\misc\task_manager.ltx

jest to plik zawierający definicje zadań, myśle że najprościej będzie jeśli omówię to na przykładzie:

Kod: Zaznacz wszystko
[barmen_kill_stalker_3]
type = kill_stalker
community = actor
init_condition = {=actor_on_level(l10_radar) +yan_kill_brain_done}
need_return = false
text = barmen_kill_stalker_3_text
description = barmen_kill_stalker_3_descr
parent = barman
target = rad_monolith_master
reward_money = 10000
reward_reputation = +200
reward_rank = 20
time = 86400


type to typ zadania, może to być: przynieś artefakt (type = artefact), znajdź przedmiot/broń (type = find_item), przynieś fragment ciała jakiegoś mutanta (type = monster_part), zabij stalkera (type = kill_stalker), obroń obóz stalkerów (type = defend_lager), zabij stalkerów (type = eliminate_lager), storyline

community = actor - jako wartość zawsze jest actor, co oznacza, że to właśnie gracz powinien wykonać to zadanie (kiedyś w stalkerze zadania mogły być wykonywane również przez stalkerów - np. stalker przychodzi to Sidorovitcha i bierze zadanie żeby znaleźć artefakt, szuka, znajduje i odnosi do Sida - szkodza że to wycieli z gry :(

init_condition - niektóre zadania są typu "random" (czyli takie które dostajesz co jakiś czas, jak na przykład to od Woronina żeby zabić zombi w Jantarze); jeśli zadanie ma być typu "random" to wtedy w definicji zadania musi pojawić się taka właśnie linijka. Po prawej stronie znaku = jest warunek, który musi być spełniony żebyś dostał zadanie. W tym przypadku musisz znajdować się na mapie radar (red forest) i musisz mieć infoportion yan_kill_brain_done (które dostajesz gdy wyłączysz mózg w x16). Jeśli zadanie ma być dostępne przez dialog (czyli nie "random") to ta linijka nie powinna się znaleźć w definicji zadania

need_return = false - określa czy musisz wrócić do osoby która dała Ci to zadanie. Jako domyślne jest need_return = true czyli za każdym razem musisz wrócić po nagrode. Jeśli nie chcesz zmuszać gracza do powrotu do osoby która zleciła zadanie to umieszczasz w definicji zadania need_return = false (ale w takim przypadku gracz nie otrzyma nagrody, czyli zrobi zadanie za friko)

text = barmen_kill_stalker_3_text - określna nazwe tekstu wyświetlanego jako opis zadania (config\text\eng\stable_task_manager.xml)

description = barmen_kill_stalker_3_descr - określna nazwe tekstu wyświetlanego jako tytuł zadania (config\text\eng\stable_task_manager.xml)

parent = - osoba która zleca zadanie, oczywiście można utworzyć nowego "zleceniodawce"

parent = trader (Sidorovitch)
parent = barmen (Barkeep)
parent = ecolog (Professor Sakharov)
parent = dolg (General Voronin)
parent = freedom (Lukash)
parent = zastava_commander (Sergeant Kitsenko)
parent = wolf (Wolf)
parent = petrenko (Colonel Petrenko)
parent = hunter (Hunter)
parent = lisiy (Baldy)
parent = drunk_dolg (Brome)
parent = shustriy (Nimble)
parent = mercenary (Snitch)

target = - cel zadania; w zależności od typu zadania:

type = artefact :: target = nazwa_artefaktu
type = find_item :: target = nazwa_przedmiotu
type = monster_part :: target = nazwa_przedmiotu
type = kill_stalker :: target = nazwa_klasy_stalkera (config\gameplay\character_desc_*.xml)
type = defend_lager :: target = nazwa_smart_terrain
type = eliminate_lager :: target = nazwa_smart_terrain

reward_money = - nagroda w postaci rubli

reward_reputation = - nagroda w postaci reputacji (raczej średnio działa w stalkerze, ale dzięki temu można na przykład zostać członkiem Freedom w oryginalnej grze :))

reward_item = - lista przedmiotów, które stanowią nagrodę

reward_rank = - nagroda w postaci ranku

time = - ile czasu na wykonanie zadania (w sekundach); 1 godzina = 3600 sekund, czyli jeden dzień = 3600 x 24 = 86400 sekund

WAŻNE

Zapomniałem wspomnieć o jednym całkiem ważnym pliku, dlatego zadanie Bartasa nie działa. Zmienna description działa jak pewnego rodzaju link. Gra odczytująć wartość tej zmiennej szuka w pliku config\gameplay\storyline_info_taskmanager.xml tzw. artykułu. Artykuł opisuje w jaki sposób i gdzie dodać informacje do pda. Definicja wygląda następująco:

Kod: Zaznacz wszystko
<article id="tm_find_item_4_descr" name="find_item" article_type="task">
        <text>tm_find_item_4_descr</text>
</article>


- id - jest to to samo co wpisaliście w zmiennej description w definicji zadania

-name - typ zadania (to samo co type w definicji zadania)

-article_type - typ artukułu, w tym przypadku task ponieważ jest to zadanie (dzięki temu gra będzie wiedziała że ten artykuł powinien zostać wyświetlony w sekcji pda odpowiedzialnej za zadania)

text - link do opisu zadania (config\text\eng\stable_task_manager.xml)
Ostatnio edytowany przez barin, 14 Maj 2008, 19:24, edytowano w sumie 1 raz

Za ten post barin otrzymał następujące punkty reputacji:
Positive KoweK, rumun651.
barin
Stalker

Posty: 54
Dołączenie: 31 Sty 2008, 07:03
Ostatnio był: 07 Gru 2010, 22:15
Kozaki: 7

Reklamy Google

Postprzez Vaniol w 11 Maj 2008, 23:16

Hm gdyby tak uzbroić daną grupę np. bandytów w broń potrzebną do zadania, zrobić nowy opis danego zadania i dodać do gry to można by zrobić mission packa :D


A tak ogólnie to świetna robota z tym tutorialem.
Image Image
"And if that is not the best fuckin' example, God HimSelf killed his own motherfuckin' son. So let's sing The Death Song Kids" by Marilyn Manson
Awatar użytkownika
Vaniol
Very Important Stalker

Posty: 536
Dołączenie: 21 Lut 2007, 21:50
Ostatnio był: 14 Lut 2022, 00:12
Frakcja: Monolit
Ulubiona broń: Sniper Rifle SVDm2
Kozaki: 11

Postprzez Bartas w 12 Maj 2008, 10:13

No więc od razu zabrałem się do roboty, ale niestety przy kliknięciu na "Jestem gotów" gra mnie wywala. Zrobiłem zadanie, że Żwawy chce się pozbyć Wilka. Zmieniłem (chyba) wszystko co mogłem by działało w plikach task_manager.ltx oraz stable_task_manager.xml. Mam nadzieję, że nie trzeba grzebać w pliku task_manager.script gdyż na tym się kompletnie nie znam...
CRASH:

FATAL ERROR

[error]Expression : no_assert
[error]Function : CXML_IdToIndex<class CEncyclopediaArticle>::GetById
[error]File : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h
[error]Line : 112
[error]Description : item not found, id
[error]Arguments : shustriy_kill_stalker_descr
Image
Bo inne horror-mody to chu*nia...
Wyjdzie jak go skończę
Awatar użytkownika
Bartas
Stalker

Posty: 189
Dołączenie: 21 Paź 2007, 19:13
Ostatnio był: 24 Cze 2011, 19:07
Miejscowość: Dolina Mroku
Frakcja: Samotnicy
Ulubiona broń: Gauss Gun
Kozaki: 2

Postprzez Polski zolnierz w 12 Maj 2008, 16:17

Dziwnie to wygląda...jak dla mnie troche to wygląda jakbyś zrobił zadanie typ: znajdź item'a, ale coś musi byc nie tak z Żwawym, lub jego opisie (descr-description)
"Prawda wyłania się tak samo niespodziewanie jak deszcz popromienny Czarnobyla"
Awatar użytkownika
Polski zolnierz
Tropiciel

Posty: 376
Dołączenie: 01 Sie 2007, 13:59
Ostatnio był: 04 Kwi 2011, 09:37
Miejscowość: Łódź
Frakcja: Samotnicy
Ulubiona broń: Sniper Rifle SVDm2
Kozaki: 1

Postprzez Bartas w 12 Maj 2008, 16:28

Nie, jest to zlecenie na zabicie wilka, ustawiłem wszystko jak trzeba, rodzaj, cel, nagrody...
Dlatego własnie nie wiem o co chodzi :(
Image
Bo inne horror-mody to chu*nia...
Wyjdzie jak go skończę
Awatar użytkownika
Bartas
Stalker

Posty: 189
Dołączenie: 21 Paź 2007, 19:13
Ostatnio był: 24 Cze 2011, 19:07
Miejscowość: Dolina Mroku
Frakcja: Samotnicy
Ulubiona broń: Gauss Gun
Kozaki: 2

Postprzez Missile w 12 Maj 2008, 16:42

Świetny poradnik barin. Przyda się, popróbuję w wolnym czasie coś porobić. Mam tylko jedno pytanie: gdy bierzemy zadanie, np. zabicia kogoś, to wyświetla nam się na mapce (w PDA) miejsce, gdzie ten ktoś jest. Czy jeżeli ustawię w zadaniu zabij Wilka to gra sama zaznaczy go na PDA?
Przypuśćmy, że chcę zrobić zadanie zlikwiduj stado kotów (chodzi o mutanty). Co wtedy? Jak zaznaczyć miejsce, w którym one są? Wpisać współrzędne miejsca czy jak... Ciekaw jestem czy da radę w ogóle zrobić takie zadanie.

Missile
Wygnany z Zony

Posty: 452
Dołączenie: 15 Gru 2007, 15:17
Ostatnio był: 15 Kwi 2016, 20:14
Miejscowość: Valhalla
Kozaki: 9

Postprzez barin w 12 Maj 2008, 21:49

Bartas, z opisu błędu wynika, że zapomniałeś dodać opisu zadania shustriy_kill_stalker_descr

Missile napisał(a):Mam tylko jedno pytanie: gdy bierzemy zadanie, np. zabicia kogoś, to wyświetla nam się na mapce (w PDA) miejsce, gdzie ten ktoś jest. Czy jeżeli ustawię w zadaniu zabij Wilka to gra sama zaznaczy go na PDA?


Tak, ale npc powinien być unikalny (czyli powinien mieć unikalny character_profile). W tym przypadku tak, ponieważ Wolf (Wilk) jest unikalną postacią.

Missile napisał(a):Przypuśćmy, że chcę zrobić zadanie zlikwiduj stado kotów (chodzi o mutanty). Co wtedy? Jak zaznaczyć miejsce, w którym one są? Wpisać współrzędne miejsca czy jak... Ciekaw jestem czy da radę w ogóle zrobić takie zadanie.


W takim przypadku koty/inne mutanty które są celem zadania MUSZĄ znajdować się pod kontrolą smart terraina. I w tym przypadku jako target podajesz nazwe smart terrain.
barin
Stalker

Posty: 54
Dołączenie: 31 Sty 2008, 07:03
Ostatnio był: 07 Gru 2010, 22:15
Kozaki: 7

Postprzez Bartas w 13 Maj 2008, 08:34

barin napisał(a):Bartas, z opisu błędu wynika, że zapomniałeś dodać opisu zadania shustriy_kill_stalker_descr


Właśnie chodzi o to, że mam wszystkie opisy, zadania również mam ustawione, nagrody, cel, zleceniodawca...

Teraz mam za to w ogóle gra nie chce się wczytać. mam tylko 2 pliki: stable_task_manager.xml w config/text/pol oraz task_manager.ltx w config/misc.
CRASH:

FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: ....r. - shadow of chernobyl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)
Ostatnio edytowany przez Bartas, 16 Maj 2008, 21:03, edytowano w sumie 1 raz
Image
Bo inne horror-mody to chu*nia...
Wyjdzie jak go skończę
Awatar użytkownika
Bartas
Stalker

Posty: 189
Dołączenie: 21 Paź 2007, 19:13
Ostatnio był: 24 Cze 2011, 19:07
Miejscowość: Dolina Mroku
Frakcja: Samotnicy
Ulubiona broń: Gauss Gun
Kozaki: 2

Postprzez Polski zolnierz w 13 Maj 2008, 18:29

To już lepiej skasuj nawet te dwa, bo z argumentacji wychodzi na to, że brakuje mu string'a (tak sądze)
"Prawda wyłania się tak samo niespodziewanie jak deszcz popromienny Czarnobyla"
Awatar użytkownika
Polski zolnierz
Tropiciel

Posty: 376
Dołączenie: 01 Sie 2007, 13:59
Ostatnio był: 04 Kwi 2011, 09:37
Miejscowość: Łódź
Frakcja: Samotnicy
Ulubiona broń: Sniper Rifle SVDm2
Kozaki: 1

Postprzez Terminator w 08 Lip 2008, 17:14

Wszystko zrobiłem prawidłowo, rozpocząłem nową grę, ale Bies na Wysypisku nie może dać mi zadania - po prostu go nie ma i tyle (zadania oczywiście)... Wiecie może co mam zrobić? Bo chodzi mi o utłuczenie kilku stalkerów naraz (znajdują się gdzie indziej, rzecz jasna). Da się tak zrobić? I do jednego mam wątpliwości: skąd można dodać osobę dającą zlecenie oraz stalkera do egzekucji (identyfikator itd.)?
Awatar użytkownika
Terminator
Kot

Posty: 47
Dołączenie: 08 Lip 2008, 14:24
Ostatnio był: 27 Lip 2008, 15:37
Kozaki: 0

Postprzez Nathaniel77 w 16 Sie 2008, 00:12

A ja mam pytanie odnośnie tekstu,, samych dialogów. Jak odpowiednio przygotować dialogi? Które to pliki? chodzi o zwykłe dialogi, bez zadań, typu Co słychać itd. Gdzie mam dodać dialog dla Npc i jak powinno wyglądać drzewo dialogu u Npc-a ?? Bo sam tekst oczywiście w xml, ale co zrobić, żeby jakiś Npc, miał unikalne dialogi?

Nathaniel77
Wygnany z Zony

Posty: 46
Dołączenie: 02 Sie 2008, 13:10
Ostatnio był: 16 Maj 2017, 01:03
Kozaki: -10

Postprzez d@id12 w 27 Sie 2008, 22:10

barin, pokusił byś się może o stworzenie tutka na misję typu storyline? ;)
Właśnie skończyłem grę więc sobie moduję ile się da - Żeby przejść ją drugi raz bez nudy, czekam na "Czyste niebo" - nie chce używać teraz dużych modów typu OL lub ABC. Ale kilka nowych zleconek mogło by być :D Mógłbym urzyć modów innych osób... lecz niektórzy wiedzą jaką ma się satysfakcje ze swojego moda ^^

Czekam na odp. I pozytywne rozpatrzenie mojej propozycji. :)
d@id12
Kot

Posty: 26
Dołączenie: 27 Sie 2008, 00:10
Ostatnio był: 07 Maj 2011, 15:15
Miejscowość: Sarbinowo Drugie
Frakcja: Czyste Niebo
Ulubiona broń: Tunder S14
Kozaki: 0

Następna

Powróć do Tutoriale

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 1 gość