Ergebnis 1 bis 3 von 3

Thema: Problem mit Dialogsystem in GameMaker: Studio

  1. #1

    Problem mit Dialogsystem in GameMaker: Studio

    Hallo Leute,
    da sich hier einige auch mit GameMaker:Studio befassen, möchte ich hier mal mein Problem schildern...vielleicht kann mir ja jemand helfen, da ich schon regelrecht verzweifle XD

    Es geht um ein Programmierproblem bei einem Dialogsystem. Da es explizit um den GameMaker geht poste ich es mal hier. Um es möglichst kurz zu machen:
    Ich habe einen NPC und ein Schild erstellt. Der NPC soll anfangen seinen Text zu sprechen, wenn der Spieler eine bestimmte Taste drückt, beim Schild das gleiche. Beide Objekte besitzen den gleichen Code.
    Das Problem besteht darin, dass der Text zwar angezeigt wird, aber dieser vom Text des anderen Objektes überlappt wird. Im Klartext: Beide Objekte führen ihren Code zur selben Zeit aus und ich kriege einfach nicht raus warum...ich befasse mich seit ner Woche mit nichts anderem, aber ich kriegs nicht raus. Ich denke, dass es etwas mit dem Step-Event zu tun hat, aber ich wüsste nicht was. Vielleicht hab ich da nen Logikfehler, da ich mich auch noch nicht soo lange mit dem GameMaker befasse.

    Da ich HIlfe brauche, komme ich nicht drum herum den Code zu posten. Ich würde dennoch darum bitte, diesen nicht einfach so zu verwenden. Der Code befindet sich im Spoiler:

    // Create Event


    // Step Event



    // Draw Event


    Vielen Dank im Voraus

  2. #2
    Wenn der Spieler am NPC oder Schild dran ist und space drückt, wird obj_textbox erschaffen. Das Problem: im Drawevent des NPCs UND des Schildes wird dieses Objekt über instance_exists(obj_textbox) abgefragt und mit true beantwortet. Ergo werden beide Draw-Events ausgeführt. Du musst dem Objekt beibringen, dass er nach DEM obj_textbox checken soll, welches von dem Objekt und keinem anderen erschaffen wurde. Das geht z.B. über IDs. Einfache Lösung:

    Ergänze das Create Event mit diesem Codesnippet
    Create:
    Code:
    textbox_id = -1;
    Der Wert von -1 bedeutet, dass kein obj_textbox von diesem Objekt erschaffen wurde.

    Verbessere den Step-Event mit folgendem Snippet:
    Step:
    Code:
        if (textbox_id = -1)
        {
            textbox_id = instance_create(view_xview[0]+238, view_yview[0], obj_textbox);
           
        }
    Wenn kein obj_textbox vom Objekt erschaffen wurde (textbox_id = -1), dann erschafft er das obj_textbox und speichert die ID davon in textbox_id ab. Jetzt kannst du alle weiteren Abfragen in deinem Step- und Draw-Events daran anpassen und ein anderes Objekt wird nicht durch ein fremdes obj_textbox getriggert. Ich hoffe, meine Ausführungen waren soweit verständlich!

    Viel Erfolg!

  3. #3
    Schotti, ich danke dir schon mal. Ja deine Ausführen waren für mich schon verständlich ^^
    Jetzt spricht jeder seinen Satz aus dem Array, aber scheinbar ist da immer noch der Wurm drin ^^" Wenn ich den NPC oder das Schilöd nun anspreche, bekomme ich diesen Error:

    Code:
    ___________________________________________
    ############################################################################################
    FATAL ERROR in
    action number 1
    of Draw Event
    for object obj_test_npc:
    
    Unable to find any instance for object index '7' name 'obj_textbox'
     at gml_Object_obj_test_npc_DrawEvent_1 (line 5) - draw_sprite(obj_textbox.sprite_index, 0, view_wview[0]/2 - 10, view_yview[0]);
    ############################################################################################
    Ich blick da grade echt nix mehr XD Wenn ich den instance_destroy Befehl auskommentiere taucht der Fehler nicht mehr auf, aber das Array wird nicht zurückgesetzt...Die Instanz soll ja aus performancegründen zerstört werden oder hat das nicht so viel Einfluss?
    Btw: Kann man statt textbox_id = -1 auch textbox_id = 0 schreiben oder wird die -1 da besonders gewertet?

    EDIT: Nochmal ein herzliches Dankeschön an Schotti für seine Unterstützung. Ich habe es nun hinbekommen

    Geändert von Kurojin (27.09.2016 um 09:12 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •