Forum Stalker.pl • Zobacz temat - Edycja UI za pomocą skryptu

Edycja UI za pomocą skryptu

Edycja UI za pomocą skryptu

Postprzez tt44 w 11 Lut 2014, 15:42

W tym temacie opiszę jak edytować UI za pomocą skryptów, może to być przydatne np. jeśli chce ktoś stworzyć menu z interaktywnymi przyciskami.
Kod: [ Pobierz ] [ Ukryj ]
class "nazwa_klasy" (CUIScriptWnd)

function nazwa_klasy:__init() super() -- Konstruuję klasę
        self:InitControls()
        self:InitCallBacks()
end

function nazwa_klasy:__finalize() -- Destruuję klasę

end

function nazwa_klasy:InitControls()
        self:Init(0, 0, 1024, 768) -- Inicjacja okna

        local xml = CScriptXmlInit() -- Aby skrypt analizował plik xml
        xml:ParseFile("nazwa_pliku.xml") -- Tu podajemy nazwę pliku, musi on być umieszczony w config/ui

        local ctrl = nil -- Inicjacja zmiennej ctrl

        self.background = xml:InitStatic("background", self) -- Tekstura tła

        ctrl = xml:Init3tButton("background:btn_exit",  self.background)       
        self:Register(ctrl, "btn_exit") -- Dodajemy przycisk exit zamykający nasze okno
end

function nazwa_klasy:InitCallBacks()
        self:AddCallback("btn_exit", ui_events.BUTTON_CLICKED, self.OnExitClick, self)
-- Aby przycisk zadziałał dodajemy mu callback
end

function nazwa_klasy:OnExitClick() -- Funkcja wywoływana przez callback
        self:GetHolder():start_stop_menu(self, true) -- Zamyka okno
end

-- Teraz wyjaśnię jak sprawić, aby kod wykonywał się po naciśnięciu wybranego przycisku na klawiaturze
function nazwa_klasy:OnKeyboard(dik, keyboard_action)
        CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
        local bind = dik_to_bind(dik)
       
        if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
                if dik == DIK_keys.DIK_ESCAPE then -- Tutaj określamy przycisk
                        self:OnExitClick() -- Kod wykonywany po naciśnięciu
                end
        end
end

-- Aby załączyć taką klasę dodaj w jakiejś funkcji:
level.start_stop_menu(nazwa_klasy(get_hud()), true)
 

A tutaj pokażę, jak ma wyglądać plik xml:
Kod: [ Pobierz ] [ Ukryj ]
<window>
        <background x="0" y="0" width="600" height="650">
                <texture x="0" y="0" width="600" height="650">ui\nazwa</texture>
        <!-- Współrzędne osi x, y, szerokość, wysokość, ścieżka do tekstury -->

                <!-- przycisk załączony do tła -->
                <btn_exit x="420" y="500" width="117" height="42">
                        <texture_e>ui\nazwa</texture_e>
                        <text font="czcionka">napis_na_przycisku</text>
                </btn_exit>
        </background>
</window>
 
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ść