Jump to content

Zły addEventHandler? Błąd z GUI


Recommended Posts

Cześć! Mam dwa problemy z moim skryptem: Po pierwsze po kliknięciu byle gdzie oprócz buttonów gui się zamyka a po drugie kliknięcie "Kup IPhone" nic nie daje.

Debugscript 3:

WARNING: Sklep\client.lua:19: Bad Argument @ 'addEventHandler' [Expected element at argument 2, got nil

Zawartość kodu:

  
GUIEditor = { 
    button = {}, 
    window = {}, 
    label = {} 
} 
function otworzgui() 
okienko = guiCreateWindow(418, 95, 275, 437, "", false) 
guiWindowSetSizable(okienko, false) 
  
GUIEditor.label[1] = guiCreateLabel(35, 33, 111, 15, "Sklep elektroniczny", false, okienko) 
GUIEditor.label[2] = guiCreateLabel(24, 104, 89, 15, "IPhone", false, okienko) 
kphone = guiCreateButton(230, 104, 35, 15, "Kup", false, okienko) 
GUIEditor.label[3] = guiCreateLabel(24, 73, 36, 15, "Nazwa", false, okienko) 
GUIEditor.label[4] = guiCreateLabel(156, 79, 30, 15, "Cena", false, okienko) 
GUIEditor.label[5] = guiCreateLabel(156, 104, 33, 15, "400$", false, okienko) 
zamknij = guiCreateButton(250, 30, 15, 15, "X", false, okienko) 
showCursor(true) 
addEventHandler("onClientGUIClick", zamknij, zamknijgui) 
addEventHandler("onClientGUIClick", kp, kupiphone) 
end 
  
addCommandHandler ("sklep", otworzgui) 
  
function zamknijgui() 
guiSetVisible (okienko, not guiGetVisible) 
showCursor(false) 
end 
  
function kupiphone() 
outputChatBox("Dziękujemy za zakup IPhone w naszym sklepie oraz zapraszamy ponownie!") 
end 
  
  

Dodatkowo mam pytanie odnośnie zabierania graczowi danej gotówki: Da się to zrobić bez pobierania ile jej ma i wykonywania działań matematycznych? Z góry dzięki za odpowiedzi.

Link to comment

Taki przycisk jak 'kp' nie istnieje w twoim skrypcie, dlatego jest nil, Ty stwprzyłeś przycisk o nazwie 'kphone'...

Po za tym podanie przycisku do funkcji "addEventHandler" nie sprawi że event będzie wykonany tylko dla tego przycisku, ale że będzie on źrudłem (source) eventu, dla tego w funkcji musisz sprawdzić czym jest source, w przypadku zamknijgui():

  
function zamknijgui() 
    if source == zamknij then 
        guiSetVisible (okienko, not guiGetVisible) 
        showCursor(false) 
    end 
end  
  

a jeśli chodzi o pytanie dodatkowe:

takePlayerMoney 
  

Link to comment

Dzięki za pomoc! :D A jeszcze jedno pytanko, mam HeroInventory i ten skrypt miałby dodawać do ekwipunku telefon. Funkcja dodawana przez heroinventory brzmi tak: bool addPlayerItem ( element playerElement, int itemID, int amount ) Ale nie zadziała gdy tak po prostu jej użyje? Muszę zrobić ten sklep w tym samym skrypcie co HeroInventory czy da się jakoś eksportować funkcję z innych skryptów?

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...