Radrif Opublikowano 31 Marca 2013 Zgłoś Udostępnij Opublikowano 31 Marca 2013 (edytowane) 1. Jak zrobić żeby inne rodzaje wódki były przyjmowane przez wojaków? W sensie kupować za nie/wymieniać je na amunicję, apteczki i bronie OMÓWIONE 2. Próbuję usunąć wszystkie pojazdy bo jak dla mnie nie są potrzebne (zmieniam modyfikację pod siebie ), ale jakoś mi to nie wychodzi... Prawdopodobnie dlatego bo nigdy się w to nie bawiłem Odszukałem większość plików odpowiedzialnych za pojazdy, lecz wszystkie moje próby nie dały żadnego skutku. Raz zrobiłem, że nie było ich wcale - gra odpalała, niestety z błędem... ACDC nie ma mowy żebym "rozpakował" all.spawn, xrSpawnerem też nic nie wskórałem więc jak ktoś mógłby mi jakoś pomóc byłbym wdzięczny Bo chyba nie jest możliwe żeby zgrać jakoś pliki NS + DMX żeby nie było pojazdów? OMÓWIONE 3. W dynamicznych wiadomościach, "nowa recepta" i "otrzymano zestaw kompletów remontowych" są zapisane "różnymi znaczkami" (pozwolę sobie tak to ująć ). Jak to naprawić? Jeśli trzeba mogę wrzucić screeny... 4. Jak wyłączyć obniżanie/podwyższanie poziomu trudności? Gram na mistrzu a godzinę później schodzi na początkujący mimo tego, że raz zdarzyło mi się zginąć... Edytowane 2 Kwietnia 2013 przez Radrif Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
The Emperor Opublikowano 31 Marca 2013 Zgłoś Udostępnij Opublikowano 31 Marca 2013 Usuwanie pojazdów bez ingerencji w spawn - nie jest sprawą prostą, ale...jest to bardzo czasochłonne i wymagające cierpliwości - modyfikowanie poprzez skrypt.Zastanawiałeś się kiedyś, jak to się dzieje, że obiekty przykładowo – teleporty w solijance – są usuwane, hmm? Jest taki skrypt pozwalający na usuwanie przedmiotów, obiektów, postaci. Jeśli z Warlabu znika Pantera, to nie wychodzi zmieniając lokację, usuwa ją skrypt, podobnie Kła z Ognistej Pieczary czy Ducha z CEA-1. Tyle tytułem wstępu. Sam skrypt ma postać:function usun_samochod() local se_obj = alife():object("nazwa_samochodu_z_pliku_all.spawn") if se_obj then alife():release(se_obj, true) endendW powyższym skrypcie w nawiasie mamy obiekt, który znajduje się w spawnie, musi mieć nazwę oraz numer obiektu. Pomiędzy cudzysłów wpisujesz żądany obiekt, sprawdzając all.spawn za pomocą xrSpawnera - lokacja po lokacji. Skrypt stosowałem do usuwania anomali, lecz definiowałem go dla postaci na tej samej lokacji co obiekt, innymi słowy - jeśli usuwam obiekt z kordonu, to przykładowo dopisuję Wilkowi, Fanatowi - czyli NPC z kordonu. Ale skrypt trzeba wywołać, np., dialogiem a jeśli samochodów sporo – wpisów również.Po kolei:w katalogu gamedatascripts – tworzysz plik unspawn_test.script [ważne jest rozszerzenie script]. w katalogu gamedataconfiggameplay - musisz zmodyfikować pliki character_desc_escape.xml oraz dialogs_escape.xmlW oparciu o w/w pliki tworzysz dialog – modyfikujesz plik character_desc_escape.xml znajdując postać np. Wilk – sekcja "esc_wolf" , następnie wiersz <start_dialog> [pomiędzy wierszami #include a </specific_character>] - dodajesz wpis : <actor_dialog>delete_car_dialog</actor_dialog> Plik dialogs_escape.xml – tworzysz dialog: <dialog id="delete_car_dialog"> <phrase_list> <phrase id="0"> <text>delete_dialog_0</text> <next>1</next> </phrase> <phrase id="1"> <text>delete_dialog_1</text> <action>unspawn_test.usun_samochod</action> <next>2</next> </phrase> <phrase id="2"> <text>delete_dialog_2</text> <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog> W drzewie dialogowym odwołujesz się poprzez <action> do pliku, który stworzyłeś czyli unspawn_test oraz funkcji usun_samochod. Sprawa następna – lokalizacja gamedataconfigtextpol i modyfikujesz pliki stable_dialogs_escape.xml, czyli <string id="delete_dialog_0"> <text>Mam wrazenie, ze cos cie gryzie?</text> </string> <string id="delete_dialog_1"> <text>Pozbądź się w magiczny sposób tych samochodów</text> </string> <string id="explosive_dialog_2"> <text>Copy That!</text> </string> Zapisujesz i sprawdzasz, ale ważne jest abyś zrobił kopię plików modyfikowanych! Jeśli dotrwałeś do końca wpisu, oceń sam - czy starczy Ci zapału do usuwania samochodów. Skrypt sprawdzałem wielokrotnie - usuwa, ale dla pewności konstrukcji drzew dialogowych sprawdź Tutaj.Uwagi: Skrypt kopiujesz do pustego pliku, pamiętaj by wpisać dokładnie nazwę obiektu usuwanego. Sam skrypt jest mało skomplikowany, natomiast problemów nastręcza wywołanie powyższego.P.S - prościej było by podmienić model samochodu na obiekt małych rozmiarów, np. bandaża, może brzmi to śmiesznie, ale zastępując model wozu - takim jak proponuje, może dać ciekawy rezultat, natomiast próba użycia może skończyć się CDT. Jeśli masz czas - zrób tak z jednym z obiektów.. 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Radrif Opublikowano 31 Marca 2013 Autor Zgłoś Udostępnij Opublikowano 31 Marca 2013 A nazwy pojazdu nie mogę wziąć z dmx_cars.script? Podane są tam współrzędne spawnu wszystkich (mam nadzieję) pojazdów np. - function car_spawn() alife():create("vehicle_actor_btr",vector():set(-162.542,-30.264,-356.309),87065,31) Byłoby szybciej i o wiele prościej niż przekopywać cały all.spawn w xrSpawnerze... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
The Emperor Opublikowano 31 Marca 2013 Zgłoś Udostępnij Opublikowano 31 Marca 2013 Nie mam DMX'a - opisuję ogólny sposób usuwania obiektu - działający zarówno w Solijance jak i czystym Shoc, natomiast moją uwagę zwrócił skrypt dmx_cars.script a konkretyzując function car_spawn, jeśli znajdziesz dialog lub plik wywołujący ową funkcję, wówczas usuwasz ją np. pozbywając dialogu sekcji odpowiedzialnej za spawn...nie wiem jak rozwiązano to w tym modzie...jeśli chodzi o all.spawn - tutaj szukasz nazw pojazdów i tylko nich, jeśli nazwy są w w/w pliku skryptu to zadanie jest ułatwione. Szybsze będzie zablokowanie pliku skryptu, lub wyłączenie sekcji poprzez dodanie na początku wiersza -- przed każdym wpisem. Jest - naprawdę dużo opcji w tej sytuacji, bo pojazdy spawnuje skrypt a nie all.spawn.Edit: zapomniałbym wspomnieć o ewentualnych questach związanych z pojazdami, jak wspominałem - nie mam tego moda, zapytaj na forum czy pojazdy są potrzebne w jakimś zadaniu. 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Radrif Opublikowano 31 Marca 2013 Autor Zgłoś Udostępnij Opublikowano 31 Marca 2013 Niestety każda ingerencja w plik dmx_cars.script kończy się czymś takim ! Cannot find saved game ~~~ watchdog 199.reason actor_binder:update Oczywiście zaczynam grę od nowa. Chyba będę musiał pobawić się w usunięcie ich tak jak napisałeś wcześniej, poprzez dialog Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
The Emperor Opublikowano 31 Marca 2013 Zgłoś Udostępnij Opublikowano 31 Marca 2013 @RadrifAle jak zauważyłeś - nazwy pojazdów masz w jednym pliku, sprawdź u siebie zaczynając od czegoś prostego - pisz w razie problemów oraz postępów - rzecz jasna. Pozdr. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Radrif Opublikowano 1 Kwietnia 2013 Autor Zgłoś Udostępnij Opublikowano 1 Kwietnia 2013 Mam nadzieję że skrypt dobrze wygląda? Zawsze wolę się zapytać I jeszcze jedno, jeżeli w dmx_cars.script nazwy samochodów w sekcji spawn się powtarzają to podobnie miałem postąpić tutaj? Czy wystarczyło tylko raz wpisać nazwę danego pojazdu? function usun_samochod() local se_obj = alife():object("vehicle_actor_btr") local se_obj2 = alife():object("vehicle_kamaz_no_kuzov") local se_obj3 = alife():object("vehicle_moskvitch") local se_obj4 = alife():object("vehicle_niva_white") local se_obj5 = alife():object("vehicle_school_avtobus") local se_obj6 = alife():object("vehicle_zaz986") local se_obj7 = alife():object("vehicle_avtobus_laz4202") local se_obj8 = alife():object("vehicle_vezdehod") local se_obj9 = alife():object("vehicle_gaz66") local se_obj10 = alife():object("vehicle_uaz") local se_obj11 = alife():object("vehicle_zil131") local se_obj12 = alife():object("vehicle_moskvitch_police") local se_obj13 = alife():object("vehicle_lada") local se_obj14 = alife():object("vehicle_uniq_btr") local se_obj15 = alife():object("vehicle_sport_baggi") local se_obj16 = alife():object("vehicle_niva") local se_obj17 = alife():object("vehicle_zil") local se_obj18 = alife():object("vehicle_uaz_buhanka") local se_obj19 = alife():object("vehicle_rover_bot") local se_obj20 = alife():object("rover_bot_stancion") local se_obj21 = alife():object("vehicle_avtobus_icarus") local se_obj22 = alife():object("vehicle_kamaz") local se_obj23 = alife():object('vehicle_uaz_fsb") local se_obj24 = alife():object("vehicle_niva_white") local se_obj25 = alife():object("vehicle_zaz") local se_obj26 = alife():object("vehicle_zil130_no_kuzov") local se_obj27 = alife():object("vehicle_lada") local se_obj28 = alife():object("vehicle_moskvitch") local se_obj29 = alife():object("vehicle_moskvitch_police") local se_obj30 = alife():object("vehicle_avtobus_icarus") local se_obj31 = alife():object("vehicle_tr13") local se_obj32 = alife():object("vehicle_zaz986") local se_obj33 = alife():object("vehicle_kamaz") local se_obj34 = alife():object("vehicle_vezdehod") local se_obj35 = alife():object("vehicle_hammer") local se_obj36 = alife():object("vehicle_gaz66") local se_obj37 = alife():object("vehicle_uaz_fsb") local se_obj38 = alife():object("vehicle_niva") local se_obj39 = alife():object("vehicle_actor_btr") local se_obj40 = alife():object("vehicle_dodje") local se_obj41 = alife():object("vehicle_btr_hl") local se_obj42 = alife():object("vehicle_kamaz_military") local se_obj43 = alife():object("vehicle_kamo_btr") local se_obj44 = alife():object("vehicle_lada2103") local se_obj45 = alife():object("vehicle_niva_white") local se_obj46 = alife():object("vehicle_zil") local se_obj47 = alife():object("vehicle_yellow_zaz986") local se_obj48 = alife():object("vehicle_uaz_ukrainian") local se_obj49 = alife():object("vehicle_black_moskvitch") local se_obj50 = alife():object("vehicle_kamaz_military") local se_obj51 = alife():object("vehicle_avtobus_icarus") local se_obj52 = alife():object("vehicle_lada2103") local se_obj53 = alife():object("vehicle_black_moskvitch") local se_obj54 = alife():object("vehicle_zil130_no_kuzov") local se_obj55 = alife():object("vehicle_camo_btr") if se_obj then alife():release(se_obj, true) end if se_obj2 then alife():release(se_obj, true) end if se_obj3 then alife():release(se_obj, true) end if se_obj4 then alife():release(se_obj, true) end if se_obj5 then alife():release(se_obj, true) end if se_obj6 then alife():release(se_obj, true) end if se_obj7 then alife():release(se_obj, true) end if se_obj8 then alife():release(se_obj, true) end if se_obj9 then alife():release(se_obj, true) end if se_obj10 then alife():release(se_obj, true) end if se_obj11 then alife():release(se_obj, true) end if se_obj12 then alife():release(se_obj, true) end if se_obj13 then alife():release(se_obj, true) end if se_obj14 then alife():release(se_obj, true) end if se_obj15 then alife():release(se_obj, true) end if se_obj16 then alife():release(se_obj, true) end if se_obj17 then alife():release(se_obj, true) end if se_obj18 then alife():release(se_obj, true) end if se_obj19 then alife():release(se_obj, true) end if se_obj20 then alife():release(se_obj, true) end if se_obj21 then alife():release(se_obj, true) end if se_obj22 then alife():release(se_obj, true) end if se_obj23 then alife():release(se_obj, true) end if se_obj24 then alife():release(se_obj, true) end if se_obj25 then alife():release(se_obj, true) end if se_obj26 then alife():release(se_obj, true) end if se_obj27 then alife():release(se_obj, true) end if se_obj28 then alife():release(se_obj, true) end if se_obj29 then alife():release(se_obj, true) end if se_obj30 then alife():release(se_obj, true) end if se_obj31 then alife():release(se_obj, true) end if se_obj32 then alife():release(se_obj, true) end if se_obj33 then alife():release(se_obj, true) end if se_obj34 then alife():release(se_obj, true) end if se_obj35 then alife():release(se_obj, true) end if se_obj36 then alife():release(se_obj, true) end if se_obj37 then alife():release(se_obj, true) end if se_obj38 then alife():release(se_obj, true) end if se_obj39 then alife():release(se_obj, true) end if se_obj40 then alife():release(se_obj, true) end if se_obj41 then alife():release(se_obj, true) end if se_obj42 then alife():release(se_obj, true) end if se_obj43 then alife():release(se_obj, true) end if se_obj44 then alife():release(se_obj, true) end if se_obj45 then alife():release(se_obj, true) end if se_obj46 then alife():release(se_obj, true) end if se_obj47 then alife():release(se_obj, true) end if se_obj48 then alife():release(se_obj, true) end if se_obj49 then alife():release(se_obj, true) end if se_obj50 then alife():release(se_obj, true) end if se_obj51 then alife():release(se_obj, true) end if se_obj52 then alife():release(se_obj, true) end if se_obj53 then alife():release(se_obj, true) end if se_obj54 then alife():release(se_obj, true) end if se_obj55 then alife():release(se_obj, true) endend Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
The Emperor Opublikowano 1 Kwietnia 2013 Zgłoś Udostępnij Opublikowano 1 Kwietnia 2013 Każda nazwa odnosi się do konkretnego obiektu, nie wiem jak rozwiązano spawn, tzn. czy jest rozbity na all.spawn + dmx_cars.script, czy tylko skryptem...Twój skrypt jest zbyt rozbudowany jak na test, najpierw powinieneś zrobić próbę z jednym z pojazdów z listy, pamiętając że mają to być obiekty usuwane z jednej lokacji - j/w pisałem. Ja bym zrobił inną konstrukcję skryptu - częściowy: function usun_samochod() local se_obj = alife():object("vehicle_kamaz_no_kuzov") if se_obj then alife():release(se_obj, true) end local se_obj = alife():object("vehicle_moskvitch") if se_obj then alife():release(se_obj, true) end local se_obj = alife():object("vehicle_niva_white") if se_obj then alife():release(se_obj, true) end local se_obj = alife():object("vehicle_school_avtobus") if se_obj then alife():release(se_obj, true) endend Dobrze by było, jakby jakiś doświadczony modder sprawdził całość, ale wpierw zrób test dla jednego pojazdu z kordonu sprawdzając czy funkcja jest prawidłowo wywoływana. 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Radrif Opublikowano 1 Kwietnia 2013 Autor Zgłoś Udostępnij Opublikowano 1 Kwietnia 2013 Zrobiłem tak jak jest opisane powyżej, dialog jest ale skrypt usuwania nie zaskakuje... Samochody jak były tak są. Coś czuje, że trochę roboty nad tym będzie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
The Emperor Opublikowano 1 Kwietnia 2013 Zgłoś Udostępnij Opublikowano 1 Kwietnia 2013 Nie wiem dlaczego skrypt nie usuwa tych pojazdów? - powinien likwidować obiekt, zróbmy tak: w pliku dmx_cars.script odpowiadającym za spawn pojazdów [nie mam DMX'a więc zakładam powyższe], zmień spawnowane obiekty z samochodów na inne, np apteczkę naukowców. Pisałeś, że struktura spawna przedstawia się następująco: function car_spawn() alife():create("vehicle_actor_btr",vector():set(-162.542,-30.264,-356.309),87065,31) Zmień "vehicle_actor_btr" na "medkit_scientic" -dając w każdej sekcji zamiast samochodu - apteczkę naukowców. Skrypt zespawnuje na zadanych współrzędnych obiekt określony skryptem...mam nadzieję że w DMX'ie występuje taki przedmiot o takiej specyfice, jakbyś miał wątpliwości sprawdź w items.ltx obiekt [medkit_scientic].P.S wiem, że pomysł jest dziwny, ale jeśli będzie działał w miejscu pojazdów pojawią się apteczki. Jeśli to nie zadziała, wówczas podeślesz mi spakowany folder script z DMX'a...przerób sekcje i daj znać - będziemy myśleć jak rozwiązać problem. 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Radrif Opublikowano 1 Kwietnia 2013 Autor Zgłoś Udostępnij Opublikowano 1 Kwietnia 2013 No więc zrobiłem tak jak napisałeś, odpalam grę i idę do najbliższego miejsca gdzie stał pojazd i oto co widzę Kombinowałem jak mogłem a tu wystarczyło zrobić coś takiego... Dzięki monthly_2015_05/smile.png.a202b72868214cf5a7fbbf898d563411.png Jeden problem z głowy. Ale i tak dużo pracy jeszcze przede mną. Jeszcze raz dzięki i aż mi głupio że na to nie wpadłem monthly_2015_05/biggrin.png.587d3ec922bb099723c6a96331fd019c.png Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
The Emperor Opublikowano 1 Kwietnia 2013 Zgłoś Udostępnij Opublikowano 1 Kwietnia 2013 Cieszy mnie że sposób działa, natomiast pojazdy zawarte w all.spawn trzeba będzie usunąć, wcześniej znając ich oznaczenia i lokalizując je - nie ma ich dużo w solijance, a piszę o niej bowiem DMX jest nakładką/rozszerzeniem Soli, jeśli wykonano spawn za pomocą skryptu - oznacza to, że nie ingerowano w all.spawn [pojazdy] dla lokacji pierwotnych -chociaż mogę się mylić. Natomiast co do tego tematu, uaktualnij dla pkt.3 - screenami, pkt. 2 - omówiony, pozostają pkt. 1 -wrzuć spakowany folder scripts + screen z rozmowy dot. wymiany, jeśli chodzi o pkt.4 - nie mam pojęcia [widać wyraźny spadek poziomu trudności czy tylko z opisu tak wynika?]. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Radrif Opublikowano 1 Kwietnia 2013 Autor Zgłoś Udostępnij Opublikowano 1 Kwietnia 2013 Dobra, to już kontynuuję w tym temacie najwyżej... Do pkt. 3 Dotyczy to też wiadomości kiedy otrzymuję info o nowym przejściu. Spoiler Do pkt. 4 Widać spadek trudności. Na wysypisku ginę od dwóch strzałów z pistoletu a w później przyjmuję na siebie prawie pół magazynka z automatu i jeszcze stoję. W opcjach sprawdzam i jest na początkującym zamiast na mistrzu... W sumie jeśli dobrze myślę to można zmienić obrażenia na taką samą wartość dla każdego poziomu trudności. Screeny do pkt. 1 zaraz zrobię i wrzucę razem z folderem scripts folder scripts ---> http://sendfile.pl/296640/scriptsDMX.rar screeny: jeden jest w agropromie drugi oczywiście na kordonie... Spoiler Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
The Emperor Opublikowano 2 Kwietnia 2013 Zgłoś Udostępnij Opublikowano 2 Kwietnia 2013 Jeśli chodzi o pkt.3 - sprawdziłem te skrypty pod kątem frazy send_tip [wiadomości sms], ale nie doszukałem się braku spolszczenia, natomiast wszystkie sekcje zawierające "--" są wyłączone, więc nie ma potrzeby ich przerabiać, ponieważ nie są uwzględniane w wysyłaniu wiadomości. Tych skryptów jest 263 szt., sprawdzenie tego pod kątem frazy ze screen'a przekracza moje możliwości pod kątem wolnego czasu, próbowałem szukać po frazie RIA-10, która występuje w wiadomości na screenie, ale jest to albo wiadomość łączona albo jej źródło leży poza skryptem, chociaż - mam wrażenie, że opcja 1 jest właściwa. Tutaj zapytaj ekipy polonizacyjnej, gdzie szukać właściwego pliku. Zwróć uwagę jakiego działania dotyczy nadesłana wiadomość. Jeśli masz dobry sprzęt - zrób kopię folderu scripts i szukaj fraz ze screen'ów, tylko - wpisać ją nie będzie łatwo z uwagi na znaki, ale czasu zaoszczędzisz otwierając wszystkie pliki jednocześnie - ja używam Notepad++ i szukam fraz symultanicznie.Co do pytania 1:- po nitce do kłębka:znajdujesz postać oferującą wymianęszukasz sekcji dialogu, w przypadku Szerstiuka <actor_dialog>trade_dialog_sherstyk</actor_dialog> w przypadku Kuzniecowa [jego przypadek rozpatrzymy] plik character_desc_escape.xml <actor_dialog>trade_dialog_kuznezov</actor_dialog>szukasz po frazie trade_dialog_kuznezov [w katalogu gamedataconfiggameplay] -pliku: dialogs_trading.xml. Napotkasz drzewo dialogowe a w min wiersz <dialog id="trade_dialog_kuznezov"> w tej sekcji dochodzimy do wywoływanej funkcji: <phrase id="221"> <precondition>sak_dialog.have_3vodka</precondition> <text>trade_dialog_kuznezov_221</text> <action>sak_dialog.give_3vodka</action> <action>sak_dialog.add_5ammo_5_45_fmj</action> </phrase> Powyżej istotna informacja - plik sak_dialog i funkcja have_3vodka oraz w tym samym pliku give_3vodka. Oczywiście nie jest to koniec, jeśli przejrzysz drzewo dialogowe są tam również funkcje have_10vodka, give_10vodka oraz inne, na pewno znajdziesz, wszystko w jednym pliku, więc:w gamedatascripts znajdujesz sak_dialog.script a w nim szereg funkcji dotyczacych wymiany za wódkę, rozpatrzmy have_3vodka:function have_3vodka() return sak.have_item_namber("vodka",3) ~= falseend Powyżej mamy przedmiot zdefiniowany nasza ukochana "vodka" oraz ilość szt, po przecinku...tutaj już wieszrozpatrujemy drugą cześć give_3vodka, czyli:function give_3vodka() sak.out_item_namber("vodka",3)end Powyżej te same składniki skryptu, jeśli w DMX'ie jest więcej rodzajów wódki? - wpisujesz pomiędzy " " - żądany przedmiot w odpowiedniej ilości. Pozostałe sekcje robisz analogicznie.Pamiętaj: zrób kopię modyfikowanych plików!P.S Jak już sprawdzisz czy działa, napisz. 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Radrif Opublikowano 2 Kwietnia 2013 Autor Zgłoś Udostępnij Opublikowano 2 Kwietnia 2013 Wszystko pięknie działa monthly_2015_05/smile.png.a202b72868214cf5a7fbbf898d563411.png Można zobaczyć poniżej Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
The Emperor Opublikowano 2 Kwietnia 2013 Zgłoś Udostępnij Opublikowano 2 Kwietnia 2013 Przeszukując skrypty, natknąłem się na plik difficulty_manager.script, sprawdziłem w pozostałych 262 plikach - gdzie występują wpisy odnoszące się do frazy "difficulty_manager".Sam plik w/w zawiera funkcję: if deathCount ~= nil then if string.len(lastDate) == 8 then if deathCount >= deathCountLimitDown then if difficultyNumber > 0 then amk.send_tip("%c[255,0,255,0]Poziom umiejętności stalkera Naznaczony nie odpowiada danym warunkom. Zmniejszenie poziomu trudności.%c[default]", "SIEĆ LOKALNA", 0, 15, "gen_info") difficultyNumber = difficultyNumber - 1 else amk.send_tip("%c[255,0,255,0]Poziom umiejętności stalkera Naznaczony nie odpowiada danym warunkom. Łatwiej już się nie da!%c[default]", "SIEĆ LOKALNA", 0, 15, "gen_info") end --clear statistics local f1 = f:update_path("$game_saves$", fileName) local f2 = f:update_path("$game_saves$", "death_"..dateNow.."_0.sta") f:file_rename(f1, f2, true) else if lastDate ~= dateNow then if deathCount <= deathCountLimitUp then if difficultyNumber < 3 then amk.send_tip("%c[255,0,255,0]Poziom umiejętności stalkera Naznaczony jest zbyt wysoki dla bieżących warunków. Zwiększenie poziomu trudnośći Zony.%c[default]", "SIEĆ LOKALNA", 0, 15, "gen_info") difficultyNumber = difficultyNumber + 1 else amk.send_tip("%c[255,0,255,0]Poziom umiejętności stalkera Naznaczony jest zbyt wysoki dla bieżących warunków. Ale trudniej już się nie da! Odpuść trochę.%c[default]", "SIEĆ LOKALNA", 0, 15, "gen_info") end --clear statistics local f1 = f:update_path("$game_saves$", fileName) local f2 = f:update_path("$game_saves$", "death_"..dateNow.."_0.sta") f:file_rename(f1, f2, true) end end end else amk.send_tip("%c[255,0,255,0]Kto mieszał w moich statystykach ? Znajdę - ukarzę !!!%c[default]", "Śmieciarz", 0, 15, "gen_info") --clear statistics local f1 = f:update_path("$game_saves$", fileName) local f2 = f:update_path("$game_saves$", "death_"..dateNow.."_0.sta") f:file_rename(f1, f2, true) end else z której wynika, iż obniżenie poziomu trudności następuje w skutek licznych zejść śmiertelnych Naznaczonego, warto zapoznać się z wierszem amk.send_tip, w którym stosowny komentarz generuje funkcja w/w, abstrahując od dywagacji nad skryptem, wcześniejsza fraza ma odwołanie w plikach:bind_stalker.script poprzez difficulty_manager.deathStatCollect()netpacket_pda_binder.script poprzez difficulty_manager.deathStatChangeDifficulty()powyżej wypunktowane odwołania funkcji należy od-komentować, stawiając -- przed wpisem czyli:--difficulty_manager.deathStatCollect()oraz--difficulty_manager.deathStatChangeDifficulty()W ten sposób wyłączysz linię z użycia, natomiast problem ze zmianą poziomu trudności nie tylko Ty miałeś, poszukałem trochę i znalazłem Tutaj potwierdzenie[szukaj frazy Найди и закомментируй] oraz strona GSC [szukaj Disable Auto Difficulty Mod] przypuszczeń.Powinno działać - skoro 2 niezależne fora podają te same info. Wiesz co masz robić, jak przetestujesz - odpisz.P.S - myślę, że dobrze będzie jak zgłosisz moderatorowi poprzedni temat, skoro już tutaj przeniosła się dyskusja, ewentualnie edytuj pierwszy post i tam umieść pytania z tematu. 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Radrif Opublikowano 2 Kwietnia 2013 Autor Zgłoś Udostępnij Opublikowano 2 Kwietnia 2013 (edytowane) Sprawdziłem, działa. Dalej jest na mistrzu pomimo wielu śmierci Naznaczonego. Ale teraz taka sprawa. Modyfikuję parametry wymiany wszystkim postaciom które się tym zajmują i natrafiłem w pliku na coś takiego. function kolbasa2_have() return sak.have_item_namber("kolbasa",2) ~= false end podczas gdy załatwiałem sprawę dotyczącą wymiany z wódkami wyglądało to tak function have_2vodka() return sak.have_item_namber("vodka",2) ~= falseend Czy wpis po function który jest w innej kolejności może powodować jakieś problemy czy nie będzie to mieć znaczenia? Edytowane 2 Kwietnia 2013 przez Radrif Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
The Emperor Opublikowano 2 Kwietnia 2013 Zgłoś Udostępnij Opublikowano 2 Kwietnia 2013 Kolejność jak najbardziej ma znaczenie, ponieważ do wpisu występującym po function czyli kolbasa2_have, będziemy się odwoływali podczas dialogu poprzez <action>.........</action>. Tak jak pisałem powyżej w poście #14, jeśli konstruujesz funkcję - zwracasz uwagę na:wpis aktywujący funkcję [dialog] czyli <action>sak_dialog.give_3vodka</action>gdzie: sak_dialog - odwołuje do pliku sak_dialog.script give_3vodka - odwołuje do funkcji. Jeśli zmieniasz kolejność, to zmieniasz również oznaczoną na czerwono część w <action>....</action>. Edit: najważniejsze są przedmioty określone w funkcji, te zmieniasz, podobnie jak z zamianą pojazdów na apteczkę - pozostałej części nie ruszałeś, bo musi być zgodna z tym co zawiera wywołujący ją wpis w drzewie dialogowym. Dla pewności - poszukaj w plikach .xml wpisów odnoszących się do plików skryptu. Generalnie oznaczone na czerwonowpisy z .xml = wpisy .script 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Radrif Opublikowano 4 Kwietnia 2013 Autor Zgłoś Udostępnij Opublikowano 4 Kwietnia 2013 Dobra, poprzednia sprawa zrobiona. Dałoby się zrobić tak żeby każde zadanie NS było wyświetlane w sekcji zrobione zadania w statystykach? Mam na myśli, żeby były za nie doliczane punkty do statystyk. Jeśli dobrze rozumuję to głównym plikiem byłoby gamedata/config/misc/task_manager.ltx, a w nim sekcja odpowiadająca za naliczenie punktów czyli reward_rank. Cały sęk w tym, że trzeba byłoby je tam wszystkie podopisywać. Ale czas mam więc nie byłby to problem. Znalazłem pliki dotyczące nowych zadań między innymi w: gamedata/config/gameplay/tasks.new.xml, tasks.wawka.xml, tasks.flame.xml, game.tasks.xml Na pewno tych plików będzie więcej, do edycji również (w tym chyba jakieś związane z pda), lecz chcę wiedzieć czy idę dobrym tropem... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
The Emperor Opublikowano 5 Kwietnia 2013 Zgłoś Udostępnij Opublikowano 5 Kwietnia 2013 (edytowane) @RadrifCały problem polega na tym, że w Solijance większość zadań opiera się nie na pliku task_manager.ltx, w którym z łatwością można edytować wpisy odpowiedzialne za reputację - jak zauważyłeś reward_rank, ale na skryptach - które odnoszą się do wpisów w gamedataconfigmisc - arhara_items.ltx. Są tam zawarte przedmioty, za pomocą których - znajdziesz właściwy skrypt [funkcję odpowiadającą za spawn], ale tych zadań jest zbyt dużo, by omówić tutaj sposób ich przerobienia. Wpierw skorzystaj z tego poradnika odnośnie zasadniczych typów zadań. W plikach .xml, o których wspominasz są konstrukcje dialogów, jednakże nie odpowiadają one za szukane przez Ciebie wpisy. Szukaj fraz z pliku -folder misc arhara_items.ltx [przedmiotów kwestowych] w katalogu skryptów scripts. Edit: Pamiętaj że swoje porady opieram na Soliance, dlatego plików definiujących przedmioty może być więcej. Edytowane 5 Kwietnia 2013 przez The Emperor 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Radrif Opublikowano 5 Kwietnia 2013 Autor Zgłoś Udostępnij Opublikowano 5 Kwietnia 2013 (edytowane) Znalazłem coś takiego w pliku info_flamequest.xml <info_portion id="flamethrower_quest_start"><task>flamethrower_quest_task</task></info_portion> I porównując do pliku task_manager.ltx wygląda na to że pogrubiony wpis pasowałby by go tam wpisać. Tylko czy mam rację czy nie? I teraz przykładowo wygląda to tak: [flamethrower_quest_task]type = storylinereward_rank = 1 Robię taki wpis ale czy type = storyline chyba też będę musiał zmienić? EDIT: Bardzo sporo wpisów typu <task></task> znalazłem w pliku info_arhara_way.xml więc mam nadzieję, że to jest to. Pliki z gamedata/config/gameplay Edytowane 5 Kwietnia 2013 przez Radrif Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
The Emperor Opublikowano 5 Kwietnia 2013 Zgłoś Udostępnij Opublikowano 5 Kwietnia 2013 Idziesz złym tropem...plik info_flamequest.xml, zawiera aktywatory dialogu, tzn. określona informacja której dodanie bądź brak - powoduje aktywację dialogu lub jego usunięcie, tak - by nie doszło do sytuacji, że jedno zadanie wykonujesz w nieskończoność.Wersja rozbudowana: Rozpatrując w/w plik mamy: <info_portion id="flamethrower_quest_start"> <task>flamethrower_quest_task</task> </info_portion> wiersz <task>flamethrower_quest_task</task> odsyła do pliku tasks_flame.xml [gamedataconfiggameplay] w którym wyszukiwana fraza odnosi się do zadania:<game_task id="flamethrower_quest_task"> <title>Znaleźć przyrządy do naprawy miotacza ognia.</title> <objective> <text>Znaleźć przyrządy do naprawy miotacza ognia.</text> <icon>amk_ui_flame_quest</icon> <article>mil_screw_flamethrower_descr</article> <infoportion_complete>game_over</infoportion_complete> <infoportion_fail>mil_freedom_member0002_umer</infoportion_fail> </objective> <objective> <text>Znaleźć artefakt "Ognista Kula"</text> <infoportion_complete>flamethrower_quest_fireball</infoportion_complete> </objective> <objective> <text>Znaleźć rurki</text> <infoportion_complete>flamethrower_quest_trubki</infoportion_complete> </objective> <objective> <text>Znaleźć manometr(czujnik ciśnienia)</text> <infoportion_complete>flamethrower_quest_manometr</infoportion_complete> </objective> <objective> <text>Znaleźć palnik</text> <infoportion_complete>flamethrower_quest_gorelka</infoportion_complete> </objective> <objective> <text>Znaleźć 10 butelek wódki</text> <infoportion_complete>flamethrower_quest_vodka</infoportion_complete> </objective> <objective> <map_location_type hint="mil_Svoboda_engineer">blue_location</map_location_type> <object_story_id>mil_Svoboda_engineer</object_story_id> <text>Przynieść części Wkrętowi.</text> <infoportion_complete>game_over</infoportion_complete> </objective></game_task> Pliki są powiązane, zauważ że przykładowy wpis w w/w wycinka:<infoportion_complete>flamethrower_quest_trubki</infoportion_complete>Można odnaleźć w info_flamequest.xml, jako informacja o skompletowaniu komponentów składających się na całość zadania.Na podstawie frazy flamethrower skupiamy się na odnalezieniu dialogu u właściwej postaci: <dialog id="mil_screw_flamethrower"> [gamedataconfiggameplay plik:dialogs_flamequest.xml, wpierw sprawdzając drzewo dialogowe, szukamy funkcji:Poniżej wycinek: <give_info>flamethrower_quest_start</give_info> <action>flamethrower.spawn_parts</action> <text>mil_screw_flamethrower_1010</text> <action>dialogs.break_dialog</action> gdzie:flamethrower_quest_start - donosi się do info_flamequest.xml,flamethrower.spawn_parts - plik skryptu flamethrower, spawn_parts - funkcja odpowiadająca za spawn.dialogs.break_dialog - dopowiada za przerwanie dialogu, tak by się nie zapętlał.Postać posiadająca dialog, to mil_Svoboda_engineer z pliku character_desc_military.xml. ale jest on rozbity na części, przykładowa sekcja:<actor_dialog>parts_completed3</actor_dialog> A odnaleźć ją można w dialogs_flamequest.xml, o której powyżej pisałem.Mówiąc szczerze, wziąłeś jedno z najbardziej skomplikowanych z uwagi na budowę - zadań, dlatego analiza każdego z elementów - wymaga napisania tutoriala, na co nie mam czasu. Wersja skrócona: chcąc zmienić rangę, nie dopisujesz zadania do task_manager.ltx, ponieważ jest ono (jak większość) - oparte o skrypt, więc w plikach .script, szukasz funkcji odnoszących się do zadania, a najłatwiej zrobić to szukając drzewa dialogowego, ponieważ z niego skrypt jest aktywowany. 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Radrif Opublikowano 16 Kwietnia 2013 Autor Zgłoś Udostępnij Opublikowano 16 Kwietnia 2013 (edytowane) Znów jest trochę czasu do roboty więc ostatnie sprawy... Dałoby się zrobić (znaczy raczej na pewno się da ) tak żeby muzyka na lokacji się zmieniała w zależności od czasu? Chodzi mi o to, żeby było tak jak w Czystym Niebie i Zewie Prypeci (06.00 - 22.00 i 22.00 - 06.00), czyli w godzinach nocnych załączał się ten "straszniejszy" soundtrack Brakuje mi tu tego... I gdzie mogę znaleźć nazwy anomalii? Bo wolałbym zespawnować jakąś anomalię na miejsce tych apteczek (no dawniej pojazdów...) i ja albo jestem ślepy albo nie wiem bo szukam, szukam i szukam... Z tym powyżej nie mogę sobie dać rady ale nie jest mi to potrzebne do szczęścia, a widzę że nie masz czasu a ja to rozumiem. I tak się dziwię, że chciało Ci się pomagać mi z tym wszystkim Edytowane 16 Kwietnia 2013 przez Radrif Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
The Emperor Opublikowano 16 Kwietnia 2013 Zgłoś Udostępnij Opublikowano 16 Kwietnia 2013 Teoretycznie opcja powinna być dostępna. W pliku game_levels_music.ltxmamy przykładowy wpis:[l01_escape_musics]musicamb01 = 6, 22, 0.2, 20, 40musicamb20 = 22, 6, 0.2, 20, 40Wpis amb01 - to dźwięk w godzinach 6-22, natomiast amb20 - godziny 22 do 6.Zew Prypeci - ten sam plik i przykład:[zaton_musics]musiczaton_day = 5, 22, 0.5, 2, 4musiczaton_night = 22, 5, 0.4, 1, 2zmienione są tylko godziny, ale nie wiem co znaczą pozostałe parametry.Muzyka znajduje się również w pliku game_maps_single.ltx, gdzie jest konkretny utwór dla lokacji - przykładowo:[l01_escape]texture = mapmap_escapebound_rect = -317.164, -633.718, 404.880, 811.627global_rect = 355.0,2011.0, 576.0,2453.000000weathers = cordonmusic_tracks = l01_escape_musicsGeneralnie jest jeszcze taka konfiguracja - pod Shoc:[level_music_tracks]musicamb01 = 0, 12, 0.5, 10,20musicamb03 = 0, 12, 0.5, 10,15musicamb07 = 12,24, 1.0, 5, 25Jednakże nie zawiera tych samych wpisów co wymienione na początku tego posta, być może tutaj trzeba dodać wpisy zgodne z powyższymi - w level_music_tracks [lokalizacja gamedataconfig]....? Nie sprawdzałem tego. Jeśli chodzi o anomalie, to znajdziesz je w gamedataconfigmiscSą to nazwy gotowe do wpisania - wszystko zawarte w odpowiednich plikach .ltx- zone_ameba- zone_burning_fuzz- zone_zavesa- zone_sphere- zone_smallrain- zone_sakbuzz- zone_radioactive- zone_no_gravity- zone_mosquito_bald- zone_monolith- zone_mincer- zone_ice- zone_gravi_zone- zone_fountain- zone_buzz- zone_zharka_staticMuzykę musisz sprawdzić modyfikując game_maps_single.ltx, natomiast anomalie rozgryziesz po nazwie, ewentualnie sprawdzając pliki. 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Radrif Opublikowano 17 Kwietnia 2013 Autor Zgłoś Udostępnij Opublikowano 17 Kwietnia 2013 A jeśli chodzi o muzykę w radiu? I czy jest jakieś inne rozwiązanie na spanie po "czasie strachu" niż tylko to "lekarstwo na jaki sen jest strasznie"? Bo w sumie wolałbym żeby "czas strachu" został, ale jak nie ma innego rozwiązania to trudno, niech zostanie jak jest No i to powinna być ostatnia sprawa w najbliższym czasie. Chodzi o statystyki... Mianowicie zamieniłem plik odpowiadający za naliczanie z OL Ultimate i wygląda to tak 1. stalker jakiś tam x3 <--- ilość zabitych 1 (3x1 daje 3 punkty za 3 zabitych, czyli tak jak chcę) gdzie wcześniej wyglądało tak 1. stalker jakiś tam x3 9 W tym wypadku w oryginalnym pliku jeden zabity stalker naliczał 3 "punkty", i byłoby w porządku gdyby te 9 punktów było naliczane w rankingu. Ale zamiast 3x3 było 3x9 co dawało 27 zamiast prawidłowych 9. I to jest rozwiązane. Podobny problem mam w zadaniach. Rangę za każde zadanie zmieniłem na 1 (coś przeczuwałem, że to zbyt łatwe) i zamiast być x4 1 po wielokrotnym wzięciu i zaliczeniu zadania wygląda x4 4 co daje 16 (zamiast 4 według tego jak ja chciałbym żeby te "punkty" naliczało) i nieco "psuje" jak dla mnie statystyki. I tu nie potrafię znaleźć fragmentu odpowiadającego za naliczanie tak jak w przypadku powyżej. To nie musi być na teraz I w końcu DMX zaczyna być taki jaki chcę Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi