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


Wysłany: 2017-07-13, 10:51


Mutaszi

Konfederat Pawn






Wiek: 24
Na forum: 2114 dni
Posty: 39
Nick w MP: Mutaszi

Piwa: 195

Respekt: 50


Siedziałem na każdej stronie po kolei i dalej nie znalazłem rozwiązania dla mojego problemu.
Stworzyłem sobie okno w guieditorze z trzeba przyciskami (http://i.imgur.com/uMMO3Xk.jpg) i chce nauczyć się z nich korzystać.
Chodzi mi o to by po kliknięciu np w pierwszy button dało mi te 100HP itd.
Niby jest to proste a ja i tak tego nie rozumiem, mógłby mi to ktoś pokazać i wytłumaczyć a nie wkleić tylko kod?

Dopiero zaczynam z Lua :/

Kod:
function Panel (playerid, cmd)

panel = guiCreateWindow(707, 358, 217, 284, "Test GUI", false)
guiWindowSetSizable(panel, false)
hp = guiCreateButton(24, 29, 165, 41, "Full HP ( 100 )", false, panel)
guiSetProperty(hp, "NormalTextColour", "FFF970A1")
ammo = guiCreateButton(24, 233, 165, 41, "Full Ammo ( 100x Granat ) ", false, panel)
guiSetProperty(ammo, "NormalTextColour", "FF6858FB")
armor = guiCreateButton(24, 127, 165, 41, "Full ARMOR ( 100 )", false, panel)
guiSetProperty(armor, "NormalTextColour", "FF37F11E")
showCursor ( true )

end
addCommandHandler("panel", Panel)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-13, 10:54


Szymczu

Programista bo tak






Wiek: 21
Na forum: 1520 dni
Posty: 194
Nick w MP: Szymczu

Piwa: 36

Respekt: 120
Respekt: 120


addEventHandler("onClientGUIClick", hp, function()

--To co ma sie dziać po kliknięciu w button
end, false)


Możesz sobie poczytać na wiki. Jest nawet po polsku.
https://wiki.multitheftauto.com/wiki/PL/onClientGUIClick

"addEventHandler" - jest to funkcja w lua dodająca obsługe zdarzeń. Obsługa zdarzeń są to funkcje, które zostaną wykonane gdy nastąpi jakieś zdarzenie np. "onClientGUIClick" Gdy klikniesz w button podany w 2 parametrze wykona się funkcja. Zdarzeń w lua jest dosyć sporo, możesz znaleźć je na wiki.
Jeśli chcesz możesz sobie przeczytać na wiki jest "artykuł" poświęcony obsłudze zdarzeń. Tam masz to wytłumaczone od deski do deski jak to działa w mta.

https://wiki.multitheftauto.com/wiki/Event_system

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-13, 11:47


nanKy







Wiek: 17
Na forum: 1951 dni
Posty: 507
Nick w MP: nanky

Piwa: 1582

Respekt: 239
Respekt: 239Respekt: 239


"Szymczu" napisał/a:

addEventHandler("onClientGUIClick", hp, function()

--To co ma sie dziać po kliknięciu w button
end, false)


Możesz sobie poczytać na wiki. Jest nawet po polsku.
https://wiki.multitheftauto.com/wiki/PL/onClientGUIClick

"addEventHandler" - jest to funkcja w lua dodająca obsługe zdarzeń. Obsługa zdarzeń są to funkcje, które zostaną wykonane gdy nastąpi jakieś zdarzenie np. "onClientGUIClick" Gdy klikniesz w button podany w 2 parametrze wykona się funkcja. Zdarzeń w lua jest dosyć sporo, możesz znaleźć je na wiki.
Jeśli chcesz możesz sobie przeczytać na wiki jest "artykuł" poświęcony obsłudze zdarzeń. Tam masz to wytłumaczone od deski do deski jak to działa w mta.

https://wiki.multitheftauto.com/wiki/Event_system


Bzdeta, powinno być moim zdaniem tak ponieważ jest optymalnie i nie trzeba event handlerów do następnych buttonów dodawać:


addEventHandler("onClientGUIClick",resourceRoot,function()
local button = guiGetText(source)
if button == "Full HP ( 100 )" then
setElementHealth(localPlayer,100)
elseif button == "Full Ammo ( 100x Granat ) " then
-- tu musisz wytriggerowac dawanie broni
elseif button == "Full ARMOR ( 100 )" then
setPlayerArmor(localPlayer,100)
end
end)


I ten twój kod też jest na bakier.
Powinno być tak:


panel = false
function Panel (playerid, cmd)
panel = guiCreateWindow(707, 358, 217, 284, "Test GUI", false)
guiWindowSetSizable(panel, false)
hp = guiCreateButton(24, 29, 165, 41, "Full HP ( 100 )", false, panel)
guiSetProperty(hp, "NormalTextColour", "FFF970A1")
ammo = guiCreateButton(24, 233, 165, 41, "Full Ammo ( 100x Granat ) ", false, panel)
guiSetProperty(ammo, "NormalTextColour", "FF6858FB")
armor = guiCreateButton(24, 127, 165, 41, "Full ARMOR ( 100 )", false, panel)
guiSetProperty(armor, "NormalTextColour", "FF37F11E")
showCursor ( true )
guiSetVisible(panel,false)
end
addCommandHandler("panel", function()
if panel == false then
guiSetVisible(panel,true)
panel = true
elseif panel == true then
guiSetVisible(panel,false)
panel = false
end
end)


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Mutaszi
Wysłany: 2017-07-13, 11:53


Szymczu

Programista bo tak






Wiek: 21
Na forum: 1520 dni
Posty: 194
Nick w MP: Szymczu

Piwa: 36

Respekt: 120
Respekt: 120


"NankY." napisał/a:


Bzdeta, powinno być moim zdaniem tak ponieważ jest optymalnie i nie trzeba event handlerów do następnych buttonów dodawać:

Jest optymalniej ale sądzę, że bzdetą jest twierdzenie, że mój przykład to bzdeta bo kod działa w pełni poprawnie.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-13, 12:24


eject

kurdebele






Wiek: 24
Na forum: 1744 dni
Posty: 185
Nick w MP: EjecT

Piwa: 2007

Respekt: 85,8


Ostrzeżeń: 60%
"NankY." napisał/a:

Bzdeta, powinno być moim zdaniem tak ponieważ jest optymalnie i nie trzeba event handlerów do następnych buttonów dodawać:


addEventHandler("onClientGUIClick",resourceRoot,function()
local button = guiGetText(source)
if button == "Full HP ( 100 )" then
setElementHealth(localPlayer,100)
elseif button == "Full Ammo ( 100x Granat ) " then
-- tu musisz wytriggerowac dawanie broni
elseif button == "Full ARMOR ( 100 )" then
setPlayerArmor(localPlayer,100)
end
end)


Panie programisto, po 1:
- Funkcja setPedArmor jest tylko serverside - czyli działa tylko po stronie servera.
po 2 :
- Nie ma potrzeby podpiania elementów GUI pod resourceRoot, lepszy rozwiązaniem będzie: guiRoot

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-13, 12:46


Mutaszi

Konfederat Pawn






Wiek: 24
Na forum: 2114 dni
Posty: 39
Nick w MP: Mutaszi

Piwa: 195

Respekt: 50


"NankY." napisał/a:

panel = false
function Panel (playerid, cmd)
        panel = guiCreateWindow(707, 358, 217, 284, "Test GUI", false)
        guiWindowSetSizable(panel, false)
        hp = guiCreateButton(24, 29, 165, 41, "Full HP ( 100 )", false, panel)
        guiSetProperty(hp, "NormalTextColour", "FFF970A1")
        ammo = guiCreateButton(24, 233, 165, 41, "Full Ammo ( 100x Granat ) ", false, panel)
        guiSetProperty(ammo, "NormalTextColour", "FF6858FB")
       armor = guiCreateButton(24, 127, 165, 41, "Full ARMOR ( 100 )", false, panel)
        guiSetProperty(armor, "NormalTextColour", "FF37F11E")    
        showCursor ( true )  
guiSetVisible(panel,false)
    end
addCommandHandler("panel", function()
if panel == false then
guiSetVisible(panel,true)
panel = true
elseif panel == true then
guiSetVisible(panel,false)
panel = false
end
end)


:16: Bad argument @ 'guiSetVisible' [Expected gui-element at argument 1, got boolean

Takie coś wyskakuje mi po wklejeniu twojego kodu.

Linijka 16:
guiSetVisible(panel,true)


Podpis

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-13, 13:04


Szymczu

Programista bo tak






Wiek: 21
Na forum: 1520 dni
Posty: 194
Nick w MP: Szymczu

Piwa: 36

Respekt: 120
Respekt: 120


Zmienną, która sprawdza czy panel jest włączony nazwałeś tak samo jak zmienną do której przypisujesz element okna.

@Edit
Tak by było lepiej
local panel_check = false  

panel = guiCreateWindow(707, 358, 217, 284, "Test GUI", false)
guiWindowSetSizable(panel, false)
hp = guiCreateButton(24, 29, 165, 41, "Full HP ( 100 )", false, panel)
guiSetProperty(hp, "NormalTextColour", "FFF970A1")
ammo = guiCreateButton(24, 233, 165, 41, "Full Ammo ( 100x Granat ) ", false, panel)
guiSetProperty(ammo, "NormalTextColour", "FF6858FB")
armor = guiCreateButton(24, 127, 165, 41, "Full ARMOR ( 100 )", false, panel)
guiSetProperty(armor, "NormalTextColour", "FF37F11E")
guiSetVisible(panel,false)

addCommandHandler("panel", function()
if panel_check == false then
guiSetVisible(panel,true)
showCursor(true)
panel_check = true
elseif panel_check == true then
guiSetVisible(panel,false)
showCursor(false)
panel_check = false
end
end)


Ostatnio zmieniony przez Szymczu 2017-07-13, 13:42, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
KrySStiano
Wysłany: 2017-07-13, 13:36


Mutaszi

Konfederat Pawn






Wiek: 24
Na forum: 2114 dni
Posty: 39
Nick w MP: Mutaszi

Piwa: 195

Respekt: 50


"Szymczu" napisał/a:

Zmienną, która sprawdza czy panel jest włączony nazwałeś tak samo jak zmienną do której przypisujesz element okna.

@Edit
Tak by było lepiej
local panel_check = false  

panel = guiCreateWindow(707, 358, 217, 284, "Test GUI", false)
guiWindowSetSizable(panel, false)
hp = guiCreateButton(24, 29, 165, 41, "Full HP ( 100 )", false, panel)
guiSetProperty(hp, "NormalTextColour", "FFF970A1")
ammo = guiCreateButton(24, 233, 165, 41, "Full Ammo ( 100x Granat ) ", false, panel)
guiSetProperty(ammo, "NormalTextColour", "FF6858FB")
armor = guiCreateButton(24, 127, 165, 41, "Full ARMOR ( 100 )", false, panel)
guiSetProperty(armor, "NormalTextColour", "FF37F11E")
guiSetVisible(panel,false)

addCommandHandler("panel", function()
if panel_check == false then
guiSetVisible(panel,true)
showCursor(true)
panel = true
elseif panel_check == true then
guiSetVisible(panel,false)
showCursor(false)
panel = false
end
end)



Znowu ten sam błąd,
guiSetVisible(panel,true)


Podpis

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-13, 13:50


Szymczu

Programista bo tak






Wiek: 21
Na forum: 1520 dni
Posty: 194
Nick w MP: Szymczu

Piwa: 36

Respekt: 120
Respekt: 120


"Mutaszi" napisał/a:


Znowu ten sam błąd,
guiSetVisible(panel,true)

Mały błąd był, poprawiłem i przetestowałem. Przeklej jeszcze raz ten kod, który napisałem wyżej. Działa jak należy.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Mutaszi
Wysłany: 2017-07-13, 14:20


Mutaszi

Konfederat Pawn






Wiek: 24
Na forum: 2114 dni
Posty: 39
Nick w MP: Mutaszi

Piwa: 195

Respekt: 50


"Szymczu" napisał/a:

"Mutaszi" napisał/a:


Znowu ten sam błąd,
guiSetVisible(panel,true)

Mały błąd był, poprawiłem i przetestowałem. Przeklej jeszcze raz ten kod, który napisałem wyżej. Działa jak należy.



Teraz faktycznie działa, dziękuje wam obu :)


Podpis

Postaw piwo autorowi tego posta
 

 
Tagi: wykonanie :: czegoś :: kliknięciu :: przycisku :: gui
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:








Wyświetl posty z ostatnich:   

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

Skocz do: