Conectar-se
Quem está conectado
24 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 24 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

[Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Sex 17 Ago 2012, 18:30
Aew galera!!!

Tenho 2 objetos quase iguais, só o create, image_index eo nome são diferentes mas o resto dos scripts são iguais, estou usando esse code no draw:

Código:

draw_sprite(sprite_index,image_index,x,y)

if position_meeting(mouse_x,mouse_y,self) and not mouse_check_button(mb_left)
  { 
  //Fundo da descrição
  draw_set_alpha(0.5) 
  draw_set_color(c_black)   
  draw_rectangle(x+32,y+32,x+(string_width(descricao))+42,y+(string_height(descricao))+42,0)

  //Borda e descrição
  draw_set_alpha(1)
  draw_set_color(c_white)
  draw_set_font(font_inv)
  draw_text(x+37,y+37,descricao)
  draw_rectangle(x+32,y+32,x+(string_width(descricao))+42,y+(string_height(descricao))+42,1)
  }
Queria saber porque o draw desenha sobre um item eo outro não se o depth são iguais, e tambem o que interferem no depth do draw


Última edição por Ufrarion em Qui 23 Ago 2012, 14:57, editado 1 vez(es)
avatar
Data de inscrição : 18/06/2012
Número de Mensagens : 117
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 7
Ver perfil do usuáriohttp://www.djurielrn.blogspot.com

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Sex 17 Ago 2012, 20:01
Tenta remontar todo o cenário, e coloca esse objeto por ultimo.

é como se o game maker fosse "gravando" dados a parti da ordem que você coloque os objetos na room.
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Sex 17 Ago 2012, 20:06
Obrigado por responder!

Eu estou fazendo um inventário, ele usa um código para criar os itens então reconfigurar seria complicado, não haveria um jeito de botar um "depth" no draw, por exemplo?
avatar
Data de inscrição : 18/06/2012
Número de Mensagens : 117
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 7
Ver perfil do usuáriohttp://www.djurielrn.blogspot.com

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Sex 17 Ago 2012, 20:10
Eu acho que, não existe um "Delph" no draw.
No caso esse objeto aí de cima seria a base de alguns inventório?
Tenta colocar no delph dele -5000
TALVEZ RESOLVA!

se não, add-me no msn uriel.rn@hotmail.com
Você me manda umas prints e a gmk para nois darmos uma olhada
Valeu!
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Dom 19 Ago 2012, 11:27
Ai é que tá o problema, se o draw desenha sobre um outro item identico e nao sobre esse, e sobre usar o depth seria ruim por causa que lida com varios itens e tambem desconheço um "depth" no draw, so foi um exemplo, mas deve alguma forma de dar uma "prioridade" para desenhar sobre os itens.
avatar
Data de inscrição : 24/10/2009
Número de Mensagens : 873
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 14

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://inprovise.blogspot.com/

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Dom 19 Ago 2012, 22:26
Vixe cara eu tava com um problema idêntico! E o engraçado é que em sua propria questão resolvi meu problema! Mesmo sem ver o que o user un00brn disse, decidi pegar a base de seu code e deu certo conforme ele disse!
Resultado:
Código:
if !position_meeting(mouse_x,mouse_y,self)
and not mouse_check_button(mb_left)
O segredo =!
if !position_meeting(mouse_x,mouse_y,canteiro)
Tente aí e boa sorte!

Veja meu tópico:
http://gmbr.forumeiros.com/t23681-objeto-no-mesmo-lugar-do-outro-pode-ajudar#176653
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Seg 20 Ago 2012, 09:32
Manual escreveu:position_meeting(x,y,obj) Returns whether at position (x,y) there is an instance obj. obj can be an object, an instance id, or the keywords self, other, or all.
Ufrarion escreveu:o create, image_index eo nome são diferentes
Desculpe a correção meio besta, mas acho que você quis dizer "sprite_index".
Pelo que vi do código do draw, não haveria necessisdade sequer de existir um sprite SE você não usasse position_meeting (que requer uma mask de colisão pra retornar verdadeiro). Isso dá o que pensar. Por exemplo, você pode ter colocado uma sprite num objeto e não ter colocado em outro. Isso explicaria o problema.

Seja como for, a melhor abordagem pro seu problema é a eliminação de erros. Primeiro, certifique-se que o objeto está na room. Não confie cegamente na tela de edição, pode ter alguma coisa destruindo o objeto logo no primeiro step. Pra isso, use o debug mode ou mande ele desenhar alguma coisa na tela o tempo todo (tipo um círculo numa área visível, é só pra resolver o problema, depois você tira isso - Ah, melhor ainda, desenhe um texto com as coordenadas dele, pra garantir que ele esteja na área visível).
Uma vez que ele esteja na tela, sem nada por cima dele, verifique se as condições estão sendo satisfeitas. Coloque um "show_message" dentro das condições. Se essa mensagem não aparecer, as condições não foram satisfeitas.

Ou use o debug mode. SEMPRE experimente o debug mode.
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Seg 20 Ago 2012, 14:32
#moisesBR

Estava vendo o seu problema e parece que tu presisava que um objeto não tivesse sobre o outro e no meu é que eu presiso que o mouse esteja em cima do item, mas mesmo assim obrigado por responder!

#saim

Eu estou usando o position_meeting para saber se o mouse está sobre o item, sobre o draw_sprite(sprite_index,image_index,x,y) é por estou usando o draw então é nessesario para aparecer a sprite, é isso ou nao entendi o que voce quis dizer =D

Aqui tem 2 screenshots do problema, veja que na area destacada o item fica sobre o que é texto desenhado:

Spoiler:

Spoiler:
avatar
Data de inscrição : 24/10/2009
Número de Mensagens : 873
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 14

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://inprovise.blogspot.com/

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Seg 20 Ago 2012, 14:54
Ah desculpe. Isso eu consegui aqui assim:
Código:
depth=y-1000101 depth=x-1000101
{/*Os draws que quero que esteja em cima ou embaixo*/}
Ou seja defini depth=y-1000000 pra ficar sempre acima!
Se eu quisesse sempre embaixo, colocaria: depth=y+1000000

avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Seg 20 Ago 2012, 15:00
Ufrarion escreveu:Eu estou usando o position_meeting para saber se o mouse está sobre o item, sobre o draw_sprite(sprite_index,image_index,x,y) é por estou usando o draw então é nessesario para aparecer a sprite, é isso ou nao entendi o que voce quis dizer
Você não entendeu o que eu quis dizer (e eu não consigo ver suas imagens, me desculpe).
O que acontece é que existe a possibilidade de você não ter definido uma sprite pro objeto (posso estar errado, mas como disse, não tenho como ver suas imagens). Nesse caso, position_meeting sempre retornará false. Aí, a condição (if position_meeting(mouse_x,mouse_y,self)) jamais será satisfeita e o que estiver dentro dela jamais acontecerá.
Uma forma de saber se é esse o problema é colocar um "show_message" dentro do "if". Aí, se a mensagem não aparecer, é sinal que a condição não está sendo satisfeita. Na verdade, existem duas condições a serem satisfeitas, mas acho que você não precisa testar pra saber se o botão do mouse está ou não apertado.

Se a condição não está sendo satisfeita, aí tem uma série de possibilidades:
- o objeto não está sendo desenhado na mesma posição da collision_mask
- o mouse não está na posição em que ele aparece na tela
- não tem objeto, embora DEVERIA ter
- etc.
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Seg 20 Ago 2012, 15:09
#moisesBR

Na verdade já tinha testado isso e não deu certo, e tambem se fosse o depth porque em algum item ele desenha o texto sobre um item e nao sobre o outro, e tambem muda os itens que ficam sobre a caixa de texto o que é mais estranho ainda

#saim

Entendi, mas as condições estão sendo cumprida porque a caixinha de texto está sendo desenhado o problema é que um item (objeto com sua sprite 32x32) fica em cima mas não cobre toda a mensagem (deve ser 120x40px), o que eu queria é que a caixinha de texto seja mostrada acima do objeto (item)

Sem querer ser intrometido porque nao consegue ver as imagens por causa do tipo do link, internet?[b]
avatar
Ranking : Nota B
Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Número de Mensagens : 635
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 22

Prêmios
   : 1
   : 0
   : 1
Ver perfil do usuário

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Seg 20 Ago 2012, 15:24
Ufrarion escreveu:#moisesBR

Na verdade já tinha testado isso e não deu certo, e tambem se fosse o depth porque em algum item ele desenha o texto sobre um item e nao sobre o outro, e tambem muda os itens que ficam sobre a caixa de texto o que é mais estranho ainda

#saim

Entendi, mas as condições estão sendo cumprida porque a caixinha de texto está sendo desenhado o problema é que um item (objeto com sua sprite 32x32) fica em cima mas não cobre toda a mensagem (deve ser 120x40px), o que eu queria é que a caixinha de texto seja mostrada acima do objeto (item)

Sem querer ser intrometido porque nao consegue ver as imagens por causa do tipo do link, internet?[b]

Teste fazer isto, Troque a ordem no draw exemplo :

Código:
draw_text(x,y,string)
draw_sprite(...)

Coloque :

Código:
draw_sprite(...)
draw_text(x,y,string)

Diga se surtiu algum efeito flw
avatar
Data de inscrição : 24/10/2009
Número de Mensagens : 873
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 14

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://inprovise.blogspot.com/

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Seg 20 Ago 2012, 15:35
É... tava fazendo uns testes aqui depois que postei acima e parece que algo está interfarindo conforme o saim disse. Ou seja algo está anulando outro!
Vou fazer uns testes aqui... mas não garanto nada. tente refazer soente este problema em um projeto separado e se der certo tente incluir no original!
Tõ fazendo assim resolvi muitos problemas atualmente so preciso incluir o que deu certo no que estou trabalhando(ideía de un00brn!)
Bota o depth=y-10000000000000! E só pra esse code!
tipo entre chaves só pra mostra que apenas esse específico code! Ex:
Código:
depth=y-1000101 depth=x-1000101
begin
//code (draw específico)
end// ou exit... break... pare... stopi... sei lá...

bem, paro por aqui. Não pretendo postar mais aqui a não ser que eu consiga solucionar o problema. Mas tô di oio no sinhô ho, ho, ho!
Boa sorte!

ps: Gostei da hud!

@saim: problemas em visualizar screens no fórum?
Tenho o mesmo problema de vez em quando!
Botão direito, abrir imagem em nova aba!!!
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Seg 20 Ago 2012, 15:45
Ufrarion escreveu:(...) porque nao consegue ver as imagens por causa do tipo do link, internet?
A internet daqui tem um bocado de sites bloqueados. O imageshack é um deles. Se você colocar no dropbox, tem uma grande chance de eu ver.
kapoty escreveu:Teste fazer isto, Troque a ordem no draw (...)
É o que eu estava prestes a sugerir, mas o código dele já está assim. Vou tentar alguma outra conexão (mais tarde) pra entender o que pode estar errado.
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Seg 20 Ago 2012, 19:38
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Seg 20 Ago 2012, 23:05
Pelo que entendi das imagens, você põe o mouse sobre o amuleto e dá tudo certo, mas ao por o mouse sobre o elmo, o escudo fica sobre a descrição. É realmente um problema de depth - a depth do elmo é maior que a do escudo. Não, calma. Não é exatamente a depth. É a ordem dos eventos.
Primeiro acontece o draw_event do elmo, depois do escudo, depois do amuleto. Aí, se você põe o mouse no amuleto, os outros objetos já foram desenhados e não ficam por cima da descrição dele.
Quando põe o mouse por cima do elmo, o draw_event do escudo ainda não aconteceu, o escudo ainda não foi desenhado, naquele step. Aí aparece a descrição, sem nada embaixo nem em cima (mas não na tela. Ainda não). Aí, vem o draw do escudo, que é só carimbar a sprite na tela. E o programa vai e carimba a sprite na tela, por cima de tudo.
DEVE ser isso.

Solução: Em algum evento (pode ser o draw, mas eu sugiro algum step), verifique se o mouse está sobre o objeto. Se estiver, a depth deve ser uma unidade menor que o normal, de outra forma, fica no valor normal (tipo -1 e 0).
avatar
Data de inscrição : 06/06/2010
Número de Mensagens : 222
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3
Ver perfil do usuário

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Seg 20 Ago 2012, 23:41
Eu fiz um teste assim:

Código:
if position_meeting(mouse_x,mouse_y,self) and not mouse_check_button(mb_left)
  { 
  depth=-9999999999
  //Fundo da descrição
  draw_set_alpha(0.5) 
  draw_set_color(c_black)   
  draw_rectangle(x+32,y+32,x+(string_width(descricao))+42,y+(string_height(descricao))+42,0)

  //Borda e descrição
  draw_set_alpha(1)
  draw_set_color(c_white)
  draw_set_font(font_inv)
  draw_text(x+37,y+37,descricao)
  draw_rectangle(x+32,y+32,x+(string_width(descricao))+42,y+(string_height(descricao))+42,1)
  }
  else {depth=-999}
 
draw_sprite(sprite_index,image_index,x,y)
Mas continuou o bug, agora percebi que só da isso quando eu abre e fecho o inventário (e os itens são deletados quando fechado e recriados quando aberto) e vou botar aqui o gmk do inv talvez assim facilite um pouco:

https://docs.google.com/open?id=0B3LC7hHm2MU6c2VTSVNTS212R00
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Ter 21 Ago 2012, 08:43
AGORA você mudou o draw_sprite pro final... não faça isso.
Eu sei, a impressão que dá é que, se não fizer isso, a sprite vai ser desenhada numa depth de -999 e o resto do código em -9999999999. Não é bem assim, a depth não muda DURANTE o draw_event (pra ser sincero, eu não sei QUANDO ela muda, suponho que seja entre o end_step e o draw).
O que vai acontecer se você definir a depth no draw_event é que isso só vai ter efeito no próximo step. Independente da posição, no código, da função draw_sprite.
Aí você diz "ah, mas então eu vou passar um step inteiro com o mouse sobre a figura e MANTENDO o bug?" Sim, vai sim, e só quem souber que o bug existe é que vai perceber. Um step não é exatamente uma eternidade, se você não estiver procurando bugs, não vai notar.

Claro que eu posso estar errado e o bug não ter nada a ver com isso. Vou tentar baixar sua engine, mas se conseguir, vai ser à noite (e, ainda estamos no começo da manhã, então vai demorar um pouco...).
avatar
Ranking : Sem avaliações
Data de inscrição : 08/06/2008
Número de Mensagens : 2314
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 100

Prêmios
   : 3
   : 0
   : 1
Ver perfil do usuáriohttp://blackcapapps.blogspot.com.br/

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Ter 21 Ago 2012, 10:43
Seu principal problema é que os próprios itens estão desenhando as descrições.
Quando se pensa em HUD (informações para o jogador) é obrigatório criar um objeto separado com o depth mais negativo do jogo assim ele desenhará por cima de tudo.

Então, faça outro objeto para as descrições.
Não um pra cada mas apenas um para todos que vai identificar em qual o mouse esta e desenhar sua descrição.
avatar
Data de inscrição : 24/10/2009
Número de Mensagens : 873
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 14

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://inprovise.blogspot.com/

Re: [Resolvido]Draw desenha sobre um obj mas não sobre o outro

em Ter 21 Ago 2012, 11:36
Eu baixei também e até me assustei! Não me admira não achar o bug, apesar de ter ficado legal a hud, acho que se vc usasse apenas um ou dois objet/sprite pra representa-las, não precisaria de tantos codes para fazer desenhos! Tal como o cabeção disse.

Ps: como se ativa a hud?
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum