Conectar-se

Esqueci minha senha

Últimos assuntos
» [Enquete] Concursos GMBR
por Willy Ontem à(s) 19:49

» CR - Concurso Relâmpago!!
por Willy Ter 18 Jul 2017, 17:11

» 3D:como rodar a camara em horizontal?
por Cambalinho Ter 18 Jul 2017, 15:09

» [Resolvido] pode explicar a d3d_set_projection()?
por Cambalinho Ter 18 Jul 2017, 11:28

» Escrever a resposta certa muda de room
por PedroX Seg 17 Jul 2017, 21:46

» Nota de esclarecimento - GMBR voltou!
por Mentos e Coca-cola Seg 17 Jul 2017, 17:05

» [CR] Campo Minado
por Katerp Dom 16 Jul 2017, 23:09

» [CR] The Bazooka Cat
por Tedi Ripper Dom 16 Jul 2017, 23:01

» Como melhorar um protótipo(Design)
por lolandoplayer Dom 16 Jul 2017, 22:56

» Diminuir velocidade ao arrastar objeto
por LwysF Dom 16 Jul 2017, 17:33

Quem está conectado
20 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 19 Visitantes

Lighter

[ Ver toda a lista ]


O recorde de usuários online foi de 324 em Ter 05 Out 2010, 13:36
Estatísticas
Temos 12700 usuários registrados
O último usuário registrado atende pelo nome de Eduardo Gomes

Os nossos membros postaram um total de 220919 mensagens em 30412 assuntos

[Resolvido] IDs somem e dá erro

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

[Resolvido] IDs somem e dá erro

Mensagem por moisesBR em Ter 25 Set 2012, 11:50

Queria resolver um problema constante... eu faço uso de IDs, para poder indicar a instância mais proxima,
tipo eu declaro no create:
ID_obj=instance_nearest(x,y,obj)

Mas no steep, quando essas IDs somem da room(destruidas), costuma dar o seguite erro:

Error in code at line...
image_angle = point_direction(x,y,ID_iobj.x,ID_obj.y)//m
^
at position... Unknown variable x

No meu caso, um game de guerra que to preparando dentre outros que tem essa função... o erro exato:
create:
Código:
//declarando o alvo
ID_inimigo=instance_nearest(x,y,obj_soldado_am)
steep:
Código:
ID_inimigo=instance_nearest(x,y,obj_soldado_am)


image_angle = point_direction(x,y,ID_inimigo.x,ID_inimigo.y)//m
ID_inimigo=instance_nearest(x,y,obj_soldado_am)

timer+=round(5) if timer=10*room_speed
{
timer=0 with (instance_create(x+10, y, obj_tiro2)){
image_angle = other . image_angle;
direction = image_angle+random(10);speed = 10;}
}
O erro:
___________________________________________
ERROR in
action number 1
of Step Event
for object obj_soldado_vd:

Error in code at line 6:
image_angle = point_direction(x,y,ID_inimigo.x,ID_inimigo.y)//m
^
at position 47: Unknown variable x


Última edição por moisesBR em Dom 30 Set 2012, 13:37, editado 1 vez(es)
avatar
moisesBR

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário http://inprovise.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Resolvido] IDs somem e dá erro

Mensagem por luiz_eldorado em Ter 25 Set 2012, 12:07

É só colocar uma condição no código, assim:
Código:
ID_inimigo=instance_nearest(x,y,obj_soldado_am)

if ID_inimigo!=noone {
image_angle = point_direction(x,y,ID_inimigo.x,ID_inimigo.y)//m
}
ID_inimigo=instance_nearest(x,y,obj_soldado_am)

timer+=round(5) if timer=10*room_speed
{
timer=0 with (instance_create(x+10, y, obj_tiro2)){
image_angle = other . image_angle;
direction = image_angle+random(10);speed = 10;}
}
avatar
luiz_eldorado

Ranking : Nota C
Notas recebidas : C
Data de inscrição : 30/07/2011
Número de Mensagens : 928
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 1

Ver perfil do usuário http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: [Resolvido] IDs somem e dá erro

Mensagem por theguitarmester em Ter 25 Set 2012, 12:11

um Nego véio Como Você com esses Erros! geek


Coloque este Code, é seu code com a adição de se caso Existe as Instâncias obj_soldado_am executar Code.

Código:
ID_inimigo=instance_nearest(x,y,obj_soldado_am)

if instance_exists(obj_soldado_am) //Parte que Adicionei
{
image_angle = point_direction(x,y,ID_inimigo.x,ID_inimigo.y)//m
ID_inimigo=instance_nearest(x,y,obj_soldado_am)

timer+=round(5) if timer=10*room_speed
{
timer=0 with (instance_create(x+10, y, obj_tiro2)){
image_angle = other . image_angle;
direction = image_angle+random(10);speed = 10;}
}

}
avatar
theguitarmester

Ranking : Sem avaliações
Notas recebidas : B
Data de inscrição : 28/02/2012
Número de Mensagens : 1908
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1

Prêmios
   : 2
   : 2
   : 1

Ver perfil do usuário http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Re: [Resolvido] IDs somem e dá erro

Mensagem por moisesBR em Ter 25 Set 2012, 12:34

theguitarmester e Eldorado, Funcionou, e quase deu certo...

podem me explicar onde eu estou errando?

um Nego véio Como Você com esses Erros!
.......
kkkkkkkkkkkkkkkkkk

aff erro persiste....:
ERROR in
action number 1
of Step Event
for object obj_soldado_vd:

Error in code at line 6:
image_angle = point_direction(x,y,ID_inimigo.x,ID_inimigo.y)
^
at position 47: Unknown variable x

vejam por si mesmos: http://dl.dropbox.com/u/77569588/meus%20projetos/projeto%20guerra.gmk


Última edição por moisesBR em Ter 25 Set 2012, 12:50, editado 1 vez(es)
avatar
moisesBR

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário http://inprovise.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Resolvido] IDs somem e dá erro

Mensagem por Need 90 em Ter 25 Set 2012, 12:45

O código ainda está errado :
Código:


if instance_exists(obj_soldado_am) //Parte que Adicionei
{
ID_inimigo=instance_nearest(x,y,obj_soldado_am)
image_angle = point_direction(x,y,ID_inimigo.x,ID_inimigo.y)//m
ID_inimigo=instance_nearest(x,y,obj_soldado_am)

timer+=round(5) if timer=10*room_speed
{
timer=0 with (instance_create(x+10, y, obj_tiro2)){
image_angle = other . image_angle;
direction = image_angle+random(10);speed = 10;}
}

Do que adianta pegar o id do inimigo e depois checar se ele existe?
avatar
Need 90

Ranking : Nota B
Notas recebidas : D+A+B
Data de inscrição : 16/01/2012
Número de Mensagens : 787
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário http://need90games.blogspot.com.br

Voltar ao Topo Ir em baixo

Re: [Resolvido] IDs somem e dá erro

Mensagem por moisesBR em Ter 25 Set 2012, 12:52

percebi... mas ainda não sei resolver... aff

dê uma olhada:
http://dl.dropbox.com/u/77569588/meus%20projetos/projeto%20guerra.gmk
avatar
moisesBR

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário http://inprovise.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Resolvido] IDs somem e dá erro

Mensagem por saim em Ter 25 Set 2012, 13:31

@moisesBR escreveu:podem me explicar onde eu estou errando?
O seu código permite buscar uma id de um objeto que não está na room. Não é o create event (que é dispensável), é o step mesmo. Se o objeto não está na room, a função vai retornar "noone", que não possui as corrdenadas x e y.
Ah, "step" é com um "e" só. Escrever "steep" me passa uma impressão estranha, porque quer dizer "íngreme", o que não faz sentido nenhum.

O código do Need 90 está ok, só falta fechar um colchete no final. Mas tem alguns comandos desnecessários, herdados do código original. Abaixo, uma versão um pouco mais limpa, com os comentários onde foi feita a limpeza:
Código:
if instance_exists(obj_soldado_am) { // só faz alguma coisa se houver inimigo na tela
   var ID_inimigo; // você só precisa da variável nesse código, então pode fazê-lo uma "var"
   ID_inimigo = instance_nearest(x, y, obj_soldado_am);
   image_angle = point_direction(x, y, ID_inimigo . x, ID_inimigo . y);
   // ID_inimigo = instance_nearest(x, y, obj_soldado_am) -->pode cortar essa linha, ela só repete o que já foi feito pouco acima.

   timer += 5; // se fosse uma variável, valeria a pena arredondar, mas "5" é uma constante
   if (timer = 10 * room_speed) {
      timer = 0;
      with (instance_create(x + 10, y, obj_tiro2)) {
         var ang;
         ang = other . image_angle + random(10); // o mesmo valor a ser usado pra direção e image_angle
         image_angle = ang;
         direction = ang;
         speed = 10;
         }
      }
   }
avatar
saim

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 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 3

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [Resolvido] IDs somem e dá erro

Mensagem por moisesBR em Ter 25 Set 2012, 17:54

Obrigado! Vou precisar disso nos meus projetos, tava usando à risca, sem compreender...

Resolvido!

Quando tiver algo concreto, eu posto.
avatar
moisesBR

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário http://inprovise.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Resolvido] IDs somem e dá erro

Mensagem por theguitarmester em Ter 25 Set 2012, 18:31

@Saim escreveu:O código do Need 90 está ok,
Código de Need??? Fui eu Quem Alterei os Códigos(TheGuitarMester)!

Do que adianta pegar o id do inimigo e depois checar se ele existe?
você não pensou o Seguinte: e se caso não Existe o Objeto Procurado, ele irá voltar uma ID Inexistente(acho que é 0 ou -4), e daí você irá usa-la para pegar variaveis de uma Instância Inexistente, como? Entendeu? Eu Fiz o Mesmo Erro que o MoisesBR fez, não demorei muito para resolver, apenas adicionei algo como isto: IDpegada>0 Código Prossegue.
avatar
theguitarmester

Ranking : Sem avaliações
Notas recebidas : B
Data de inscrição : 28/02/2012
Número de Mensagens : 1908
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1

Prêmios
   : 2
   : 2
   : 1

Ver perfil do usuário http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Re: [Resolvido] IDs somem e dá erro

Mensagem por saim em Qua 26 Set 2012, 10:25

@theguitarmester escreveu:
@Saim escreveu:O código do Need 90 está ok,
Código de Need??? Fui eu Quem Alterei os Códigos(TheGuitarMester)!
Eu achei a alteração do Need 90 melhor: primeiro verifica se vale a pena pegar a ID, depois pega a ID. Ele levou em conta a possibilidade de não ter a instância na room, sim.
Se eliminar a primeira linha do seu e alterar a ordem das primeiras linhas dentro do "if", e eliminar um dos colchetes (aquele entre "timer+=round(5)" e "timer=0") eu digo que seu código também é bom.
avatar
saim

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 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 3

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [Resolvido] IDs somem e dá erro

Mensagem por theguitarmester em Qua 26 Set 2012, 10:58

Vendo de cima, pensei que o Código do Need era Igual ao Meu, e que ele estava só falando sobre ele: "Do que adianta pegar o id do inimigo e depois checar se ele existe?", pensei que ele estivesse falandop do meu porque ele copiou do meu(que era a cópia do original), até tem ainda o "//parte que adicionei", mas vejo que são diferentes, Desculpe.

Se eliminar a primeira linha do seu e alterar a ordem das primeiras linhas dentro do "if", e eliminar um dos colchetes (aquele entre "timer+=round(5)" e "timer=0") eu digo que seu código também é bom.
você quer dizer 'puxar a 1°linha de code para baixo do instance_exists, e o Restodo Code Deixei Igual ao Original, afinal, rlr queria apenas a solução, e não que Melhorásse a organização, e retirasse o Impreciso(mas poderia ter feito).
avatar
theguitarmester

Ranking : Sem avaliações
Notas recebidas : B
Data de inscrição : 28/02/2012
Número de Mensagens : 1908
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1

Prêmios
   : 2
   : 2
   : 1

Ver perfil do usuário http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Re: [Resolvido] IDs somem e dá erro

Mensagem por PedroX em Qua 26 Set 2012, 13:19

Se todo o código depender da existência da instância, então você pode parar logo de cara:

Código:
ID_inimigo = instance_nearest(x, y, inimigo);
if (ID_inimigo==noone) exit; //para por aqui mesmo

Obs: Dê uma olhada nos códigos do saim, porque o seu código está mesmo bagunçado.

Até mais!


Última edição por Pedrø em Dom 30 Set 2012, 17:06, editado 1 vez(es)

PedroX

Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6036
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [Resolvido] IDs somem e dá erro

Mensagem por moisesBR em Dom 30 Set 2012, 13:19

Obrigado! etá arresolvídio! Realmente o do saim tá 100%, e é ele que estou usando ajudou muito os comentários!

Testei o de todos, mas o que não deu nenhum erro foi o do saim mesmo, sabem como sou, testei de todos modos lembráveis no momento.

estou falando do saim, mas sem desmerecer os outros pois, tamos juntos e se o sayadin não aparecesse (kkkkk), nois ia quebrar bem mais a cuca! E... dim dia nois conseguia! será que seria já de cabelos brancos? kkkkkk

@Pedro: boa ideia!
Valeu!!!
avatar
moisesBR

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário http://inprovise.blogspot.com/

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