Event User: Nehme die Zahl plus 1

  • GM 8
  • Event User: Nehme die Zahl plus 1

    Hallo, Ich hänge gerade an einer ziemlich "einfachen" Sache rum - Aber trotzdem will es nicht klappen.

    Ich habe mein Objekt mit:

    [Create Event]

    GML-Quellcode

    1. globalvar A;
    2. A = 0;


    [Step Event]

    GML-Quellcode

    1. pluseins(A);
    2. show_message(A);


    Der "pluseins" User Event beinhaltet folgendes:

    GML-Quellcode

    1. argument0 += 1;


    Trotzdem wird A nicht um 1 erhöht, aber wie so denn nicht? :(
  • Liegt daran dass im GM verweise nicht existieren.
    argument0 verweist nicht auf A, denn argument0 ist im Grunde selbst eine neue Zahl die nichts mehr mit A zu tun hat.
    Du könntest die variable_local/global_-Funktionen benutzten,
    dann müsstest du jedoch die Bezeichnung der Variable als string angeben.

    Dein Skript könnte dann ungefähr so aussehen:

    GML-Quellcode

    1. //pluseins(string var)
    2. if (variable_local_exists(argument0)) // Funktioniert nur mit lokalen variablen, geh ich jedenfalls mal so von aus.
    3. variable_local_set(argument0, variable_local_get(argument0) + 1);

    Und wird dann so ausgeführt:

    GML-Quellcode

    1. pluseins("A");

    Nur ist die Frage, wozu brauchst du sowas?
    :saint:

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

  • Da das ja eine Funktion ist kann man doch auch:

    return(argument0 + 1)

    schreiben oder ?


    Edit: Ja ernsthaft. wieso?
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D

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

  • *vermut* Tice will darauf hinaus, dass es relativ sinnfrei wäre, extra eine Funktion zu schreiben, die ein argument + 1 zurückgibt. Dafür gibt's nämlich Rechenoperatoren, die man direkt an die entsprechenden Stellen schreiben kann. Ich mein, welche dieser beiden Optionen ist auf den ersten Blick wohl die sinnvollere?

    GML-Quellcode

    1. for(i=0;i<250;i+=1){
    2. // Zeugs
    3. }

    oder

    GML-Quellcode

    1. for(i=0;i<250;i=add_one(i)){
    2. //Zeugs
    3. }
    ?
  • Hi,

    nachdem ich hier reinschaute und das mit den user events gelesen habe, habe ich es versucht nachzustellen.

    ich kann dir nicht weiterhelfen, tut mir leid - aber du mir, bitte:

    was ist ein user event - und scheinbar kann man ihm eigene namen geben?

    ich bin über die suchfunktion immer und immer wieder nur auf die other->events user defined->user0 bis 15 gestoßen, so werden sie jedenfalls im event-bereich der objekte angezeigt...
    als glm-code dann immer nur ev_user0 bis 15.
    und weiter habe ich schnell finden können, wie die gestartet werden, gerne auch selbst dann die variable A um 1 erhöhen und in show_massage anzeigen lassen - klappt sofort.

    aber...

    Rayo schrieb:

    Der "pluseins" User Event beinhaltet folgendes:

    GML
    1
    argument0 += 1;
    ...wie geht es, ein user event "pluseins" zu bennen und die variable A im argument0 zu übergeben?

    ich hoffe, mich nicht zu disqualifizieren, aber es lässt mir keine ruhe - entschuldigt, wenn offtopic. xD

    danke,OC
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
    (Albert Einstein)
  • @OraCom Glaube Rayo hat dort das User-event mit einem SCRIPT verwechselt. Dieses kannst du benennen und wie eine normale Funktion mit Argumenten aufrufen!
    Man könnte theoretisch tatsächlich auch user-events Argumente übergeben da "argument0" usw. im grunde normale variablen sind..

    Also wenn du schreibst

    GML-Quellcode

    1. argument3 = 20;
    2. event_user(0);
    Dann hat die Variable argument3 im user-event-0 weiterhin den Wert 20.
    Das ist aber eine recht unnötige Konstruktion..

    Aber User-Events anhand eines Namens wie ein Skript aufrufen geht nicht. Dafür sind Skripte da.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)