GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


Guardar valores de variaveis locais - -'

3 participantes

Ir para baixo

Guardar valores de variaveis locais - -' Empty Guardar valores de variaveis locais - -'

Mensagem por Zero. Sáb 09 Jun 2012, 08:29

Poxa, ainda naum entendi como faz, já sei usar grande parte da funcionalidade das arrays, mas naum consigo isso *---* , saim ja tentou me ensinar mas eu não consegui aprender.

Tipo eu compro 3 soldados, na batalha eles matam os inimigos e passam de nível, e a cada nivel posso distribuir 1 ponto neles.
Entaum, depois que eles passarem de nível, armazenarem a exp que tem, e ganhar seus pontos distribuídos, eu vou pra outro mapa e eles voltam ao que eram (pq é declarado no create claro), entaum como salvar ? (.ini ?)

THX
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por GameMakerTutoriais Sáb 09 Jun 2012, 13:18


1 - As três instâncias "soldado" fazem parte do mesmo tipo de objeto ou cada uma é um objeto diferente?

2 - São persistentes?
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por Zero. Sáb 09 Jun 2012, 13:30

São um obj só.
Não.
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por GameMakerTutoriais Sáb 09 Jun 2012, 13:39

Pelo fato de ser um objeto só, talvez fique um pouco mais complicado identificar uma por uma, já que na passagem de room, os id's mudam.

Acho que o que a gente pode fazer é usar um loop no instance_count, criar um "id provisório" por ordem de criação pra todos os objetos do tipo "soldado" e armazenar as variáveis num ds_map. Depois é só refazer a leitura e pegar as variáveis de lá. Penso que vai ser mais fácil que usar um ini...

Vou fazer um exemplo aqui e dou um edit. T+!
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por Zero. Sáb 09 Jun 2012, 14:09

No aguardo. oque seria o ds_map ?
Ah já sei oque é Happy .
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por PedroX Sáb 09 Jun 2012, 14:34

Tem esse tutorial aqui:

https://gmbr.forumeiros.com/t15782-xcreator-tutorial-armazenamento-e-recuperacao-automatica-de-variaveis

Além disso, você pode fazer o seguinte:

- Criar um objeto, dar um nome de sua preferência.
- Colocar esse objeto como persistente.

- Adicionar no evento Room Start dele:

Código:
if not file_exists("status.ini") exit;

ini_open("status.ini")

var i; i=0;
while(1)
{
inst[i] = ini_read_real("Soldados", "level"+string(i), -1)
if (inst[i] < 0) break;

instance_find(obj_soldado, i).level = inst[i];
i+=1;
}
ini_close()

No evento Room End:

Código:
ini_open("status.ini")
for(i=0; i<instance_number(obj_soldado); i+=1)
{
ini_write_real("Soldados", "level"+string(i), instance_find(obj_soldado, i).level)
}
ini_close()

Assumi que:

- level seja a variável que representa o level;
- obj_soldado seja o objeto que representa o soldado;
- essa é uma solução "porca".

Até mais!

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por GameMakerTutoriais Sáb 09 Jun 2012, 16:10



Pessoalmente, preferiria assim também, dessa forma que o Pedro postou. Só pra não perder a viagem, vou postar o que eu fiz. Esse jeito aqui não armazena em arquivo... O lance foi gravar as variáveis + conteúdo delas numa ds_list + ds_map. Data structures no GM são de âmbito global, então, são acessíveis em qualquer room.

Tu vai precisar só de dois scripts, que eu separei aqui:

Este, você vai dar o nome de "local_perform":




E este outro, "local_define":



Depois de salvar é só usar. Primeiro, você tem que definir apenas uma vez esse código abaixo em qualquer evento de inicialização. De preferência, coloque na inicialização do menu principal do teu game, porque aí não vai entrar em conflito com a ação de recarregar as variáveis.

Código:
global.SalvarValores  := ds_map_create();
global.ListaVariaveis := ds_list_create();

Toda vez que você quiser definir quais variáveis quer salvar e recarregar, você usa o script "local_define" repassando como argumentos os nomes das variáveis separados por vírgula em uma única linha de texto:

Exemplo. Quero salvar as variáveis: energia, dano, powerups, experiencia e magia:

Código:
local_define('energia, dano, powerups, experiencia, magia');

Pra salvar ou carregar o valor dessas variáveis aí de cima, você vai usar o mesmo script, o "local_perform", sendo que o primeiro argumento deve ser o tipo de objeto e o segundo argumento será: true=salva ou false=carrega

Vou salvar todas as variáveis que defini lá em cima valendo para todas as instâncias do objeto "soldado":

Código:
local_perform(soldado, true);

Depois que eu trocar de room, vou recarregar os valores todos novamente:

Código:
local_perform(soldado, false);

O script local_perform você só precisa chamar uma vez. Não coloque no evento de inicialização do objeto "soldado" (do objeto foco do save/load), ou isso vai executar uma vez pra cada instância. Crie um objeto pra salvar as variáveis e outro pra recarregar! Daí eles vão ficar exclusivamente para essa função.

Tenta lá, qualquer dúvida estamos aí. Só lembrando que isso vai atender à ordem de criação dos objetos pela instance_count. Se tiver mais ou menos objetos, ele vai recarregar só a quantidade que foi gravada. Ainda sim é passível de erro, mas como você não tá usando nenhum persistente (do objeto que vai gravar), vai funcionar tranquilo.

Falou!
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por PedroX Sáb 09 Jun 2012, 17:19

Muito bom esse seu método.
É mais do que uma alternativa ao que eu fiz.
Concerteza eu iria usar esse seu (ou uma edição dele), porque criar arquivos externos é chato e perigoso.

Até mais!

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por Zero. Sáb 09 Jun 2012, 19:00

Deu erro nisso ai :

___________________________________________
COMPILATION ERROR in string to be executed
Error in code at line 1:
Retorno := (101052).
^
at position 20: Variable name expected.

Eu coloquei pra definir as variaveis a serem salvas no create.
e pra dar load no room start.
pra dar salve no room end.
(so defini as globais uma vez)

Detalhe : isso só ocorre uma vez.

E naum servir. Quando eu dou room_restart ele volta ao normal. =/
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por GameMakerTutoriais Sáb 09 Jun 2012, 21:19


Ué, estranho... "Variable name expected"? Rolou alguma treta na hora de repassar o nome da variável aí. Cara, funcionar, funciona. É difícil dizer o que pode ser sem dar uma olhada no código. Tentei aqui e foi tudo okay. Se quiser ver um exemplo pra facilitar na hora de usar os códigos, eu fiz um:

Quando ele rodar, dá um clique no disquetinho que vai aparecer um menu com opções pra save/load/restart:
http://dl.dropbox.com/u/77818756/exemplo_save_load_com_dsmaps.gmk

O pode ter acontecido pra room ter voltado ao normal, como você falou, deve ter sido por causa desse erro na hora de repassar o nome das variáveis. Daí o restante do código não rodou. Veja o exemplo que vai ajudar a entender melhor.

Observe que a primeira sala (room_INIT) foi onde eu defini a criação das globais, lá naquele código de incialização da sala. Aquele que fica na aba "settings", clicando no botão "Creation code".

Falou!
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por Zero. Dom 10 Jun 2012, 19:57

ta guardando os valores, mas ta bugando mto, as vezes os objs são misturados e ai eu passo pontos em uns e nos outros passam tb (alguns) eu naum entendi. sei la ta louco todo meu jogo depois que eu colokei isso.
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por GameMakerTutoriais Dom 10 Jun 2012, 23:50

É como eu tinha dito: "ainda há possibilidade de acontecer erros" porque vai depender da forma como você programou seu jogo. Lidar com objetos separados não é mais difícil nem mais fácil, mas às vezes é mais prático. Identificar instâncias requer atenção redobrada na hora de programar porque muita coisa tem que ser considerada.

Você mesmo disse que está guardando os valores e no meu exemplo funcionou perfeito. O jeito é você ir experimentando outros métodos também pra ver algum que se encaixa melhor. Experimenta esse do INI que o Pedro postou o link.

Uma outra solução que eu penso que funcionaria é você deixar os soldados como persistentes, mas colocar uma condição no evento create pra que ele não aconteça em todas as passagens de room.

Tenta fazer isso. Marca como persistente e coloca isso como o primeiro código a ser executado no evento create (ou então usa aquela action de sair do evento, que vai ser melhor ainda) :

Código:
if variable_local_exists("ja_fui_criado") then exit
ja_fui_criado := 0;

Se precisar de ajuda é só dizer. Falou!
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por Zero. Seg 11 Jun 2012, 13:12

Cara eu tive uma idéia .
Vou criar arrays e salva-las em um obj.
Ai na room eu ponho um obj que cria o obj1 outro que cria o 2 (quem determina quem é o obj1 e qm é o 2 é vc, é como se fosse uma tropa sua), de acordo com as arrays determinar seus valores que foram guardados nela (arrays globais).
Que tal ? ficaria bom ?
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por GameMakerTutoriais Seg 11 Jun 2012, 18:09

Ai na room eu ponho um obj que cria o obj1 outro que cria o 2 (quem determina quem é o obj1 e qm é o 2 é vc, é como se fosse uma tropa sua),

Eu penso que criar um objeto "A" pra criar outro objeto "B" é menos prático que criar o objeto "B" já de uma vez. Mas é válido sim. Você sabe melhor que ninguém a forma como seu projeto está montado, se acha que isso pode ajudar a resolver, então não há por que não tentar.
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por Zero. Seg 11 Jun 2012, 18:11

Mas vai ser necessário obj ser criado, pq vc diz qual é, sendo assim vai ser criado oque vc selecionou que fosse.
Zero.
Zero.

Data de inscrição : 19/08/2010
Reputação : 47
Número de Mensagens : 1300
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por GameMakerTutoriais Seg 11 Jun 2012, 18:15

Então... Mãos à obra. =D

Se resolver, poste aí a solução pra ajudar outras pessoas que tiverem a mesma dúvida.

Falou! o/
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Guardar valores de variaveis locais - -' Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Guardar valores de variaveis locais - -' Empty Re: Guardar valores de variaveis locais - -'

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos