Window skin

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Window skin

Mensagem por devcc em Sex 19 Jul 2013, 18:03

Pessoal estou com uma duvida para desenhar Window skin  para fazer um menu  como aqueles do RPG maker.

Minha duvida!
Tem como eu pegar um " pedaço" em algum  lugar de uma " sprite" e desenhar somente aquele pedaço ?

Exemplo:

Eu tenho a imagem:

, então eu quero desenhar só o azul... é possovel ?

devcc

Número de Mensagens : 35
Data de inscrição : 07/07/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por Gonçalves em Sex 19 Jul 2013, 18:20

Sim, é. Dê uma procurada na ajuda do Game Maker por draw_sprite_part.

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por Rodrigo Santiago em Sex 19 Jul 2013, 18:23

sim:
Código:

draw_sprite(sprite,subimg,x,y) //Desenho normal
draw_sprite_stretched(sprite,subimg,x,y,w,h) //desenha alongando

draw_sprite_ext(sprite,subimg,x,y,xscale,yscale,rot,color,alpha) //Desenha com mais efeitos, como rotação, alpha e cor.
draw_sprite_stretched_ext(sprite,subimg,x,y,w,h,color,alpha) //Desenha completo + alongamento.

draw_sprite_part(sprite,subimg,left,top,width,height,x,y) //Desenha parte da sprite****Aki é o seu****
draw_sprite_part_ext(sprite,subimg,left,top,width,height,x,y,xscale,yscale,color,alpha) //Parte+efeitos

//Agora um mais completo
draw_sprite_general(sprite,subimg,left,top,width,height,x,y,xscale,yscale,rot,c1,c2,c3,c4,alpha) //Tudo aki

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por devcc em Sex 19 Jul 2013, 22:04

Vamos lá: Seguinte.
O que eu quero fazer é desenhar um menu.





No caso eu quero desenhar uma parte da sprite:
Exemplo: vejana imagem que eu selecionei em azul um perdaço dela.
então eu quero  desenhar um quadrado de 400px x 400 px
usando a imagem
então eu pego a parte que está  dentro do Azul  faço um ' traço'
e então arredondo com a parte que está dentro do vermelho. que são  os ' cantos'
e o preenchimento é a parte que fica dentro do verde.  eu tendei de todas as formas com draw_sprite_general e não aconteceu um resultado satisfatório.


Última edição por devcc em Sex 19 Jul 2013, 22:13, editado 1 vez(es)

devcc

Número de Mensagens : 35
Data de inscrição : 07/07/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por Isaque Onix em Sex 19 Jul 2013, 22:20

draw_sprite_part faz exatamente isso, mais você tem que usar varias vezes... dá mesmo um pouco de trabalho criar esse tipo de ground/GUI com sprites unicos

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por Rodrigo Santiago em Sex 19 Jul 2013, 22:22

Lembre-se que as partes você corta como se fosse um quadrado, cada um é uma parte.
Mais acho melhor vc fazer isso com tiles de bg
Mais você pode colocar o script usado?

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por devcc em Sex 19 Jul 2013, 22:41

Você poeria citar um exemplo em códigos ? por favor

OBS:
No caso.. usando 'draw_sprite_part '
eu teria que  desenhar o mesmo varias vezes, um na frente do outro ?

então se eu quero uma linha de 400px terei de usar draw_sprite_part  uma 20 vezes ?

Não to sacando...

e no caso no bg tile como faz ?

Rodrigo Santiago escreveu:Lembre-se que as partes você corta como se fosse um quadrado, cada um é uma parte.
Mais acho melhor vc fazer isso com tiles de bg
Mais você pode colocar o script usado?

No caso o meu script atual eu fiz usando o ' raw_roundrect_color ' mas a cor é feia de mais... deu até tristeza no resultado.

devcc

Número de Mensagens : 35
Data de inscrição : 07/07/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por Isaque Onix em Sex 19 Jul 2013, 22:57

Script:
Código:
//Nome do script: DSP()
//Uso: DSP(x,y,Sprite_index,image_index,width,height,px,py)
//By: Isaque Onix
draw_sprite_part(argument2,argument3,argument6*argument4,argument7*argument5,argument4,argument5,argument0,argument1)

use algo assim:
Código:
DSP(x,y,sprite_index,image_index,16,16,0,0)
os 2 ultimos argumentos são as linhas horizontais e verticais do sprite, faça testes para se adaptar e não use números muito altos neles

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por devcc em Sex 19 Jul 2013, 23:10

Eu achei um código aqui.. que talvez funcione. Mas vou testar esse seu codigo primeiro. pq se der certo. eu uso ele.

ma o que achei é esse aqui:
//Regulador de tamanho para imagem
// By Tedi

//Edite com as informaçoes desejadas
tam_x=32 //Tamanho X desejado
tam_y=32 //Tamanho Y desejado

//Script
tam_org_x=sprite_get_width(sprite_index) //Verifica o tamanho X
tam_org_y=sprite_get_height(sprite_index) //Verifica o tamanho Y
argument0=tam_x*100/tam_org_x //Descobre a porcentagem X
argument1=tam_y*100/tam_org_y //Descobre a porcentagem Y
image_xscale=argument0/100 //Muda o X do sprite_index
image_yscale=argument1/100 //Muda o Y do sprite_index

devcc

