(1) 2 3 4 »


Save/load sur fichiers différents
OverdOzed
Inscrit:
15/04/2009 21:00
De Thionville (près de metz)
Post(s): 402
Bonsoir

Pour sauvegarder les parties, j'utilise ce script que j'ai trouvé sur Internet :

import bge

scene = bge.logic.getCurrentScene()
objects = scene.objects

#set global varialbles instances
if not "properties" in bge.logic.globalDict:
bge.logic.globalDict["properties"] ={}

if not "position" in bge.logic.globalDict:
bge.logic.globalDict["position"] ={}

if not "orientation" in bge.logic.globalDict:
bge.logic.globalDict["orientation"] ={}

def save():
controller = bge.logic.getCurrentController()
owner = controller.owner
#sets local properties

for object in objects:
if type(object)==bge.types.KX_GameObject:
bge.logic.globalDict["position"][str(object)] = list(object.worldPosition)
bge.logic.globalDict["orientation"][str(object)] = list(object.worldOrientation[0]),list(object.worldOrientation[1]),list(object.worldOrientation[2])
for property in object.getPropertyNames():
if len(object.getPropertyNames()) > 0:
bge.logic.globalDict["properties"][str(object)] = {}
bge.logic.globalDict["properties"][str(object)][property] = object[property]
#sets position and orientation



bge.logic.saveGlobalDict()
print("Saved File")
endgame = [sens for sens in controller.sensors if type(sens) == bge.types.SCA_KeyboardSensor]
if len(endgame)>0:
if endgame[0].key == bge.events.ESCKEY:
bge.logic.endGame()
def load():
#imports properties from the save actuator
bge.logic.loadGlobalDict()

#sets the properties from the globalDict imports

for ob in bge.logic.globalDict["position"].keys():
if ob in objects:
object = objects[ob]
#sets the orientations from the globalDict imports
object.worldPosition = tuple(bge.logic.globalDict["position"][ob])
object.worldOrientation = tuple(bge.logic.globalDict["orientation"][ob])
if ob in bge.logic.globalDict["properties"]:
for property in bge.logic.globalDict["properties"][ob].keys():
object[property] = bge.logic.globalDict["properties"][ob][property]
print("Loaded File")



Arrive ma question. Ce script enregistre la position d'objets, leur rotation et toutes les propriétés.
Je voudrais l'approfondir en faisant la chose suivante.
Dans un jeu, imaginons 2 niveaux, chacun sur une map, 1.blend et 2.blend.
Une fois le niveau 1 passé, blender charge 2.blend avec la logic-brick load game : 2.blend.
Je voudrais maintenant que le script enregistre le fait que le joueur soit passé sur la map 2.
En relancant le jeu, l'information serai chargée et le jeu reprendrait au fichier 2.blend.
En écrivant ces lignes, une idée me vient à l'esprit. Je pourrais attribuer une propriété correspondant à chaque niveau, une de valeur 1 pour 1.blend et une de valeur 2 pour blend.2. Ok, les propriétés sont enregistrées, mais comment dire à blender de charger tel niveau s'il lit dans le fichier que la prop est égale à 1 ou 2 ?

Des idées ? Bonne soirée à vous

Contribution le : 21/02/2014 19:23
Créer un fichier PDF de la contribution Imprimer


Re: Save/load sur fichiers différents
OverdOzed
Inscrit:
28/09/2013 19:04
De Montpellier
Post(s): 1041
Salut! Oui bonne idée pour la propriété niveau:

niveau 1

niveau 2

Enfin c'est du vite fait j'ai pas trop testé mais ça a l'air de marcher.

Par contre la prochaine fois essaie de mettre ton code dans un bloc de code pour avoir l'identation parce que j'ai galéré pour la rétablir

Pour tester: Dans le niveau1: P pour démarrer. Right puis N pour faire augmenter la propriété niveau puis S pour sauvegarder. Puis Escape pour quitter. Puis P pour lancer la partie, puis L pour loader la partie (ça chargera le niveau 2)... Bon c'est pas du très propre mais c'est juste pour le principe...

A+!

Contribution le : 21/02/2014 21:16
Créer un fichier PDF de la contribution Imprimer


Re: Save/load sur fichiers différents
OverdOzed
Inscrit:
15/04/2009 21:00
De Thionville (près de metz)
Post(s): 402
Je me contenterais de ça, merci beaucoup !
Je sais pas où tu as pécho ce script ahah mais il fait bien son travail.
Bonne soirée

Edit : Pourtant, quand je créé mon blend en copiant le script, la sauvegarde ne s'effectue pas...
Le fichier : http://7uztws87zq.1fichier.com/

Contribution le : 22/02/2014 20:08
Créer un fichier PDF de la contribution Imprimer


Re: Save/load sur fichiers différents
OverdOzed
Inscrit:
28/09/2013 19:04
De Montpellier
Post(s): 1041
Mais c'est ton script que j'ai utilisé!

Je l'ai juste modifié un tout petit peu vers la fin

Je regarde ton .blend et j'essaie de voir ce qui ne va pas...

En fait dans ton script, il y a 2 fonctions:

1 pour sauvegarder et une pour loader. Ce que j'ai fait, c'est que j'ai dit que si j'appuie sur la touche S, ça fait tourner le 'module' (la fonction) save() du script. Si j'appuie sur L, ça fait tourner le 'module' load() du script.

Mais tu peux très bien faire comme ceci:

Save/Load

La sauvegarde se faisait bien mais le print (saved file) ne s'affichait pas dans la console.... Enfin bon voilà

Contribution le : 22/02/2014 20:29
Créer un fichier PDF de la contribution Imprimer


Re: Save/load sur fichiers différents
OverdOzed
Inscrit:
15/04/2009 21:00
De Thionville (près de metz)
Post(s): 402
Merci

