Botar nome do objeto numa variavel

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

Botar nome do objeto numa variavel

Mensagem por Convidad em Qui 10 Fev 2011, 16:40

Ae galera tamo ai denovo enchendo o saco mas............

Como nome mesmo ja diz, como se faz para o nome de um objeto ser atribuido a uma variavel??????????

Flw galera!!!


Última edição por makerloko em Qui 10 Fev 2011, 18:24, editado 2 vez(es)

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Datebanhawn em Qui 10 Fev 2011, 16:51

kara eu num tenho certeza mais acho que é impossível
e é por isso que eu sempre ponho por exemplo para uma bola no objeto eu ponho :
obj_bola
ai a variavel bola pode ser usada

Datebanhawn

Número de Mensagens : 182
Data de inscrição : 29/01/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Convidad em Qui 10 Fev 2011, 16:58

@Datebanhawn

Nada é impossivel, kkkkkkkkkkkkk mas falando sério
eu quero tipo, obj_bola quando colidir,o valor da variavel global.obje seja o nome do objeto, que é obj_bola endendeu?

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por vinians em Qui 10 Fev 2011, 17:05

No Evento de Colisão
Código:

global.obje = id;

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por GameMakerTutoriais em Qui 10 Fev 2011, 17:07

Se você quiser o nome (string) e não o id, você vai usar duas coisas então. A primeria é a constante de objeto object_index, e a segunda é uma função chamada object_get_name(). Supondo que a instância bola queira o nome do objeto que colidiu com ela, o código seria assim (no evento Collision):

Código:
nome_de_quem_colidiu_comigo := object_get_name(other.object_index);

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Convidad em Qui 10 Fev 2011, 17:29

@vinians

ID eu acho que ia ficar com o objeto especifico da Id, e qu preciso do nome do obj. Vlw mesmo a ajuda!

@Ninja8086

Era exatamente isso que eu queria vlw mesmo funcionou direitinho,
Vlw a todos!!!

EDIT:

Eu esqueci no fim, eu queria usar a sprite do objeto do valor da global.equipad em outro objeto tem como?

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por GameMakerTutoriais em Qui 10 Fev 2011, 19:17

Você quer usar a sprite do objeto que pegou o nome, certo?

Haverão inconveniências sérias. A primeira é que objeto é uma classe de instância, ou seja, pode ser qualquer instância do jogo. Então não há garantias de que o sprite armazenado será o correto.

Nesse caso é altamente recomendável usar o id a menos que esteja usando apenas uma instância por objeto (o que não justificaria, certo? pois você quer pegar um sprite de um objeto igual, que já exista).

Use o id pra armazenar o sprite.

Se mesmo assim você ainda quiser tentar usar o nome, tente usar isso aqui no objeto que quer colocar o sprite:

Código:
for (a := 0; a < instance_count; a += 1)
begin
      if object_get_name(instance_id[a].object_index) = global.equipad then
      begin
            sprite_index := instance_id[a].sprite_index;
            break;
      end;
end;


Ele retornará o sprite da primeira instância encontrada cuja classe de objeto seja a mesma da variável que você citou. Boa sorte.

Quando fizer outra pergunta, crie outro tópico pois eu quase não vi seu edit. O edit não atualiza o tópico como nova mensagem, então crie outro. Smile

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Shadow10 em Qui 10 Fev 2011, 20:17

Se o caso for não precisar escrever o nome todo do objeto e ter todos os objetos atribuidos em variaveis, faz assim.

Cria um objeto que vai carregar a variavél de todos os outros.
Exemplo:
obj_contole_total
Código:
global.obj_jogador = 1;
global.obj_parede = 2;
global.obj_piso = 3;

Pronto! Agora quando for invocar um objeto faz isso pela variavél correspondente a ele.

Um detalhe eu não fiz isso pra ver se da certo, mas vele a pena você tentar.

Shadow10

Ranking : Nota C
Número de Mensagens : 429
Data de inscrição : 07/11/2010
Notas recebidas : C
Reputação : 19
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Super Games em Qui 10 Fev 2011, 21:32

Como assim Makerloko?Você quer que o valor da global.equipad faça exatamente ok?Porque não entendi seu Edit...

Super Games

Ranking : Nota D
Número de Mensagens : 2704
Idade : 18
Data de inscrição : 10/06/2010
Notas recebidas : D
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Convidad em Qui 10 Fev 2011, 21:49

@Ninja8086

eu não sei onde botar esses codigos, entao ja que conplica do jeito que eu quero nao tem como pegar a sprite do obj e atribuir a outro sem problemas, de um jeito mais facil???

@Shadow10

não entendi nada do seu jeito de resolver isso mas vlw ae

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Anderson3d em Qui 10 Fev 2011, 22:38

Perdão mas, alguém pode citar um exemplo de funcionalidade para se atribuir nome de objetos à variáveis globais?
Tipo, com que interesse isso seria usado?

Não é mais fácil usar aquele sistema:
nome do objeto = obj_bola
se for verificar variaveis dele usa:
obj_bola.variavel


Anderson3d

Ranking : Nota A
Número de Mensagens : 1479
Idade : 33
Data de inscrição : 15/02/2009
Notas recebidas : A - A
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

http://www.indiegamebr.com

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Convidad em Qui 10 Fev 2011, 22:52

@Anderson3d

É que eu quero usar a sprite do objeto que está na variavel global em outro objeto, se tu poder me ajudar......... pode ser sem presisar usar a var. global ok? flw galera amanha entro aki no topico denovo

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Shadow10 em Qui 10 Fev 2011, 23:58

Se for assim é mais fácil você usar "sprite_index = sprite".
Ou é bom você esplicar exatamente o que você ta querendo fazer no seu jogo.scratch

Shadow10

Ranking : Nota C
Número de Mensagens : 429
Data de inscrição : 07/11/2010
Notas recebidas : C
Reputação : 19
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Anderson3d em Sex 11 Fev 2011, 00:50

makerloko escreveu:@Anderson3d

É que eu quero usar a sprite do objeto que está na variavel global em outro objeto, se tu poder me ajudar......... pode ser sem presisar usar a var. global ok? flw galera amanha entro aki no topico denovo

oxi, se o objeto se chamar obj_bola não é só fazer

if obj_bola.sprite_index = x {faz alguma coisa}

obs: x é o nome do sprite. Se for interno é só digitar o nome do sprite, se for externo basta digitar o nome da var global.

Anderson3d

Ranking : Nota A
Número de Mensagens : 1479
Idade : 33
Data de inscrição : 15/02/2009
Notas recebidas : A - A
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

http://www.indiegamebr.com

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por GameMakerTutoriais em Sex 11 Fev 2011, 00:58

Que confusão! O problema foi que, se vocês não leram tudo, o dono do tópico fez duas perguntas em posts diferentes.

makerloko escreveu:eu não sei onde botar esses codigos, entao ja que conplica do jeito que eu quero nao tem como pegar a sprite do obj e atribuir a outro sem problemas, de um jeito mais facil???

Você pode guardar o index do sprite em uma variável para poder usar depois. Supondo que a instância bola queira o index do sprite de quem colidiu com ela, ficaria assim (no evento Collision):

Código:
global.sprite_de_quem_colidiu_comigo := other.sprite_index;

Depois disso, quando for trocar o sprite (de qualquer objeto) para o sprite que você capturou na variável, você use esse código no objeto que quer trocar:

Código:
sprite_index := global.sprite_de_quem_colidiu_comigo;

Anderson3d escreveu:Perdão mas, alguém pode citar um exemplo de funcionalidade para se atribuir nome de objetos à variáveis globais?
Tipo, com que interesse isso seria usado?

Não é mais fácil usar aquele sistema:
nome do objeto = obj_bola
se for verificar variaveis dele usa:
obj_bola.variavel

É mais fácil (mas ele havia pedido o nome). Foi depois que eu entendi o porque. Mas há vantagem e desvantagem. Aí depende do objetivo. Tendo o nome do objeto em mãos é mais fácil de trabalhar com as propriedades do objeto usando o nome do que com o id.

Note que eu estou dizendo o id de objeto (usado pelo projeto) e não o id de instância (usado dentro da room).

Se você quiser criar um objeto em tempo real no jogo e atribuir à ele características de outros objetos já criados, você poderia usar o nome para pegar as características de outros objetos pois não há uma palavra-chave que se possa usar para referenciar um objeto do projeto (pois se você usar por exemlo obj_blablabla isso fará referência à instância e não ao objeto do projeto).

Um exemplo. Um script para retornar o id do objeto (no projeto) usando o nome dele (string) como argumento. Assim: pega_id_projeto('obj_personagem')

Código:
for (n := 1; n <= 1000; n += 1)
begin
    if object_exists(n) then
    begin
        if object_get_name(n) = argument0 then return (n);
    end;
end;

return (0);

Daí a gente poderia usá-lo assim:

Código:
global.sprite_padrao_do_obj_bola := object_get_sprite(pega_id_projeto('obj_bola'));

