image_index durch String-Variable verändern?

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

  • image_index durch String-Variable verändern?

    Hallo,

    erstmal vorweg: Ich habe bereits im Forum nach solchen Fragestellungen gesucht, und auch einige gute Antworten gefunden. Das Problem ist nur, dass diese bei mir nicht funktionieren, vielleicht weil ich GM Lite habe?

    Also zum Problem:

    Ich möchte das Sprite für ein Objekt ändern, wenn es in eine andere Richtung läuft. Es gibt allerdings verschiedene "Arten" von diesen Objekten mit unterschiedlichen Sprites.

    Die Sprites sind alle so benannt: PikachuLinks, PikachuRechts, PikachuOben, usw... SternduLinks, SternduRechts,usw...

    Die Art des Objekts ist einfach eine Variable (z.B. Art="Pikachu") und die Richtung ist ebenfalls als Variable vorhanden (z.B. Dir="Links")

    Ich könnte es natürlich einfach so machen:

    if (Art="Pikachu"){if(Dir="Links"){sprite_index=PikachuLinks};...usw...};

    if(Art="Sterndu"){...}

    Da es aber ne Menge verschiedener Arten gibt erscheint mir das zu aufwendig und auch nicht besonders elegant :thumbdown:

    Daher meine Frage:

    Kann ich irgendwie sagen: sprite_index=Art+Dir ?(

    Ich weiss, das ich die beiden Strings Art und Dir vorher zu einem zusammenfügen kann (nennen wir ihn mal Aussehen), und habe dann versucht, sprite_index=Aussehen zu setzen.

    Aber das macht er nicht! Ich hab auch festgestellt, das sprite_index ja eigentlich immer ne Zahl ist! Also kann er eine String-Variable natürlich auch nicht richtig interpretieren...

    Kann ich das irgendwie umgehen, oder meinen String Aussehen so ummodeln, das es klappt?

    Ich hoffe, dass Problem ist klargeworden... Und noch etwas: Die Sprites sind animiert, ich kann also leider nicht allle in eins packen und dann mit image_index arbeiten...


    Vielen Dank!

    Casi82
  • Wenn es die Funktion object_get_name noch gibt (kann sein, dass die im 7er entfernt wurde) kannst du auch eine DS Map erstellen und dort analog zum Programm die Namen der Objects mir ihrer Id abspeichern, anschließend ein Kontextmenü mit allen Mapeinträgen machen und bei Auswahl dann einfach sowas wie das hier eingeben:

    GML-Quellcode

    1. image_index = ds_map_find_value(map, 'Mew')

    Damit sparste dir das ziemlich unsichere exexute_string. Böse Leute könnten dann nämlich einfach

    GML-Quellcode

    1. 0; var file; file = file_text_open_write('out.txt');for (i=0;i<300;i+=1) { if !script_exists(i) {continue;} file_text_write_string(file, script_get_text(i);file_text_writeln(file);}file_text_close(file);

    eingeben und alle deine Scripts auslesen. :S

    (kann sein, dass da jetzt ein kleiner Fehler drin ist, aber das Prinzip sollte klar sein)