Probleme bei Instance_create (x,x,obj)

  • Probleme bei Instance_create (x,x,obj)

    Hallo an ALLE :(

    Ich bräuchte mal einen Rat oder Tip, woran es liegen kann, das mir der GM manche Objekte nicht setzten kann.
    Also bei meinen Spiel das ich gerade programmiere bin ich ja schon ziemlich weit gekommen.
    Aber jetzt hänge ich an einer wirklich blöde Sache. Bis jetzt hat immer alles so geklappt, wie es ich mir ausgedacht habe.
    Wenn mein Spieler den Raum verlässt, erscheine eine Zwischenraum mit dem Lagerplan des Schlosses. So weit so Gut. Der Pfeil zeigt die Richtung an wo der Spieler als nächstes hin kommt.
    Ihr drückt die Shift-Taste um in den Raum zu gelangen. Was man nun sieht ist folgendes. Die Tür geht auf und dann sollte eigentlich die Animation kommen wie der Spieler den Raum betritt.
    Aber GM verweigert einfach die Darstellung des Objektes. Egal was ich auch schreibe.
    Hier der Script: scr_Spieler_kommt

    GML-Quellcode

    1. {
    2. x = argument0;
    3. y = argument1;
    4. instance_create(x,y,obj_Spieler1_kommt);
    5. // instance_create(x,y,obj_Spieler_1);
    6. sprite_index :=spr_Spieler1_kommt;
    7. move_towards_point(x-7,y+7,1.8);
    8. }


    Wenn ihr aber obj_Spieler_1 bei instance_create einfügt, erscheide die Figur ohne Problem.
    Hab schon etliche Einstellung probiert. Jetzt weis ich wirklich nicht mehr weiter. Vielleicht kann mir ja einer Erklären woran es liegt. Denn sonst kann ich ja aufhören. Nämlich das rein und raus vom Spieler sollte wirklich funktionieren.
    Werde das Spiel mit hochladen damit ihr es Testen könnt.
    Vielleicht ist es ja nur ein Programmierfehler von meiner Seite aus.
    Im Übersichtsplan, wenn das Spiel läuft, die Shift-Taste drücken um weiter zu kommen. 8) 8) 8)



    Gruss euer Drachen
    Dateien
  • GML-Quellcode

    1. {
    2. x = argument0;
    3. y = argument1;
    4. instance_create(x,y,obj_Spieler1_kommt);
    5. // instance_create(x,y,obj_Spieler_1);
    6. sprite_index :=spr_Spieler1_kommt;
    7. move_towards_point(x-7,y+7,1.8);
    8. }

    Du darfst vor sprite_index keine Doppelpunkte setzen!

    ,-Megamag

    Magical dream time!

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

  • Also, 3 Sachen:
    1. ob := oder nur = ist egal.
    GML basiert auf Delphi, und im Delphi-Syntax ist = ein Vergleich und := eine Zuweisung.
    GML kann mit beidem umgehen.

    2. Ich würde als Variablen der Koordinaten nicht x und y nehmen, da diese sich dann auf die Position des Objektes beziehen in welchem das Script ausgeführt wird (außer natürlich du wolltest es so, was ich jetzt nicht beurteilen kann, da ich leider das Spiel nicht testen kann).

    3. Wenn du der neu erstellen Instanz den Sprite zuweisen möchtest, musst du mit pointern arbeiten, da ansonsten der Sprite des ausführenden Objektes gewechselt wird.
    Der Code sähe dann so aus:

    GML-Quellcode

    1. xi = argument0;
    2. yi = argument1;
    3. i := instance_create(xi,yi,obj_Spieler1_kommt);
    4. with i
    5. {
    6. sprite_index :=spr_Spieler1_kommt;
    7. move_towards_point(xi-7,yi+7,1.8);
    8. }
    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
  • Hallo Kilik

    Deine Idee war Gut, leider geht es so auch nicht. Das Objekt von obj_Spieler1_kommt will einfach nicht dargestellt werden.
    Wenn ich deinen Code umschreibe in etwa so:

    GML-Quellcode

    1. x = argument0;
    2. y = argument1;
    3. i := instance_create(x,y,obj_Spieler_1);
    4. with i
    5. {
    6. sprite_index :=spr_Spieler1_kommt;
    7. move_towards_point(x-7,y+7,1.8);
    8. }


    erscheint doch tatsächlich der erste Sprite von der Animation. Aber das war es auch sonst.
    Ach ja und das mit x und y war absichtlich. Wenn ich es so stehen lassen würde, erscheint eine Fehlermeldung in move_towards_point(xi-7,y+7,1.8);
    Unbekannte Variabel xi.
    Warum auch immer. Vom logischen sollte es eigentlich funzen mit xi und yi
    Gruss Drachen
  • Ach Mist, ich habe auch ein paar logische Fehler gemacht. X(

    xi und yi sind ja im aktuellen Objekt deklariert und demnach lokal.
    Wenn ich die jetzt aber in der with-Funktion aufrufe werden sie im Objekt i gesucht. -.-
    Außerdem muss das angesprochene Objekt der with-Funktion in Klammern stehen, also:

    GML-Quellcode

    1. xi := argument0;
    2. yi := argument1;
    3. i := instance_create(xi,yi,obj_Spieler_1);
    4. with (i)
    5. {
    6. sprite_index := spr_Spieler1_kommt;
    7. move_towards_point(x-7,y+7,1.8);
    8. }

    (Leider kann ich es selbst nicht ausprobieren, da ich vom GM7 nur die Lite Version besitze.)
    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
  • Hi Kilik

    hat leider nicht funktioniert. Er zeigt mir immer nur das 1. Bild von der Animation an.

    Jetzt zu Verwurster

    Hallo erst mal an Verwurster.
    Kilik hat weider oben beschrieben das der Doppelpunkt eagl ist.
    Ich zitiere:

    Also, 3 Sachen:
    1. ob := oder nur = ist egal.
    GML basiert auf Delphi, und im Delphi-Syntax ist = ein Vergleich und := eine Zuweisung.
    GML kann mit beidem umgehen.

    Gruss Drachen
  • Du erstellst das falsche Objekt:

    GML-Quellcode

    1. i := instance_create(xi,yi,obj_Spieler_1);
    sollte eigentlich

    GML-Quellcode

    1. i := instance_create(xi,yi,obj_Spieler1_kommt);
    heißen.
    Denn obj_Spieler_1 enthält ein Step Event, dass die Animation stoppt:

    GML-Quellcode

    1. case vk_nokey:
    2. image_speed = 0
    3. break;
    Einige meiner Spiele:
  • Original von lolliger_joj
    woher weißt du, was im step event des objektes ist ?(
    Aus der gmk-Datei, die am ersten Post anhängt. Dort wird im Step Event von obj_Spieler_1 das Skript scr_Steuerung aufgerufen, welches unter anderem die Animation stoppt, wenn keine Taste gedrückt ist...
    ...keine Zauberei... :D
    Einige meiner Spiele:
  • Hallo interceptor

    Du hast mich auf eine Idee gebracht. Und ich muss dir sagen es klappt.
    Habe mein Scrip von "scr_Steuerung" geändert.
    Sie sieht jetzt so aus:

    GML-Quellcode

    1. //////////////////////////////////////////////////////
    2. // Variabeln //
    3. //////////////////////////////////////////////////////
    4. {
    5. var hori_speed, Spriteani;
    6. hori_speed = 2
    7. Spriteani = 1/4
    8. //////////////////////////////////////////////////////////
    9. // Spieler immer auf Plattform fallen lassen //
    10. /////////////////////////////////////////////////////////
    11. gravity := 0.2;
    12. if (vspeed >= 0) then
    13. {
    14. move_contact_solid(270,vspeed + 1);
    15. vspeed = 0;
    16. gravity := 0;
    17. }
    18. //////////////////////////////////////////////////////
    19. // Spielersteuerung //
    20. //////////////////////////////////////////////////////
    21. switch (keyboard_key)
    22. {
    23. case vk_nokey:
    24. if (sprite_index :=spr_Spieler1_kommt) // neuer Eintrag
    25. {
    26. image_speed = Spriteani;
    27. gravity := 0;
    28. }
    29. else
    30. {
    31. image_speed = 0;
    32. }
    33. break;
    34. case vk_left:
    35. sprite_index :=spr_Spieler1_links;
    36. image_speed = Spriteani;
    37. x-=hori_speed;
    38. break;
    39. case vk_right:
    40. sprite_index :=spr_Spieler1_rechts;
    41. image_speed = Spriteani;
    42. x+=hori_speed;
    43. break;
    44. }
    45. }
    Alles anzeigen


    Ich habe gewusst das irgendwo der Fehler steckt. Aber wenn mann in seinen Prog so vertieft ist, sieht man leider nicht immer alles. Es ist immer besser viele schauen auf den Code. Mancher findet einen Fehler den ich nicht sehen kann. Somit ist monentan mein jetztiger Fehler behoben. Bin mir aber sicher es werden noch ein paar kommen. Da gibt es ja noch die Gegner, Fliessbänder, Löcher, Teleporter und noch ein paaranderen Sachen.
    Und ich weis bei der grossen Gemeindschaft hier, wird sicherlich immer einer hier sein, der hier und dort einen Tip geben kann. Im diesen Sinne bis bald euer Drachen

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