Mehrfach Variablen mit | schreiben und entschlüsseln

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

  • Mehrfach Variablen mit | schreiben und entschlüsseln

    Ich habe schon oft von Variablen gehört( z.B. bei dem Tut Multiplayer-performance-tipps) die sich einfach so schrieben

    GML-Quellcode

    1. variable = 1|2|3
    entweder man kann die nur bei gewissen Funktionen benutzen(was ich glaube) oder kann man damit auch im normalen Spiel Variablen sparen? Wie geht das denn jetzt genau? Wie greift man im Spiel darauf zu, das heißt, wie erkennt der gm welche Zahl hinter welchem | steht? Oder geht das einfach mit Funktionen wie string_position(oder so ähnlich)?

    Danke im Vorraus.

  • Game Maker kann das nicht von sich aus. Du musst selbst eine Routine schreiben die aus mehreren Variablen eine sog. "kondensierte" Variable macht und umgekehrt.

    Wenns darum geht nur True/False Werte zusammenzufassen kannst du im GML Tutorial Kapitel III Abschnitt 5 nach den Flags schauen, das wird sehr anschaulich erklärt.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Danke, ist zwar nicht was ich erhofft hatte, aber trotzdem gut. Für gewisse Fälle kann ich ja auch noch mein Hintermkommaentschlüsselungsystem nehmen(variable - floor(variable)), das kann man zwar nicht wirklich erhöhen, aber ist ähnlich wie das mit den Bits und funktioniert auch bei längeren Variablen.

  • Edit: Hab mal was gebastelt, 2 Skripte die Variablen kondensieren und wieder zerlegen.
    Schau dir das Beispiel an, die Funktionsweise ist sehr einfach zu verstehen.
    Dateien
    • serialize.zip

      (1,9 kB, 118 mal heruntergeladen, zuletzt: )
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • hier was von mir, das abe ich eigentlich parallel zur übersetzung gemacht, ist aber irgentwie untergegangen, und ich habs dan vergessen...

    GML-Quellcode

    1. //script mit namen: scr_pdata_write
    2. xx = argument0;
    3. yy = argument1;
    4. hspd = argument2;
    5. vspd = argument3;
    6. dir = argument4;
    7. //erstelle einen string ( xx|yy|hspd|vspd|dir| )
    8. return string(xx) +"|"+ string(yy) +"|"+ string(hspd) +"|"+ string(vspd) +"|"+ string(dir) +"|";
    9. // script mit namen: scr_pdata_read
    10. data = argument0;
    11. // xx wert herraussuchen
    12. xx = string_copy(data,0,string_pos("|",data)-1);
    13. // xx wert aus dem string streichen
    14. data = string_copy(data,string_pos("|",data)+1,string_length(data));
    15. // yy wert herraussuchen
    16. yy = string_copy(data,0,string_pos("|",data)-1);
    17. // yy wert aus dem string entfernen
    18. data = string_copy(data,string_pos("|",data)+1,string_length(data));
    19. // und so weiter und sofort.
    20. hspd = string_copy(data,0,string_pos("|",data)-1);
    21. data = string_copy(data,string_pos("|",data)+1,string_length(data));
    22. vspd = string_copy(data,0,string_pos("|",data)-1);
    23. data = string_copy(data,string_pos("|",data)+1,string_length(data));
    24. dir = string_copy(data,0,string_pos("|",data)-1);
    25. // und so kan man es schreiben und auslesen:
    26. //schreibt x,y,4,5,25 als zusamenhängenden string
    27. datapackage = scr_pdata_write(x,y,4,5,25);
    28. scr_pdata_read(datapackage);
    Alles anzeigen
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • Benutzer online 1

    1 Besucher