Variable aus variablen bilden.

  • GM 8

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

  • Variable aus variablen bilden.

    Hallo ich noch mal hab fast ein ähnliche problem wie bei den sprite zuvor.
    ich möchte ein program text durch eine variable ersetzten.
    Ich habe eine Variable die ich überprüfen möchte in einer script. davon habe ich aber 25. da ich das scipt jetzt nicht kopieren möchte,
    will ich die zu überprüfende Variabel an das Script (mit argument) weiter leiten. damit ich das selbe script immer und imer wieder nutzten kann.

    Ein beispiel.
    ich habe 3 fächer die überprüft werden sollen ob sie lehr sind.

    Im script frage ich nun ist Fach_01 leer.

    ich möchte nun das Fach_01 durch einen text erstzt wird, der in einer variable sich vorhere bildet

    var=Fach_0+string(argument0)
    so das im enteffekt wieder Fach_01 raus kommt. ich bin schon die ganze seit am rum testen mit var=excute_string("objekt.Fach_0"+string(argument0)") aber das geht alles nicht so richtig. Das wort wird zwar gebildet aber ich kann es anscheinen nicht später im code normal einfügen. wie zb


    if var=1 then
    =
    if objekt.Fach_01=1 then
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • Execute string returnt nicht von allein das Ergebnis!
    schreib der Übersicht wegen:
    vari = "Fach_0"+string(argument0)

    und dann: vari = execute_string("return("+vari+")");
    Das sollte gehen.

    oder wenn du es einfacher haben willst, mach das Skript "exe":


    if is_string(argument0)
    return(execute_string("return("+argument0+")"));

    Dann musst du nur noch schreiben: vari = exe("Fach_0"+string(argument0));

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

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

  • hm hat irgend wie nicht geklapt oder ich stelll mich nur zu blöd an.
    vari = execute_string("return("+var+")");
    var ist bestimmt ein tip fehler. da kommt schon beim schreiben ne fehler meldung.
    Muss doch irgen wie möglich sein ein code aus zuführen wo ein teil des codes in einer variable steht und mann die variable enfach in den code einfügt.


    Ps das zweite hab ich nicht ganz verstanden mit dem "exe"

    Aber mit return kenne ich mich sowie so nicht aus. hab ich noch nie :(
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • ja, sorry, vertippt, schreib vari statt var.


    Return ist ganz einfach zu verstehen.
    Du schreibst return und das was dahinter steht wird vom skript oder von der Funktion execute_string zurück gegeben.
    D.h. ein skript indem steht return 5;
    gibt immer 5 zurück.
    Es ist zu beachten das bei dieser Funktion das Skript beendet wird, also wenn man schreibt:

    return 5;
    a = 55;

    Wird a anschließend nicht 55 sein (solang es nicht davor schon eingestellt wurde)

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • und wie bauch ich das dann in eine if anweisung ein wenn ich den code zusammen haben sollte

    Normaler wiese wäre es ja so
    If Fach_01=1 then....

    Wenn der auszuführende code jetzt in der vari Variable ist.
    Muss ich dann
    If var=1 then...
    schreiben oder wie geht das dann. darna scheitert es glaub ich am meisten laut der fehler meldungen

    NACHTRAG.
    ich glaube es geht jetzt. habs genaus so geamacht wie deiner erste variant. ich teste das mal mt einem andern fach um sicher zugehn

    Nachrtag 2
    ein nachteil hat das aber bis jetzt. in einer anweisung funktioniert das ganze, wenn ich aber simpler nur dir variable veränder will geht das irgendwie wiedrum nicht.

    also if vari=1 then...
    geht
    Aber wenn ich später eine zuweisung eines wertes mache, geht das nicht
    zb
    vari=3

    also keine frage sondern eine zustands zuweisung

    Nachtrag 3

    Wenn es nicht gehen soltle ist es aber auch nicht schlim. ich kann im notfall das script kopieren und für die 25 fäche um schreiben.Ist ne sache von 10 minuten. man da wäre ich ja jetzt schon längst fertig gewesen :)
    Meine Signatur hat kein Visum für das GM Forum erhalten.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von x-sascha ()

  • Perfekt hat super funktioniert
    hier ist mal der code für ein fach. damit du sieht wofür das ganze war

    Ist alles für ein objektloses(3d) inventar gewesen. Danke für die hilfe

    GML-Quellcode

    1. x1=argument0
    2. y1=argument1
    3. x2=argument2
    4. y2=argument3
    5. vari = "obj_player.slot_0"+string(argument4)
    6. vari = execute_string("return("+vari+")");
    7. vari2 = "obj_player.slot_0"+string(argument4)+"_item"
    8. vari2 = execute_string("return("+vari2+")");
    9. if mouse_x>x1 and mouse_y>y1 and mouse_x<x2 and mouse_y<y2 and mouse_check_button_released(mb_left) then
    10. {
    11. if vari>0 then
    12. {
    13. if show_question("" + string(vari2)+"' angelegt?") then
    14. {
    15. if vari=1 then
    16. {
    17. if obj_player.item_01=1 then
    18. {
    19. show_message("Zu vor muss das Item '" + string(obj_player.item_01_item)+"' abgelegt werden.")
    20. exit;
    21. }
    22. else
    23. {
    24. obj_player.item_01=1;
    25. obj_player.item_01_item=vari2
    26. execute_string("obj_player.slot_0"+string(argument4)+" = "+string(0));
    27. sound_play(equip)
    28. exit
    29. }
    30. }
    31. }}}
    Alles anzeigen
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • man braucht nicht gleich das langsame execute_string dafür:
    aus der Hilfe:
    variable_global_exists(name) Gibt an, ob eine globale Variable mit der Bezeichnung "name" existiert.
    variable_local_exists(name) Gibt an, ob eine lokale Variable mit Bezeichnung "name" für die aktuelle Instanz existiert.
    variable_global_get(name) Gibt den Wert der globalen Varaiblen wieder.
    variable_global_array_get(name,ind) Gibt den Wert des Index ind des globalen Arrays name an (ein String).
    variable_global_array2_get(name,ind1,ind2) Gibt den Wert der Indexa ind1,ind2 des globalen 2-dimensionalen Arrays mit dem Namen name an (ein string).
    variable_local_get(name) Liefert den Wert der lokalen Variablen.
    variable_local_array_get(name,ind) Gibt den Wert des Index ind des globalen Arrays name an (ein String).
    variable_local_array2_get(name,ind1,ind2) Gibt den Wert der Indexa ind1,ind2 des globalen 2-dimensionalen Arrays mit dem Namen name an (ein string).
    variable_global_set(name,value) Setzt den Wert(value) für die globale Variable.
    variable_global_array_set(name,ind,value) Setzt den Wert value des Index ind des globalen Arrays name (ein String) fest.
    variable_global_array2_set(name,ind1,ind2,value) Setzt den Wert value der Indexa ind1,ind2 des globalen 2-dimensionalen Arrays mit dem Namen name (ein string) fest.
    variable_local_set(name,value) dasselbe - nur für die lokale Variable.
    variable_local_array_set(name,ind,value) Setzt den Wert des Index ind des lokalen Arrays name (ein String) fest.
    variable_local_array2_set(name,ind1,ind2,value) Setzt den Wert der Indexa ind1,ind2 des lokalen 2-dimensionalen Arrays mit dem Namen name (ein string) fest.


    maxda
  • Benutzer online 1

    1 Besucher