Uma variavel em todos objetos

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

Uma variavel em todos objetos

Mensagem por Phillipe em Qua 26 Jan 2011, 19:43

Ae,agluem podia me ajudar??Tava querendo saber como que eu poderia checar uma variavel em todos os objetos.
Simplificando:

Se os inimigos nao estiverem atacando nem recuando,acontece tal ação...

Código:
if obj_inimigo.recuar=false
if obj_inimigo.atacar=false
{
bla bla bla
}

Eu fiz isso,só que ele só checou 1 dos inimigos! Rolling Eyes

Phillipe

Número de Mensagens : 324
Idade : 21
Data de inscrição : 15/07/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Uma variavel em todos objetos

Mensagem por Licht em Qua 26 Jan 2011, 19:47

Isso aconteceu só com um único OBJETO (contando todas as intâncias dele na room) do inimigo ou com uma só INSTÂNCIA (Uma só instância de um objeto inimigo) deles?

Licht

Ranking : Sem avaliações
Número de Mensagens : 1217
Idade : 18
Data de inscrição : 26/04/2010
Reputação : 34
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://lightsoftworks.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Uma variavel em todos objetos

Mensagem por Markituh em Qua 26 Jan 2011, 19:50

Colega, sabe o que são IDs? Se não, melhor se dedicar a aprender o que é. Ele só checa um objeto pois o GM tenta alcançar a mais recente instância do objeto inimigo(ou a mais próxima, não sei), o meio mais viável é você fazer esse esquema quando colidir, ou até mesmo usar instance_nearest.
Código:
var ini;
ini = instance_nearest(x+20,y,obj_inimigo)
if ini.recuar = false
if ini.atacar = false
{
bla bla bla
}
instance_nearest(x,y,obj) é uma função que retorna a instância mais próxima nos pontos x e y, de tal objeto.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Uma variavel em todos objetos

Mensagem por Phillipe em Qua 26 Jan 2011, 20:04

Acho que nao daria muito certo checar a distancia,pq cada um fica em uma posição aguardando o proximo turno e depois de atacar eles voltam para a mesma posição Sad

Phillipe

Número de Mensagens : 324
Idade : 21
Data de inscrição : 15/07/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Uma variavel em todos objetos

Mensagem por Markituh em Qua 26 Jan 2011, 20:15

Tipo cara, não tem como fazer por obj_inimigo, pois há vários deles na room e esses vários são as instâncias do mesmo. Não sabe o que é uma instância? Google it; YoyoGames it; GameMakerWiki it. O que você tem que fazer? Tem que pegar a ID da instância utilizando os conceitos de distância, o instance_rearest, e armazenar a instância que te atacou numa variável, sendo assim facilmente daria para fazer operação assim que ele voltasse para o lugar.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Uma variavel em todos objetos

Mensagem por Henrique_GJ em Qua 26 Jan 2011, 20:31

tente de alguma forma criar um variavel global, vai facilitar e muito seu trabalho, pode crer

Henrique_GJ

Número de Mensagens : 1344
Idade : 19
Data de inscrição : 30/12/2009
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://sitedosjogos.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Uma variavel em todos objetos

Mensagem por vinians em Qua 26 Jan 2011, 20:47

Amigão, o jeito mais fácil que conheço seria assim:

with (all)
{
if (obj_inimigo.recuar == false) && (obj_inimigo.atacar == false)
{
//Faça algo aqui
}
}

Com este código é garantido que todas as instâncias serão pocessadas. É o poder do "with"
Flws!

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Uma variavel em todos objetos

Mensagem por Henrique_GJ em Qua 26 Jan 2011, 21:34

vinnians, isso não vai dar certo pois de qualquer forma ainda existem multiplos obj_inimigos, olhA AÊ

pergunta, o que significa ==? eu sempre uso =. vc usa ==, tem diferença ou nao?

Henrique_GJ

Número de Mensagens : 1344
Idade : 19
Data de inscrição : 30/12/2009
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://sitedosjogos.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Uma variavel em todos objetos

Mensagem por vinians em Qua 26 Jan 2011, 21:38

Henrique_GJ escreveu:vinnians, isso não vai dar certo pois de qualquer forma ainda existem multiplos obj_inimigos, olhA AÊ

pergunta, o que significa ==? eu sempre uso =. vc usa ==, tem diferença ou nao?
Geralmente eu uso bastante esse tipo de código e sempre dá certo, pois ao encontrar a condição ele vai realizar a tarefa que nosso amigo deseja e vai continuar olhando em todas as instâncias.
Quando ao sinal '==' eu uso sempre que estou testando uma condição. O GM aceita o '=' separado, mas como uso bastante C e o GM permite essa sintax eu a utilizo no GM tambem, pois separa a atribuição da relação de igualdade.
Flws!

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Uma variavel em todos objetos

Mensagem por Markituh em Qua 26 Jan 2011, 21:45

Tem. = é usado para atribuir algo, == é usado para comparar algo. Dê uma sacada em Bitwise operators no Google ou procure sobre Expressions na Wiki da Yoyogames. E o código do vinians não parece estar errado, pois com o with(all) dá-se a fazer muita coisa.

Edit:
Bom, já que o vinians respondeu, o == cai como comparação nas demais linguagens, mas o GM reconhece tanto = como ==.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Uma variavel em todos objetos

Mensagem por Phillipe em Qui 27 Jan 2011, 15:53

Aew,vinians,funcionou o código!Brigadão ai e a todo mundo que se empenhou em ajudar! Very Happy

Phillipe

Número de Mensagens : 324
Idade : 21
Data de inscrição : 15/07/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Uma variavel em todos objetos

Mensagem por Conteúdo patrocinado Hoje à(s) 23:58


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