Pagina 1 di 1

Salvare dati di personaggi differenti.

Inviato: 03/09/2013, 14:01
da Barnack
Avevo in mente di creare un semplice gioco, in cui il giocatore possa "scegliere" il tipo di drago (fuoco, ghiaccio...) e procedendo nel gioco le nuove abilità. Ho già tutta la grafica che mi serve, ma prima di procedere, vorrei sapere se è possibile fare quanto segue:

I dati del pg sono creati da variabili: global_1class, global_1mxhp, global_1ability1, global_1ability2
global_1class definisce la classe.
global_1ability1, global_1ability2, vi sono assegnati dei numeri, che rappresentano l'abilità "n", la quale a sua volta varia a seconda dei global_1class.
Oltre a poter salvare il gioco, vorrei che il giocatore potesse cliccare su "salva il tuo drago" e creare così due file di testo (txt) o qualsiasi altro tipo in cui vengano riportate le seguenti righe:

IL PRIMO FILE
global_1class = global_1class
global_1mxhp = global_1mxhp
global_1ability1 = global_1ability1
global_1ability2 = global_1ability2
ES:
global_1class = 1
global_1mxhp = 500
global_1ability1 = 3
global_1ability2 = 5


IL SECONDO FILE
global_2class = global_1class
global_2mxhp = global_1mxhp
global_2ability1 = global_1ability1
global_2ability2 = global_1ability2
ES:
global_2class = 1
global_2mxhp = 500
global_2ability1 = 3
global_2ability2 = 5


In pratica scrivere il nome della variabile sia con 1 in un file e con 2 nell'altro. Così, copiando e sostituendo il secondo file nella directory del gioco di un altro computer che abbia gli stessi due files del proprio drago, facendo partire il gioco si possa fare quanto segue:
Multiplayer > main dragon: carica il drago 1, ovvero il file chiamato 1 dove ci sono i dati di un giocatore, e sostituisce le variabili con i dati inseriti nel testo.
secondary dragon: carica il drago 2, ovvero il file chiamato 1 dove ci sono i dati dell'altro giocatore, e sostituisce le variabili con i dati inseriti nel testo.

Poi nello stesso computer, con comandi diversi, due persone possono far combattere i loro draghi, che appariranno identici a come sono nel loro pc.
La domanda è semplice: come faccio?

Re: Salvare dati di personaggi differenti.

Inviato: 03/09/2013, 14:38
da Solid Snake
Si puo'. Guarda sul manuale i file ini. Se hai problemi chiedi pure.

Re: Salvare dati di personaggi differenti.

Inviato: 03/09/2013, 15:14
da Vallo92
Solid Snake ha scritto:Si puo'. Guarda sul manuale i file ini. Se hai problemi chiedi pure.
Se può esseri d'aiuto ecco la parte del manuale dedicata ai file .ini: http://ziocrocifisso.github.io/ManualeG ... 3_ini.html

Re: Salvare dati di personaggi differenti.

Inviato: 04/09/2013, 11:51
da Barnack
ok grazie, vedrò cosa riesco a fare.

Re: Salvare dati di personaggi differenti.

Inviato: 04/09/2013, 11:55
da Barnack
quindi mi servono:
ini_read_real(section,key,default)
ini_write_real(section,key,value)

cosa devo sostituire alle voci section, key, default e value :confuso: ?

Re: Salvare dati di personaggi differenti.

Inviato: 04/09/2013, 12:33
da Vallo92
Barnack ha scritto:quindi mi servono:
ini_read_real(section,key,default)
ini_write_real(section,key,value)

cosa devo sostituire alle voci section, key, default e value :confuso: ?
Dovrebbe essere abbastanza chiaro dall'esempio riportato nel manuale:

Codice: Seleziona tutto

[Form]
Top=100
Left=100
Caption=Il miglior gioco di sempre
[Game]
MaxScore=12324
[Form] e [Game] sono le section (quindi ad esempio quando usi ini_read_real indichi la sezione dove GM andrà a leggere la chiave). Le key sono ad esempio Top, Left etc. e sono appunto le chiavi che contengono i valori che vengono salvati.
Quindi:
ini_read_real(section [sezione dove andare a "leggere"],key [chiave da andare a "leggere"],default [inserisci un valore che GM va a leggere se la chiave indicata non ne ha già uno])
ini_write_real(section [sezione dove andare a "scrivere"],key [chiave da andare a "scrivere"],value [valore da andare a "scrivere").

Pero di essere stato chiaro! ;)

Re: Salvare dati di personaggi differenti.

Inviato: 04/09/2013, 12:45
da Barnack
ok, ora è più chiaro. Credo che ci riuscirò. Comunque, per chiarire l'idea, vorrei che i personaggi funzionassero un po' come gli skylanders, spero di raggiungere questo risultato.

Re: Salvare dati di personaggi differenti.

Inviato: 04/09/2013, 12:52
da Vallo92
Non ho mai giocato a Skylanders, ma da quello che ho capito leggendo il primo post penso che non avrai molti problemi nel creare un sistema di salvataggio del genere.

Re: Salvare dati di personaggi differenti.

Inviato: 04/09/2013, 17:33
da Barnack
Prima di tutto ho creato un file ini con il testo seguente:
DragonA.ini:
[character]
atk1=0


poi ho fatto:
Left click su "salva drago1" > esegui script:
ini_open(dragonA)
ini_write_real(character,atk1,global_atk1)
ini_close()

nel gioco mi dice quanto segue:

ERROR in
action number 1
of Mouse Event for Left Button
for object savdrg1:

Error in code at line 1:
ini_open(dragonA)
^
at position 10: Unknown variable dragonA


Potreste scrivermi cosa devo mettere nello script event please? non capisco dove sbaglio...

Re: Salvare dati di personaggi differenti.

Inviato: 04/09/2013, 17:42
da Solid Snake
L'errore ti dice cosa c'e che non va

Codice: Seleziona tutto

ERROR in
action number 1
of Mouse Event for Left Button
for object savdrg1:

Error in code at line 1:
ini_open(dragonA)
^
at position 10: Unknown variable dragonA
Variabile dragonA sconosciuta. Il nome di un file deve essere completo e soprattutto deve essere una stringa.

Codice: Seleziona tutto

ini_open("DragonA.ini")
:cappa:

Re: Salvare dati di personaggi differenti.

Inviato: 04/09/2013, 19:39
da Barnack
ah, avevo provato con .ini, ma mi ero scordato le virgolette :spat:
grazie mille

Re: Salvare dati di personaggi differenti.

Inviato: 05/09/2013, 16:03
da Barnack
ERROR in
action number 1
of Mouse Event for Left Button
for object salva:

Error in code at line 2:
ini_write_real(dragon1,name,global.dragon_name)
^
at position 17: Unknown variable dragon1


Ora che manca? Devo mettere ogni singola voce con le virgolette?
Ho creato un file ini con nome dragon1.ini, contenuto quanto segue:

[dragon1]
name=0
race=0
level=0
points=0

[stats]
hp=0
atk=0
def=0

[attacks]
1atk=0
2atk=0

Devo mettere la parentesi quadra?... manca sempre qualche pezzo...

Re: Salvare dati di personaggi differenti.

Inviato: 05/09/2013, 16:08
da Solid Snake
Barnack ha scritto: Ora che manca? Devo mettere ogni singola voce con le virgolette?
Esattamente.

Re: Salvare dati di personaggi differenti.

Inviato: 06/09/2013, 9:12
da Barnack
[general]
name=0
race=0

Tutte le voci vengono cambiate, anzi, le voci con una variabile.
Purtroppo però, le voci name e race non variano.
Ho provato, sia così:
ini_write_real("general","name","global.dragon1_name")
ini_write_real("general","race","global.dragon1_race")

Che così:
ini_write_real("general","name",global.dragon1_name)
ini_write_real("general","race",global.dragon1_race)

ma non funziona in alcun modo

Re: Salvare dati di personaggi differenti.

Inviato: 06/09/2013, 9:22
da Homunculus
Ovvio che non funziona, stai usando ini_write_real, che serve a scrivere numeri nel file ini, per questo ti ritrovi due bei 0 al posto dei valori.
Usa ini_write_string.

Vorrei però farti notare che quando si programma non ha senso andare a caso, perché non funzionerà mai. Inutile quindi provare con o senza virgolette, quello che devi fare é leggere nel manuale o altrove cose significano le virgolette e capire cosa serve nel tuo caso.

Re: Salvare dati di personaggi differenti.

Inviato: 06/09/2013, 12:44
da Barnack
ok, grazie.

Re: Salvare dati di personaggi differenti.

Inviato: 06/09/2013, 13:57
da Barnack
un'ultima cosa, prima di immergermi nel profondo della creazione di questo gioco.
è possibile fare sì che il nome del file ini corrisponda ad una variabile?
con get string ho preso il nome del personaggio, che viene sostituito alla voce name nel file ini.
Ma se volessi che con il sinistro del mouse sul pulsante "salva drago" venisse creato un file ini con nome "global.dragon1_name.ini", come dovrei fare?
Ovviamente poi dovrò anche creare il pulsante di caricamento, in cui si chiede al giocatore di inserire il nome del drago da caricare, così che, scrivendone il nome (es: "gatto"), venga aperto il file gatto.ini, e poi presi i dati da quel file...

Re: Salvare dati di personaggi differenti.

Inviato: 06/09/2013, 14:25
da Homunculus
Il nome del file lo puoi indicare direttamente tu come stringa (es: ini_open("mio_file.ini") oppure può essere una stringa contenuta in una variabile:

Codice: Seleziona tutto

//crea un file ini chiamato Grisu.ini
global.nome_drago = "Grisu";
ini_open(global.nome_drago+".ini");
Trovo piuttosto scomodo inoltre far inserire al giocatore il nome del file ini da aprire. Perché invece non gli fai scegliere direttamente il file? Esiste la funzione get_open_filename per questo.

Re: Salvare dati di personaggi differenti.

Inviato: 06/09/2013, 17:10
da Barnack
Bellissimo! Grazie mille, sapevo che game maker era versatile, ma non avrei mai pensato che fosse così TANTO versatile :D