Ganz kleine Variablenfrage

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

  • Ganz kleine Variablenfrage

    so... hab mal ne kleine frage... also

    ich will ein objekt erstellen oder ein sound abspielen mit hilfe von variablen.. also z.B. so :

    die Objekte heißen z.B.
    o_Fliege_01
    o_Fliege_02
    o_Fliege_03
    usw

    oder die Sounds

    s_Brumm_01
    s_Brumm_02
    s_Brumm_03


    soooo.. wie schon erwähnt will ich jetzt mit folgendem code und mit hilfe einer variable die objekte erstellen oder den sound abspielen :


    GML-Quellcode

    1. // Der Sound
    2. sout=2;
    3. sound_play(s_Brumm_0+sout); // Also hier soll er "s_Brumm_02" abspielen
    4. // Das Objekt .. das gleiche
    5. sout=3;
    6. instance_create(x,y,o_Fliege_0+sout); // Also hier soll er "o_Fliege_03" erstellen



    tja.. nur der code geht nicht :-/ da hab ich wohl mal wieder was falsch gemacht *g*

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

  • Sorry dich enttäuschen zu müssen, aber man kann nicht so einfach einen neuen String erstelle, indem man 2 Strings mit einem 2 verbindet.

    1. o_Fliege_0 ist ein String, sout jedoch eine Variable.
    Es müsste wenn schon dann o_Fliege_0+string(sout) heißen.
    2. Selbst das würde nicht funktionieren.

    Die einzige mir bekannt Möglichkeit wäre der ziemlich langsame Befehl execute_string.

    Das sähe dann so aus:

    GML-Quellcode

    1. execute_string("instance_create(x,y,o_Fliege_0" + string(sout) + ");");
    Aber mach dir wegen der Geschwindigkeit des Befehls ekine Sorge, die merkt man nur, wenn man die Aktion kontinuierlich ausführen müsste.
    Ab und zu zwischendurch stellt kein Problem dar.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Ich würde das so machen:

    GML-Quellcode

    1. sout=3;
    2. ar[true]="0"; //Besser im Create Event
    3. ar[false]=""; //Dito
    4. instance_create(x,y,variable_local_get("o_Fliege_"+ar[sout<10]+string(sout)));

    (ar[] wird benötigt damit bei Werten unter 10 eine 0 vorne an den namen gehängt wird.)
    Bei den Sounds gleich vorgehen...

    Dragoon

    EDIT: Anscheinend sind Objekt IDs weder lokal noch global, ich gucks mir nochmal an...
    EDIT2: Hab ne Lösung gefunden:
    Create Event:

    GML-Quellcode

    1. ls_objs=ds_list_create();
    2. erkennung="object";
    3. for(i=0;i<1000;i+=1)
    4. {
    5. if(string_copy(object_get_name(i),0,string_length(erkennung))==erkennung)
    6. {
    7. ds_list_add(ls_objs,i)
    8. }
    9. }
    Beim Sound Abspielen/Instanz Erstellen:

    GML-Quellcode

    1. instance_create(x,y,ds_list_find_value(ls_objs,floor(random(ds_list_size(ls_objs)))));

    Erklärung:
    Es werden alle IDs der Objekte durchprobiert bis eines mit einem bestimmten Namen auftaucht, diese ID wird dann in eine Liste gespeichert, welche man später dann einfach auslesen kann.
    Anpassen:
    - Der Name der Liste ls_objs
    - Der Erkennungsteil des Namens erkennung
    - Die Zahl 1000, muss grösser sein als die Anzahl der Objekte (auch solche die bereits gelöscht wurden werden gezählt). Bei grossen Projekten muss diese Zahl höher gewählt werden. Script ist ein mal am Anfang langsam, nacher merkt man keinen Geschwindigkeitsverlust.
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!
  • Benutzer online 1

    1 Besucher