Pegar uma ID de um objeto entre vários iguais

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

Pegar uma ID de um objeto entre vários iguais

Mensagem por Zero. em Dom 16 Nov 2014, 14:37

Tem varios obj_qualquer na room, eu quero armazenar a ID de um desses objs aleatoriamente.
Algo como :
identificador = instance_random(obj_qualquer)
Isso ai teoricamente pegaria a ID de um obj desses obj_qualquer aleatoriamente.
Como faço isso ? tô viajando aqui

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Pegar uma ID de um objeto entre vários iguais

Mensagem por matheusco em Dom 16 Nov 2014, 14:46

Depende se você cria o objeto por instance_create ou colocando ele na room. Dá uma olhada no tutorial:

http://www.tutoriaisgamemaker.com.br/2014/09/como-descobrir-id-instancia-objeto.html

matheusco

Número de Mensagens : 395
Idade : 24
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: Pegar uma ID de um objeto entre vários iguais

Mensagem por Thyago em Dom 16 Nov 2014, 14:53

. Você pode fazer assim.

. Coloque em create do próprio objeto

Código:
global.escolhido[object_index]=noone;

e na hora de escolher:

Código:
while(global.escolhido[object_index]=noone){
with(object_index){
if(irandom(instance_number(object_index))=1){
global.escolhido[object_index]=id;
}
}
}

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

Re: Pegar uma ID de um objeto entre vários iguais

Mensagem por Zero. em Dom 16 Nov 2014, 16:10

Eu to fazendo isso :

Código:
for (i = 0; i < instance_number(obj_ground_t2); i += 1)
                {
                    ww[i] = instance_find(obj_ground_t2,i);
                }
                _obj = ww[irandom(instance_number(obj_ground_t2))]

é válido ?

Após o teste, as vezes ocorre este erro :
___________________________________________
FATAL ERROR in
action number 1
of Alarm Event for alarm 0
for object obj_homem_areia_i:

Push :: Execution Error - Variable Index [0,2] out of range [1,2] - -7.ww(100091,2)
at gml_Object_obj_homem_areia_i_ObjAlarm0_1 (line 71) -              
_obj = ww[irandom(instance_number(obj_ground_s3))]

Já sei que é porque está indo além do máximo dessa array, mas eu n sei porque :/

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Pegar uma ID de um objeto entre vários iguais

Mensagem por Willy em Dom 16 Nov 2014, 19:44

Você pode usar ds_list!

Primeiro, declare uma ds_list e armazene sua identificação em uma variável global.
Código:
global.ListaDeID = ds_list_create();

Agora, no create dos objetos que você quer sortear aleatoriamente, você coloca:
Código:
ds_list_add(global.ListaDeID,id);

Agora, quando quiser escolher um objeto qualquer, execute este pequeno código:
Código:
N = irandom(ds_list_size(global.ListaDeID)); //Retorna um número relativo a quantidade de itens da lista.
ID = ds_list_find_value(global.ListaDeID,N); //Pega o valor da lista na posição N.

Agora, o id de um obj qualquer está armazenado em "ID".

Dúvidas é só falar.
Flws... blz

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Pegar uma ID de um objeto entre vários iguais

Mensagem por Zero. em Dom 16 Nov 2014, 21:15

da para usar por ds_list e por for, pra mim (por causa de conhecimento xD) prefiro o for, eu consegui ajeitar meu código lá em cima, o problema é que os objs são criado e deletados constantemente, ai se ele pegava um que ia ser deletado da erro, mas ja contornei isto, vlw Smile

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Pegar uma ID de um objeto entre vários iguais

Mensagem por Conteúdo patrocinado Hoje à(s) 18:17


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