Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

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

Respekt: 212,3
Respekt: 212,3Respekt: 212,3

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:

function nazwa ()

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  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2011-09-19, 17:55


sweet11







Wiek: 33
Na forum: 6040 dni
Posty: 19

Piwa: 4

Respekt: 50

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? :D
Cytat:

Do tego musimy doda? event OnClientGUIClick.


Postaw piwo autorowi tego posta
 

 
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

Respekt: 212,3
Respekt: 212,3Respekt: 212,3

Oj ma?a liter?wka. Sory, poprawione.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2011-09-19, 18:38


sweet11







Wiek: 33
Na forum: 6040 dni
Posty: 19

Piwa: 4

Respekt: 50

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...

Postaw piwo autorowi tego posta
 

 
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

Respekt: 212,3
Respekt: 212,3Respekt: 212,3

Ja bym zrobi? to tak, ?e po stronie servera da? bym onPlayerJoin i t? funkcje z clienta przeni?s? na server.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2011-09-19, 19:45


Piorun







Wiek: 32
Na forum: 6712 dni
Posty: 1837
Nick w MP: Piorun

Piwa: 516

Respekt: 480,7
Respekt: 480,7

Nie .. lepiej to podpi?? pod zdarzenie onClientResourceStart - doprawdy lepiej.

Podpis
Możesz mnie znaleźć na: Facebook
Postaw piwo autorowi tego posta
 

 
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

Respekt: 212,3
Respekt: 212,3Respekt: 212,3

Pioruniasty, jak kto chc?, lecz ja wole u?ywa? event?w po stronie servera.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2011-09-19, 19:52


Piorun







Wiek: 32
Na forum: 6712 dni
Posty: 1837
Nick w MP: Piorun

Piwa: 516

Respekt: 480,7
Respekt: 480,7

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 :) .

Podpis
Możesz mnie znaleźć na: Facebook
Postaw piwo autorowi tego posta
 

 
Wysłany: 2011-09-19, 21:15


sweet11







Wiek: 33
Na forum: 6040 dni
Posty: 19

Piwa: 4

Respekt: 50

Dalej nie dzia?a, okienko jest, ale kursora jak nie by?o tak nie ma ;/

Postaw piwo autorowi tego posta
 

 
Wysłany: 2011-09-19, 21:26


Piorun







Wiek: 32
Na forum: 6712 dni
Posty: 1837
Nick w MP: Piorun

Piwa: 516

Respekt: 480,7
Respekt: 480,7

Nie ma takiej mo?liwo?ci :shock: . Wpisz /debugscript 3, zrestartuj zas?b i poka? co ci wyskoczy?o. Na pewno masz b??d gdzie indziej.

Podpis
Możesz mnie znaleźć na: Facebook
Postaw piwo autorowi tego posta
 

 
Wysłany: 2011-09-20, 18:08


sweet11







Wiek: 33
Na forum: 6040 dni
Posty: 19

Piwa: 4

Respekt: 50

Kod:

debugscript: Incorrect client type for this command

yyy?

Postaw piwo autorowi tego posta
 

 
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

Respekt: 212,3
Respekt: 212,3Respekt: 212,3

Daj ca?y kod.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2011-09-20, 18:54


sweet11







Wiek: 33
Na forum: 6040 dni
Posty: 19

Piwa: 4

Respekt: 50

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)


Postaw piwo autorowi tego posta
 

 
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

Respekt: 212,3
Respekt: 212,3Respekt: 212,3

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:

GUI_Label = {}


Nie r?b funkcji w funkcji.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2011-09-20, 19:02


sweet11







Wiek: 33
Na forum: 6040 dni
Posty: 19

Piwa: 4

Respekt: 50

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


Postaw piwo autorowi tego posta
 

 
Tagi: [tut] :: gui :: eventy :: funkcję
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » [TUT] GUI - eventy i funkcję Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku