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

Esqueci-me da senha

Últimos assuntos
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


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

5 participantes

Ir para baixo

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

Mensagem por joaoneto Dom 22 Fev 2009, 22:38

Como dito na aula anterior, estarei explicando como funcionam os scripts usados e agora usaremos imagens ao invés de desenhar a janela com código, para dar um ar mais profissional a mesma.

Vamos por Script:
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;}
Observe que fazemos a verificação se a posição X e Y do mouse se encontra dentro dos valores passados. Como são quatro valores, se forma um retangulo de validação.

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);

Este é bem simples. Ele faz chamada no Script Tela, passando os parametros que ele recebeu. Observe a validação no aberta, que indica que devemos desenhar uma janela menor quando fechada, e o texto que será mostrado nos dois casos.

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;
Este é o script que desenha a janela, azul com borda branca. Observe que é apenas uma combinação de Funções de Draw, cores, parametros e alpha.

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;
    }
}
Este é o script responsável por duas coisas importantes:

  • O Duplo Clique
  • Saber se a janela está se movendo e gravar os valores X e Y da posição do mouse.


textoJanela
Código:

draw_set_color(c_white);
draw_set_font(menubarra);
draw_text(argument0+5,argument1+1,argument2);
Este simplesmente desenha o texto, como falado no script tela, ele possui já algumas definições prontas apenas para evitar se reescrever toda vez que se for escrever um texto na tela.

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);
Este é o Script que faz a mágica. Ele valida se o mouse está sobre a borda superior usando o script mouseover, valida se o botão esquerdo do mouse está pressionado. Se sim, ele invoca o Script LPress, que é responsável por mudar a posição da janela e do duplo Clique. Aqui um detalhe importante: a função deve ser a mouse_check_button_pressed, ou o duplo Clique não funcionará. Caso o botão seja solto, no evento mouse_check_button_released, cancelamos o movimento da janela.
Na próxima validação, se a variável move está true significa que há movimento, e fazemos os cálculos como acima. Um detalhe aqui no qual eu já recebi críticas foi a redundância de se remover os valores X e Y da view durante o movimento e depois acrescentá-los novamente ao se desenhar a janela.
O motivo disso é muito simples. Ao se mudar a posição da view, durante o movimento do herói ou outro objeto ao qual ela esteja associada, O MENU DEVE DAR A IMPRESSÃO DE PARADO, OU SEJA, SUA POSIÇÃO X E Y IRÁ MUDAR DE ACORDO COM A X E Y DA VIEW.
E por final, chamamos o script janela, passando todos os parametros necessários que foram colhidos no nosso objeto.

Eu sei, parece bem complexo. Mas estude o código, você verá que é bem simples.
Agora vem a má notícia pra quem adorou esta aula: Para se usar as Imagens das Skins do ragnarok, nós só usaremos dois( 2 ) dos seis( 6 ) scripts acima. Porque? por um motivo bem simples: Como as imagens da Skin do ragnarok vem pré-montada, só criaremos dois sprites, um do menu fechado e outro aberto, e faremos a mudança entre eles. A desvantagem desse tipo de Menu é que para cada menu criado, você terá que ter 2 Sprites da janela.
Para o teste eu estarei usando esta Skin:
GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte Basewinbg

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

Vai ser bem simples. Antes de mais nada crie dois Sprites, adicione os sprites ae de cima e os chame de status_aberta e status_fechada. Agora crie um objeto e chame-o de objJanelaRag.
Adicione nele 3 eventos, um Create, um Alarm0 e um Draw.
Agora siga os scripts abaixo para cada um:

Create
Código:
opened = false;
timer = 0;
move = false
d_x = 0;
d_y = 0;
valor_x = 0;
valor_y = 0;
Alarm0
Código:
timer = 0;
Draw
Código:
if mouseover(x,x+280,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;
if opened {
    draw_sprite(status_aberta,0,x,y);
}
else {
    draw_sprite(status_fechada,0,x,y);
}
Uma pequena observação: no mouseover há dois valores fixos, 280 e 15. Estes valores são respectivamente a largura e a altura que responderá ao mouseover, devendo ser mudadas se a janela for mais larga ou estreita e se a barra for mais fina ou espessa.
Coloque o objeto na room e rode.
Bem mas simples com certeza. A vantagem do uso de imagens padronizadas como as Skins do Ragnarok, é que podemos criar um sistema de Skins para o nosso game, bastando criar um script que valida um determinado valor de diretório e Lê as respectivas imagens no mesmo.
Para desenhar valores dentro da mesma agora, está bem fácil, mas lembre de mudar a cor da fonte e o tamanho.
Por hoje é só. Na próxima lição, e com certeza por enquanto a ultima de GM RPG, falaremos sobre atributos do herói.
Até lá.
joaoneto
joaoneto

Data de inscrição : 08/05/2008
Reputação : 7
Número de Mensagens : 36
Prêmios : GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.deploy.net.br

Ir para o topo Ir para baixo

GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte Empty Re: GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte

Mensagem por Dancity Dom 22 Fev 2009, 22:50

Poxa mto bom... Tudo tah bem explicadinho... Ainda não tow com tempo de testar mas parece ser ótimo, vai ajudar bastante!
Flw vlw pelo tuto Very Happy
Dancity
Dancity

Games Ranking : Nota A

Notas recebidas : A
Data de inscrição : 11/01/2009
Reputação : 8
Número de Mensagens : 1339
Prêmios : GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte Empty Re: GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte

Mensagem por Lucilon Seg 23 Fev 2009, 12:03

Enquanto a JRPG tá desativada to vendo seus tutoriais por aqui, e esse ai impressionou mesmo o.O

Tudo bem explicado, vai me ajudar muito!

Ainda descobri a função mouse over, tava precisando dela pra outro script Happy

Vlw!
Lucilon
Lucilon

Data de inscrição : 22/02/2009
Reputação : 0
Número de Mensagens : 1
Prêmios : GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte Empty Re: GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte

Mensagem por tavares199551 Qua 03 Mar 2010, 21:22

eu queria saber aonde vai ficar os malse over , janela , tela ,Lpress , textojanela , janela draw se num flo onde iria ficar isso nem nesse e nem no otro topico
tavares199551
tavares199551

Data de inscrição : 07/02/2010
Reputação : 0
Número de Mensagens : 47
Prêmios : GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte Empty Re: GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte

Mensagem por jp_away Qua 03 Mar 2010, 21:28

tavares199551 escreveu:eu queria saber aonde vai ficar os malse over , janela , tela ,Lpress , textojanela , janela draw se num flo onde iria ficar isso nem nesse e nem no otro topico

isso são scripts que ele está chamando em outros scripts e no Draw xD
jp_away
jp_away

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 05/09/2009
Reputação : 6
Número de Mensagens : 860
Prêmios : GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.jpgamesweb.xpg.com.br/

Ir para o topo Ir para baixo

GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte Empty Re: GM RPG - 3º Lição - Janelas Flutuantes estilo Ragnarok - 2º parte

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos