Hilfe bei Hausaufgabe :-) ( Anfängerfrage)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hilfe bei Hausaufgabe :-) ( Anfängerfrage)

    Hallo
    Ich versuche gerade das Lua zu lernen und habe auch einen Scripter der hier im Forum aktiv ist und mir Chaosqueen mit viel erklären und Übungsaufgaben zeigt was ich wissen muss.
    Aber genau meine Übungsaufgabe macht grad Zicken.
    Ich soll ein GUI Fenster erstellen welches man mit F4 öffnen kann ( Eigendlich soll es F3 sein aber die Taste ist schon mit einer Funktion belegt.)
    Die 4 Buttons in dem Fenster soll ich dann auch noch mit Funktionen belegen, aber so weit bin ich noch nicht :)


    Bisher versuche ich das Fenster erstmal über den Befehl /hausaufgabe zu öffnen, habe aber das Problem das mein Fenster sofort nach dem starten der Resource ohne eingabe des Befehls /hausaufgabe öffnet.
    Wie ich den Befehl / Hausaufgabe später mit der F4 Taste zum öffnen des GUI Fensters belege weiss ich noch nicht **lach**

    Vielleicht kann mir ja jemand sagen was ich da falsch gemacht habe und warum es nicht funktioniert

    Quellcode

    1. localplayer = getLocalPlayer ()
    2. addEventHandler("onClientResourceStart", resourceRoot,
    3. function()
    4. fensterBG = guiCreateWindow(0.32, 0.02, 0.43, 0.41, "Hausaufgabe", true)
    5. guiWindowSetSizable(fensterBG, false)
    6. infotext = guiCreateLabel(0.03, 0.10, 0.95, 0.10, "Mal schauen ob alles funktioniert", true, fensterBG)
    7. guiSetFont(labedabel, "default-bold-small")
    8. grooveBT = guiCreateButton(0.54, 0.23, 0.42, 0.13, "Spawn Grovestreet", true, fensterBG)
    9. guiSetFont(grooveBT, "default-bold-small")
    10. guiSetProperty(grooveBT, "NormalTextColour", "C8FFFFFF")
    11. polizeiBT = guiCreateButton(0.54, 0.51, 0.42, 0.13, "Spawn Polizei LS", true, fensterBG)
    12. guiSetFont(polizeiBT, "default-bold-small")
    13. guiSetProperty(polizeiBT, "NormalTextColour", "C8FFFFFF")
    14. cheetahBT = guiCreateButton(0.54, 0.82, 0.42, 0.13, "Cheetah geben)", true, fensterBG)
    15. guiSetFont(cheetahBT, "default-bold-small")
    16. guiSetProperty(cheetahBT, "NormalTextColour", "C8FFFFFF")
    17. kickBT = guiCreateButton(0.54, 1.10, 0.42, 0.13, "Kick Player)", true, fensterBG)
    18. guiSetFont(cheetahBT, "default-bold-small")
    19. guiSetProperty(cheetahBT, "NormalTextColour", "C8FFFFFF")
    20. end
    21. )
    22. Fenster = {
    23. }
    24. function oeffne_fenster ()
    25. if (guiGetVisible(Fenster) == false) then
    26. guiSetVisible(Fenster, true)
    27. showCursor(true)
    28. end
    29. addCommandHandler ( "hausaufgabe",oeffne_fenster )
    30. addEventHandler( "onClientResourceStart", getRootElement( ),
    31. function ( )
    32. guiSetVisible(fensterBG, false)
    33. end
    34. );
    35. end
    Alles anzeigen
    Als Fehlermeldung im Debugscript bekomme ich:
    WARNING:hausaufgabe/f3_fenster_client.lua:7:Bad argument @ `guiSetFont`[Expected gui-element at argument 1, got nil]


    Und nu seit nicht so Streng ist mein erster Scriptversuch und ich lerne noch :D

    Danke :)
  • Ich will jetzt kein Spielverderber sein, aber solltest du sowas nicht deinen Lehrer fragen? Kommt jetzt drauf an, was er davon hält (vllt. findet er das auch okay, wer weiß). Da du jetzt aber schonmal im Forum bist, möchte ich dir wenigstens einen Tipp geben: onClientResourceStart (Funktionsweise steht ja im wiki)
  • Stimmt, Ich kann ihn heute abend wenn er online ist fragen. Aber kennst Du das mit dem Sturkopf das man den Fehler alleine finden will ? Ich kann ja nicht erst sagen so schwer wirds schon nicht werden und dann gleich beim ersten Problem hinrennen und jammern das es nicht funktioniert ;)
    Also versuch ich die Lösung selber zu finden und wenn ich was nicht weiss geh ich dahin wo es jemand wissen könnte oder wo ich die Hilfe finde den Fehler zu lösen.

    Frauen sind halt Stur und ich besonders **lach**
    Deswegen hab ich mir auch vorgenommen das mein Fenster heute Abend so weit fertig ist das man es mit F4 schon mal aufrufen kann.
  • Kruemmel schrieb:

    Stimmt, Ich kann ihn heute abend wenn er online ist fragen. Aber kennst Du das mit dem Sturkopf das man den Fehler alleine finden will ? Ich kann ja nicht erst sagen so schwer wirds schon nicht werden und dann gleich beim ersten Problem hinrennen und jammern das es nicht funktioniert ;)
    Also versuch ich die Lösung selber zu finden und wenn ich was nicht weiss geh ich dahin wo es jemand wissen könnte oder wo ich die Hilfe finde den Fehler zu lösen.

    Frauen sind halt Stur und ich besonders **lach**
    Deswegen hab ich mir auch vorgenommen das mein Fenster heute Abend so weit fertig ist das man es mit F4 schon mal aufrufen kann.
    Haha als ich C# gelernt habe, war das besonders. :D
  • Hallo Kruemmel,

    keine Ahnung ob du schon eine Lösung deines Problemes hast.

    Ein Problem ist ein verschobenes "end" Zeile 36. Das "end" sollte eigentlich zwischen Zeile 28-29 stehen. Du hast ja einen CommandHandler der deinen "/hausaufgabe"-Command erzeugt. Da dir dein "end" verrutscht ist stand der CommandHandler in der Funktion "oeffne_fenster". Diese Funktion wurde natürlich nie aufgerufen und so auch nie der CommandHandler.
    Ein zweites Problem sind die Warnings. Lass dir mal einen Kurs geben im lesen und verstehen von Warning/Error-Meldungen.
    Dein angegebener Warning bedeutet soviel wie: "in Zeile 7 übergibst du ein falsches Argument in der Funktion 'guiSetFont'. Diese Funktion erwartet als 1. Argument ein Gui-Element du übergibst hier aber nil.". Jetzt wo du diesen Warning verstehst kannst du ihn auch beheben. Du schaust dir dann die betroffene Zeile 7 an: "guiSetFont(labedabel, "default-bold-small")" als erstes erkennt man hier sofort das die Variable 'labedabel' nicht existiert. Sollte vermutlich 'infotext' drin stehen.

    Was sagt die Glaskugel zu deiner Zukunft?
    Nach der Eingabe des Commands '/hausaufgabe' wirst du feststellen das deine GUI immer noch nicht kommt. Du wirst nachgucken und wirst feststellen das da zwei Warnings erzeugt werden.

    Kurz und knapp: 'guiGetVisible(Fenster)' (Zeile 25 u. 26) das gleiche wie oben deine Variable 'Fenster' existiert nicht. Vermutlich meinst du 'fensterBG'.

    Behebst du diese Probleme wird dein Fenster angezeigt (aber ernst nach der Eingabe deines Commands '/hausaufgabe').

    Für deine F4-Tasten Funktion ist hier die passende Funktion wiki.multitheftauto.com/wiki/BindKey .

    Fazit:
    - Lass dir einen Kurs geben für das Lesen und Verstehen von Warnings/Error-Meldungen.
    - Achte mehr auf deine Variablenbezeichnung. Gibt es in Lua keine Variable mit dem Name dann ist sie nil.
    - Wenn dein Lehrer dann noch die Nerven dazu hat, lass dir noch beibringen wie du Code analysierst, dass wenn du einen Fehler hast das du den einfach findest und beheben kannst.

    Mit freundlichen Grüßen,
    misterdick
  • wiki.multitheftauto.com/wiki/BindKey
    soweit war ich auch schon , und habe es mir auch schon angeschaut, in der Theorie recht simpel in der Praxis muss ich das erst mal so hinbekommen das es auch funktioniert. Und da kommt die Chaosqueen wieder zum Einsatz... Wenn ich etwas perfekt beherrsche sind es Errormeldungen zu erstellen **gg** Nee jetzt mal Ernsthaft..ich versuch mich da durchzubeissen, mache noch einiges an Mist und Theorie und Praxis sind 2 Dinge die ich noch zusammenbringen muss ... weil so wie es theoretisch funktionieren müsste tut es praktisch bei mir nicht immer. Aber das lern ich noch hoffe ich :D

    //Beiträge zusammengefügt von MasterM
    @misterdick
    Danke das Hilft mir auf jeden Fall weiter und dank deiner Erklärung habe ich den Fehler nun auch gefunden.


    Und nu gehts weiter :)

    Beitrag von Kruemmel ()

    Dieser Beitrag wurde von MasterM aus folgendem Grund gelöscht: Doppelpost (wurde zusammengefügt) ().
  • Servus, ein kleiner Tipp von mir: Erstell das Fenster, wenn erst, wenn du es benötigst und lösch es, nachdem du es nichtmehr brauchst. Spieler mit einem Holz PC könnten ansonsten bei zuvielen Elementen anfangen zu laggen :)

    Noch ein Tipp: Wenn du abfragen möchtest, ob etwas nicht existiert (false bzw nil), kannst du "not" verwenden, Beispiel:

    LUA-Quellcode

    1. if(not guiGetVisible(...)) then
    2. -- ...
    3. end

    Mit freundlichem Gruß
    LuXorioN die Schildkröte
  • du kannst bindKey("F3", "down", Namederfunction)

    Damit sich das Fenster auch schließt würde ich hinzufügen:

    function Open_CloseGUI()

    If guiGetVisible(GUIEditor.window) == true then

    guiSetVisible(GUIEditor.window, false)

    else

    guiSetVisible(GUIEditor.window, true)

    end
    end

    bindKey("F3", "down", Open_CloseGUI)

    So sollte es klappen

    Mfg Black

    -Handy
    [Blockierte Grafik: https://www2.pic-upload.de/img/33116536/NextLife.png]
    Genaue Script zählung
    Lines Without Empty Lines And Comment Lines: 14946
    Lines Without Empty Lines: 13833
    Lines With Empty Lines: 18775
    Files: 149
    Functions: 2345

    Pre-Alpha
  • LuXorioN schrieb:

    if(not guiGetVisible(...)) then
    -- ...
    end
    Das würde ich mit einer Variable machen.

    local visible = false

    weil es passieren kann das das Element zu der zeit wo du es aufrufen willst noch nicht erstellt wurde und somit fehler auftauchen eher gesagt warnungen das ein Element Expectet ist.
  • Du hast einfach nur nen commandHandler gesetzt aber noch keinen keyBind

    LUA-Quellcode

    1. addCommandHandler ( "hausaufgabe",oeffne_fenster )
    2. bindKey("F4", "down",oeffne_fenster)
    Danach kannst du es mit F4 und dem /hausaufgabe Befehl öffnen.