[Guida]Salvataggio su file .ini

Tutorial, videotutorials ed esempi creati da noi
Rispondi
Avatar utente
Vallo92
GMI Advanced
Messaggi: 1508
Iscritto il: 15/07/2011, 20:26
Specialità: Grafico
Uso: GM:Studio 2
Contatta:

[Guida]Salvataggio su file .ini

Messaggio 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!
-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si

Eros2187
Newbie
Messaggi: 10
Iscritto il: 11/02/2014, 19:43
Specialità: mtb
Uso: GM:Studio 1.4 Android
Contatta:

Re: [Guida]Salvataggio su file .ini

Messaggio 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:

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: [Guida]Salvataggio su file .ini

Messaggio 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

Eros2187
Newbie
Messaggi: 10
Iscritto il: 11/02/2014, 19:43
Specialità: mtb
Uso: GM:Studio 1.4 Android
Contatta:

Re: [Guida]Salvataggio su file .ini

Messaggio 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:

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [Guida]Salvataggio su file .ini

Messaggio da Jak »

Basta copiare ed incollare il codice...
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
scritti9212
Membro super
Messaggi: 673
Iscritto il: 02/03/2014, 18:43
Uso: GM:Studio 1.4 Master
Località: casa.exe
Contatta:

Re: [Guida]Salvataggio su file .ini

Messaggio 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!
GIOCHI COMPLETI:
A Pixel! (ANDROID)

in progress:
1)Perfect OS (PC)
2)EasyLatin

Avatar utente
Vallo92
GMI Advanced
Messaggi: 1508
Iscritto il: 15/07/2011, 20:26
Specialità: Grafico
Uso: GM:Studio 2
Contatta:

Re: [Guida]Salvataggio su file .ini

Messaggio 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.
-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti