Autor: Barin
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ó:).
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:
*```
[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 :lol:
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
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:
*```
tm_find_item_4_descr
```*
- 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)