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

Nenhum

Ver toda a lista


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

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

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

Pegar uma ID de um objeto entre vários iguais

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
avatar
Data de inscrição : 10/08/2014
Número de Mensagens : 395
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuáriohttp://www.tutoriaisgamemaker.com.br

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

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
avatar
Ranking : Nota B
Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Número de Mensagens : 1092
Insígnias de JAM :

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

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

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

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;
}
}
}
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

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

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

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

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 :/
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1844
Insígnias de JAM :

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

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

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

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
avatar
Data de inscrição : 19/08/2010
Número de Mensagens : 1299
Insígnias de JAM :

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

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

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

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