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

Nenhum

Ver toda a lista


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

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

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

instancia mais proxima

em Dom 23 Nov 2008, 21:12
olha só pessoal, preciso q meu boneco quarde em uma variavel qual é a instancia que esta mais perto e que tenha a variavel: pode_ir = true
avatar
Data de inscrição : 29/05/2008
Número de Mensagens : 422
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://felipejoys.webnode.com

Re: instancia mais proxima

em Seg 01 Dez 2008, 11:40
obj_mais_perto = instance_nearest(x,y,all)
if (obj_mais_perto.pode_ir == true)
{
//Realize isso
}

Acho que é isso.
avatar
Data de inscrição : 03/08/2008
Número de Mensagens : 1156
Insígnias de JAM :

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

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

Re: instancia mais proxima

em Seg 01 Dez 2008, 14:04
não, isso nao funciona, porque ele axaria o objeto mais proximo e se nao tivese o pode_ir == true ele não continuaria a buscar
avatar
Data de inscrição : 29/05/2008
Número de Mensagens : 422
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://felipejoys.webnode.com

Re: instancia mais proxima

em Seg 01 Dez 2008, 14:55
O jeito então é fazer isso aí com todos os objetos que tem a variável pode_ir (em vez de all, fazer um teste com cada uma), ver qual é o mais próximo comparando as distâncias, e finalmente verificando o pode_ir.

Se for só um objeto, troque "all" por esse objeto.
avatar
Data de inscrição : 03/08/2008
Número de Mensagens : 1156
Insígnias de JAM :

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

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

Re: instancia mais proxima

em Seg 01 Dez 2008, 16:15
como faço para testar todos os objetos q tem a var pode_ir == true ?
avatar
Data de inscrição : 24/05/2008
Número de Mensagens : 2417
Insígnias de JAM :

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

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

Re: instancia mais proxima

em Seg 01 Dez 2008, 16:53
faz algo como:
no objeto que vai checar:

a = 0
repeat istance_number(objeto)
{
lol[a] = 0
a += 1
}

aa = 0
with (objeto)
{
if pode_ir = true
{
checador.lol[aa] = id
checador.aa += 1
}
}

agora para checar o mais perto:
with (ii = 0; ii < istance_count(objeto); ii+=1)
execute_string('dist'+string(ii)+ '= point_distance(x,y,lol[0])')

omais_perto = min(dist1,dist2,dist3,dist4,dist5,dist6.......) depende de quantos tem..

acredito que funcione, mas dai o ideal seria vc saber quantas istancias tem e fazer um 'min'
que eu usei ali para cada quantidade.
ex:
se for so 4:
omais_perto = min(dist1,dist2,dist3,dist4)

se for so 2:
omais_perto = min(dist1,dist2)

FLW!
avatar
Data de inscrição : 03/08/2008
Número de Mensagens : 1156
Insígnias de JAM :

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

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

Re: instancia mais proxima

em Seg 01 Dez 2008, 17:03
claro, eu fiz um esquema quase igual ao seu, mas o problema é na hora de checar,

mas axo q tive uma ideia usando for

vlw!
Convidad
Convidado

Re: instancia mais proxima

em Sab 13 Dez 2008, 20:47
O seu problema está sendo o fato da variável existir ou não no objeto. O esquema que o kinking fez pode funcionar perfeitamente se adicionarmos a função:

variable_local_exists()

Ela checa se a variável existe ou não. Portanto ficaria:

Código:
obj_mais_perto := instance_nearest(x,y,all);
global.controlador := id;
executar_codigo := false;

with (obj_mais_perto)
begin
  if variable_local_exists(pode_ir) then global.controlador.executar_codigo := true;
end;

if executar_codigo = true then
begin
  if obj_mais_perto.pode_ir = true then
  begin
    //Realize isso
  end;
end;
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