Battle Maker

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte para criação de Jogos


    GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 1º parte

    jiraya
    jiraya
    Administrador
    Administrador


    Mensagens : 1299
    Credibilidade : 54

    GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 1º parte Empty GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 1º parte

    Mensagem por jiraya Sáb Jan 08, 2011 1:10 pm

    [Autor: João Neto ]
    Lá venho eu com mais uma lição de GM RPG. Sei que muitos tem lido, mas não sei estou agradando, afinal todos sabemos que fazer um jogo em GM é complexo, demorado, e na maioria das vezes apanhamos pra caramba pra fazer algo parecido com o que queremos.
    Eu peço aos leitores que testem, tentem, achem erros, jeitos mais fáceis de fazer. Estou na ponta do Iceberg sobre o assunto, ainda há muito o que escrever e falar e, seria fácil postar aqui uma "engine" de jogo RPG, mas dessa forma se acaba copiando muito e aprendendo nada. Chega de enrolação e vamos começar.
    Uma das coisas que você deve saber e, se ainda não sabe, é que o evento Draw com certeza é e sempre será o evento mais usado quando falamos de mostrar informações na tela.
    Hoje, você aprenderá a fazer uma janela, onde poderá mostrar o que quiser, criar várias delas com informações diferentes, etc. A vantagem é que, usando scripts, basta mudar alguns parãmetros e temos janelas completamente distintas em conteúdo, mas no mesmo padrão de desenho, como devem ser.
    Para que você se familiarize com o evento Draw, não iremos usar imagens para desenhar nossa janela, usaremos apenas GML, e o resultado final será esse:
    GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 1º parte 60868700te8
    Com o código que você aprenderá aqui, você fará uma janela que, além de flutuante, podendo ser movida com o arrastar/soltar do mouse, ela será retrátil(palavra difícil), ou seja, ao se dar um duplo clque ela se abre e se fecha. Mãos à obra.
    Antes de mais nada precisamos de 2 resources do GM: um sprite e uma Fonte. Nosso sprite será a máscara que o objeto janela usará para ser arrastado, e a fonte para ser desenhada na janela. A sprite deve seguir as configurações da figura abaixo:
    GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 1º parte 23561357ml8
    e a fonte assim:
    GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 1º parte 18274577ey9
    Agora, criaremos uma pancada de scripts, que serão explicados passo a passo depois. Crie os scripts abaixo usando o nome em negrito.
    mouseover
    Código:

    x1 = argument0 //posição x inicial
    x2 = argument1 //posição x final
    x3 = argument2 //posição y inicial
    x4 = argument3 //posição y final
    if mouse_x >= x1 && mouse_x <= x2 && mouse_y >= x3 && mouse_y <= x4{return true;}
    else{return false;}
    janela
    Código:

    x1 = argument0;
    x2 = argument1;
    x3 = argument2;
    x4 = argument3;
    cor = argument4;
    aberta = argument5;
    txtAberta = argument6;
    txtFechada = argument7;
    tela(x1,x2,x3,17,cor);
    if aberta {
        textoJanela(x1,x2,txtAberta);
        tela(x1,x2+16,x3,x4+16,cor);
    }
    else {
        textoJanela(x1,x2,txtFechada);
        tela(x1,x2+16,x3,17,cor);

    tela
    Código:

    x1 = argument0
    x2 = argument1
    x3 = argument2
    x4 = argument3
    cor = argument4
    if cor == 0 then cor = c_white;
    //Desenha o fundo
    draw_set_color(make_color_rgb(74,74,132))
    draw_set_alpha(0.7)
    draw_rectangle(x1,x2,x1 + x3,x2 + x4,false)
    draw_set_color(cor)
    draw_set_alpha(1)
    //desenha as bordas
    draw_rectangle(x1,x2,x1 + x3,x2 + x4,true)
    draw_rectangle(x1 + 1,x2 + 1,x1 + (x3 - 1),x2 + (x4 - 1),true)
    return true;
    LPress
    Código:

    if move == false{
        move = true;
        d_x = x - mouse_x;
        d_y = y - mouse_y;
    }
    timer += 1
    alarm[0] = 20
    if timer > 1{
        if opened == true{
            opened = false;
            timer = 0;
            break;
        }
        else{
            opened = true;
            timer = 0;
            break;
        }
    }
    textoJanela
    Código:

    draw_set_color(c_white);
    draw_set_font(menubarra);
    draw_text(argument0+5,argument1+1,argument2);
    janelaDraw
    Código:

    if mouseover(x,x+largura,y,y+15){
        if mouse_check_button_pressed(mb_left){
            LPress();}
    }
    if mouse_check_button_released(mb_left){
            move = false;}
    if move = true{
        valor_x = abs(view_xview - (mouse_x + d_x));
        valor_y = abs(view_yview - (mouse_y + d_y));
    }
    x = view_xview + valor_x;
    y = view_yview + valor_y;
    janela(x,y,largura,altura,cor,opened,argument0,argument1);
    Se você observar, praticamente o que é necessário para se fazer a janela já foi escrito nos scripts. Agora só organizar algumas variáveis e fazer algumas chamadas em um evento draw e pronto. E ainda tem gente que reclama... :roll:
    Agora a parte mais difícil. Crie um objeto, chame-o de objJanela. Adicione 3 eventos, um Create, um Alarm0 e um Draw. Abaixo segue o código de cada um:
    Create
    Código:

    opened = false;
    timer = 0;
    cor = c_white;
    move = false
    d_x = 0;
    d_y = 0;
    valor_x = 0;
    valor_y = 0;
    largura = 220;
    altura = 180;
    image_xscale = 6;
    Alarm0
    Código:
    timer = 0;
    Draw
    Código:

    janelaDraw("Menu","HP - 100");
    Para evitarmos um erro, adicione no Sprite do objeto nosso sprite de nome mask.
    Crie uma room, adicione o objJanela na mesma e rode. Ao clicar na barra superior e arrastar, a janela se move. Ao clicar duas vezes, a janela se expande, mudando o texto na barra. Para que se apareça um texto na parte de baixo da janela, inclua este código no Draw do objJanela:
    Código:
    if opened {
        textoJanela(x,y+20,"HP - 100");
    }
    Agora ao se clicar duas vezes, o texto da barra é mostrado na parte inferior.
    Caso queria ver a coisa realmente legal, crie uma room grande, adicione uma view e um objeto que se move e... a janela acompanha a tela !!
    Já deu pra sacar que parece difícil demais, mas foi muito fácil. O tópico já está de um tamanho bom e eu muito cansado.
    Na próxima parte desta lição eu explicarei item por item dos scripts, e mudaremos o layout de nossa janela para usar imagens, dando mais vida à mesma.
    Até a próxima.

      Data/hora atual: Dom Nov 24, 2024 11:46 am