Públicas: As variáveis públicas pode ser utilizadas em qualquer objeto no jogo e seu valor é global não importando onde você esteja. Para cria-las utilize a instrução global ou globalvar sendo que utilizando globalvar você não precisa usar global.variavel toda vez que quizer utiliza-la, por isso vamos utilizar essa última sintaxe.
de Instância: Esse tipo de variável é criada dentro de um Evento e seu valor prevalece enquanto a instância existir.
Temporárias: Esta é criada com a palavra resevar "var" e seu valor so tem sentido no escopo do Evento em que foi declarada. É muito conveniente para criar variáveis temporárias e não ficar "gastando" variáveis de instância a toa. Simplifica o código.
Agora que vimos quais os tipos de variáveis existem vamos ao trabalho! Primeiro vamos gravar nossas variáveis públicas. Suponha que estamos fazendo um jogo de RPG e temos que armazenar os dados do jogador:
Código: Selecionar todos
globalvar avatar_nome; //nome do personagem
globalvar avatar_hp; //total de energia
globalvar avatar_mp; //total de magia
globalvar avatar_nivel; //nivel
globalvar avatar_classe; //guerreiro, mago, ladrão, etc
Agora que sabemos quais variáveis vamos gravar eu vamos criar 2 scripts, um para gravar e outro para ler os valores de volta.
Va até a aba Scripts e crie um script chamado scr_grava_globais:
Código: Selecionar todos
var texto, linha;
texto = file_text_open_write("jogo.sav"); // nome do arquivo
linha = 'avatar_nome=' + quote(avatar_nome);
file_text_write_string(texto, linha); file_text_writeln(texto);
linha = 'avatar_hp=' + string(avatar_hp);
file_text_write_string(texto, linha); file_text_writeln(texto);
linha = 'avatar_mp=' + string(avatar_mp);
file_text_write_string(texto, linha); file_text_writeln(texto);
linha = 'avatar_nivel=' + string(avatar_nivel);
file_text_write_string(texto, linha); file_text_writeln(texto);
linha = 'avatar_classe=' + quote(avatar_classe);
tile_text_close(texto);
Pronto, agora basta chamar este script que teremos o nosso arquivo "jogo.sav" com as nossas variáveis globais salvas.
Você pode chamar o script a qualquer movomento para gravar o progresso do jogador. Para chamar um script no GM apenas coloque o seu nome seguido dos parentesis. assim: scr_grava_globais(), como não temos parametros os parêntesis ficam vazios.
Agora vamos criar um script que fara a leitura desses dados e a atribuição dos valores às variáveis globais corretas. Esse inclusive é bem menor que o de gravação e bem simples também. Vá até a aba Scripts e crie um script chamado scr_le_globais:
Código: Selecionar todos
var texto, linha;
texto = file_text_open_read("jogo.sav");
while not file_text_eof(texto)
{
linha = file_text_read_string(texto);
file_text_readln(texto);
execute_string(linha); //executa a linha e atribui a variavel
}
file_text_close(texto);
Ok, agora basta executar esse script em qualquer parte do código para ler o valor das variáveis que está armazenado no arquivo. Para chama-lo apenas escreva scr_le_globais() em um Evento qualquer.
Antes de terminarmos, observe que usei um script chamado quote() no script scr_grava_globais(). Esse script é apenas para simplificar a escrita do código e o que ele faz é colocar aspas em uma string. Vamos a ele:
Código: Selecionar todos
var str;
str = argument0;
return '"' + str + '"';
É isso, vá até a aba Scripts e crie um novo script com o nome de Quote e então coloque esse código acima.
Então pessoal, como esse esquema da pra criar facilmente scripts que armazenam qualquer variável e automaticamente lê o valor para a variável corretamente sem ter que criar nenhuma rotina ou pharser.
Até a próxima!