Salvare dati di personaggi differenti.

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Salvare dati di personaggi differenti.

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

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Salvare dati di personaggi differenti.

Messaggio da Solid Snake »

Si puo'. Guarda sul manuale i file ini. Se hai problemi chiedi pure.
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

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

Re: Salvare dati di personaggi differenti.

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

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Salvare dati di personaggi differenti.

Messaggio da Barnack »

ok grazie, vedrò cosa riesco a fare.

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Salvare dati di personaggi differenti.

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

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



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

Re: Salvare dati di personaggi differenti.

Messaggio 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! ;)
-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

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Salvare dati di personaggi differenti.

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

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



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

Re: Salvare dati di personaggi differenti.

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

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Salvare dati di personaggi differenti.

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

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Salvare dati di personaggi differenti.

Messaggio 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:
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Salvare dati di personaggi differenti.

Messaggio da Barnack »

ah, avevo provato con .ini, ma mi ero scordato le virgolette :spat:
grazie mille

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Salvare dati di personaggi differenti.

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

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Salvare dati di personaggi differenti.

Messaggio da Solid Snake »

Barnack ha scritto: Ora che manca? Devo mettere ogni singola voce con le virgolette?
Esattamente.
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Salvare dati di personaggi differenti.

Messaggio 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

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Salvare dati di personaggi differenti.

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

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Salvare dati di personaggi differenti.

Messaggio da Barnack »

ok, grazie.

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Salvare dati di personaggi differenti.

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

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Salvare dati di personaggi differenti.

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

Barnack
Membro attivo
Messaggi: 341
Iscritto il: 03/09/2013, 13:26
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Salvare dati di personaggi differenti.

Messaggio da Barnack »

Bellissimo! Grazie mille, sapevo che game maker era versatile, ma non avrei mai pensato che fosse così TANTO versatile :D

Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif

Spoiler
C++ WinApi / DirectX
C#



Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 41 ospiti