Ficou complicado?

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Convidad em Sex 11 Fev 2011, 19:39

@Ninja8086

Eu botei isso no colisao do obj
global.equipad := other.sprite_index;

e no event DRAW do obj que eu quero que fique com a sprite
sprite_index := global.equipad

Aparece que nao existe essa sprite, o valor que esta ficando na global.equipad é: 90, mas pq 90 não era para ficar com o nome da sprite??

Eu tambem,bem usei esse codigo no colisao:
global.equipad = sprite_get_name(other.sprite_index)

ai sim o valor da global.equipad ficou com o nome da sprite do obj e continuei usando o mesmo codigo no DRAW mas continua dando erro que não existe a sprite, mas se o nome esta certo, como a sprite não existe??

eo codigo que eu to usando é mesmo pra usar no DRAW???

espero a ajuda galera!!!!!!!!!!!

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Shadow10 em Sex 11 Fev 2011, 21:52

Isso ja aconteceu comigo. Deixa eu ver se eu consigo te esplicar...

Os sprites são criados e o sistema do Game Maker deixa gravado na memória da engine o ID dos sprites sendo reconhecidos por números.
Uma ideia que eu te dou é contar do topo da lista de sprites, escolher o sprite que você quer e colocar em número o ID dele.
E tem mias se você apagar um sprite e criar outro pra substituir ele,
esse novo ja vai entrar com um novo ID.
Exemplo:
você cria 3 sprites.
spr_1(ID = 0), spr_2(ID = 1) e spr_3(ID = 2).
Se você apagar o spr_2 e criar outro pra substituir ele, o ID dele ja não derá mais 1 passará a ser 4.
Entendeu agora?

O programa grava tudo que entra nas pastas e não liga se foi excluido,
continua contando em ordem crescente.

Até mais!

Shadow10

Ranking : Nota C
Número de Mensagens : 429
Data de inscrição : 07/11/2010
Notas recebidas : C
Reputação : 19
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Convidad em Sex 11 Fev 2011, 22:43

@Shadow10

aaaaaaaah endendi! mas então não tem um jeito de fazer isso??? eu achei que esse problema relativamente simples mas deu nisso......
E ai alguem me ajuda!!!!!!!!!!!!

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Shadow10 em Sab 12 Fev 2011, 23:41

Me passa a engine que eu te devolvo resolvido.

Shadow10

Ranking : Nota C
Número de Mensagens : 429
Data de inscrição : 07/11/2010
Notas recebidas : C
Reputação : 19
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Convidad em Dom 13 Fev 2011, 02:18

Desculpa ae só pude entrar agora Sad

A engine que eu to usando ta um pouco numa e um pouco numa outra, juntar tudo ia ser fodz

mas não tem como tu me ajudar por aki mesmo, ai se conseguir resolver as outras pessoas podem ler aki como resolver Smile

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Shadow10 em Seg 14 Fev 2011, 20:33

makerloko escreveu:Desculpa ae só pude entrar agora Sad

A engine que eu to usando ta um pouco numa e um pouco numa outra, juntar tudo ia ser fodz

mas não tem como tu me ajudar por aki mesmo, ai se conseguir resolver as outras pessoas podem ler aki como resolver Smile


Isso mesmo.
Eu sempre faço isso, resolvo no meu PC e divulgo nos tópicos onde estava o erro.
Assim todos matam a curiosidade de saber o que realmente as pessoas estam pedindo.

Shadow10

Ranking : Nota C
Número de Mensagens : 429
Data de inscrição : 07/11/2010
Notas recebidas : C
Reputação : 19
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por GameMakerTutoriais em Ter 15 Fev 2011, 13:19

e no event DRAW do obj que eu quero que fique com a sprite
sprite_index := global.equipad

Se você colocar alguma coisa no Draw, o game maker deixa de mostrar o desenho do objeto e passa a obedecer às instruções do evento Draw. Então tire esse código do Draw e passe-o para o Step. Se você souber usar o Trigger ou User Defined, pode colocá-lo lá também.

Aparece que nao existe essa sprite, o valor que esta ficando na global.equipad é: 90, mas pq 90 não era para ficar com o nome da sprite??

Não. Esse número é um número de identificação de recurso. Recurso é tudo aquilo que você adiciona ao projeto para ser usado depois. Pode ser imagem, sprite, background, som, música, ou qualquer arquivo. Portanto ele é um número mesmo.

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Botar nome do objeto numa variavel

Mensagem por Conteúdo patrocinado Hoje à(s) 16:21


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