Página 1 de 1

Problema com caixas de dialogo

Enviado: Qua Fev 13, 2019 10:41 pm
por 186557
Sendo bem honesto eu não sei se é um bug do game maker ou eu que acabei modificando o codigo e não vi, mas resumindo,
as caixas de dialogo que fiz estão com um bug em que quando a mensagem toda é mostrada ao inves da caixa fechar a mensagem reinicia, eu realmente não sei oque houve pois esse codigo funcionava perfeitamente até hoje.

eu fiz uma variavel chamada "global.text1" que verifica se a caixa de dialogo está ativada ou não.

Nos create dos npcs tem o codigo

Código: Selecionar todos

global.text1 = false
Esse é o codigo step do npc onde a variavel checa se a caixa esta ativada ou não, se ela não estiver o "obj_text_mago1" será criado e ele irá controlar as mensagens da caixa.

Código: Selecionar todos

if distance_to_object(obj_player) < 18 && distance_to_object(obj_player) > 0 {
if (keyboard_check_pressed(ord("S")) && global.text1 = false){
    instance_create(x,y,obj_text_mago1)
    if (sign(obj_npc1.x - obj_player.x)){
        sprite_index = spr_npc2;
        image_speed = 0.07;
         } else if (sign(obj_npc1.x + obj_player.x)){
         sprite_index = spr_npc;
         image_speed = 0.07;
              }  
        }

}
Dentro do create do "obj_text_mago1" tem os codigos:

Código: Selecionar todos

global.text1 = true

text1 = string("Please iracildo fix the magic of this world.#All of us believe on you.")
text2 = string("Hamburger.")


talk = 1

out = string("")
spd = 0
Dentro do step tem

Código: Selecionar todos

if talk = 1 {
out = string_copy(text1,1,spd)
spd+=2
}

if talk = 3 {
out = string_copy(text2,1,spd)
spd+=2
}

if keyboard_check_pressed(ord("S")) {
talk+=1;
spd = 0
}

if talk == 2{
     instance_destroy()
     } 
     
     if talk == 4{
     instance_destroy()
     } 
e por fim no evento Instance Destroy tem:

Código: Selecionar todos

global.text1 = false
Ou seja caso a caixa esteja desligada o "obj_text_mago1" é criado ao aperta "S" e caso a caixa esteja ligada ao apertar "S" a variavem "talk" recebe um valor a mais para mudar a mensagem. Tem alguma falha no cogido ou é algum bug do Game Maker?

Re: Problema com caixas de dialogo

Enviado: Qua Fev 13, 2019 11:37 pm
por Cheguevara
Eu estou pelo celular, então não tem como eu te ajudar muito agora, mas, eu não entendi direito esse seu código no step do segundo objeto, lembre-se que o game maker faz a leitura de cima para baixo e não ao contrário, tente colocar em switchs ou else if assim que eu chegar em casa dou um salve nesse seu código.

Re: Problema com caixas de dialogo

Enviado: Qui Fev 14, 2019 9:22 pm
por 186557
Ok. Lembrando que esse codigo veio desse video aqui: https://www.youtube.com/watch?v=VLFneLQB3_k
E ele funcionava perfeitamente até segunda, por isso to em duvida se pode ser algum bug do game maker. Tem alguma configuração sobre as variaveis globais nele?

Re: Problema com caixas de dialogo

Enviado: Sex Fev 15, 2019 9:22 am
por None
O problema no seu código é que ele está "mal" feito.
Coloque todos os seus textos dentro de um vetor, você então cria uma variável para determinar o índice atual em que você está no vetor, você checa se o índice atual é menor do que o tamanho do seu vetor, se sim então você avança o índice se não então você encerra o texto.

Re: Problema com caixas de dialogo

Enviado: Ter Mar 12, 2019 11:28 pm
por 186557
Opa! kk já faz um tempo. Eu reogarnizei o codigo e esta funcionando, mas gostaria de saber se tem como "verificar" se a mensagem da caixa esta sendo escrita ou se já terminou?

Re: Problema com caixas de dialogo

Enviado: Qua Mar 13, 2019 10:34 am
por None
Mesma lógica de antes.
Você vê o tamanho da string e checa se o texto atual é menor que o tamanho total da string final.