Tworzenie zadań

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)

Jednak ma kilka wad…

Cholera… I widzicie do czego Firefox jest zdolny?!

Elvis popraw błąd zamiast TUAJ napisz TUTAJ. Poradnik Bardzo Dobry

Ok. Dzięki bardzo :wink:

Twórcą jest barin. W oryginale zostało napisane to TUTAJ. Tutorial jest ogólnodostępny. Jest bardziej rozbudowany, a ten tutaj, nigdy u mnie nie zadziałał.

Gdzie zostało to napisane w oryginale.

Do jakiej strony?

link do strony?

:lol:

Do strony?

Bardzo fajne, ale czy można prosić o link do strony?