Swego czasu na forum widziałem różne prośby związane z zapytaniem o zmodyfikowanie questowego NPC, który będzie bardzo wytrzymały albo nieśmiertelny. Taką sztandarową pozycją jest Krugłow oraz postacie, które należy chronić w ramach questu, pozwolę sobie na poradnik, który rozwiąże powyższe problemy graczy. - let’s go!
Tutorial w oparciu o model dostępny pod linkiem dla Shoc:
http://narod.ru/disk/21335204000/metro2033_models_for_SoC.7z
Teoria.
Lista potrzebnych plików: - za chwilę wyjaśnię, dlaczego te pliki.
- model NPC’a - najczęściej jest to katalog: gamedatameshesactors
- plik gilet_mask_damage_low.ltx [gamedataconfigmodelscapture]
- plik immunities.ltx [gamedataconfigcreatures]
- plik damages.ltx [gamedataconfigcreatures]
Co robimy? czyli jak szukamy potrzebnych plików:
-
otwieramy plik .ogf - w moim przykładzie jest to stalker_neytral_balon_1.ogf - najlepiej użyć Notepad++
-
szukamy frazy #include lub damage, wynik wyszukiwania kieruje nas do sekcji:
#include "modelscapturegilet_mask_damage_low.ltxw sekcji tej mamy odnośnik do pliku gilet_mask_damage_low.ltx,
-
który otwieramy przechodząc do sekcji (w oryginalnym Shoc 1.0004 jest to wiersz od 38 do 42)
immunities sectiongdzie poniżej jest potrzebny do lokalizacji plików wpis:
[immunities]immunities_sect = low_resistance [bone_protection]bones_protection_sect = gilet_mask_damagegdzie: [low_resistance] znajdziemy w immunities.ltx /[gilet_mask_damage] - znajdziemy w pliku damages.ltx [ścieżka: gamedataconfigcreatures]
Tak wygląda wzajemne powiązanie plików, zwracam na to uwagę, ponieważ różne kombinezony mają różne sekcje.
________________________________
Praktyczna część modyfikacji
Inny model - specjalnie by zapamiętać zasadę (z tego samego linku)!
Nie polecam modyfikować istniejących sekcji, ponieważ zaburzy to równowagę frakcji jak również określonych NPC, czyniąc ich niezniszczalnymi, dlatego radzę stworzyć własną sekcję dla unikalnych NPC’ów.
Uwagi dot. tekstu ujętego w code
Spoiler
Gdyby doszło do sytuacji, iż kod potrzebny do skopiowania zostanie rozwarstwiony -
Optymalizacja efektów pogodowych (fog) i shadera, np. podczas przenoszenia, edycji posta lub instalacji dodatków do edycji tekstu, wówczas należy kopiować fragmenty bez podanych w przykładzie odstępów w wierszach lub pobrać kod zawarty w załączniku:
-
w modelu, który otwieram Notepad’em ++ szukam frazy damage, wyszukiwanie kieruje mnie do sekcji:
#include "modelscapturekombez_helmet_damage_low.ltxzmieniam low na lox, zapisuję zmiany w modelu:
#include "modelscapturekombez_helmet_damage_lox.ltxUwaga: Musimy zachować tę samą ilość znaków tworzących wpis, dlatego zmieniam tylko jedną literę, nic nie dodając/odejmując - inaczej cała praca pójdzie na marne (uszkodzimy model).
-
w katalogu gamedataconfigmodelscapture - tworzę plik kombez_helmet_damage_lox.ltx na bazie pliku pierwotnego.
-
w sekcji immunities_sect oraz bones_protection_sect tworzę nowe wpisy:
[immunities]immunities_sect = chojrak_resistance [bone_protection]bones_protection_sect = chojrak_helmet_damagechojrak - nowo utworzona sekcja, którą zdefiniujemy dla większej wytrzymałości NPC.
-
w pliku immunities.ltx [gamedataconfigcreatures] tworzymy sekcję, którą powyżej dodaliśmy czyli chojrak_resistance (u mnie od 56 wiersza):
[chojrak_resistance]burn_immunity = 0.0strike_immunity = 0.0shock_immunity = 0.0wound_immunity = 0.0radiation_immunity = 0.0telepatic_immunity = 0.0chemical_burn_immunity = 0.0explosion_immunity = 0.05fire_wound_immunity = 0.01Zasada jest taka (dla powyższego pliku), im wartości bliższe 0, tym nasz NPC będzie mocniejszy!
-
teraz otwieramy plik damages.ltx [gamedataconfigcreatures] i dodajemy w nim sekcję chojrak_helmet_damage (ja dodałem wpis pomiędzy sekcjami [exo_helmet_damage] a [modium_damage]:
[chojrak_helmet_damage]:body_chojrak_damage,head_chojrak_damagehit_fraction = 0.04 -
w tym samym pliku co powyżej (damages.ltx) definiujemy body_chojrak_damage, czyli dodajemy wpisy (u mnie linijka od 150 do 171):
[body_chojrak_damage]bip01_pelvis = 1.0, 0.6bip01_spine = 1.0, 0.6bip01_spine1 = 1.0, 0.6bip01_spine2 = 1.0, 0.6 bip01_l_clavicle = 1.0, 0.6bip01_l_upperarm = 1.0, 0.6bip01_l_forearm = 1.0, 0.6bip01_l_hand = 1.0, 0.6 bip01_r_clavicle = 1.0, 0.6bip01_r_upperarm = 1.0, 0.6bip01_r_forearm = 1.0, 0.6bip01_r_hand = 1.0, 0.6 bip01_l_thigh = 1.0, 0.6bip01_l_calf = 1.0, 0.6bip01_l_foot = 1.0, 0.6bip01_r_thigh = 1.0, 0.6bip01_r_calf = 1.0, 0.6bip01_r_foot = 1.0, 0.6oraz dodajemy również head_chojrak_damage
[head_chojrak_damage]bip01_neck = 1.0, 0.3bip01_head = 1.0, 0.3eyelid_1 = 1.0, 0.3eye_left = 1.0, 0.3eye_right = 1.0, 0.3jaw_1 = 1.0, 0.3Zasada odwrotna : wartości bliskie jedności czynią NPC’a twardzielem.
Screen przedstawiający powyższe sekcje dla modelu, czyli jakie części ciała są chronione przez określony parametr:
Wnioski: chcąc stworzyć nieśmiertelnego NPC, dla immunities.ltx zadajemy wartości 0, natomiast dla pliku damages.ltx wartością max. jest 1. Jeżeli skopiujemy wartości powyższe, nasz NPC będzie bardzo twardy - u mnie zginął po ok. 300 szt. amunicji 9×39 mm SP-5 (headshot), oczywiście zachęcam do eksperymentowania z wartościami. Jedyne co w tej sytuacji zabije NPC to anomalie typu: Karuzela, Wir.
!(<base_url>/public/style_images/brave/comment_edit.png)Uzupełnienie:
Niektóre z modeli, przykładem jest stalker_bandit_1.ogf (Shoc) zawierają sekcję odporności już w samym modelu, wówczas szukamy frazy immunities - dojdziemy do wpisu:
[immunities]immunities_sect = bandit_resist
Tutaj robimy podobnie jak powyżej, definiując nowy immunities_sect - pamiętając by ilość znaków pozostała ta sama, przykładowo stworzę sekcję zmieniając resist na resiss:
[immunities]immunities_sect = bandit_resiss
i w/w dodaję do pliku immunities.ltx [gamedataconfigcreatures] - z odpowiednimi parametrami j/w.
Prawa autorskie na podstawie regulaminu, pkt.1.6. - The Emperor, wyłączność: StalkerTeam.
_____________________________
Autor: The Emperor dla StalkerTeam

