Wstęp do pisania skryptów GUI

From Multi Theft Auto: Wiki
Revision as of 07:49, 7 December 2020 by Tracer (talk | contribs)
Jump to navigation Jump to search

Jedną z ważnych funkcji MTA:SA jest możliwość stworzenia elementów GUI (graficznego interfejsu użytkownika). GUI składa się z okien, przycisków, pól edycji, pól wyboru... Prawie wszystkie standardowe komponenty formularzy w środowiskach graficznych. Mogą być wyświetlane, gdy użytkownik jest w grze, i używane jako wejścia i wyjścia zamiast tradycyjnych poleceń.

Graficzny interfejs administracyjny

Tutorial tworzenia okna logowania

W tym samouczku utworzymy proste okno logowania z dwoma polami wprowadzania danych i przyciskiem. Okno pojawia się, gdy gracz dołącza do gry, a po kliknięciu przycisku gracz zostaje zrespawnowany (odrodzony). Ten tutorial będzie kontynuacją trybu gry, który stworzyliśmy w Wstępie do pisania skryptów (Jeśli korzystałeś/aś z naszego Wstępu do pisania skryptów, będziesz musiał usunąć lub skomentować wiersz spawnPlayer w funkcji "joinHandler" w swoim kodzie, ponieważ zastąpimy go alternatywnym graficznym rozwiązaniem poprzez interfejs graficzny). Weźmiemy także pod uwagę skrypty po stronie klienta.

Narysuj okno

Cały interfejs musi być utworzony po stronie klienta. Dobrą praktyką jest również przechowywanie wszystkich skryptów klienta w oddzielnym folderze.

Przejdź do katalogu /TwójSerwerMTA/mods/deathmatch/resources/MójZasób/, i stwórz folder o nazwie "klient". w folderze /klient/, stwórz plik tekstowy i nazwij go: gui.lua.

W tym pliku napiszemy funkcję rysującą okno. Aby utworzyć okno, użyjemy funkcji guiCreateWindow:

function stworzPanelLogowania()
	-- zdefiniuj pozycje X i Y naszego okna
	local X = 0.375
	local Y = 0.375
	-- zdefiniuj szerokość i wysokość naszego okna
	local szerokosc = 0.25
	local wysokosc = 0.25
	-- utwórz okno i zapisz jego wartość w zmiennej o nazwie 'oknoLogin'
	-- możesz kliknąć nazwę funkcji, aby przeczytać jej dokumentację
	oknoLogin = guiCreateWindow(X, Y, szerokosc, wysokosc, "Zaloguj sie", true)
end