Jump to content

[Tutorial] - jak stworzyć nieśmiertelnego NPC


Recommended Posts

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

 

Dołączona grafika

 

 

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.ltx

    w 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 section

    gdzie poniżej jest potrzebny do lokalizacji plików wpis:

    [immunities]immunities_sect = low_resistance		[bone_protection]bones_protection_sect = gilet_mask_damage

    gdzie: [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

Gdyby doszło do sytuacji, iż kod potrzebny do skopiowania zostanie rozwarstwiony -

przykład, 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:

kod do pobrania.7z

  • w modelu, który otwieram Notepad'em ++ szukam frazy damage, wyszukiwanie kieruje mnie do sekcji:
    #include "modelscapturekombez_helmet_damage_low.ltx

    zmieniam low na lox, zapisuję zmiany w modelu:

    #include "modelscapturekombez_helmet_damage_lox.ltx

    Uwaga: 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_damage

    chojrak - 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.01

    Zasada 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.6

    oraz 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.3

    Zasada 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:

 

post-3466-0-91149200-1370352429_thumb.jp

 

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.

 

Dołączona grafikaUzupeł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

  • Dodatnia 6
Link to post
Share on other sites
  • 7 years later...

Cześć.

Wiem rzadko zaglądam na forum tak bywa.

Chodzi mi o plik immunitites.txt z własnego doświadczenia wiem że ów plik trzeba przerabiać/konfigurować w każdym modzie jaki zainstalujemy mam gotowe pliki do do czystych gir bez modyfikacji na podstawie tych plików modyfikuję sobie pliki w modach. Teraz pytanie z mojej strony.

Czy to co napisałeś daje pełną nieśmiertelność naszego gg w wielu kodach do gier jest tzw cheats god.(Tryb boga pełna nieśmiertelność)?

Postać w tej grze musi jeść pić i wypoczywać  promieniowanie również osłabia naszego gg . Tych sekcji nie uwzględniłeś w swoim opisie  to też wpływa na utratę zdrowia. 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.

Discord
Comunity