Marcus_Polonus 05 cze 2017, 17:16
Regulamin forum
Dział "Tworzenie Modyfikacji" służy do zadawania pytań odnośnie tworzenia modyfikacji, edytowania plików gry, oraz pisania tzw. tutoriali, czyli poradników odnośnie modyfikowania gry.
Nie zadajemy tutaj pytań odnośnie modyfikacji gotowych (nie dyskutujemy o nich!), prócz prób ich połączenia etc.


Przy cytowaniu plików *.LTX stosować tag [SYNTAX="ini"], przy cytowaniu plików *.script [SYNTAX="lua"] a przy cytowaniu plików *.xml - [SYNTAX="xml"].
Najemnicy
Tropiciel
Posty: 276
Rejestracja: 18 maja 2013, 22:36
Ostatnio: 20 maja 2026, 20:30
Lokalizacja: Fabryka nad Jantarem
Ulubiona broń: Sniper Rifle SVDm2
Kozaki:
36
Na górę
Post autor: Marcus_Polonus 
Witam,

Czy jest jakaś możliwość zrobienia małego moda, w którym każdy napotkany wróg będzie miał możliwość zespawnowania ze sobą swój kombinezon/hełm, ale uszkodzony jak broń?

Zrobiłem coś takiego dodając pliki .xml w gameplay i odnośniki przy każdym NPC'ie w character_desc_general, ale ciuchy są dodawane do ich ekwipunku nowe.
Obrazek
Czyste Niebo
Stalker
Posty: 99
Rejestracja: 30 maja 2010, 16:36
Ostatnio: 19 lis 2023, 17:32
Ulubiona broń: Vintar BC
Kozaki:
16
Na górę
Post autor: Diegtiarov 
Gdzieś mam skrypt z CoC z dodaną funkcją na drop kombinezonów. Prawdopodobnie nadal jest w Gameplay Rebalanced jeśli nie usunąłem jej z kodu ostatniej wersji.

Użycie podobne:
- spawnuje kombinezon do ekwipunku NPC ( 100% cond ) przy pomocy character_desc ( jakieś 0.05% (?) szans na spawn )
- wyklucza go z handlu ( uj wie ile blokerów tam wstawiłem żeby w końcu zatrybiło )
- wyklucza go z lootu NPC - w sensie nie będą ich kumulować jak znajdą w plecaku jakiegoś trupa
- gdy NPC ginie funkcja działa tak jak przy kalkulowaniu cond broni przy zabitych

Jak odkopię wszystkie potrzebne pliki to dam znać. Z tego co pamiętam w CoC od ostatnich 3 wersji ten zabieg nie chciał działać ( jeśli to CoC masz na oku ).
Postawili kozaka za ten post (1):
Najemnicy
Tropiciel
Posty: 276
Rejestracja: 18 maja 2013, 22:36
Ostatnio: 20 maja 2026, 20:30
Lokalizacja: Fabryka nad Jantarem
Ulubiona broń: Sniper Rifle SVDm2
Kozaki:
36
Na górę
Post autor: Marcus_Polonus 
To by było ekstra, ale żeby nie było niedomówień, mam ma myśli CoP'a, nie CoC. X-Ray niby i tu i tam itd. ...
Obrazek
Czyste Niebo
Stalker
Posty: 99
Rejestracja: 30 maja 2010, 16:36
Ostatnio: 19 lis 2023, 17:32
Ulubiona broń: Vintar BC
Kozaki:
16
Na górę
Post autor: Diegtiarov 
Czysto teoretycznie to dla CoP powinno wyglądać to tak:

death_manager.script
[SYNTAX="lua"]
--printf("item name [%s]", item:name())
if isOutfit(item)
set_outfit_drop_condition(item)
return
end


function set_outfit_drop_condition(item)
local condition = (math.random(15))/100
--printf("condition [%s]", tostring(condition))
item:set_condition(condition)
end
[/SYNTAX]
W math.random ustawione jest wylowoanie wartości od 0 do 15.


Teraz pozostaje tylko dodać pancerze do character_desc z parametrem prob=szansa*.
Powinno to wyglądać mniej więcej tak:
[SYNTAX="xml"]
<supplies>
[spawn] \n
device_torch \n
wpn_toz34 \n
ammo_12x70_buck \n
wpn_pm \n
ammo_9x18_fmj \n
novice_outfit, prob=0.005 \n
[/SYNTAX]

Jeśli będzie ustawiona niska szansa na pojawienie się pancerza to raczej można oszczędzić sobie usuwanie możliwości zlootowania ich przez NPC.
Bolesne może być dodawanie odpowiedniego pancerza do odpowiadającego modelowi NPC, ale chwilowo nie jestem w stanie napisać skryptu, który robiłby tą rzecz za nas.
Ostatnio liznąłem trochę C++, może za kilka miesięcy przyjdzie też czas na Lua...

szansa* - liczba w przedziale <1, 0); 1=100%, 0.5=50% itd.
Postawili kozaka za ten post (1):
Najemnicy
Tropiciel
Posty: 276
Rejestracja: 18 maja 2013, 22:36
Ostatnio: 20 maja 2026, 20:30
Lokalizacja: Fabryka nad Jantarem
Ulubiona broń: Sniper Rifle SVDm2
Kozaki:
36
Na górę
Post autor: Marcus_Polonus 
Co do dropowania odpowiednich ciuchów, zrobiłem to już jakiś czas temu i znalazłem własną metodę - "ANALOGOWĄ" - sprawdzałem wpis visual jako model NPC'a w teksturkach i dopisywałem odpowiedni spawn z odpowiednimi ciuchami. Siedziałem nad tym cały dzień, ale działa znakomicie :D

Rozumiem, że tak wygląda skrypt, który sprawia, że jeśli znajdzie się kombinezon w trupie, to "się uszkodzi", tak?
Co to jest math.random i co to takiego robi?

Co do prawdopodobieństwa zrobiłem odnośniki do niezależnych .xml'i z wpisami np.:

Kod: Zaznacz cały

stalker_outift = 1, prob=0.05\n
Zdam zaraz raport z tego.

EDIT:
NIE DZIAŁA!

Kod: Zaznacz cały

FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : .... - zew prypeci\gamedata\scripts\bind_stalker.script:54: attempt to index global 'death_manager' (a nil value)
 

stack trace:
Obrazek
Czyste Niebo
Stalker
Posty: 99
Rejestracja: 30 maja 2010, 16:36
Ostatnio: 19 lis 2023, 17:32
Ulubiona broń: Vintar BC
Kozaki:
16
Na górę
Post autor: Diegtiarov 
Pomijając literówkę po linijce z "if" (zabrakło then; sprawdziłem u siebie poprawioną wersję) to wychodzi na to, że CoP nie ma zdefiniowane co to jest "isOutfit". Trzeba grzebać głębiej. Stawiam na silnik. :v
Odpowiedz

Podobne tematy