Bleibende Upgrades

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

  • Bleibende Upgrades

    Hallo Leute,

    ich bin ein gm Anfänger kenne jedoch das grundlegende und habe auch schon ein paar kleine Spiele ohne großartige Features programmiert.
    Als mein nächstes Projekt wollte ich eine Art "Cookie clicker" programmieren.
    Jetzt habe ich jedoch das Problem, dass ich nicht weiß wie ich bleibende Änderungen einbauen soll.
    Z.B. Wenn ein Upgrade gekauft wurde soll der Spieler permanent pro klick zwei Coins anstatt einen bekommen.

    Es tut mir leid falls es zu diesem Thema schon Antworten gibt aber zu meinem Fall habe ich nichts gefunden was mir weiter geholfen hat.
    Hoffe ihr könnt mir bei meinem Problem helfen.

    Danke!
  • Du musst die nur eine Variable zurechtlegen, zB clickpower = 1

    GML-Quellcode

    1. if mouse_check_button_released(mb_left)
    2. {
    3. cookies += clickpower;
    4. }


    wenn der Spieler ein Upgrade kauft das die cookies pro klick erhöht -> clickpower += 1; , dann wird die Klickpower linear von 1 bis unendlich pro upgrade kauft immer um eins erhöht.
    wenn es nicht linear sein soll, dann musst du dir eine "Formel" überlegen, das es zB immer um 25% des werts erhöht wird -> clickpower += clickpower/4

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Ich nehme mal an da es sich hier um ein Cookie-Kicker Spiel handeln soll willst du das der Multiplikator oder was auch immer auch nach beenden und wiederöffnen des Spiels erhalten bleiben soll.
    Falls dies so ist solltest du dich in der GM-Hilfe einfach kurz zu INI-Datein schlaulesen.
    So kannst du deine Variablen in einer INI-Datei speichern, und beim offenen des Spiels auslesen.
  • Also zur ersten Antwort von Aku_Ryou: ich habe mir ein "steuer" objekt erstellt welches ich unsichtbar in den Raum setze und habe in das Create Event die Clickpower variable festgelegt aber es funktioniert nicht.
    Zur Antwort von Balls of Steel: Ich möchte dass sowohl die Coins als auch die gekauften Upgrades erhalten bleiben. Doch das löse ich mit einer Speicher Datei.

    Ok das Problem wäre nun gelöst doch jetzt habe ich das Problem, dass ich egal wohin ich klicke ein Coin dazu bekomme.
    Wie kann ich dass jetzt lösen? Habe schon versucht es durch "if" Abfragen und Kollisionsmasken zu lösen aber es funktioniert nicht.

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

  • Also clickpower kann nur in dem Objekt verwendet werden welches die Variable erstellt hat. Um von eniem anderen Objekt aus zuzugreifen, musst du entweder:
    global.clickpower = 1 im Steuer object erstellen, dann ist die Variable global und kann von überall aus verändert werden. Du musst halt imer global. davor stehen haben.
    oder
    du änderst die Variable clickpower mit einer Referenz; obj_steuer.clickpower, das bedeutet ändere die Variable namens clickpower im object, obj_steuer.

    Damit nur das cookie geklickt wird musst du abfragen wo sich die Maus gerade befindent:

    GML-Quellcode

    1. if mouse_check_button_released(mb_left) && point_in_rectangle(mouse_x,mouse_y,obj_cookie.x-128,obj_cookie.y-128,obj_cookie.x+128,obj_cookie.y+128)
    2. {
    3. global.cookies += global.clickpower;
    4. }


    Es kommt halt immer ganz darauf an von welchem Objekt aus du welche Variablen aufrufst und änderst.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Ja geibts nur in Studio die Funktion. Mach doch einfach if point_distance(obj_cookie.x,obj_cookie.y,mouse_x,mouse_y) < 50) oder mach unter mouse click event nicht global mouse pressed sondern nur mouse pressed, das benutzt die Kollisionsmaske des Objektes dann musst du nur precise oder ellipse anmachen und dein cookie objekt in die mitte platzieren
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel: