[Resolvido]Cannot compare arguments

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

[Resolvido]Cannot compare arguments

Mensagem por Ufrarion em Ter 16 Ago 2011, 16:55

Aew galera!!!

Esse "Cannot compare arguments" tá me encomodando bastante no meu jogo, estou usando esse code no CREATE do obj. "draw":


Código:
xx = 160
yy = 32
xslot=10
yslot=10

inv=ds_grid_create(xslot,yslot)

file_open_read("inv.txt")
ds_grid_read(inv,file_read_string())
file_close()

for (i = 0; i < xslot; i += 1)
{
for (j = 0; j < yslot; j += 1)
{
if (ds_grid_get(draw.inv,j,i) != 0)
  {instance_create(j*32,i*32,ds_grid_get(draw.inv,j,i))
  }}}

E no STEP dos outros obj.:

Código:
if position_meeting(mouse_x,mouse_y,self) and mouse_check_button_pressed(mb_left)
    {ds_grid_set(draw.inv,x/32,y/32,0) seguir = true}

if seguir = true
{x = mouse_x -16
y = mouse_y -16}

if mouse_check_button_released(mb_left) and seguir = true
{
seguir = false
move_snap(32,32)

if ds_grid_get(draw.inv,x/32,y/32) = 0
{ds_grid_set(draw.inv,x/32,y/32,object_get_name(object_index))}
     
else

{sair = false;
for (i = 0; i < 10; i += 1)
{
  if (sair) break;
for (j = 0; j < 10; j += 1)
{
  if (sair) break;
    if (ds_grid_get(draw.inv,j,i) = 0)
  {
      ds_grid_set(draw.inv,j,i,object_get_name(object_index))
      x = j*32+draw.xx
      y = i*32+draw.yy
      sair = true;
  }}}}}

if mouse_check_button_pressed(mb_right) and position_meeting(mouse_x,mouse_y,self)
{scr_item_mouse_rightp()}

Ai da esse erro:

Código:

___________________________________________
ERROR in
action number 1
of Create Event
for object draw:

Error in code at line 16:
  if (ds_grid_get(draw.inv,j,i) != 0)
                                    ^
at position 35: Cannot compare arguments.
Me ajudem porfavor porque tá complicado arrumar isso e já está atrasando demais meu game. Agradeço desde já!!! ;)


Última edição por ufrarion em Dom 21 Ago 2011, 01:58, editado 2 vez(es)

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Super Maker em Ter 16 Ago 2011, 17:34

Verifica se não são os parenteses ou quantidade de vírgulas.
E depois dessa linha tem que ter as chaves com comandos dentro.
Exemplo...
Código:
{x=x}

Super Maker

Número de Mensagens : 646
Idade : 33
Data de inscrição : 09/07/2011
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por JV Justino em Ter 16 Ago 2011, 17:43

Esse erro ocorreu uma vez quando tentei checar uma variável numérica com valores em string.

Tente usar assim:
Código:
if (ds_grid_get(draw.inv,j,i) != "")
Assim, ao invés de checar numericamente, checará em string.

Espero ter ajudado!
flw

JV Justino

Ranking : Nota A
Número de Mensagens : 619
Idade : 19
Data de inscrição : 07/12/2010
Notas recebidas : A+A
Reputação : 20
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Pit Bull em Ter 16 Ago 2011, 17:43

Isso acontece porque o 0(zero) tem que estar assim ("0") sem o parenteses.
O que foi o erro: para o gm , você está dizendo que o ds_grid_get(draw.inv,j,i) é falso mais na verdade ele e diferente de 0(zero).

coloque "0"

Pit Bull

Número de Mensagens : 630
Idade : 21
Data de inscrição : 31/08/2010
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://leninja.com.br

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Ufrarion em Ter 16 Ago 2011, 19:01

Super Maker

Não entendi o que você quis dizer...

joao vitor jv e Pit Bull

botei o "0" no lugar, mas continua dando o mesmo erro, eu uso esse code para pegar um valor numa ds_grid e cria-lo. estou usando esse code aqui para botar os valores na ds_grid:


Código:
ds_grid_set(draw.inv,2,0,"object1")
ds_grid_set(draw.inv,3,0,"object16")

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Jiraya em Ter 16 Ago 2011, 19:43

esse tipo de erro ocorre, quando se tenta compara uma string com um valor real

então tente colocar isso
Código:

inv=ds_grid_create(xslot,yslot)

file_open_read("inv.txt")
ds_grid_read(inv,file_read_string())
file_close()

for (i = 0; i < xslot; i += 1)
{
for (j = 0; j < yslot; j += 1)
{
if  real(ds_grid_get(inv,j,i) != 0)
  {instance_create(j*32,i*32,ds_grid_get(draw.inv,j,i))
  }}}

Jiraya

Ranking : Nota A
Número de Mensagens : 1134
Data de inscrição : 20/03/2010
Notas recebidas : A+A
Reputação : 108
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

https://www.facebook.com/seito.washiro.7

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Ufrarion em Ter 16 Ago 2011, 21:14

Jiraya

Cara, continua dando o mesmo erro :/

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por saim em Ter 16 Ago 2011, 22:00

O Jiraya colocou confundiu o parêntese. Tente substituir:
if real(ds_grid_get(inv,j,i) != 0)
por
if real(ds_grid_get(inv,j,i)) != 0

Edit:
Ehm... Que função é "file_read_string()"? Não achei no manual. Talvez fosse "file_text_read_string()"?

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Ufrarion em Ter 16 Ago 2011, 22:12

saim

Botei do jeito que você escreveu mas deu esse erro:


Código:

___________________________________________
ERROR in
action number 1
of Create Event
for object draw:

Error in function real().

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por saim em Ter 16 Ago 2011, 22:38

Ah, agora que vi o que você está colocando na ds_grid! O que você está colocando são realmente strings. São só aquelas duas linhas, né?
Tente tirar os parênteses (gravando as ids dos objetos, ao invés dos nomes) ou substituir a linha mencionada por:
Código:
if (is_real(ds_grid_get(draw.inv,j,i))

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Ufrarion em Ter 16 Ago 2011, 23:08

saim

Esse code não verfica se na variável é diferente de 0, e gravar as IDs não iria funcionar porque os objetos não foi previamente criados e ai não teria ID (eu acho)

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Pit Bull em Ter 16 Ago 2011, 23:15

Tenta isso:(outra tentativa)
Código:
if !(ds_grid_get(draw.inv,j,i)){}

Se não funcionar esse script que eu fiz substitui o ds_grid_get por ds_grid e arruma ela.

O que eu entendi do seu erro foi que você quer saber se ele existe, se ele não existir você cria algo não é?

Mais agora o que eu não entendi foi o instance_create , está totalmente errado porque ele serve para criar um objeto e não criar uma ds_list.

Edit:Uma dica é usar variáveis em vez de ds_list por ser muito mais fácil de pegar,mudar e deletar valores.
Crie scripts que se chamem add_inventario e del_inventario e neles coloquem os códigos que mudam as variáveis.

Pit Bull

Número de Mensagens : 630
Idade : 21
Data de inscrição : 31/08/2010
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://leninja.com.br

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Ufrarion em Qua 17 Ago 2011, 02:12

Pit Bull

Esse code não verifica se tem um 0 na ds_grid, porque a ds_grid está criada todos os espaços com zeros (valor padrão), o instance_create está correto porque ele é para criar o objeto que está contido na ds_grid não para criar outra coisa.

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por saim em Qua 17 Ago 2011, 10:06

Se o valor a que você se refere for o nome do objeto, ele terá, sim, uma id. TUDO tem ids - sprites, sons, alarms, objetos e instâncias. A id da instância é diferente da do objeto. Você pode escrever códigos como "instance_create(x, y, 0)", desde que não delete o primeiro objeto gerado ao criar o jogo (já até tive alguns bugs com isso).

Seu problema é que parte da sua grid está com valores de string e a outra parte, com o valor (real) 0, portanto ao passar pela grid toda, as comparações jamais atenderão aos dois critérios - a menos que você cheque por algo como "is_real()" ou "is_string()".

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por diego333 em Qua 17 Ago 2011, 13:39

faz isso
logo apos criar a grid coloca
Código:

ds_grid_clear(draw.inv,"");

e na parte de comparar

Código:

if (ds_grid_get(draw.inv,j,i) != "")

diego333

Número de Mensagens : 84
Data de inscrição : 06/10/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Ufrarion em Qua 17 Ago 2011, 13:54

diego333

Continuou dando o mesmo erro :/

Tópico

Galera vou postar a engine, ai fica mais fácil para arrumar antes que o tópico tenha 10 páginas Smile


Link <------------

Obs: A engine tá meia bagunçada as cordenadas ta desreguladas então pode acontecer algumas coisas esquisitas ;)

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por diego333 em Qua 17 Ago 2011, 14:22

pq vc não tenta , ao invés de guardar o nome do objeto , guardar o id do objeto ?

diego333

Número de Mensagens : 84
Data de inscrição : 06/10/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por MeGusta em Qua 17 Ago 2011, 14:46

tenta isso
Código:
if string(ds_grid_get(draw.inv,j,i)) != string("0")

MeGusta

Número de Mensagens : 75
Data de inscrição : 04/08/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Ufrarion em Qua 17 Ago 2011, 15:17

Galera, tentem me ajudar com a engine que está no meu penúltimo post meu, porque já tentei de tudo que é jeito e nada funciona, as vezes a primeira comparação funciona mas depois não, por isso tentem com a minha engine talvez facilite a resolução do problema. Smile

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Jiraya em Qua 17 Ago 2011, 15:21

envie o arquivo inv.txt, também, se não fica complicado simular o que esta acontecendo no seu computador.

Jiraya

Ranking : Nota A
Número de Mensagens : 1134
Data de inscrição : 20/03/2010
Notas recebidas : A+A
Reputação : 108
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

https://www.facebook.com/seito.washiro.7

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Ufrarion em Qui 18 Ago 2011, 12:24

Está aqui o conteúdo do inv.txt:

Código:
590200000A0000000A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F03F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

Mensagem por Ufrarion em Dom 21 Ago 2011, 01:57

Galera, consegui arrumar o bug! comecei a usar somentes números na grid e funcionou. Obrigado a todos que me ajudaram nesse bug infernal!!!

Ufrarion

Número de Mensagens : 222
Data de inscrição : 06/06/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Resolvido]Cannot compare arguments

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


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