Ergebnis 1 bis 3 von 3

Thema: Problem mit Dialogsystem in GameMaker: Studio

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    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!

  2. #2
    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 08:12 Uhr)

Berechtigungen

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