Hallo Leute,
ich bin neu hier im Forum und hab auch direkt ein Problem bei dem ich dringend Hilfe bräuchte, da ich schon regelrecht verzweifle...
Es geht um ein Programmierproblem bei einem Dialogsystem. Um es möglichst kurz zu machen:
Ich habe einen NPC und ein Schild erstellt. Diese befinden sich im selben Raum. 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.
Der Code befindet sich im Spoiler:
// Create Event
Spoiler anzeigen
Alles anzeigen
// Step Event
Spoiler anzeigen
Alles anzeigen
// Draw Event
Spoiler anzeigen
Vielen Dank im Voraus
ich bin neu hier im Forum und hab auch direkt ein Problem bei dem ich dringend Hilfe bräuchte, da ich schon regelrecht verzweifle...
Es geht um ein Programmierproblem bei einem Dialogsystem. Um es möglichst kurz zu machen:
Ich habe einen NPC und ein Schild erstellt. Diese befinden sich im selben Raum. 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.
Der Code befindet sich im Spoiler:
// Create Event
Quellcode
- textbox_en = false;
- message[0] = "Hello there!";
- message[1] = "I'm a NPC!";
- message[2] = "I'm here go going on your nerves every time you talk to me.";
- message[3] = "Have fun!";
- message[4] = "And don't forget to change your underwear!";
- message_current = 0; //0 is the first number in our array, and the message we are currently at
- message_end = 5; //6 is the last number in our array
- message_draw = ""; //this is what we 'write' out. It's blank right now
- increase = 1; //the speed at which new characters are added
- characters = 0; //how many characters have already been drawn
- hold = 0; //if we hold 'Z', the text will render faster
- message_length = string_length(message[message_current]); //get the number of characters in the first message
// Step Event
Quellcode
- if(global.input == 0 && global.status_en == false)
- {
- if(keyboard_check(vk_space) && distance_to_object(obj_player) < 4 && textbox_en == false)
- {
- if (!instance_exists(obj_textbox))
- {
- instance_create(view_xview[0]+238, view_yview[0], obj_textbox);
- }
- if (instance_exists(obj_textbox))
- {
- global.move = false;
- textbox_en = true;
- obj_textbox.visible = true;
- }
- }
- if (textbox_en == true)
- {
- if (characters < message_length) //if current character count is less than the amount in current message*
- {
- hold = keyboard_check(ord('X')); //hold is true or false if 'X' is hold or not
- characters += increase * (1 + hold); //increase speed based on hold
- message_draw = string_copy(message[message_current], 0, characters); //copy string to current character
- }
- else { //if current character is more than the amount in the current message
- if (keyboard_check_pressed(ord('X'))) //if we press X...
- {
- if (message_current < message_end) //if there are more messages left to show
- {
- message_current += 1; //increase the message by 1
- message_length = string_length(message[message_current]); //get the new character length for message
- characters = 0; //set the characters back to 0
- message_draw = ""; //clear the drawn text
- }
- else
- {
- if (keyboard_check_pressed(ord('X')))
- {
- if (message_current >= message_end) //if the messages are done
- {
- characters = 0;
- message_draw = "";
- message_length = string_length(message[message_current]);
- obj_textbox.image_index = 0;
- obj_textbox.visible = false;
- textbox_en = false;
- with (obj_textbox) instance_destroy(); //destroy the object
- global.move = true;
- }
- }
- }
- }
- }
- }
- }
// Draw Event
Quellcode
- draw_self();
- if(textbox_en == true && instance_exists(obj_textbox))
- {
- draw_sprite(obj_textbox.sprite_index, 0, view_wview[0]/2 - 10, view_yview[0]);
- draw_set_colour(c_white);
- draw_set_halign(fa_left);
- draw_set_valign(fa_top);
- draw_text_ext(view_xview[0]+80, view_yview[0]+15, message_draw, 5, 320); //draw the text at the coordinates
- }
Vielen Dank im Voraus

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