fehler mit repeat() bei with()

  • GM 7

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

  • fehler mit repeat() bei with()

    hey leute
    ich will,das wenn man auf ein object klickt,dass bei diesem dann 5 einheiten entstehen.diese einheiten sollen aber alle den gleichen variablewert bekommen,weshalb ich es nicht einfach ins create event schreiben kann.das ist mein code dafür:

    GML-Quellcode

    1. with(repeat(5){instance_create(x,y,object1)})
    2. {
    3. //blabla
    4. }


    da bekomme ich aber dann den fehler:

    ___________________________________________
    FATAL ERROR in
    action number 1
    of Mouse Event for Left Button
    for object object0:

    COMPILATION ERROR in code action
    Error in code at line 1:
    with(repeat(5){instance_create(x,y,object1)})

    at position 6: Unexpected symbol in expression.
    was hab ich falsch gemacht?
  • bei dir ist statt ner normalen Klammer noch ne geschweifte drin
    und zwar hier:
    instance_create(x,y,object1)})


    edit: vergiss was ich gesagt hab.
    war doch falsch
    Gruß Gamer

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

  • doch,das with() brauch ich schon.zwar nicht für das repeat() sondern dafür,dass die erstellten einheiten den gleichen variablenwert haben und der ist mit random geregelt.deshalb kann ich nicht bei jeder einheitim create event die variable per zufall deklarieren,weil sie dann nicht zu den anderen werten er anderen einheiten passen.

    also nochmal.was hab ich falsch gemacht?ich finde da nämlich keinen fehler
  • Versuch's mal so:

    GML-Quellcode

    1. var count;
    2. for(count=0;count<=5;count+=1){
    3. i[count]=instance_create(x,y,object1);
    4. with i[count] /*deine Aktionen hier*/
    5. }


    oder so:

    GML-Quellcode

    1. var count;
    2. count=0;
    3. repeat(5){
    4. i[count]=instance_create(x,y,object1);
    5. with i[count] /*deine Aktionen hier*/
    6. count+=1;
    7. }


    Ist beides das gleiche, erstere Methode ist allerdings übersichtlicher.
    Der Fehler bei deiner Methode lag daran, dass du schlicht und einfach das repeat-Statement falsch gesetzt hast. Auf with darf nur noch eine Objekt-Referenz folgen, nicht fünf. Für fünf Referenzen brauchste auch fünf with-Statements - und dafür muss das repeat bzw. for vor dem ganzen Block stehen.
    Soweit verständlich? :)

    Edit: Na, da war aber jemand schnell unterwegs. :pinch:
  • hey cool,das funktioniert ja schonmal.jetz will ich aber noch machen,dass diese einheiten zu dem punkt (xgoal,ygoal) laufen und wenn die erste einheit den punkt erreicht hat,dort ein object createt und dann zerstört wird.die anderen einheiten dieses "schwungs" sollen aber nicht das object createn,sonder zerstört werden,wenn sie den punkt erreichen.mein versuch ist im anhang.

    ich hoffe, ihr könnt das problem genauso gut lösen wie das davor.ich bin zuversichtlich und bedanke mich schonmal im voraus.
    Dateien
    • problem.rar

      (11,14 kB, 180 mal heruntergeladen, zuletzt: )
  • nein,so wollte ich das eigentlich überhaupt nicht haben.trotzdem danke für deine mühe.ich wollte es so,dass wenn man einmal auf den button klickt,dass dann alle einheiten,die dabei createt werden,zu der gleichen position laufen,die mit random zufor bestimmt wurde.kommt dann die erste einheit zu dieser position,soll sie dort ein object createn und sich selbst zerstören.kommen aber die restlichen einheiten auch noch zu der position,sollen sie einzeln zerstört werden,aber kein object createn.

    ich hoffe,das war verständlich genug.
  • Erstens: X Einheiten erstellen, die dann zur Maus laufen:

    GML-Quellcode

    1. for (i=0;i<X;i+=1){
    2. ii=instance_create(x,y,object);
    3. ii.targetx=mouse_x;
    4. ii.targety=mouse_y;

    Laufen lassen:

    GML-Quellcode

    1. speed=5;
    2. if (point_distance(x,y,targetx,targety)<=speed){
    3. x=targetx;
    4. y=targety;
    5. }
    6. else{
    7. direction=point_direction(x,y,targetx,targety);
    8. }
    9. if (x==targetx)&&(y==targety){
    10. if (instance_position(x,y,zielobjekt)==noone)
    11. instance_create(x,y,zielobjekt);
    12. }
    13. instance_destroy()
    Alles anzeigen


    Ich versteh grad absolut nicht, wo da das große Problem sein soll, aber dass da oben sollte helfen.
    Gruß, Spellmaker
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • Vielleicht wäre es auch hilfreich mal zu erfahren, was du überhaupt erreichen willst. Deine Anpassungen
    in dem Beispiel sind mir alle eher suspekt. Ich verstehe zum Beispiel nicht, warum die ganzen Objekte ein
    Objekt erzeugen sollen, wenn sie am Ziel sind. Sie könnten sich doch einfach nur zerstören und gut ist.
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • Benutzer online 1

    1 Besucher