Contribution le : 22/02/2014 20:34
Créer un fichier PDF de la contribution Imprimer


Re: Save/load sur fichiers différents
OverdOzed
Inscrit:
21/08/2013 19:12
De CH [+]
Post(s): 1558
Salut,

Ben c'est simplement qu'aucun objet (de type KX_GameObject, bref il n'y a que le cube) de la scène ne contient de property... Si tu en ajoutes une au cube, alors ça marche.

EDIT: parce que sinon, "object.getPropertyNames" rend une liste vide.

Contribution le : 22/02/2014 20:43
_________________
BAddons, La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Développeur Blender quand j'en ai le temps...

Créer un fichier PDF de la contribution Imprimer


Re: Save/load sur fichiers différents
OverdOzed
Inscrit:
15/04/2009 21:00
De Thionville (près de metz)
Post(s): 402
Non, même en ajoutant une propriété :
http://2k2wkiqv0h.1fichier.com/

Contribution le : 22/02/2014 20:54
Créer un fichier PDF de la contribution Imprimer


Re: Save/load sur fichiers différents
OverdOzed
Inscrit:
21/08/2013 19:12
De CH [+]
Post(s): 1558
J'm'excuse mais ça affiche bien "Saved file", cette fois. Parles-tu donc d'un autre problème?

Si c'est que le jeu ne s'arrête pas comme tu le penserais, c'est que le senseur est sensible à la touche S, pas ESC...

EDIT: et du coup il suffit de changer la touche dans le senseur pour que ceci marche. Si tu veux le faire proprement et éviter des bugs (jeu pas sauvé), change de touche d'arrêt par défaut dans le panneau Render / ou par Python.

Contribution le : 22/02/2014 21:00
_________________
BAddons, La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Développeur Blender quand j'en ai le temps...

Créer un fichier PDF de la contribution Imprimer


Re: Save/load sur fichiers différents
OverdOzed
Inscrit:
28/09/2013 19:04
De Montpellier
Post(s): 1041
Look at my edit

Contribution le : 22/02/2014 21:01
Créer un fichier PDF de la contribution Imprimer


Re: Save/load sur fichiers différents
OverdOzed
Inscrit:
21/08/2013 19:12
De CH [+]
Post(s): 1558
@youle: plus beau, tu mets un seul senseur Keyboard avec All Keys activé, et tu récupères la touche dans le script.

Contribution le : 22/02/2014 21:05
_________________
BAddons, La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Développeur Blender quand j'en ai le temps...

Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
(1) 2 3 4 »




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[24] 239 24836 Hier 21:57:38
moonboots 
Questions & Réponses Solution rendu saccade    [1][2] 14 199 Hier 20:41:12
Elise1002 
Questions & Réponses Découper un objet selon un autre 3 79 Hier 18:06:34
mamain83 
Questions & Réponses Texture baké devient noir    [1][2] 14 100 Hier 07:58:33
moonboots 
Questions & Réponses Raccourcis clavier qui ne marchent plus v 2.93.4 0 44 26/11 19:16:31
GFC 
The Blender Clan 'tchat Conseil pour débutante 4 358 25/11 16:24:59
Ksuhma 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS Unity - Version alpha disponible + discord    [1][2][3]...[68] 672 152196 25/11 11:59:06
Hook 
Questions & Réponses Récupérer la couleur en sortie de shader 8 168 25/11 09:33:29
bibi 
Questions & Réponses Peut-on entrer les coordonnées du point visé de la caméra ? 4 139 24/11 19:16:16
CBY 
Questions & Réponses [résolu] snap fixe sur les cm ou mm 2 108 24/11 17:47:40
mamain83 
Questions & Réponses debutant- engrenage en pointe 8 256 24/11 17:30:55
CBY 
The Blender Clan 'tchat ANNONCE IMPORTANTE : LE BLENDER CLAN REOUVRE !! Etat des lieux sur le présent et le futur :)    [1][2][3] 20 44116 24/11 01:55:17
jor760 
Questions & Réponses [non résolu] Fusion 360 - recherche d'un connaisseur 0 99 22/11 18:24:48
Redstar 
The Blender Clan 'tchat [abandonné] Clavier Corsair K55 RGB Pro / Raccourcis clavier    [1][2] 14 447 21/11 19:46:01
CBY 
Questions & Réponses Paramétrage des Particle System 0 109 21/11 10:05:15
Horemheb 
Questions & Réponses Gestion des Hook 4 177 21/11 09:26:17
Horemheb 
Questions & Réponses Tissu élastique    [1][2] 14 487 21/11 09:21:27
Horemheb 
Questions & Réponses csv>python>blender 8 1251 18/11 18:46:06
Cdric 
Questions & Réponses Editer un nom avec la police 'DroidSans.ttf' en hindi 0 121 18/11 09:55:16
Melodicpinpon 
Questions & Réponses Debutant - accentuation de relief 3 232 17/11 11:42:08
CBY 

Qui est en ligne
152 utilisateur(s) en ligne (dont 82 sur Forums)

Membre(s): 5
Invité(s): 147


MeredithCa, SophieD14, OllieHargr, NellyOuc81, StaciaCrea, plus...
Nouveaux membres
VeronaI97 28/11/2021
IPEJosie4 28/11/2021
IndiaSneed 28/11/2021
KandySauls 28/11/2021
SterlingQ3 28/11/2021
BellaWan15 28/11/2021
XHIAmie485 28/11/2021
DwayneThig 28/11/2021
MitchellGo 28/11/2021
AntonioAng 28/11/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Dec 29
Anniversaire d'ebrain
Jan 8
BUG de Lyon
Fev 15
Anniversaire de Dany
plus 246 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445