r_populik 23 lip 2012, 23:56
ModderModder
Posty: 789
Rejestracja: 26 mar 2010, 12:45
Ostatnio: 21 maja 2026, 13:11
Lokalizacja: okolice stolicy
Kozaki:
263
Na górę
Post autor: r_populik 
Jako że ostatnimi czasy dodałem sobie do kompilacji modów trochę kombinezonów, w tym również wybitnie naukowe, zacząłem szukać recepty na dodanie ich do listy kombinezonów potrzebnych do zaliczenia zadania ze znalezieniem kombinezonu z zamkniętym obiegiem. W podstawce byliśmy skazani tylko i wyłącznie na SEVĘ, co śmierdziało liniowością i brakiem swobody wyboru. Na forum GSC znalazłem tortual na ten temat, więc zamieszczam go tutaj, myślę, że się komuś przyda. Rzecz oczywiście przetestowałem - działa.

Generalnie rzecz sprowadza się do wprowadzenia zmian w 4 plikach.
1. w pliku gamedata\scripts\dialogs_jupiter.script znajdujemy poniższy fragment:
[lua]
function jup_b15_actor_sci_outfit(first_speaker, second_speaker)
return (db.actor:object("scientific_outfit") ~= nil)
end

function jup_b15_no_actor_sci_outfit(first_speaker, second_speaker)
return (db.actor:object("scientific_outfit") == nil)
end
[/lua]
i zastępujemy go tym:
[lua]
function jup_b15_actor_sci_outfit(first_speaker, second_speaker)
local suits_tbl = {
["scientific_outfit"] = true,
["your_new_outfit"] = true,
["your_new_outfit_2"] = true,
}

if db.actor:item_in_slot(7) ~= nil and suits_tbl[db.actor:item_in_slot(7):section()] then
return true
end

return false

end

function jup_b15_no_actor_sci_outfit(first_speaker, second_speaker)
return (jup_b15_actor_sci_outfit(first_speaker, second_speaker) == false)
end
[/lua]

2. w pliku gamedata\scripts\xr_conditions.script dopisujemy na końcu to:
[lua]
function jup_b218_actor_has_outfit(actor, npc, p)
local suits_tbl = {
["scientific_outfit"] = true,
["your_new_outfit"] = true,
["your_new_outfit_2"] = true,
}

for k,v in pairs(suits_tbl) do
if db.actor:object(k) ~= nil then
return true
end
end

return false
end

function jup_b218_actor_has_not_outfit(actor, npc, p)
return jup_b218_actor_has_outfit(actor, npc, p) == false
end
[/lua]

3. w pliku gamedata\configs\misc\tm_jupiter.ltx znajdujemy ten fragment:
[ini]
[jup_b218_actor_outfit]
icon = ui_inGame2_Pripyat_1
prior = 118
storyline = true
title = jup_b218_actor_outfit_name
descr = jup_b218_actor_outfit_text
condlist_0 = {=actor_has_item(scientific_outfit)} complete
on_complete = %-jup_b218_actor_outfit_task +jup_b218_actor_can_go_pass%
[/ini]
i zastępujemy go tym:
[ini]
[jup_b218_actor_outfit]
icon = ui_inGame2_Pripyat_1
prior = 118
storyline = true
title = jup_b218_actor_outfit_name
descr = jup_b218_actor_outfit_text
condlist_0 = {=jup_b218_actor_has_outfit()} complete
on_complete = %-jup_b218_actor_outfit_task +jup_b218_actor_can_go_pass%
[/ini]

4. w pliku gamedata\configs\scripts\jupiter\jup_b218_logic.ltx znajdujemy ten fragment:
[ini]
on_info10 = {+jup_a9_tech_way_info -jup_b218_actor_outfit_task !actor_has_item(scientific_outfit)} %=give_task(jup_b218_actor_outfit) +jup_b218_actor_outfit_task%
on_info11 = {+jup_a9_tech_way_info -jup_b218_actor_can_go_pass -jup_b218_actor_outfit_task =actor_has_item(scientific_outfit)} %+jup_b218_actor_can_go_pass%
[/ini]
i zastępujemy go tym:
[ini]
on_info10 = {+jup_a9_tech_way_info -jup_b218_actor_outfit_task !jup_b218_actor_has_outfit} %=give_task(jup_b218_actor_outfit) +jup_b218_actor_outfit_task%
on_info11 = {+jup_a9_tech_way_info -jup_b218_actor_can_go_pass -jup_b218_actor_outfit_task =jup_b218_actor_has_outfit} %+jup_b218_actor_can_go_pass%
[/ini]

Rzecz jasna, tam gdzie jest podane, żeby wpisać zwroty "your_new_outfit" i "your_new_outfit_2" wpisujemy nazwy (to co jest w nawiasach kwadratowych na początku sekcji poszczególnych kombinezonów w outfit.ltx lub innym pliku konfiguracyjnym kombinezonów) kombinezonów, które chcemy dodać.
To wszystko. Podziękowania dla mnm i Majorsoft z forum GSC.
Postawili kozaka za ten post (5):
Czyste Niebo
Weteran
Posty: 575
Rejestracja: 17 lut 2013, 17:06
Ostatnio: 20 gru 2024, 02:53
Lokalizacja: Paniewo
Ulubiona broń: Akm 74/2
Kozaki:
57
Na górę
Post autor: StalkerCell 
Sorry za odkop, ale mam pewnego BugTrapa:

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   : ....e.r. - zew prypeci\gamedata\scripts\xr_logic.script:586: attempt to index global 'xr_conditions' (a nil value)
 

stack trace:


Nie wiem, o co chodzi. Zrobiłem to, co jest napisane w tutorialu, a i tak wywala... do tego z niepotrzebnym skryptem.
ModderModder
Posty: 789
Rejestracja: 26 mar 2010, 12:45
Ostatnio: 21 maja 2026, 13:11
Lokalizacja: okolice stolicy
Kozaki:
263
Na górę
Post autor: r_populik 
Sprawdź dokładnie poprawność wpisów, albo podeślij mi pliki, które zedytowałeś.
Czyste Niebo
Weteran
Posty: 575
Rejestracja: 17 lut 2013, 17:06
Ostatnio: 20 gru 2024, 02:53
Lokalizacja: Paniewo
Ulubiona broń: Akm 74/2
Kozaki:
57
Na górę
Post autor: StalkerCell 
Jakimś cudem zadziałało :) . Tak na serio to albo zapomniałem dodać kombinezony do handlarza, albo w samym skrypcie nie dopisałem "end" na końcu. Tak czy siak ciekaw jestem jak to wyjdzie w praniu. A czy tak samo to zadziała, jeśli do tego skryptu dodam hełm?
Naukowcy
Stalker
Posty: 136
Rejestracja: 04 gru 2010, 13:07
Ostatnio: 20 mar 2026, 17:38
Ulubiona broń: TRs 301
Kozaki:
24
Na górę
Post autor: max1071 
panowie rozumiem i nie jeden raz z tego kodu korzystałem ale od niedawna zacina mi wszystko co związane z zadaniami nie zalicza ich lub nie uruchamia jedynie gdy to zadanie jest zmienione. co może być tego powodem?
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 
Najprawdopodobniej popełniłeś gdzieś literówkę. Korzystam z tego kodu już kawał czasu i u mnie wszystko działa znakomicie.
Oczywiście go nieco zmieniłem do swoich potrzeb, ale to drobiazg (inne ciuchy).
Obrazek
Odpowiedz

Podobne tematy