Re: Sauvegarder des propriétés : modifier un script python via le GE

Posté par Speedlight le 9/7/2011 15:24:12
Yo !

Normalement, si tu a vu les boucles, les incrementations, l'ecriture dans les fichiers, et un peu de logique, ça devrait se faire.

D'abord: Recuperer ce que tu veux stocker.
Tu créé donc un objet, tu met deux sensors keybord pour les touches de sav/load, que tu relie a un controller python, pointant le script.
Ensuite tu crée tout l'attirail pour pourvoir se mouvoir, histoire que l'on puisse le bouger dans le game engine, le but sera de pouvoir sauvegarder sa position.

Une fois tout cela fait, attaquons le script:
/!\ Je suis encore et toujours sur la 2.49b, mais la transposition n'est pas compliquée !
# Je commenterais tout au long du script afin qu'il soit le plus clair possible.

# Avant tout je créé des raccourcis:
gl = GameLogic
x, y, z = 0, 1, 2

# Je recupere le controller:
cont = gl.getCurrentController()

# Je recupere l'objet:
obj = cont.owner

# Je recupere les touches de sav/load:
sav = cont.sensors["le_nom_du_sensors_de_ta_touche_sav"]
load = cont.sensors["le_nom_du_sensors_de_ta_touche_load"]

# Je recupere la position de l'objet:
pos = obj.position


Ensuite, a partir de la, plusieurs methodes.
Je vais donc faire la plus simple, du moins je pense.

# Systeme de sauvegarde/chargement:
nomFichier = "nom_fichier.extension"

# Est ce que le sensor sav est activé ?
if sav.positive == 1:

     # Dans ce cas, ouvrir le fichier en mode ecriture seulement ("w" = write)
     fichier = open(nomFichier, "w")
     # J'ecris la position:
     fichier.write(pos)
     # Et je ferme le fichier:
     fichier.close()

if load.positive == 1:

     # Là, j'ouvre le fichier en mode lecture seulement ("r" = read)
     fichier = open(nomFichier, "r")
     # Je lit la position:
     posF = fichier.read()
     # Je ferme le fichier, j'ai eu ce que je voulais
     fichier.close()

     # Et enfin j'assigne la position à l'objet:
     obj.position = eval(posF)


Et voila ! normalement, tout fonctionne !
Je dit bien normalement, et je te rappel bien que c'est pour la 2.49b. Etant donné que je l'ai pas testé (j'ai pas blender sous la main...) il se peut qu'il y est EVENTUELLEMENT une toute petite erreur... Auquel cas tu peux m'envoyer le blend, et je verrais pour trouver blender afin de corriger ça...

Bref, le script et relativement simple là, dès que l'on souhaite sauvegarder plus de variables, ca devient un peu plus folklorique

Ah et encore, essaye de ne pas charger avant de sauvegarder, comme le fichier de sauvegarde n'est créé que lorsque tu sauvegarde, il va renvoyer une erreur comme quoi il trouve pas. Mais si tu as deja sauvegarder avant, tu peux fermer blender et relancer le chargement sans probleme, le fichier sera toujours la.

Voili voilo !

Cette contribution était de : http://blenderclan.tuxfamily.org/html/newbb/viewtopic.php?forum=3&topic_id=31355&post_id=384466