mouse_check_button klickt mehrmals?!

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

  • mouse_check_button klickt mehrmals?!

    GML-Quellcode

    1. if position_meeting(mouse_x,mouse_y,obj_button_wasser) && mouse_check_button_pressed(mb_left)
    2. {
    3. if WasserStufe = 0
    4. {
    5. if Holz >= 0 && Stein >= 1
    6. {
    7. WasserStufe += 1
    8. Holz -= 1
    9. Stein -= 2
    10. }
    11. }
    12. }
    13. if position_meeting(mouse_x,mouse_y,obj_button_wasser) && mouse_check_button_pressed(mb_left)
    14. {
    15. if WasserStufe = 1
    16. {
    17. if Holz >= 1 && Stein >= 2
    18. {
    19. WasserStufe += 1
    20. Holz -= 2
    21. Stein -= 3
    22. }
    23. }
    24. }
    25. if position_meeting(mouse_x,mouse_y,obj_button_wasser) && mouse_check_button_pressed(mb_left)
    26. {
    27. if WasserStufe = 2
    28. {
    29. if Holz >= 2 && Stein >= 3
    30. {
    31. WasserStufe += 1
    32. Holz -= 3
    33. Stein -= 4
    34. }
    35. }
    36. }
    37. if position_meeting(mouse_x,mouse_y,obj_button_wasser) && mouse_check_button_pressed(mb_left)
    38. {
    39. if WasserStufe = 3
    40. {
    41. if Holz >= 3 && Stein >= 4
    42. {
    43. WasserStufe += 1
    44. Holz -= 4
    45. Stein -= 5
    46. }
    47. }
    48. }
    Alles anzeigen

    ist natürlich wieder mal so eine :troll: :rage: :rage2: frage aber naja...

    wie ihr seht wird beim klicken alles gleichzeitig abgefragt,
    das möchte ich unterbinden.

    es soll lediglich pro klick nur eine Stufe aufgewertet werden :/
    würde das ganze mit nem alarm versehen aber das müsste doch einfacher gehen oder?


    danke im voraus
    MfG ZaMi_

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ZaMi_ ()

  • Das Problem liegt daran, dass (falls) Wasserstufe am Anfang 0 ist, wird es bei der ersten Abfrage auf 1 gesetzt. In der nächsten if-Box wird Abgefragt, ob Wasserstufe auf 1 ist, also wird sie auf 2 gesetzt u.s.w.

    Einfache Lösung wäre einfach hinter jeder if abfrage ein else hinzupacken.
    Optimierter wäre diese Lösung:

    Spoiler anzeigen

    GML-Quellcode

    1. if position_meeting(mouse_x,mouse_y,obj_button_wasser) && mouse_check_button_pressed(mb_left)
    2. {
    3. switch WasserStufe
    4. {
    5. case 0:
    6. if Holz >= 0 && Stein >= 1
    7. {
    8. WasserStufe += 1
    9. Holz -= 1
    10. Stein -= 2
    11. }
    12. break;
    13. case 1:
    14. if Holz >= 1 && Stein >= 2
    15. {
    16. WasserStufe += 1
    17. Holz -= 2
    18. Stein -= 3
    19. }
    20. break;
    21. case 2:
    22. if Holz >= 2 && Stein >= 3
    23. {
    24. WasserStufe += 1
    25. Holz -= 3
    26. Stein -= 4
    27. }
    28. case 3:
    29. if Holz >= 3 && Stein >= 4
    30. {
    31. WasserStufe += 1
    32. Holz -= 4
    33. Stein -= 5
    34. }
    35. break;
    36. }
    37. }
    Alles anzeigen

    (Ich bin mir gerade nicht sicher, ob bei einem Switch die Variable nach jedem Case erneut getestet wird, welches zu dem gleichen Problem führen würde :D )

    Allerdings habe ich einen kleinen Rythmus in deinem Code entdeckt und da kam mir eine Idee. Das hier ist viel Optimierter und sollte 100%ig funktionieren ;)

    GML-Quellcode

    1. if position_meeting(mouse_x,mouse_y,obj_button_wasser) && mouse_check_button_pressed(mb_left)
    2. {
    3. if Holz >= WasserStufe && Stein >= WasserStufe+1 && WasserStufe >= 0 && WasserStufe <=3
    4. {
    5. WasserStufe += 1
    6. Holz -= WasserStufe+1
    7. Stein -= WasserStufe+2
    8. }
    9. }

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von 3D2Y Bandicoot ()

  • ich mag dich :thumbsup: :troll:

    PS: Danke ! *hust* :)

    EDIT:


    GML-Quellcode

    1. if position_meeting(mouse_x,mouse_y,obj_button_wasser) && mouse_check_button_pressed(mb_left)
    2. {
    3. if Holz >= WasserStufe && Stein >= WasserStufe+1 && WasserStufe >= 0 && WasserStufe <=3
    4. {
    5. WasserStufe += 1
    6. Holz -= WasserStufe+1
    7. Stein -= WasserStufe+2
    8. }
    9. }


    sieht ausserdem übersichtlicher aus :thumbsup:
    der "rythmus" wird noch verändert aber ich kanns ja umrechnen.
    nochmals danke für die schnelle antwort :)

    >_______________________________________________________________________________
    if Holz >= WasserStufe && Stein >= WasserStufe+1 && WasserStufe >= 0 && WasserStufe <=3
    >_______________________________________________________________________________
    nebenbei bemerkt!
    diese schreibweise gab mir ein Level-Up :troll:

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von ZaMi_ ()

  • da die rohstoffe in den negativen bereich abgesackt sind musste ich ein wenig basteln, hat aber gut geklappt und auch nur wegen dem Level-up! :troll:

    die veränderte stelle im direkten vergleich:

    GML-Quellcode

    1. if Holz >= WasserStufe && Holz >= Wasserverbrauch+1 && Stein >= WasserStufe+1 && Stein >= WasserStufe+2 && WasserStufe >= 0 && WasserStufe <=3
    2. if Holz >= WasserStufe && Stein >= WasserStufe+1 && WasserStufe >= 0 && WasserStufe <=3

    im ganzen:

    GML-Quellcode

    1. if position_meeting(mouse_x,mouse_y,obj_button_wasser) && mouse_check_button_pressed(mb_left)
    2. {
    3. if Holz >= WasserStufe && Holz >= Wasserverbrauch+1 && Stein >= WasserStufe+1 && Stein >= WasserStufe+2 && WasserStufe >= 0 && WasserStufe <=3
    4. {
    5. WasserStufe += 1
    6. Holz -= WasserStufe+1
    7. Stein -= WasserStufe+2
    8. }
    9. }




    nebenbei, frage beantwortet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ZaMi_ ()

  • Klassischer jugendlich-philosophischer Widerstand. XD

    Natürlich, stimmt es, was ist schon dabei, bei alten Threads was drunterzuschreiben? Aber:
    Meistens ist das Thema nicht mehr relevant. Selten ist noch was gutes dazu beizutragen (vorallem wenn es ein einziger Satz ist) und es verzieht die Ergebnisse der Suchfunktion.
    Kommt also ein anderer User und durchsucht das Forum nach mouse_pressed problem, kommt er hierher und findet diese Antwort.

    Lauritz Offe schrieb:

    Du musst mouse_..._presst
    Lg Lauritz


    das hilft ihm aber nicht viel.

    Darum ist es wichtig, solche Foren "sauber" zu halten und zu alten abgeschlossenen (oder auch nicht) Themen nichts weiter hinzuzufügen. Du kannst dem entsprechendem User auch eine private Nachricht schreiben ob er nach 2 Jahren noch an einer Lösung interessiert sei. Oder dir ansehen, wann er denn das letzte Mal überhaupt aktiv war.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Das ist mir bewusst, ich hoffe dir jetzt auch. Einen Hammer bitte.

    Das jugendlich bezog sich darauf, dass du neu hier im Forum bist, nicht auf dein tatsächliches Alter. Over and Out um den Thread hier nicht noch weiter zu derangieren.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)