Número de Mensagens : 35
Data de inscrição : 07/07/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por Isaque Onix em Sex 19 Jul 2013, 23:17

esses scripts ( o meu e esse do Tedi ) fazem coisas completamente diferentes, o meu, desenha uma parte do sprite, e o do Tedi desenha o sprite inteiro com um tamanho pre-definido...

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por devcc em Sex 19 Jul 2013, 23:36

Exatamente, veja o raciocínio, Eu desenho a sprite com seu script e estico ela com o script dele. assim eu não irei precisar desenhar vários tracinhos até forma uma linha de 400px, tendeu ?

devcc

Número de Mensagens : 35
Data de inscrição : 07/07/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por Isaque Onix em Sex 19 Jul 2013, 23:47

só pra constar, isso pode até dar certo, mais você vai ter que mecher muito em ambos os scripts, o script dele almenta sprites...

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por devcc em Sab 20 Jul 2013, 00:31

então cara, tentei durante 1 hora sem parar selecionar a parte branca da sprite e não conseguir com esse código.. por favor.  tem como vc me dizer como manipular as posição onde será cortado a imagem ?
EDIT

HÀAA era um sinal de + que estava faltando... agora deu certo!!!!!


Okay: então... agora como fazer para 'esticar' esse pedaço que desenhei ?

devcc

Número de Mensagens : 35
Data de inscrição : 07/07/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por Isaque Onix em Sab 20 Jul 2013, 00:43

bom, já que você ainda não intendeu intão vou falar tudo!
Codigo:
Código:
draw_sprite_part(sprite,subimg,left,top,width,height,x,y)
sprite: sprite que você deseja cortar, pode ser qualquer sprite!
subimg: imagem do sprite, tem que ser do mesmo sprite que você escolheu!
left: é a posição horizontal do corte
top: posição vertical do corte
width: tamanho horizontal (largura) do corte
height: tamanho vertical (altura) do corte
x: posição horizontal na room
y: posição vertical na room

agora só configurar do seu jeito, meu script retornava quadrados exatos, partia o sprite em varios, daí era só definir quais quadrados usar com os ultimos 2 argumentos, mais estude bem o código que você vai intender.

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por devcc em Sab 20 Jul 2013, 01:00

Sim eu já consigo fazer as linhas, mas tem um porém, eu tive que fazer o seguinte:

Código:
DSP(200,200,sprite_index,image_index,16,16,+5,+0)

DSP(216,200,sprite_index,image_index,16,16,+5,+0)

DSP(232,200,sprite_index,image_index,16,16,+5,+0)

Isso gerou um traço de 48 pixel de traço... seria mais interessante um redimencionamento da parte da imagem desenhada.

obs: eu já sei como funciona seu script. e é EXATAMENTE o que eu estava buscando.
agora falta só a questão de aumentar o tamanho na horizontal do desenho.

devcc

Número de Mensagens : 35
Data de inscrição : 07/07/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por Isaque Onix em Sab 20 Jul 2013, 01:12

olha só, usa o for, exemplo:

for(i=0; i<8; i+=1){
DSP(232+(i*16),200,sprite_index,image_index,16,16,+5,+0)
}

i=0 // inicializa em 0, como qualquer variavel
i<8// o mesmo que if(i<8 )
i+=1// não preciso explicar né ?'-'
a variavel i vai almentando até chegar a 8 (é um loop)
232+(i*16)
desenha na posição x 232+i*16, e como a variavel i vai almentando em um loop... desenha o sprite repetidament, ex:
232+i*16= 232+16
232+i*16= 232+32
232+i*16= 232+48
232+i*16= 232+64 , etc...

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por devcc em Sab 20 Jul 2013, 01:23

o_O... Okay, o principal problema é que será a primeira vez que irei usar FOR, então seja paciente comigo. e eu dou graças a Deus que você estar respondendo todas as mensagens.

Vamos lá:

esse FOR vai ficar desenhando minha sprite até o infinito ?

Como eu devo por aqui na pratica ?

devcc

Número de Mensagens : 35
Data de inscrição : 07/07/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por Isaque Onix em Sab 20 Jul 2013, 01:32

o for, nesse caso, vai desenhar até chegar a 232+(8*16) ou 232+128, se você diminuir o almentar o 8 do comando do for, a "linha" de sprites vai diminuir em 16, o código que eu coloquei lá em cima mostra como fazer uma linha horizontal, para vertical, nesse caso seria 200+(i*16), claro que tem que colocar aonde desenha o a posição y.

Ps: posso sair a qualquer momento, mais assim que eu entrar, se ninguem tiver respondido eu respondo!

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por devcc em Sab 20 Jul 2013, 01:44

Putz, tu é realmente bom em GML!

eu teria feito ums 200 linhas ! tu resolveu e, 2!

Bom, obrigado mesmo por sua ajuda. Mas amanha é dia de viajar ( vou viajar) Vou fechar o maker agora. mas assim que eu terminar o menu, posto aqui para tu ver o resultado.

devcc

Número de Mensagens : 35
Data de inscrição : 07/07/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por Isaque Onix em Sab 20 Jul 2013, 01:46

okok mais eu sou iniciante em gml kkk um dia ainda vou ser bom :p Boa sorte, e qquer coisa... é só falar!

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Window skin

Mensagem por Conteúdo patrocinado Hoje à(s) 08:00


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum