Script soll eigene Variable erhöhen

  • Script soll eigene Variable erhöhen

    Hallo,

    ich stoße immer wieder auf das Problem das ich in einem Script eine Variable verändern möchte bis sie einen bestimmten Wert erreicht aber dieser immer wieder zurück gesetzt wird. Wie in meinem Beispiel:

    GML-Quellcode

    1. var a = 0
    2. a += 1
    3. if a = 5
    4. {
    5. // ausführen
    6. }
    7. if a = 10
    8. {
    9. // ausführen
    10. a = 0
    11. }
    Alles anzeigen


    Ich möchte gerne dass, das Script a einmal bis 5 zählt und etwas auslöst und einmal bis 10 zählt und etwas auslöst aber da ich die Variable am Anfang erst setzen muss, da er sonst schimpft das es a nicht gibt um +1 zu rechnen, wechselt a nur zwischen 0 und 1.

    Ich habe mir zuvor immer geholfen das ich a = 0 im create vom Script ausführendem Objekt geschrieben habe aber ich möchte gerne dass, das was zum Script gehört auch im Script steht.

    Gibt es eine Möglichkeit dies zu lösen? :)



    Vielen Dank für Hilfe
  • Ja das geht so leider nicht. Dein script wird in einem step aufgerufen und geht dann auch nur einmal durch den code durch der im script steht.

    Die Variable a muss also an irgendwas außerhalb des scripts gekoppelt oder eine globale variable sein.

    zB:

    GML-Quellcode

    1. ///CREATE EVENT
    2. myA = 0;
    3. ///STEP EVENT
    4. if(keyboard_check_pressed(ord("a")){
    5. myA = scriptA(myA);
    6. }
    7. ///SCRIPT A
    8. var a = argument0;
    9. a += 1;
    10. if(a == 5){
    11. //do smth
    12. }
    13. return a;
    Alles anzeigen


    Das script nimmt als argument das myA von deinem Object und spuckt im return auch den neuen Wert von a wieder aus, den dann das Object in myA speichert.

    So addierst du nur hin und wieder 1 zu a und kannst auch außerhalb vom script noch auf a vom Object aus zugreifen.


    EDIT:
    einfacher ist es aber a global zu machen das geht auf zwei Wegen:

    GML-Quellcode

    1. global.a = 0;
    2. //oder
    3. globalvar a = 0;

    und dein script greift dann auf die globale variable a zu und braucht kein "var a = 0" mehr.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • @Aku_Ryou ....... verdammt, bist Du schnell :)

    Hätte auch eine globale Variable vorgeschlagen, Du kannst sie ja an Hand des Namens, dem Script
    zuordnen, also so etwas wie:

    global.scr_Zeitfresser_a

    Dann weißt Du immer, für welches Script, Du sie angelegt hast.
    Und verwende für globale Variablen in GM2xx immer diese Version, denn "globalvar" ist die alte
    Version und könnte irgendwann nicht mehr in GM2xx enthalten sein.

    Miradur
  • Benutzer online 2

    2 Besucher