Wysłany: 2011-09-01, 19:56
Jacob
Głupiomądry
Wiek: 28 Na forum: 5502 dni Posty: 967
Nick w MP: Jacob
Piwa : 786
GUI - Eventy i Funkcj?
Zaczynamy od stworzenia zwyk?ego GUI za pomoc? skryptu guieditor kt?ry normalnie wrzucacie do resources .
Kod: http://community.mtasa.com/index.php?p=resources&s=details&id=141
Ja stworzy?em okienko z editem i buttonem:
Kod: GUIEditor_Window = {}
GUIEditor_Edit = {}
GUIEditor_Button = {}
GUIEditor_Window[1] = guiCreateWindow ( 0, 0, 0.5, 0.4, "Okno", true )
GUIEditor_Edit[1] = guiCreateEdit ( 0, 0, 0.6, 0.5, "", true )
GUIEditor_Button[1] = guiCreateButton ( 0, 0, 0.7, 0.9, "OK", true )
Ja nie tworzy?em okienka, sam je napisa?em. Oczywi?cie te nazwy z GUIEditor mo?na zmienia?.
GUI to naj?atwiejsza sprawa. Dla was funkcj? pewnie trudne ale naprawd?, to nic trudnego.
Stworzymy prosty skrypt na pobieranie z Edit tekstu i wy?wietlanie na chacie, a zatwierdzasz buttonem OK.
Zaczniemy od stworzenia zmiennej kt?ra b?dzie pobiera? tekst.
Kod: local tekst = guiGetText(GUIEditor_Edit[1])
GUIEditor_Edit[1] - wpisujecie swoj? nazw? Edita.
OK, wi?c teraz robimy funkcj?, kt?ra pobiera tekst pokazuje na chacie.
Kod: function nazwa ()
ouputChatBox("Wpisa?e?: "..tekst)
end
..tekst - wpisujecie swoj? nazw? zmiennej, lecz musicie zostawi? te "..". Te ".." dodajemy wtedy kiedy zmienna jest po lub przed tekstem np.
Kod: outputChatBox("tekst"..tekst.."2tekst")
Teraz czym? musimy wywo?a? funkcj?. Ja wywo?am j? przez button.
Kod: if source == GUIEditor_Button[1] then
to dodajemy po
Kod:
Ca?o?? wygl?da tak:
Kod: function nazwa ()
if source == GUIEditor_Button[1] then
ouputChatBox("Wpisa?e?: "..tekst)
end
end
Do tego musimy doda? event OnClientGUIClick .
Kod: addEventHandler("OnClientGUIClick", GUIEditor_Button[1], nazwa)
Gdzie GUIEitor_Button[1] dajemy wsz?dzie swoj? nazw? buttona.
Ostateczna ca?o?? to:
Kod: local tekst = guiGetText(GUIEditor_Edit[1])
function nazwa ()
if source == GUIEditor_Button[1] then
ouputChatBox("Wpisa?e?: "..tekst)
end
end
addEventHandler("OnClentGUIClick", GUIEditor_Button[1], nazwa)
Dobrze macie ca?? funkcj? na pobieranie tekstu ale jak otworzycie okno?
Dzi?ki funkcji guiSetVisible :
Kod: function pokaz ()
guiSetVisible(GUIEditor_Window[1], true)
showCursor(true)
end
addCommandHandler("otworz", pokaz)
Na zamykanie:
Kod: function schowaj ()
guiSetVisible(GUIEditor_Window[1], false)
showCursor(false)
end
addCommandHandler("zamknij", schowaj)
Gotowe. Wszystko macie wyja?nione.
Wi?cej funkcji dla GUI na http://wiki.mtasa.com/
Poradnik by Jacob . Prosz? wychwytywa? b??dy.
Ostatnio zmieniony przez Jacob 2011-09-19, 18:13, w całości zmieniany 1 raz
Wysłany: 2011-09-19, 17:55
sweet11
Wiek: 33 Na forum: 6040 dni Posty: 19
Piwa : 4
Witam,
dopiero zaczynam przygod? z LUA i takst ten bardzo mi pomaga, ale znalaz?em b??d:
Piszesz:
Kod: addEventHandler("OnClentGUIClick", GUIEditor_Button[1], nazwa)
A powinno by?:
Kod: addEventHandler("OnClientGUIClick", GUIEditor_Button[1], nazwa)
Zreszt? sam wcze?niej napisa?e?, ?e trzeba tak zrobi?
Cytat: Do tego musimy doda? event OnCli entGUIClick.
Wysłany: 2011-09-19, 18:12
Jacob
Głupiomądry
Wiek: 28 Na forum: 5502 dni Posty: 967
Nick w MP: Jacob
Piwa : 786
Oj ma?a liter?wka. Sory, poprawione.
Wysłany: 2011-09-19, 18:38
sweet11
Wiek: 33 Na forum: 6040 dni Posty: 19
Piwa : 4
Mam pewien problem...
To jest kod:
Kod: function open()
guiSetVisible(GUI_Window[1], true)
showCursor(true)
end
addEventHandler("onClientPlayerJoin", getRootElement(), open)
I nie pokazuje mi kursora...
Wysłany: 2011-09-19, 18:53
Jacob
Głupiomądry
Wiek: 28 Na forum: 5502 dni Posty: 967
Nick w MP: Jacob
Piwa : 786
Ja bym zrobi? to tak, ?e po stronie servera da? bym onPlayerJoin i t? funkcje z clienta przeni?s? na server.
Wysłany: 2011-09-19, 19:45
Piorun
Wiek: 32 Na forum: 6712 dni Posty: 1837
Nick w MP: Piorun
Piwa : 516
Nie .. lepiej to podpi?? pod zdarzenie onClientResourceStart - doprawdy lepiej.
Wysłany: 2011-09-19, 19:48
Jacob
Głupiomądry
Wiek: 28 Na forum: 5502 dni Posty: 967
Nick w MP: Jacob
Piwa : 786
Pioruniasty , jak kto chc?, lecz ja wole u?ywa? event?w po stronie servera.
Wysłany: 2011-09-19, 19:52
Piorun
Wiek: 32 Na forum: 6712 dni Posty: 1837
Nick w MP: Piorun
Piwa : 516
No ok, ale w tym przypadku nie da rady inaczej, bo tu mamy u?yte funkcje, kt?re dzia?aj? wy??cznie po stronie klienta (owszem, mo?na si? bawi?, no ale zaczynajmy od najprostszych rozwi?za?).
Pozdrawiam .
Wysłany: 2011-09-19, 21:15
sweet11
Wiek: 33 Na forum: 6040 dni Posty: 19
Piwa : 4
Dalej nie dzia?a, okienko jest, ale kursora jak nie by?o tak nie ma ;/
Wysłany: 2011-09-19, 21:26
Piorun
Wiek: 32 Na forum: 6712 dni Posty: 1837
Nick w MP: Piorun
Piwa : 516
Nie ma takiej mo?liwo?ci . Wpisz /debugscript 3, zrestartuj zas?b i poka? co ci wyskoczy?o. Na pewno masz b??d gdzie indziej.
Wysłany: 2011-09-20, 18:08
sweet11
Wiek: 33 Na forum: 6040 dni Posty: 19
Piwa : 4
Kod: debugscript: Incorrect client type for this command
yyy?
Wysłany: 2011-09-20, 18:50
Jacob
Głupiomądry
Wiek: 28 Na forum: 5502 dni Posty: 967
Nick w MP: Jacob
Piwa : 786
Wysłany: 2011-09-20, 18:54
sweet11
Wiek: 33 Na forum: 6040 dni Posty: 19
Piwa : 4
Kod: GUI_Window = {}
GUI_Edit = {}
GUI_Button = {}
------------------------------------------------------------------------------------------------------------------
--OKNO LOGOWANIA
------------------------------------------------------------------------------------------------------------------
GUI_Window[1] = guiCreateWindow(663,294,322,176,"Logowanie",false)
GUI_Edit[2] = guiCreateEdit(18,93,283,36,"Has?o...",false,GUI_Window[1])
GUI_Edit[1] = guiCreateEdit(18,52,283,37,"Nick...",false,GUI_Window[1])
GUI_Button[1] = guiCreateButton(107,134,91,32,"Loguj",false,GUI_Window[1])
GUI_Label[1] = guiCreateLabel(19,31,284,62,"U?yj nick'u i has?a z forum.",false,GUI_Window[1])
--maxymalna d?ugo??
guiEditSetMaxLength(GUI_Edit[1],30)
guiEditSetMaxLength(GUI_Edit[2],16)
-- zakaz zmiany wielko?ci i przesuwania okan
guiWindowSetMovable(GUI_Window[1],false)
guiWindowSetSizable(GUI_Window[1],false)
--ustawia prze?roczysto??
guiSetAlpha(GUI_Window[1],0.89999997615814)
guiSetAlpha(GUI_Button[1],0.94999998807907)
------------------------------------------------------------------------------------------------------------------
function open_login()
guiSetVisible(GUI_Window[1], true)
showCursor(true)
end
addEventHandler("onClientResourceStart", open_login)
function login()
local nick = guiGetText(GUI_Edit[1]);
local password = guiGetText(GUI_Edit[2]);
ouputChatBox("Tw?j login to "..nick..", a has?o to "..password.."!")
function close_login()
guiSetVisible(GUI_Window[1], false)
showCursor(false)
end
end
addEventHandler("OnClentGUIClick", GUI_Button[1], login)
Wysłany: 2011-09-20, 18:56
Jacob
Głupiomądry
Wiek: 28 Na forum: 5502 dni Posty: 967
Nick w MP: Jacob
Piwa : 786
Kod: function login()
local nick = guiGetText(GUI_Edit[1]);
local password = guiGetText(GUI_Edit[2]);
ouputChatBox("Tw?j login to "..nick..", a has?o to "..password.."!")
function close_login()
guiSetVisible(GUI_Window[1], false)
showCursor(false)
end
end
addEventHandler("OnClentGUIClick", GUIEditor_Button[1], login)
na
Kod: function login()
local nick = guiGetText(GUI_Edit[1]);
local password = guiGetText(GUI_Edit[2]);
ouputChatBox("Tw?j login to "..nick..", a has?o to "..password.."!")
guiSetVisible(GUI_Window[1], false)
showCursor(false)
end
addEventHandler("OnClentGUIClick", GUIEditor_Button[1], login)
I zdefiniuj label
Kod:
Nie r?b funkcji w funkcji.
Wysłany: 2011-09-20, 19:02
sweet11
Wiek: 33 Na forum: 6040 dni Posty: 19
Piwa : 4
nic ;/ To dam jeszcze kod z strony serwera:
Kod: handler = mysql_connect("localhost", "root", "", "samp") -- ??czenie
if ( not handler ) then -- Nieudane po??czenie
outputDebugString("MySQL-serwer connect: FAIL!")
else
outputDebugString("MySQL-serwer connect: SUCCESS!:)")
function setCameraOnPlayerJoin()
--uruchamia wdok
fadeCamera(source, true)
--ustawia kamere
setCameraMatrix(source, 1468.8785400391, -919.25317382813, 100.153465271, 1468.388671875, -918.42474365234, 99.881813049316)
end
addEventHandler("onPlayerJoin", getRootElement(), setCameraOnPlayerJoin)
mysql_close(handler) -- Zamyka po??czenie
end
Tagi: [tut] :: gui :: eventy :: funkcję
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: