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 : 28/01/2010
Número de Mensagens : 33
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

DÚVIDA: Strings e nomes de variaveis

em Ter 05 Maio 2015, 17:16
Boa tarde galera!

Seguinte: trabalho com arquivos .ini no meu projeto. Uma das coisa que eu salvo nele são index de sprites. Faço isso por que o meu projeto possui centenas de personagens, e cada personagem tem várias cores de roupas, cabelo, etc. Cada personagem também tem uma sprite para cada animação: andando, pulando, batendo, abaixando, etc. Tudo dá uma 5 mil sprites!

Voltando ao arquivo .ini: eu salvo nele apenas as sprites de animação "parado". Em tempo de programação, eu pego o index dessa sprite e defino a qual família de esprite ela pertence (cor da roupa, cor do cabelo).

Acontece que o GMS, ao contrário do GM8, nem sempre usa as mesmas index tanto para sprites quanto para objetos. Como assim?!

Explicando: se eu rodar o jogo uma vez, o GMS atribui o index "3" a sprite "X". Se eu rodar de novo, o GMS pode atribuir o index "65454" a mesma sprite "X"!

Então não é muito confiável trabalhar diretamente com o número dos index. Minha dúvida é a seguinte: como eu faço para reconhecer uma string (já que o .ini trabalha com strings e reals) como o nome de uma variável em tempo de programação?

Explicando (ou tentando): eu quero salvar no .ini uma string "sprite_parado" e quero usar essa string como o nome da variável sprite_parado (que é um real).

Alguém tem ideia?
avatar
Data de inscrição : 28/08/2010
Número de Mensagens : 599
Insígnias de JAM :

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

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

Re: DÚVIDA: Strings e nomes de variaveis

em Ter 05 Maio 2015, 17:43
as sprites ja estao compiladas no app ou voce importa?
avatar
Data de inscrição : 28/01/2010
Número de Mensagens : 33
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: DÚVIDA: Strings e nomes de variaveis

em Ter 05 Maio 2015, 17:55
Eu não importo as sprites não. Uso as do projeto mesmo.
avatar
Data de inscrição : 28/08/2010
Número de Mensagens : 599
Insígnias de JAM :

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

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

Re: DÚVIDA: Strings e nomes de variaveis

em Ter 05 Maio 2015, 22:56
eu tambem uso um sistema parecido com o seu, mas ao inves de arquivo .ini, uso um banco de dados mysql.

quando eu pego as informacoes (cabelo, olho, corpo, etc), uso assim:

Evento Create
Código:
cabelo = 0;
olho = 0;
corpo = 0;

Evento que lê os dados (no meu caso é http)
Código:
cabelo = "informação lida";
olho = "informação lida";
corpo = "informação lida";

Evento draw
Código:
draw_sprite_ext(sp_cabelo,real(cabelo),x,y,1,1,0,c_white,1);
draw_sprite_ext(sp_olho,real(olho),x,y,1,1,0,c_white,1);
draw_sprite_ext(sp_corpo,real(corpo),x,y,1,1,0,c_white,1);

obs: uso uma sprite com todos os corpos, outra com todos os olhos, etc.
obs2: na função de desenhar a sprite, preciso converter o número pra real, pois ele lê como string e só retorna zero

faz uns testes aí e vê de funfa.

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

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

Prêmios
   : 2
   : 2
   : 1
Ver perfil do usuáriohttp://guitarmester.no.comunidades.net/index.php?pagina=19362978

Re: DÚVIDA: Strings e nomes de variaveis

em Qua 06 Maio 2015, 10:00
Pelo que eu saiba, ele deixa sempre o mesmo endereço para a sprite(e outros recursos), mas diferente do 8, ele não coloca os endereços por ordem de chegada, e sim por ordem em que aparece na lista. EX:

Criei a 1º sprite chamada spr0; depois spr1; depois spr2. Coloquei a spr2 na frente da spr1, ficando assim visualmente:

Action Sprite SPRITES<
spr0
spr2
spr1
>


No GM8, a ID delas será por assim:
spr0 = 0
spr2 = 2
spr1 = 1

Já no GMS, ficará assim:
spr0 = 0
spr2 = 1
spr1 = 2


Mas, nenhum deles troca a ID de uma sprite criada antes do jogo ser iniciado.


O que pode ser trocado são as IDs de intâncias.
avatar
Data de inscrição : 28/08/2010
Número de Mensagens : 599
Insígnias de JAM :

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

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

Re: DÚVIDA: Strings e nomes de variaveis

em Qua 06 Maio 2015, 10:09
Pra eu poder te ajudar melhor, me informe como seu programa recebe a informação do arquivo .ini, qual valor a variável recebe (0 ou spr0)?
avatar
Data de inscrição : 28/01/2010
Número de Mensagens : 33
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: DÚVIDA: Strings e nomes de variaveis

em Qua 06 Maio 2015, 11:22
Então, as sprites ficam salvas no arquivo .ini nesse formato por exemplo: "3254.0000" (como um real). Só que eu quero me referir a ela não como este 3254 (que é o index), mas como "sprite_personagem" (que é o nome da variável). O sistema que você me apresentou é muito bom, mas não serve no meu projeto.

EDIT:

Quanto ao Theguitarmaster: sim, ele muda as index. Eu mesmo testei. Muda principalmente quando você cria uma nova sprite ou object. Ele não segue uma sequencia necessariamente, por exemplo: tenho 10 objects, criando outro, ele não atribui o index 11, ele atribui um index aleatório e sempre muda os index anteriores.

Antes de usar o GMS, eu usava o GM8. Eu fiz a migração e concertei alguns comandos que deixaram de ser usados. Não sei se isso influencia neste comportamento estranho do GM. Mas de qualquer forma, o que eu quero é algo como o comando "execute_code" que tinha no GM8 e descontinuou no GMS (rodava uma string como um comando GML, dessa maneira, eu poderia salvar as sprites como nome de variável).
avatar
Data de inscrição : 28/08/2010
Número de Mensagens : 599
Insígnias de JAM :

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

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

Re: DÚVIDA: Strings e nomes de variaveis

em Qua 06 Maio 2015, 18:02
realmente, creio que voce terá que mudar a logica do seu sistema pra poder funcionar, pois assim, nao sei se é possível.

ou diga +- o que seu jogo faz, pra ver se alguem lhe dá uma dica com uma lógica diferente
avatar
Ranking : Nota A
Notas recebidas : A
Data de inscrição : 16/10/2011
Número de Mensagens : 268
Insígnias de JAM :

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

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

Re: DÚVIDA: Strings e nomes de variaveis

em Qua 06 Maio 2015, 20:09
Reputação da mensagem: 100% (1 votos)
Eu não entendi bem o que você quer fazer e pq vc quer usar uma string como nome de variável, e isso nem é mais possível no GMS. Aliás, essas funções do GM8 tipo execute_code são extremamente lentas e por isso é bom se manter bem longe delas, até porque de um modo geral SEMPRE existe uma alternativa melhor e mais limpa do que usá-las.
avatar
Data de inscrição : 28/01/2010
Número de Mensagens : 33
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: DÚVIDA: Strings e nomes de variaveis

em Qui 07 Maio 2015, 14:37
Depois de quebrar um pouco a cabeça, consegui encontrar um outro caminho que dá no mesmo destino.

Obrigado a todos pela atenção!
avatar
Data de inscrição : 28/08/2010
Número de Mensagens : 599
Insígnias de JAM :

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

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

Re: DÚVIDA: Strings e nomes de variaveis

em Qui 07 Maio 2015, 14:47
@Mikasuki escreveu:Depois de quebrar um pouco a cabeça, consegui encontrar um outro caminho que dá no mesmo destino.

Obrigado a toidos pela atenção!

Isso mesmo, temos que aproveitar as funções que o sistema nos disponibiliza e adapta-las às nossas necessidades.

Esse é o segredo da lógica da programação.
Conteúdo patrocinado

Re: DÚVIDA: Strings e nomes de variaveis

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