Skocz do zawartości

Spawnujemy drzwi z pomocą A-Life [SoC]


Gość Diegtiariow

Rekomendowane odpowiedzi

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

ss_alex__01-30-22_17-52-54_(l01_escape).jpg.b67a3143dfc92622586cfb04e6f13ac4.jpg

 

 

ŹRÓDŁO:

https://ap-pro.ru/forums/topic/3265-spavnim-dver-s-pomoshtyu-a-life-soc/

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z tej strony, zgadzasz się na nasze Warunki użytkowania.