Ler arquivos externos

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

Ler arquivos externos

Mensagem por Need 90 em Sab 28 Jan 2012, 20:24

Bom, já vi os tutoriais então não precisa passar nenhum.

Estou trabalhando em um jogo e, eu queria que sempre ficasse salva as variáveis que foram editadas, mais ou menos assim :
[GLOBAIS]
0=global.ragdown=false
1=global.moneycity=false
2=global.eua=false
[ARMAS]
3=global.pistola=true
4=global.pistola3tiro=false
5=global.metralha=false

E sempre salvas-se, tipo, se algo ficou true atualizar a lista acima. Dai quando terminar uma missão mudar o valor da que for mudada
Eu ia fazer um sistema de save mas ficou ruim.
Por isso pessoa ajuda, para qundo o jogo ser fechado ele salvar todo o progresso ali.
E quando o jogo iniciar ele carregar todo o processo.

Ps :
Os GLOBAIS são as missões. Começa com nenhuma missão liberada.
As armas ganha quando termina serta missão, só a pistola que já é true.

Estou usando esse código que não funciona :
Game Start :
Código:
//Abre a Ini
ini_open ("gameConfig.ini")
//lê
if global.ragdown=false{ini_read_string ("FASES","0","global.ragdown=false")}else{ini_read_string ("FASES","0","global.ragdown=true")}
if global.moneycity=false {ini_read_string ("FASES","1","global.moneycity=false")}else{ini_read_string ("FASES","1","global.moneycity=true")}
if global.eua=false {ini_read_string ("FASES","2","global.eua=false")}else{ini_read_string ("FASES","2","global.eua=true")}
if global.pistola3tiro=false {ini_read_string ("ARMAS","3","global.pistola3tiro=false")}else{ini_read_string ("ARMAS","3","global.pistola3tiro=true")}
if global.metralha=false {ini_read_string ("ARMAS","4","global.metralha=false")}else{ini_read_string ("ARMAS","4","global.metralha=true")}
Game End :
Código:
//Fases
if global.ragdown=false {ini_write_string ("FASES","0","global.ragdown=false")}else{ini_write_string ("FASES","1","global.ragdown=true")}
if global.moneycity=false {ini_write_string ("FASES","1","global.moneycity=false")}else{ini_write_string ("FASES","2","global.moneycity=true")}
if global.eua=false {ini_write_string ("FASES","2","global.eua=false")}else{ini_write_string ("FASES","3","global.eua=true")}
//Armas
if global.pistola3tiro=false {ini_write_string ("ARMAS","3","global.pistola3tiro=false")}else{ini_write_string ("ARMAS","5","global.pistola3tiro=true")}
if global.metralha=false {ini_write_string ("ARMAS","4","global.metralha=false")}else{ini_write_string ("ARMAS","6","global.metralha=true")}
//close
ini_close()

Need 90

Ranking : Nota B
Número de Mensagens : 787
Data de inscrição : 16/01/2012
Notas recebidas : D+A+B
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://need90games.blogspot.com.br

Voltar ao Topo Ir em baixo

Re: Ler arquivos externos

Mensagem por Markituh em Sab 28 Jan 2012, 22:38

Dei uma olhada no Game Start. Está simplesmente... ilógico. Dá uma olhada nisso aqui - funciona que é uma beleza:

Código:
//================================
// Abre a Ini
//================================
ini_open ("gameConfig.ini")
//================================
// Lê os dados
//================================
execute_string
(
    ini_read_string ("FASES","0","global.ragdown=false")
);

execute_string
(
    ini_read_string ("FASES","1","global.moneycity=false")
);

global.eua = execute_string
(
    ini_read_string ("FASES","2","global.eua=false")
);

execute_string
(
    ini_read_string ("ARMAS","3","global.pistola3tiro=false")
);

execute_string
(
    ini_read_string ("ARMAS","4","global.metralha=false")
);

ini_close();
A lógica do ini_read_string é a seguinte:
A função vai pegar o valor que se encontra na seção e chave especificada. Se o valor não existe, o valor estipulado no argument "default", no caso, "global.variavel = false", é retornado pela função.
Dada a explicação acima, nada mais lógico que executar a declaração usando execute_string. Então, já que o único valor que é true é o da pistola, você só define esse no ini.
Código:
[ARMAS]
3 = global.pistola3tiro=true
Você ainda poderia colocar só valores true e false nos valores. Assim a função daqueles valores ficava oculta e evitava a ação de alguns malandrinhos. Então, você mudaria o execute_string para esse:
Código:
execute_sting
(
    string("global.variavel=") + ini_read_string("ARMAS", "3", "false")
);
Entendeu? Very Happy

Quanto à salvar, tá tranquilo do jeito que você fez. Boa sorte no projeto.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Ler arquivos externos

Mensagem por Need 90 em Dom 29 Jan 2012, 09:53

está dando errado, fiz o código da metralhadora e fechei o jogo, mas ele não muda o mesmo item, ele adiciona um item com o true e deixa o mesmo item com o false, tipo isso :
[FASES]
0=global.ragdown=false
1=global.moneycity=false
2=global.eua=false
[ARMAS]
3=global.pistola3tiro=false
4=global.metralha=false
5=global.pistola3tiro=true
6=global.metralha=true
esse problema é no game end

Need 90

Ranking : Nota B
Número de Mensagens : 787
Data de inscrição : 16/01/2012
Notas recebidas : D+A+B
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://need90games.blogspot.com.br

Voltar ao Topo Ir em baixo

Re: Ler arquivos externos

Mensagem por Conteúdo patrocinado Hoje à(s) 04:54


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