Gość Diegtiariow Opublikowano 21 Października 2023 Zgłoś Udostępnij Opublikowano 21 Października 2023 NAZWA: Spawnujemy drzwi z pomocą A-Life [SoC] AUTOR: Matrix Temat spawnu drzwi, a dokładnie mówiąc, ich logika jest dość interesująca. Można zrobić tak, aby nasze drzwi się otwierały, jeśli gracz otrzyma jakiś infoportion lub będzie miał jakiś przedmiot. OPIS DZIAŁAŃ: Spoiler Dla spawnu samych drzwi, potrzebujemy rozpakowany plik all.spawn, można go rozpakować z pomocą ACDC. Otwieramy alife_*nazwa lokacji* (bierzemy tą lokację, na której chcemy zespawnować nasze drzwi). Wpisujemy na koniec lub na początek te linijki: [99999] ; cse_abstract properties section_name = physic_object name = home_door position = -170.69994506836, -20.019019012451, -139.07005517550 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 55 distance = 0 level_vertex_id = 79321 object_flags = 0xfffffffa custom_data = <<END [logic] cfg = scripts\esc_home_door.ltx [collide] ignore_static END ; cse_visual properties visual_name = physics\door\door_pripyat_01 ; cse_ph_skeleton properties skeleton_name = ; cse_alife_object_physic properties physic_type = 0x3 mass = 10 fixed_bones = link Teraz przyjrzyjmy się bliżej. [99999] - numer naszego obiektu, taki, aby się nie powtarzał. name = home_door - nazwa naszego obiektu. position - pozycja obiektu. direction - kierunek, w który będzie rozmieszczony obiekt. cfg - logika drzwi. visual - model wizualny naszego obiektu, w naszym przypadku są to drzwi pokoju z dekoderem w Prypeci. Współrzędne możemy wskazać inne, aby dowiedzieć się współrzędnych miejsca, gdzie chcemy postawić drzwi, wpisujemy ten skrypt do pliku ui_main_menu.script znajdującego się w gamedata\scripts\. function main_menu:OnButton_credits_clicked() local text local vid local gvid local a = vector() local text a = db.actor:position() vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Pozycja:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid news_manager.send_tip(db.actor, text, nil, nil, 30000) end Teraz, jeśli już weszliśmy do miejsca, którego współrzędne chcemy poznać, wracamy się do menu i klikamy na Creditsy/Twórców gry. Kiedy wrócimy do gry, otrzymamy wiadomość ze współrzędnymi. Robimy zdjęcie za pomocą F12. Zrzut ekranu będzie w miejscu, w którym masz folder zapisami gry. Wprowadzamy współrzędne X, Y, Z, a także level_vertex_id i game_vertex_id. Następnie możemy zebrać nasz spawn, ale nie spieszymy się jeszcze z wejściem do gry. Zrobimy prostą logikę. Tworzymy plik esc_home_door.ltx w gamedata\config\scripts\. Jeśli chcemy, żeby drzwi otwierały się kluczem, wpisujemy do niego następujące linie: [logic] active = ph_door@locked1 [ph_door@locked1] locked = true closed = true snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop show_tips = true on_use = {=actor_has_item(house_key)} ph_door@open [ph_door@open] locked = true closed = false snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop show_tips = false I te linijki jeśli chcemy, żeby drzwi się otworzyły po otrzymaniu infoportion: [logic] active = ph_door@locked1 [ph_door@locked1] locked = true closed = true snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop show_tips = true on_info = {+esc_kill_bandits_quest_done} ph_door@open [ph_door@open] locked = true closed = false snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop show_tips = false Jeśli chcemy otworzyć drzwi po otrzymaniu infoportion, nie musimy robić nic więcej, wystarczy przenieść skompilowany plik all.spawn do ścieżki gamedata\spawns\ Teraz, po wykonaniu zadania oczyszczenia ATP, nasze drzwi się otworzą. W przypadku z przedmiotem, musisz dodać jego samego i wydanie/oddanie go. Otwieramy plik items.ltx w gamedata\config\misc\ Na końcu piszemy: [house_key]:identity_immunities GroupControlSection = spawn_group discovery_dependency = $spawn = "devices\quest_items\house_key" ;$prefetch = 32 class = II_ATTCH cform = skeleton visual = equipments\item_antirad.ogf radius = 1 quest_item = true description = "Klucz od drzwi w wiosce nowicjuszy" inv_name = "Klucz" inv_name_short = "Klucz" inv_grid_width = 2 inv_grid_height = 1 inv_grid_x = 18 inv_grid_y = 8 inv_weight = 0 cost = 0 Ustawiamy model - w przykładzie umieszczono jako model antyrad i nóż jako ikonkę przedmiotu. Dodajmy teraz klucz jako wyposażenie startowego, które Wilk daje na początku gry. W tym celu otwieramy plik escape_dialog.script w gamedata\scripts\ Szukamy funkcji w pliku: function give_weapon_to_actor (trader, actor) dialogs.relocate_item_section(trader, "wpn_pm", "in") dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in") dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in") dialogs.relocate_item_section(trader, "wpn_knife", "in") end Wstawiamy linię przed słowem end, w przeciwnym razie wystąpi wylot. Linia, którą chcemy dodać: dialogs.relocate_item_section(trader, "house_key", "in") Zapisujemy i sprawdzamy. Teraz, jeśli zrobiłeś wszystko poprawnie, będziesz miał drzwi w wiosce kotów. Efekt końcowy: Spoiler ŹRÓDŁO: https://ap-pro.ru/forums/topic/3265-spavnim-dver-s-pomoshtyu-a-life-soc/ Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.