Finde meinen Fehler nicht :( Variablen anpassen und Laden

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

  • Finde meinen Fehler nicht :( Variablen anpassen und Laden

    Hey Leute!
    Ich arbeite gerade an meinem neuen Spiel. Ich habe einen Shop eingebaut, bei dem man sich 3 verschiedene Antriebe für sein Raumschiff kaufen kann. Ich möchte nun das der Speed immer dem bestem Antrieb entspricht. Dazu noch was:
    Der Speed wird mit dem scr_save/scr_load gespeichert/geladen und was man gekauft hat wird in scr_save_shop/scr_load_shop gespeichert/geladen.
    Das Create Event des Spielers sieht so aus:

    GML-Quellcode

    1. //can_shoot Variablen
    2. can_shoot1 = 0
    3. can_shoot2 = 0
    4. //Gespeicherte Variablen laden
    5. scr_load()
    6. scr_load_shop()
    7. //Bestes gekauftes Triebwerk
    8. if global.shop1_item3 == 1
    9. global.my_speed = 6
    10. else
    11. {
    12. if global.shop1_item2 == 1
    13. global.my_speed = 5
    14. else
    15. {
    16. if global.shop1_item1 == 1
    17. global.my_speed = 4
    18. else
    19. {
    20. global.my_speed = 3
    21. }
    22. }
    23. }
    Alles anzeigen

    Und hier ist das scr_load_shop

    GML-Quellcode

    1. //Datei Öffnen ID zurückgeben
    2. save2 = file_text_open_read("C:\Stone_Play\Asteroids\Data\save2.galaxy")
    3. //Datei auslesen
    4. global.shop1_item1 = file_text_read_real(save2)
    5. file_text_readln(save2)
    6. global.shop1_item2 = file_text_read_real(save2)
    7. file_text_readln(save2)
    8. global.shop1_item3 = file_text_read_real(save2)
    9. file_text_readln(save2)
    10. //Datei schließen
    11. file_text_close(save2)
    Alles anzeigen


    Die Variablen des Shops sind entweder 0 für nicht gekauft oder 1 für gekauft.
    Hoffe jemand findet meinen Fehler.
    Glg Stone
  • Die Variablen werden denke ich richtig gespeichert, das habe ich schon mal Überprüft. Aber trotzdem hier die Scripts:
    Das ist das scr_save_shop:

    GML-Quellcode

    1. //Datei Öffnen ID zurückgeben
    2. save2 = file_text_open_write("C:\Stone_Play\Asteroids\Data\save2.galaxy")
    3. //Datei mit Werten beschreiben
    4. file_text_write_real(save2,global.shop1_item1)
    5. file_text_writeln(save2)
    6. file_text_write_real(save2,global.shop1_item2)
    7. file_text_writeln(save2)
    8. file_text_write_real(save2,global.shop1_item3)
    9. file_text_writeln(save2)
    10. file_text_write_real(save2,global.shop2_item1)
    11. file_text_writeln(save2)
    12. file_text_write_real(save2,global.shop2_item2)
    13. file_text_writeln(save2)
    14. //Datei schließen
    15. file_text_close(save2)​
    Alles anzeigen

    Und das das normale scr_save:

    GML-Quellcode

    1. //Dateien Öffnen ID's zurückgeben
    2. save = file_text_open_write("C:\Stone_Play\Asteroids\Data\save.galaxy")
    3. save1 = file_text_open_write("C:\Stone_Play\Asteroids\Data\save1.galaxy")
    4. //Dateien mit Werten beschreiben
    5. file_text_write_real(save,global.my_speed)
    6. file_text_writeln(save)
    7. file_text_write_real(save,global.hitpoints)
    8. file_text_writeln(save)
    9. file_text_write_real(save,global.energy_dummy)
    10. file_text_writeln(save)
    11. file_text_write_real(save,global.energy)
    12. file_text_writeln(save)
    13. file_text_write_real(save,global.energy_limit)
    14. //-------------------------------------
    15. file_text_write_real(save1,global.credits)
    16. //Dateien schließen
    17. file_text_close(save)
    18. file_text_close(save1)​
    Alles anzeigen
  • Vielleicht kann es auch sein, dass irgendwas beim kaufen schief läuft.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Das ist es ja. Es läuft nichts falsch. Diese Abfrage soll dafür sorgen das der bestmögliche Antrieb gewählt wird, wenn man einen schlechteren nach einem besseren gekauft hat. Das heißt ich kaufe erst Antrieb 3 und dann 2. Dann ist der Speed von Antrieb 2 obwohl Antrieb 3 besser und in Besitz ist. Die Abfrage ist zwar nur nötig sollte jemand einen schlechteren Antrieb kaufen obwohl er einen besseren hat, aber ich hätte sie trotzdem gerne.
  • Vielleicht wäre es praktischer wenn du nur eine Variable benutzt und diese dann je nach bestem Item auf 1,2,3, x setzt.
    z.b. 1 das beste. Und dann
    if == 1 speed = 6 ,
    if == 2 speed = 5
    usw
    Aktuelles Projekt: Aufbau - Strategiespiel.
    Aktueller Entwicklungsschritt: Planung | Grundengine entwickeln.

    Wichtig ist nicht, besser zu sein als alle anderen.
    Wichtig ist, besser zu sein als du gestern warst.





  • ​Also soll sozusagen immer überprüft werden, welchen Antrieb man hat und dann der nächstbessere automatischgekauft werden oder wie?

    Nein. Aber ich habe es auch dumm erklärt. Es gibt im Spiel einen Shop für die Triebwerke. Man kann 3 verschiedene Triebwerke kaufen. A ist das schlechteste, dann kommt B, dann C. Beim Kauf wird die Variable my_speed (Nicht der normale Speed) gesetzt, außerdem wird die jeweilige Variable 1. Wenn man erst Triebwerk A kauft, dann B und dann C so wie es normal ist, funktioniert alles Top. Aber wenn jemand zu viel Geld über hat oder einfach alles Kaufen will und zum beispiel Triebwerk B und C hat, dann kauft er A und der my_speed wird auf A gesetzt. Mit dieser Abfrage will ich die Variable so anpassen das der my_speed aus dem save nochmal korrigiert wird falls nötig.
    ​Vielleicht wäre es praktischer wenn du nur eine Variable benutzt und diese dann je nach bestem Item auf 1,2,3, x setzt.z.b. 1 das beste. Und dann if == 1 speed = 6 ,if == 2 speed = 5 usw

    Das würde gehen aber dann brauche ich immer noch eine Abfrage die aus den gekauften Triebwerken das beste ermittelt, so wie oben.
  • Dann setz es doch vielleicht so um, dass die Variable aufsteigend immer besser ist.
    Also z.B.
    1 = schlecht
    2 = mittel
    3 = gut
    Und wenn etwas neues gekauft wurde z.B. mit Eigenschaft gut, dann kannst du überprüfen ob die Variable < 3 ist und wenn ja wird sie auf 3 gesetzt. Wenn sie 3 oder größer ist, dann weißt du, das du bereits etwas gleichgutes oder besseres hast.

    Wäre das vielleicht eine Option?
    Aktuelles Projekt: Aufbau - Strategiespiel.
    Aktueller Entwicklungsschritt: Planung | Grundengine entwickeln.

    Wichtig ist nicht, besser zu sein als alle anderen.
    Wichtig ist, besser zu sein als du gestern warst.





  • Das ist eine Überlegung wert. Ich werde diese Methode vielleicht etwas Umbauen und dann verwenden.
    Danke für alle Antworten!!! :thumbsup: :thumbsup:
    //EDIT
    Ich war SOOOOO Dumm!!! :headtouch: :headtouch: :rage: :rage2:
    Ich hätte euch eigentlich gar nicht Nerven müssen!! Sorry :whistling: !!!
    Die Abfrage funktioniert einwandfrei. Ich habe bei meinen Tests immer erst den besten und dann den zweitbesten Antrieb gekauft. Der Unterschied zwischen den beiden ist aber nur eine Einheit, also habe ich es Ingame nicht direkt gemerkt. Ich habe dann im save geguckt und da war die Variable logischerweise wie der zweitbeste Antrieb.
    Als ich jetzt etwas anderes getestet habe, habe ich den Besten und dann den schlechtesten gekauft und habe Ingame auf einmal gemerkt "Was? Der ist ja schnell!" Und dann hatte ich den Geistesblitz, nach dem Create Event des Spielers wird nicht gespeichert. :headtouch: Logisch das die Variable im save so bleibt! :headtouch:
    Ich habe mir schon gedacht so dumm kann ich doch gar nicht gewesen sein, das nicht zu merken xD. Ich habe er Überprüft indem ich mir global.my_speed anzeigen lassen habe und es war der Speed des besten Antriebs. Also zum Abschluss nochmal: :headtouch: :headtouch: :headtouch: :headtouch: :headtouch: :headtouch:
    Und VIELEN VIELEN VIELEN DANK für eure Hilfe, trotz meiner Dummheit. :thumbsup: :thumbsup: :thumbup:

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