[Tutorial] Spawnowanie oddziałów i grup mutantów

[Tutorial] Spawnowanie oddziałów i grup mutantów

Postprzez PMG w 02 Sty 2015, 15:32

Witam. Nie będę ukrywał, że jestem modderem absolutnie początkującym - poza prostymi modami do Zewu i SoC nie stworzyłem nic godnego uwagi, ale mam nadzieję, że moje "doświadczenie" przyda się tym, którzy będą potrzebowali w tej kwestii pomocy. Jeżeli ktoś zauważył błąd - proszę się nie krępować i wskazać go.

Tutorial dotyczy ustalania spawnu określonych grup stalkerów lub mutantów. W Zewie Prypeci zostało to w stosunku do SoC znacznie uproszczone, bo... nie musimy wcale wypakowywać all.spawn. A więc do dzieła.

1. Mutanty
:

Naszym celem (przykładowym) jest stworzenie spawnu burerów na Zatonie.

Uwaga! Radzę robić kopie wszystkich oryginalnych plików, zanim je edytujemy. Zawsze może coś pójść nie tak, a oryginalny wygląd pliku czasem ciężko odzyskać...

Potrzebne nam będą pliki:
- zat_sim_25.ltx (configs\scripts\zaton\smart)
- squad_descr.ltx (configs\misc)

1. Plik zat_sim_25.ltx oznacza (z tego co kojarzę, nie dam sobie ręki uciąć) smart znajdujący się na terenie stacji benzynowej i wygląda on tak:

Kod: Zaznacz wszystko
[smart_terrain];zat_sim_25
squad_id = 10
max_population = 2


Nie będę kłamał, że wiem, co oznacza linijka "squad_id", ale wydaje mi się, że nie trzeba zwracać na nią uwagi. A przynajmniej mi w niczym nie przeszkadzała.

Linijka "max_population" oznacza natomiast prawdopodobnie ilość squadów (grup), jakie pomieścić może smart terrain.

2. Aby ustawić respawn squadu burerów, należy dopisać do pliku następujące linijki:

Kod: Zaznacz wszystko
respawn_params = respawn_zat_sim_25
- zamiast "respawn_zat_sim_25" możemy wpisać praktycznie cokolwiek. Ważne jest jednak, aby spację zastąpić "_".

Następnie po linijce odstępu (lub kilku, to nie ma znaczenia) dopisujemy kolejną sekcję:
Kod: Zaznacz wszystko
[respawn_zat_sim_25]
spawn_burer

- w nawiasie kwadratowym (koniecznie kwadratowym) musi znaleźć się to, co napisaliśmy po "=" w sekcji "respawn_params".
- linijka "spawn_burer" jest "identyfikatorem" dla spawnu danego gatunku. Tę linijkę można również nazwać dowolnym wyrażeniem. Ja wybrałem "spawn_burer", żeby było łatwiej odnaleźć się przy pisaniu właściwej sekcji odpowiedzialnej za spawn.

Pod linijką [respawn_zat_sim_25] (w moim przypadku - jak już wspominałem, Wy możecie ją nazwać jak chcecie) możemy jednak umieścić więcej sekcji, aniżeli tylko "spawn_burer". Możemy pod "spawn_burer" dopisać dodatkowo "spawn_chimera", albo "spawn_controller", albo "spawn_costamcostam"... Ważne jest tylko, aby dopisać odpowiadające im sekcje, które zdefiniują, co ma się spawnować. O tych sekcjach wypowiem się w kolejnym punkcie.

3. Właściwa sekcja odpowiedzialna za spawn składa się z trzech linijek i wygląda tak:
Kod: Zaznacz wszystko
[spawn_burer]
spawn_squads = simulation_burer
spawn_num = 2

- [spawn_burer] to to, co umieściliśmy pod linijką [respawn_zat_sim_25].
- spawn_squads = simulation_burer - linijka ta definiuje, co będzie spawnować się nam w naszym smart terrainie. Podczas ustalania grup, jakie mają się spawnować, lepiej zajrzeć do pliku squad_descr.ltx (configs\misc) - tam znajdują się nazwy grup, jakich można użyć. W naszym przypadku jest to simulation_burer, czyli grupa burerów. Możemy rzecz jasna wybrać tutaj więcej grup, np. "simulation_burer, simulation_controller, simulation_pseudodog". Gdy w jednej linijce pojawi się więcej niż jedna grupa, gra wybierze losowo te, które zostaną zespawnowane.
- spawn_num = 2 - kolejna linijka, której znaczenia nie znam, ale mam wrażenie, że definiuje ona, ile grup może odrodzić się naraz w jednym smart terrainie. Ja zawsze wybierałem tutaj wartości od 2 do 4, bo mniej więcej takie znajdują się w pozostałych (oryginalnych) smartach.

Ogólnie rzecz biorąc, nasz plik ma wyglądać tak:
Kod: Zaznacz wszystko
[smart_terrain];zat_sim_25
squad_id = 10
max_population = 2
respawn_params = respawn_zat_sim_25

[respawn_zat_sim_25]
spawn_burer

[spawn_burer]
spawn_squads = simulation_burer
spawn_num = 2

Po edycji plik zapisujemy.

Jeżeli przez długi czas nie spotkacie swojego mutanta, to nie martwcie się - A-life w STALKER-ze lubi posyłać mutanty przeważnie do nieznacznie oddalonych miejsc, więc przeszukajcie teren (najlepiej z modem na teleport np. Władca Zony), a na pewno gdzieś go znajdziecie.


2. NPC
:

Z NPC sprawa wygląda niemal identycznie. Jedyna różnica tkwi w tym, że w ostatniej sekcji, czyli tej z linijkami "spawn_squads" i "spawn_num" musimy wybrać nazwę odpowiadającą określonej grupie stalkerów, np.:
Kod: Zaznacz wszystko
[spawn_merc]
spawn_squads = merc_sim_squad_advanced
spawn_num = 2

Tutaj również polecałbym kierować się informacjami zawartymi w pliku squad_descr.ltx.

Po takiej edycji, na stacji benzynowej zespawnują nam się doświadczeni najemnicy.

Jak widzicie, zmieniłem również nagłówek sekcji, tzn. "[spawn_merc]". Ważne jest, aby zachować zgodność "nagłówków" w całym pliku, przykładowo:
Kod: Zaznacz wszystko
[smart_terrain];zat_sim_25
squad_id = 10
max_population = 2
respawn_params = respawn_zat_sim_25

[respawn_zat_sim_25]
spawn_merc

[spawn_merc]
spawn_squads = merc_sim_squad_advanced
spawn_num = 2


Gdy wszystko będzie ze sobą współgrało, nie będzie mowy o wylotach, czy błędach.


3. Spawnowanie oddziałów nowej frakcji
:

Gdy tworzymy nową, potężną frakcję, zapewne chcemy też, aby żyła wraz z innymi stalkerami.

Na sam początek polecam zapoznać się z tym poradnikiem: viewtopic.php?f=98&t=9090

Gdy mamy pewność, że nasza nowa frakcja jest pełna, stabilna i ogólnie "dobrze zrobiona", to możemy zabrać się za tworzenie nowych squadów.

Potrzebne będą pliki:
- spawn_section_general.ltx (configs\creatures)
- character_desc_general.xml (configs\gameplay)
- npc_profile.xml (configs\gameplay)
- squad_descr.ltx (configs\misc)
- simulation_objects_props.ltx (configs\misc)
oraz w dalszej kolejności dowolny smart terrain wybrany spośród plików dla dowolnej lokacji (configs\scripts\zaton\smart, configs\scripts\jupiter\smart, configs\scripts\pripyat\smart).

Osobiście stworzyłem sobie nową frakcję, którą nazwałem "milstalkers", czyli wojskowi stalkerzy. Nazwa, którą umieściliśmy w pliku game_relations.ltx (configs\creatures) będzie nam służyła przez resztę poradnika.

1. Na początku zajmijmy się wykreowaniem nowego "profilu" określającego rodzaj squadu naszej frakcji:
Potrzebny będzie nam plik spawn_section_general.ltx. Na samym końcu pliku dopisujemy taką sekcję.

