Página 1 de 2

Problema com transição de room

Enviado: Qua Mai 29, 2019 8:05 pm
por DarlesLSF
Boa noite, até ontem minha transição de room estava funcionando normalmente. Dai hj, quando vou testar novamente, simplesmente não acontece nada.
Testei algumas vezes e percebi que o problema consiste aqui:
Essa é a parte em que se inicia a transição. O evento abaixo esta no Step.
if (global.permitir_menu)
{
    if (keyboard_check_pressed(ord("F")))
    {
        global.spr_jogador = obj_jogador.sprite_index;
        global.targetroom = room;
        global.posx_jogador = obj_jogador.x;
        global.posy_jogador = obj_jogador.y;
        global.contador_batalha = false;
        global.andarnormal = false;
        with (obj_jogador)
        {
            image_speed = 0;
        }
        desenhar_trans = true;
        global.permitir_menu = false;
    }
}


Dai aqui que vem o problema. Mesmo colocando a variável como true, não inicia-se os códigos dentro dela, até coloquei um show_debug_message pra ver se estava executando os códigos, mas não estão. O evento abaixo está no Draw.
if (desenhar_trans)
{
    show_debug_message("oi");
    depth = -99;
    alpha_menu += .05;
    if (alpha_menu > 1)
    {
        alpha_menu = 1;
        with (obj_jogador)
        {
            sprite_index = spr_transparente;
        }
        if (room == Menu)
        {
            ligou_movi = false;
            with (obj_jogador)
            {
                sprite_index = global.spr_jogador;
            }
            room_goto(global.targetroom);
        } else
        {
            room_goto(global.room_menu);
        }
        obj_jogador.x = global.posx_jogador;
        obj_jogador.y = global.posy_jogador;
        desenhar_trans2 = true;
        desenhar_trans = false;
    }
    draw_set_colour(c_black);
    draw_set_alpha(alpha_menu);
    draw_rectangle(view_xview[0], view_yview[0], view_xview[0] + view_wview[0], view_yview[0] + view_hview[0], false)
    draw_set_alpha(1);
}


O que pode estar impossibilitando que se iniciem os códigos, mesmo a variável estando como true?

Re: Problema com transição de room

Enviado: Qui Mai 30, 2019 10:20 am
por Alex FC
O "Oi" não está aparecendo no console? E dentro desse código ao pressionar a tecla F, está ocorrendo normalmente? Tem algum código no End Step?

Veja se a opção Applies To: não foi modificada nos eventos:

Imagem

Fiz um mini-tutorial sobre transição de rooms, ia postar no fim de semana, mas como tua dúvida apareceu resolvi antecipar. Dá uma olhada caso não consiga resolver ou apenas de curiosidade:

1 Imagem, 1 Tutorial #002: Transição de rooms (Fade-In-Out)

Abraços o/

Re: Problema com transição de room

Enviado: Qui Mai 30, 2019 12:07 pm
por DarlesLSF
Alex FC escreveu:
O "Oi" não está aparecendo no console? E dentro desse código ao pressionar a tecla F, está ocorrendo normalmente? Tem algum código no End Step?

Veja se a opção Applies To: não foi modificada nos eventos:

Imagem

Fiz um mini-tutorial sobre transição de rooms, ia postar no fim de semana, mas como tua dúvida apareceu resolvi antecipar. Dá uma olhada caso não consiga resolver ou apenas de curiosidade:

1 Imagem, 1 Tutorial #002: Transição de rooms (Fade-In-Out)

Abraços o/


Sim, o "oi" não está aparecendo, já que coloquei ele ali só pra ver se rodava o código dentro do If.
Após eu apertar a tecla F, simplesmente trava. O Personagem não mexe mais, não funciona nada mais. Simplesmente não sei o que aconteceu kk
Todos os eventos estão em "Self". E não há End step.
Imagem

Re: Problema com transição de room

Enviado: Qui Mai 30, 2019 12:31 pm
por Alex FC
Executa o jogo com F6 (Debug).

Imagem

Clica no ícone de pausa assim que travar. Depois vá teclando F11 (Step In) e conferindo os valores das variáveis na em Local Variables.

Senão só vendo o código todo, pois só pelo que postou devia funcionar.

Re: Problema com transição de room

Enviado: Qui Mai 30, 2019 6:38 pm
por DarlesLSF
Então, pelo que entendi, tá dizendo que a variável "desenhar_trans" está como true, certo?
Imagem
Ou seja, deveria executar o código abaixo, mas não está executando.
if (desenhar_trans)
{
    show_debug_message("oi");
    depth = -99;
    alpha_menu += .05;
    if (alpha_menu > 1)
    {
        alpha_menu = 1;
        with (obj_jogador)
        {
            sprite_index = spr_transparente;
        }
        if (room == Menu)
        {
            ligou_movi = false;
            with (obj_jogador)
            {
                sprite_index = global.spr_jogador;
            }
            room_goto(global.targetroom);
        } else
        {
            room_goto(global.room_menu);
        }
        obj_jogador.x = global.posx_jogador;
        obj_jogador.y = global.posy_jogador;
        desenhar_trans2 = true;
        desenhar_trans = false;
    }
    draw_set_colour(c_black);
    draw_set_alpha(alpha_menu);
    draw_rectangle(view_xview[0], view_yview[0], view_xview[0] + view_wview[0], view_yview[0] + view_hview[0], false)
    draw_set_alpha(1);
}

Re: Problema com transição de room

Enviado: Qui Mai 30, 2019 7:15 pm
por Alex FC
Não basta só olhar se ficou 1 (true). Vá teclando F11 e acompanhando o código. Ok, já vimos que fica 1 (true). E depois por onde o código percorre? Ele chega no evento Draw?? Para antes? E se parou, parou onde? É pra isso que serve o debug.

Pode ser também um bug do GMS1. Copie tudo para um txt, delete o objeto e coloque os códigos novamente (Sem duplicar).

Re: Problema com transição de room

Enviado: Qui Mai 30, 2019 9:34 pm
por DarlesLSF
@Alex FC
Tentei utilizar o teu tutorial de troca de rooms, mas acontece a mesma coisa: simplesmente trava na hora que iria iniciar a transição. Eu fuço em tudo e tento ver o por quê de não trocar de room mais, mas não acho nada.

Re: Problema com transição de room

Enviado: Sex Mai 31, 2019 9:22 am
por Alex FC
Muito estranho. Pode ser algum problema na sua máquina ou nos componentes do GM (DirectX ou DotNetFX 3.5). De toda forma faça um teste em outro PC ou veja se alguma atualização do Windows tenha falhado e faça uma restauração para um data onde estava funcionando.

Antes faça uma verificação no código se não há nenhuma ocorrência do código room = nome_da_room (Com apenas um =)tanto em condicionais como para mudar de room, isso costuma fazer o game travar ou ficar muito lento.

Re: Problema com transição de room

Enviado: Sex Mai 31, 2019 12:11 pm
por DarlesLSF
Alex FC escreveu:
Muito estranho. Pode ser algum problema na sua máquina ou nos componentes do GM (DirectX ou DotNetFX 3.5). De toda forma faça um teste em outro PC ou veja se alguma atualização do Windows tenha falhado e faça uma restauração para um data onde estava funcionando.

Antes faça uma verificação no código se não há nenhuma ocorrência do código room = nome_da_room (Com apenas um =)tanto em condicionais como para mudar de room, isso costuma fazer o game travar ou ficar muito lento.

Hoje a noite vou tentar novamente, mas provavelmente terei que refazer a transição kkk

Re: Problema com transição de room

Enviado: Sex Mai 31, 2019 9:47 pm
por DarlesLSF
É, refiz todo o código mas não deu em nada. Exclui o objeto e recriei ele, pois achei que poderia ser um bug nele, mas nada mudou.
O interessante é que a variável que iniciaria a transição está como "true", mas o código dentro do If não é executado e não sei o por quê disso.
Posto novamente o código:
Step event
if (global.permitir_menu)
{
    if (keyboard_check_pressed(ord("F")))
    {
        global.spr_jogador = obj_jogador.sprite_index;
        global.targetroom = room;
        global.posx_jogador = obj_jogador.x;
        global.posy_jogador = obj_jogador.y;
        global.contador_batalha = false;
        global.andarnormal = false;
        with (obj_jogador)
        {
            image_speed = 0;
        }
        iniciar_trans = true;  // variável que inicia a transição
        alarm0 = 11;
        alarm[0] = .2 * room_speed;
    }
}

Draw event
if (iniciar_trans)  // no modo debug, a variável está como true, porém o código não é executado.
{
    alpha_menu += .05;
    draw_set_alpha(alpha_menu)
    draw_set_color(c_black);
    draw_rectangle(view_xview[0], view_yview[0], view_xview[0] + view_wview[0], view_yview[0] + view_hview[0], false)
    draw_set_alpha(1);
    if (alpha_menu >= 1)
    {
        room_goto(Menu);
        desenhar_trans2 = true;
        iniciar_trans = false;
    }
}