Tworzymy obóz bandytów. Przed obozem stoi strażnik, chodzący po wytyczonej marszrucie.
section_name = stalker
name = supermapa_bandyci_guard1
Powyższe wyjaśnień chyba nie wymaga: spawnujemy stalkera i nadajemy mu unikalną nazwę "supermapa_bandyci_guard1".
position = 0.40670967102051,-3.1064734458923,-261.52404785156
game_vertex_id = 2913
distance = 12.5999994277954
level_vertex_id = 943729
direction = 0,0,0
Gdzie się pojawia i w którą stronę zwrócony. Należy zapamiętać raz na zawsze, że pozycja czegokolwiek w całej Zonie określana jest przez
trzy parametry!
position, game_vertex_id oraz level_vertex_id.
character_profile = val_bandit_general
visual_name = actors\bandit\stalker_bandit_2
Nasz stalker będzie zachowywał się, jak pospolity bandyta, wyglądał zresztą też.
Logikę stworzymy mu bezpośrednio tutaj, choć moglibyśmy wyrzucić to do zewnętrznego pliku ltx i tu dać tylko nazwę naszego pliku.
Logika ta mieści się między:
custom_data = <<END
.... tu logika ....
END
Zaczynamy:
[smart_terrains]
none = true
Nie przypisujemy go do żadnego smart terrainu. Ma łazić po swojej wytyczonej trasie i bronić dostępu do bazy przed wrogami.
[logic]
active = walker@supermapa_bandyci_guard1
Gdy nie ma nic innego ciekawszego do roboty, ma wykonywać pracę "walker", czyli:
[walker@supermapa_bandyci_guard1]
path_walk = supermapa_bandyci_guard1_walk
meet = meet@supermapa_bandyci_guard1
...czyli łazić po trasie "supermapa_bandyci_guard1_walk", którą za chwilę zdefiniujemy, a w przypadku natknięcia się na innego stalkera, ma wykonać czynność "meet":
[meet@supermapa_bandyci_guard1]
meet_state = 10|guard@wait
meet_state_wpn = 10|backoff@threat_weap
victim = 10|actor
victim_wpn = 10|actor
use = true
use_wpn = true
syndata = backoff@threat_weap
Oznacza to, że jeśli napotkanym stalkerem jest "actor", czyli my, ma wyciągnąć broń i jej użyć.
Po dokładny opis zachowań, możliwych do użycia w logice NPC, zapraszam do lektury
tego bardzo obszernego tekstu.
Pozostało nam określić trasę, po której strażnik kursuje. Robimy to w pliku way_***.ltx. Pamiętamy, że chcemy naszą trasę nazwać "supermapa_bandyci_guard1_walk", a także, że każde miejsce w Zonie to trzy parametry, a nie jeden:
[supermapa_bandyci_guard1_walk]
points = p0,p1,p2,p3
p0:name = wp00
p0:flags = 0x1
p0:position = 0.40670967102051,-3.1064734458923,-261.52404785156
p0:game_vertex_id = 2913
p0:level_vertex_id = 943729
p0:links = p1(1),p2(1),p3(1)
p1:name = wp01
p1:flags = 0x2
p1:position = -3.4022905826569,-3.6574068069458,-275.62515258789
p1:game_vertex_id = 2913
p1:level_vertex_id = 937236
p1:links = p0(1),p2(1),p3(1)
p2:name = wp02
p2:flags = 0x2
p2:position = -17.357046127319,-1.1283144950867,-277.79208374023
p2:game_vertex_id = 2913
p2:level_vertex_id = 915693
p2:links = p0(1),p1(1),p3(1)
p3:name = wp03
p3:flags = 0x2
p3:position = -24.719989776611,-0.42594027519226,-275.1279296875
p3:game_vertex_id = 2913
p3:level_vertex_id = 904654
p3:links = p0(1),p1(1),p2(1)
Mamy tu cztery punkty, nawzajem ze sobą powiązane. Tu przykład zrównoważenia punktów, ale można je powiązać ze sobą również inaczej.
Ogólnie rzecz biorąc, temat jest
bardzo obszerny i ja sam nie jestem w stanie go opisać. Po to, aby sprawdzić, jak bardzo, wystarczy zerknąć choćby na chwilkę
tutaj.
Sooner or later, you will meet the Undertaker...