String aufteilen und auswerten

  • String aufteilen und auswerten

    Wunderschönen guten Tag zusammen, hab folgendes Problem:
    Ich programmier zur Zeit ein Online-Spiel. Mehrere Werte möchte ich per mplay übertragen. Um nicht jeden Wert einzeln zu verschicken, verschicke ich alle Werte zusammengefasst in einem String. Das heißt, dass ich 3 Variablen (z.B. global.karte = 5 , global.last= 8 , global.current= hallo) so versende, dass das "5;8;hallo;" ankommt.
    Der empfänger teilt den String wieder in die einzelnen Bestandteile auf. Ein kleiner Ausschnitt sieht so aus:

    GML-Quellcode

    1. global.karte=real(string_copy(text,1,string_pos(";",text)-1))
    2. text=string_delete(text,1,string_pos(";",text))
    3. global.last=real(string_copy(text,1,string_pos(";",text)-1))
    4. text=string_delete(text,1,string_pos(";",text))
    5. global.current=real(string_copy(text,1,string_pos(";",text)-1))


    Meine frage ist nun, ob ich beim Aufrufen des Scriptes global.karte, global.last und global.current angeben kann.
    das sähe dann wie folgt aus:

    GML-Quellcode

    1. get_values(global.karte,global.last,global.current)

    GML-Quellcode

    1. for(i=0;i<3;i+=1)
    2. {
    3. argument[i]=real(string_copy(text,1,string_pos(";",text)-1))
    4. text=string_delete(text,1,string_pos(";",text))
    5. }

    Wesentlich kürzer nun, aber das geht ja nicht. Dann änder ich ja nur die Variable argument0 oder argument1 u.s.w. - nicht aber die Variablen global.karte, global.last und global.current.

    Ich hoffe, dass meine Frage halbwegs verständlich ist und hoffe um baldige Antwort/Lösung. Vielen Dank und noch einen schönen sonnigen Mittag ;)
  • Wenn alle diese Variablen global sind, kannst du deren Namen an das Script als string übergeben und mit variable_global_set() auswerten. Das sähe dann so aus:

    GML-Quellcode

    1. get_values("karte","last","current")


    und das Script:

    GML-Quellcode

    1. for(i=0;i<3;i+=1)
    2. {
    3. variable_global_set(argument[i], real(string_copy(text,1,string_pos(";",text)-1)))
    4. text=string_delete(text,1,string_pos(";",text))
    5. }
    “Computers are good at following instructions, but not at reading your mind.” (Donald Knuth)

    Ich schreibe mit Neo.
  • :) Danke danke. Joa mit local geht ja auch, hauptsache alle gleich. So gehts ;) Danke dir.

    EDIT: Also das Thema ist gelöst. Wie auch immer ich das jetzt anstellen kann, dass es auch als gelöst markiert ist... Gibts den Button nicht mehr? xD

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

  • Benutzer online 1

    1 Besucher