Pagina 1 di 1

[Guida]Salvataggio su file .ini

Inviato: 31/03/2014, 15:53
da Vallo92
Visto che nelle ultime settimane c'è stata una grande e ripetuta richiesta di aiuto su come utilizzare i file .ini per salvare variabili, ho deciso di scrivere una piccola guida su come utilizzarli.
L'utilizzo di questo metodo è utilizzabile senza problemi sulla maggior parte degli exporter di GM:Studio (Android compreso).

Cercherò adesso di spiegarvi come utilizzare i file .ini di GM prendendo come esempio il salvataggio di due variabili globali: "global.record" e "global.gettoni".

Lettura/inizializzazione delle due variabili globali. Il seguente codice va inserito nell'evento Create (va bene anche un Alarm se necessario) di un oggetto presente nella prima room dopo l'avvio del gioco (il menu principale è perfetto).

Codice: Seleziona tutto

ini_open("save.ini"); // Apriamo il file .ini chiamato "save.ini"
global.record = ini_read_real("save", "record", 0); // Inizializziamo la variabile "global.record"
global.gettoni = ini_read_real("save", "gettoni", 0); // Inizializziamo la variabile "global.gettoni"
ini_close(); //Chiudiamo il file "save.ini"
Con "ini_read_real(section, key, default);" ordiniamo a GM di andare a cercare all'interno del file .ini "save.ini" nella sezione "save" il valore della chiave indicata, e di assegnare alla variabile globale il valore ottenuto. Se il file "save.ini", la sezione o la chiave non sono presenti allora la funzione restituirà il valore indicato come default (nel nostro caso 0. Es. global.record = 0;). Di conseguenza, ad esempio, se è la prima volta che avviamo il gioco e non sono stati ancora generati salvataggi le variabili globali che abbiamo indicato verranno inizializzate con il valore 0.

Scrittura di un valore all'interno del file .ini. Il seguente codice va inserito nell'evento Create (va bene anche un Alarm se necessario) di un oggetto presente a fine partita (quindi quando si è ottenuto il valore da aggiornare).

Codice: Seleziona tutto

ini_open("save.ini");
ini_write_real("save", "record", global.record);
ini_write_real("save", "gettoni", global.gettoni);
ini_close();
Con "ini_write_real(section, key, value);"ordiniamo a GM di andare a cercare all'interno del file .ini "save.ini" nella sezione "save" la chiave indicata, e di assegnargli il valore indicato. Nel nostro caso andremo ad assegnare il valore delle variabili globali indicate (in questo modo andremo ad aggiornare il loro valore).

Questo è tutto quello che ci serve per effettuare salvataggi tramite file .ini con GM:Studio.

Adesso per cercare di rendere il tutto più chiaro vi posterò un esempio pratico di come utilizzare quello che ho appena scritto per salvare il miglior record in un gioco.
obj_menu
Evento Create:

Codice: Seleziona tutto

ini_open("save.ini");
global.record = ini_read_real("save", "record", 0);
ini_close();
Nel gioco abbiamo delle monete, che collidendo con il pg, aumentano lo score di 1 (ovviamente la variabile score deve essere inizializzata ad inizio partita con uno "score = 0;"):
obj_moneta
Collsion Event:

Codice: Seleziona tutto

score += 1;
obj_gameover
Evento Create:

Codice: Seleziona tutto

if (score > galoba.record)
{
     global.record = score;
     alarm[0] = 5;
}
Alarm[0]:

Codice: Seleziona tutto

ini_open("save.ini");
ini_write_real("save", "record", global.record);
ini_close();


Spero di esservi stato d'aiuto! ;)
Se avete domande o consigli scrivete pure qui!

Re: [Guida]Salvataggio su file .ini

Inviato: 22/07/2014, 14:22
da Eros2187
sarebbe perfetto se potessi fare un esempio di progetto in modo da aiutare tutti compreso me!! :P :P :P
grazie :cappa: :cappa: :cappa: :cappa: :cappa: :cappa: :cappa:

Re: [Guida]Salvataggio su file .ini

Inviato: 22/07/2014, 15:35
da Tizzio
Eros2187 ha scritto:sarebbe perfetto se potessi fare un esempio di progetto in modo da aiutare tutti compreso me!!
:spat:
Questa si chiama "voglia di sbattermi 0"

Basterebbe leggere un attimo il manuale per capire gli ini
E vallo ha praticamente scritto tutto il codice possibile e le spiegazioni, basta leggere e inserire negli opportuni eventi, non serve un GMZ

Re: [Guida]Salvataggio su file .ini

Inviato: 22/07/2014, 16:15
da Eros2187
ciao si ragazzi lo so ci sto sbattendo ma se ci fosse un esempio sarebbe meglio per tutti.. visto che come ce ne sono tanti novelli.. se riesco a farlo funzionare lo posto io.. :paura: :spat:

Re: [Guida]Salvataggio su file .ini

Inviato: 22/07/2014, 17:56
da Jak
Basta copiare ed incollare il codice...

Re: [Guida]Salvataggio su file .ini

Inviato: 22/07/2014, 18:17
da scritti9212
Eros2187 ha scritto:ciao si ragazzi lo so ci sto sbattendo ma se ci fosse un esempio sarebbe meglio per tutti.. visto che come ce ne sono tanti novelli.. se riesco a farlo funzionare lo posto io.. :paura: :spat:
Una volta capiti sono semplicissimi:

Quando salvi usi
ini_write_real ("sezione","chiave",VARIABILE DA SALVARE)


Quando vuoi sapere il valore della variabile salvata prima usi

Global.tuavariabile=Ini_read_real ("sezione","chiave",valore di default se il file ini non viene trovato senza virgolette)

PS: è chiaro che la sezione e la chiave devono essere le stesse così quando gm andrà a cercare la variabile la cercherà nella stessa posizione del file ini in cui l'ha salvata.

PPS: prima di quei 2 codici devi scrivere ini_open ("tuo.ini") e alla fine ini_close ()


Quindi in una situazione reale ti potrebbe capitare di voler salvare, per esempio il numero di monete
In room_start allora metti

Ini_open ("saved.ini")
global.monete=ini_read_real ("saved","money",0)
Ini_close ()

Io ho detto a gm che deve aprire il file ini saved, cercare nella sezione saved e nella riga money la variabile global.monete e se non dovesse trovarla (come per esempio se è la prima volta che giochi) di assegnare alla variabile il valore 0.

L'aspetto del file ini sarà:

[Saved]
Money=x

A questo punto il gioco parte e tu prendi una moneta.
Allora nel collision_event con la moneta dobbiamo salvare il nuovo valore di global.monete:

Ini_open ("saved.ini")
Ini_write_real ("saved","money",global.monete)
Ini_close ()

Quello che confonde molte persone (e confondeva anche a me) è la differenza del terzo elemento tra le parentesi: in ini_read ci devi mettere un numero reale da sostituire alla variabile se non viene trovata, ini ini_write devi invece metterci la variabile da salvare.

Ho cercato di ridurre all'osso il necessario per non confonderti le idee ma se hai bisogno di altre spiegazioni chiedi pure!

Re: [Guida]Salvataggio su file .ini

Inviato: 23/07/2014, 22:10
da Vallo92
Se vuoi un file di esempio posso anche postartelo, ma non so quanto possa esserti di aiuto visto che sarà una semplice copia del codice che puoi leggerti sopra (insomma come ha detto Jak fai prima a fare tu un copia e incolla).
Se non ti è chiara qualche parte chiedi pure, e vedrò di spiegarti in modo più chiaro possibile.