Kod: Zaznacz wszystko
[sim_default_mil_stalker_1]:stalker
$spawn                     = "respawn\sim_default_mil_stalker_1"
character_profile     = sim_default_mil_stalker_1
spec_rank = veteran
community = milstalkers

- nazwa w nawiasie kwadratowym będzie potrzebna przy ustalaniu składu grupy w pliku squad_descr.ltx oraz będzie używana przez smart terrain podczas spawnu.
- $spawn = "respawn\sim_default_mil_stalker_1" - umieszczamy tutaj tę samą nazwę, co w nawiasie, linijkę wyżej.
- character_profile = sim_default_mil_stalker_1 - nazwa po "=" będzie używana przez plik npc_profile.xml. Lepiej wpisać tu to samo, co w nawiasie.
- spec_rank = veteran - linijka ta oznacza rangę, jakiej są przedstawiciele owej grupy. W tym przypadku jest to weteran.
- community = milstalkers - nic innego, jak nazwa frakcji, którą stworzyliśmy. W moim przypadku jest to wspomniane już "milstalkers", ale Wy użyjcie nazwy swojej własnej frakcji.

Gdy plik mamy już gotowy, zapisujemy go.

2. Informacje na temat stworzonego przed chwilą profilu musimy umieścić również w pliku npc_profile.xml. Otwieramy go np. notatnikiem i pod koniec pliku (ale uważając, aby zmieścić się w tagu <\xml>! Inaczej nasza sekcja nie będzie czytana przez grę!) dopisujemy:
Kod: Zaznacz wszystko
   <character id="sim_default_mil_stalker_1">
      <class>sim_default_mil_stalker_1</class>
   </character>

- character id to to, co umieściliśmy w spawn_section_general, a <class> to sekcja używana przez plik character_desc_general.



3. Określanie członków i wyposażenia nowego ugrupowania.

Docieramy do pliku character_desc_general.xml (configs\gameplay) i otwieramy go np. przy pomocy notatnika. Na (aby uniknąć ryzyka pogubienia) samym końcu pliku (również uważając, aby zmieścić się w tagu!) dopisujemy sekcję odpowiedzialną za przedstawiciela frakcji.

Plik ów określa wygląd i wyposażenie przedstawicieli frakcji występujących w grze. Tutaj możemy posłużyć się metodą "kopiuj - wklej". Jako, że moja frakcja to wojskowi stalkerzy, to skopiowałem i przerobiłem któregoś z wojskowych.

Kod: Zaznacz wszystko
  <specific_character id="sim_default_military_stalker_default_0" team_default = "1">
    <name>GENERATE_NAME_stalker</name>
    <icon>ui_inGame2_Soldier_4</icon>
    <map_icon x="1" y="0"></map_icon>
    <bio>Îďűňíűé ńňŕëęĺđ. Äĺňŕëüíŕ˙ číôîđěŕöč˙ îňńóňńňâóĺň.</bio>

    <class>sim_default_mil_stalker_1</class>
    <community>milstalkers</community> <terrain_sect>stalker_terrain</terrain_sect>
    <snd_config>characters_voice\human_03\stalker\</snd_config>

    <rank>60</rank>
    <reputation>0</reputation>

    <visual>actors\stalker_soldier\stalker_soldier_4</visual>
    <supplies>
      [spawn] \n
    
      wpn_groza \n
      ammo_9x39_ap = 1 \n
      wpn_usp \n
      ammo_11.43x23_fmj = 1 \n
      grenade_f1 = 4 \n

#include "gameplay\character_items_nd.xml"
#include "gameplay\character_food.xml"
#include "gameplay\character_drugs.xml"
    </supplies>
#include "gameplay\character_criticals_4.xml"
#include "gameplay\character_dialogs.xml"
  </specific_character>

• "sim_default_military_stalker_default_0" oznacza nazwę stalkera. Tutaj możemy wpisać cokolwiek, byleby jednak ta nazwa nie powtarzała się w całym pliku, ani też w innych plikach z kategorii "character_desc".

• <name>GENERATE_NAME_stalker</name> - imię naszego stalkera. Tutaj mamy do wyboru: GENERATE_NAME_stalker, GENERATE_NAME_bandit, GENERATE_NAME_science, GENERATE_NAME_private, GENERATE_NAME_lieutenant, GENERATE_NAME_captain, GENERATE_NAME_sergeant.

• <icon>ui_inGame2_Soldier_4</icon> - ikonka NPC, wyświetlana podczas handlu.

• <class>sim_default_mil_stalker_1</class> - nazwa "profilu", do którego przyporządkowany jest nasz NPC. Nazwę tą już umieściliśmy w plikach spawn_section_general.ltx, oraz npc_profile.xml.

• <community>milstalkers</community> <terrain_sect>stalker_terrain</terrain_sect> - community to tyle, co "frakcja", a terrain_sect... cóż, nie wiem - ale lepiej nie ruszać ;) .

• <snd_config>characters_voice\human_03\stalker\</snd_config> - typ i rodzaj głosu przedstawiciela frakcji. W tym przypadku jest to głos stalkera-mistrza (w folderze human_03 zwykle znajdują się głosy "przytłumione", pasuje więc to do jego wyglądu)

• <rank>60</rank> - ranga. Nie mam pewności, czy jest to używane przez grę, podobnie jak <reputation>.

• <visual>actors\stalker_soldier\stalker_soldier_4</visual> - wygląd naszej postaci. Mój wojskowy stalker ma wygląd żołnierza-mistrza.

• <supplies> - w tej sekcji znajduje się ogół wyposażenia naszego NPC. Ja dałem mu Grozę i amunicję oraz USP i granaty. Należy pamiętać, aby każdą linijkę kończyć "\n", np. "wpn_ak74 \n".

Reszta plików oznacza resztę wyposażenia, takiego jak jedzenie, apteczki, a ostatnia jest odpowiedzialna za dialogi.

4. Gdy profil naszego NPC jest kompletny i taki, jakiego oczekiwaliśmy, zapisujemy plik.

Teraz pora ustanowić wygląd squadów, w jakich będzie się poruszać nasza frakcja. Znajdujemy więc plik squad_descr.ltx i otwieramy go. Gdzieś pod koniec dopisujemy sekcję:
Kod: Zaznacz wszystko
[military_stalkers_sim_squad]:online_offline_group
faction = stalker
npc_random = sim_default_mil_stalker_1
npc_in_squad = 1, 3

- nawias kwadratowy mieści nazwę, jaką będziemy posługiwać się podczas spawnowania grupy.
- faction to frakcja. Tutaj możemy wpisać "stalker", pomimo faktu, iż nasza frakcja nosi nieco inną nazwę. Jednak zanim nie zedytujemy kilku innych plików, trzymajmy się tego.
- npc_random - tutaj możemy ustalić, jaka konkretnie klasa będzie wchodziła w skład grupy. My stworzyliśmy dopiero jedną klasę - sim_default_mil_stalker_1 - więc umieszczamy ją tutaj. Jednak, gdybyśmy stworzyli więcej klas i dodali je wszystkie do tej linijki, gra losowo wybierałaby, które z nich znajdą się w grupie.
- npc_in_squad - określa, ile minimalnie i ile maksymalnie jednostek ma wchodzić w skład grupy. W moim przypadku, oddział będzie liczył od 1 do 3 wojskowych stalkerów.

5. Gdy nasz skład jest już gotowy, musimy dodać go do pliku simulation_objects_props.ltx (config\misc). Gdzieś na końcu pliku, bądź na końcu "sekcji" przeznaczonej dla NPC (po zombied_sim_squad_veteran) dopisujemy:
Kod: Zaznacz wszystko
[military_stalkers_sim_squad]:default_squad
sim_avail = true


6. Przyszedł czas na stworzenie punktu respawnu. Tutaj odeślę Was do tutoriala drugiego, poświęconego NPC.


Może pojawić się problem, że stalkerzy z nowej, stworzonej przez Was frakcji wydają się być niemi.
W takim przypadku musicie edytować pliki script_sound.ltx (configs\misc), oraz script_sound_music_and_stories.ltx (configs\misc). W obu plikach odnajdziecie sekcje z linijkami "avail_communities". Dopiszcie do nich nazwę swojej frakcji i gotowe!

przykład ze script_sound_music_and_stories.
Kod: Zaznacz wszystko
[attack_begin]
type = npc
avail_communities = stalker, bandit, dolg, freedom, army, milstalkers
npc_prefix = true
path = alife\attack\attack_begin_
shuffle = rnd
idle = 0,0,100


Uwaga! Należy uważać podczas dodawania nazwy swojej frakcji i zwracać uwagę na zestawy głosów, jakie przyporządkowaliśmy swoim NPC-om. Niektóre z zestawów głosów (m.in. głosy najemników) są niekompletne. Gdy gra nie odnajdzie szukanego głosu, istnieje ryzyko pojawienia się błędu. Sprawdzałem.


Wiem, że tutorial (a właściwie tutorialisko ;) ) może wydawać się niezrozumiałe i nieco zbyt obszerne, więc jeżeli macie jakieś pytania, bądź czegoś nie rozumiecie - pytajcie śmiało. Ostatnio niezbyt często odwiedzałem forum, ale postaram się to zmienić.

Za ten post PMG otrzymał następujące punkty reputacji:
Positive trolololo, Wheeljack, Krzyk19, Plaargath.
Awatar użytkownika
PMG
Redaktor

Posty: 376
Dołączenie: 12 Gru 2010, 10:30
Ostatnio był: 06 Gru 2023, 13:29
Frakcja: Zombie
Ulubiona broń: Viper 5 9x18
Kozaki: 127

Reklamy Google

Re: [Tutorial] Spawnowanie oddziałów i grup mutantów

Postprzez Krzyk19 w 03 Sty 2015, 19:14

Wszystko zrobiłem tak jak trzeba, wszystko działa jak trzeba. A wygląda tak: Image
Image
Takie oddziały będą się pojawiały w tym miejscu przez całą grę? Zależy mi właśnie na tym.
Krzyk19
Tropiciel

Posty: 347
Dołączenie: 25 Sty 2014, 19:48
Ostatnio był: 02 Sty 2018, 11:38
Miejscowość: Szczecin
Frakcja: Wojsko
Ulubiona broń: Obokan
Kozaki: 53

Re: [Tutorial] Spawnowanie oddziałów i grup mutantów

Postprzez PMG w 06 Sty 2015, 20:41

Tak, oddziały będą spawnować się w wybranym przez Ciebie miejscu. Jednak istnieje pewien problem, o którym nie powiedziałem.

Oddziały nowych frakcji lubią przebywać ciągle w tym samym miejscu, w którym zostały zespawnowane. Jeżeli Twój oddział siedzi wciąż w smart terrainie i nie zamierza ruszyć się gdzieś indziej, musisz edytować plik sim_board.script (gamedata\scripts).

W pliku tym znajduje się kilka sekcji poświęconych różnym ugrupowaniom. Odpowiadają one bodajże za A-life i obozy, do których stalkerzy wracają m.in. na noc lub podczas Emisji. Aby frakcja zaczęła spacerować, należy skopiować którąś z sekcji np. najemników ("killer") i dodać ją gdzieś np. pod sekcją "zombied". Sekcja powinna wyglądać mniej więcej tak:
Kod: Zaznacz wszystko
   milstalkers = {
         squad = nil,
         smart = {   territory= { prec = function() return  not xr_conditions.surge_started()  end },
                  surge    = { prec = function() return xr_conditions.surge_started() end }
               },
         actor = { prec = function(squad, target) return simulation_objects.sim_dist_to(squad, target) <= 150 end }

   },

Zamiast "milstalkers" wpisz nazwę Twojej frakcji, która znajduje się w pliku game_relations. Wtedy Twoja frakcja będzie spacerować i chować się przed emisjami.
Awatar użytkownika
PMG
Redaktor

Posty: 376
Dołączenie: 12 Gru 2010, 10:30
Ostatnio był: 06 Gru 2023, 13:29
Frakcja: Zombie
Ulubiona broń: Viper 5 9x18
Kozaki: 127


Powróć do Tutoriale

Kto jest na forum

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