Forum Stalker.pl • Zobacz temat - Tworzenie modułów dla restryktorów

Tworzenie modułów dla restryktorów

Tworzenie modułów dla restryktorów

Postprzez tt44 w 01 Wrz 2014, 15:46

Wyjaśnię tutaj jak stworzyć moduł dla resryktora. Przykładowe przydatne, istniejące już resryktory:
"sr_no_weapon" - odpowiada za chowanie broni aktora w wyznaczonych miejscach
"sr_cutscene" - gdy aktor do niego wejdzie rozpoczyna się cutscenka
"sr_tip" - aktor otrzymuje wiadomość po wejściu do niego

Wszystkie moduły muszą być uwzględnione w skrypcie modules.
Kod: [ Pobierz ] [ Ukryj ]
load_scheme("nazwa_skryptu", "nazwa_modułu",  typ_modułu)
-- modułom restryktorów nadajemy typ "stype_restrictor"
load_scheme("nowy_skrypt",   "nowy_restryktor",   stype_restrictor)
 

A tak ma wyglądać sam skrypt:
Kod: [ Pobierz ] [ Ukryj ]
local state_nowhere = 0
local state_inside = 1
local state_outside = 2
------------------------------
class "nowy_restryktor"
------------------------------
function nowy_restryktor:__init(obj, storage )
        self.object = obj
        self.st = storage
end

function nowy_restryktor:reset_scheme()
        self.state = state_nowhere
end

function nowy_restryktor:update(delta)
        local actor = db.actor
        if xr_logic.try_switch_to_another_section(self.object, self.st, actor) then
                return false
        end
        -- Różnicowanie stanu w zależności od tego czy aktor jest wewnątrz restryktora czy przed chwilą go opuścił
        local state = self.state
        -- Jeśli aktor wkracza w restryktor
        if state == state_outside or state == state_nowhere then
                if self.object:inside(actor:center()) then
                        self:zone_enter()
                end
        end
        -- Jeśli aktor opuszcza restryktor
        if state == state_inside or state == state_nowhere then
                if not self.object:inside(actor:center()) then
                        self:zone_leave()
                end
        end
end

-- Funkcja wywoływana po wejściu w restryktor
function nowy_restryktor:zone_enter()
        self.state = state_inside
end
-- Funkcja wywoływana po opuszczeniu restryktora
function nowy_restryktor:zone_leave()
        self.state = state_outside
end

function add_to_binder(npc, ini, scheme, section, storage)
        local new_action = nowy_restryktor(npc, storage)
end
-- Funkcja dodająca schemat
function set_scheme(npc, ini, scheme, section, gulag_name)
        local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
        st.logic = xr_logic.cfg_get_switch_conditions(ini, section, npc)
end
 

Za ten post tt44 otrzymał następujące punkty reputacji:
Positive Cromm Cruac, Wheeljack.
tt44
Stalker

Posty: 88
Dołączenie: 12 Lut 2013, 19:02
Ostatnio był: 24 Cze 2017, 19:07
Kozaki: 60

Reklamy Google

Powróć do Tutoriale

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 1 gość