Page 1 sur 1

Utilisation d'un fichier .ini

Posté : 19 déc. 2011, 20:58
par A .
Bonsoir à tous !

J'ai commencé à construire un mod pour mon plaisir personnel, et aussi pour tester les nombreuses possibilités d'OBSE. Ce mod, à l'aide d'une touche clavier, permet de réaliser une action. Jusque là ça marche du tonnerre. Sauf qu'une touche clavier imposée, c'est marrant 5 min, mais quand on a des mods comme DeadlyReflex, ça peut vite être problématique. Donc j'avais commencé à construire un code alternatif pour que l'utilisateur puisse choisir sa touche. Ça me semblait plus simple dans un premier temps de passer par un fichier .ini, que de construire des boîtes de dialogues pour stocker ce genre d'informations à l'aide d'informations, que de toute façon je ne maitrise pas.

Essai n°1 - avec Pluggy ( http://cs.elderscrolls.com/index.php/Pl ... ading_Data )

Mon fichier .ini était stocké dans le dossier « Data\ini »et construit de la sorte :

Code : Tout sélectionner

[General]
Touche=49
Ici 49 est censé être l'index de la touche « N ». J'ai testé avec la valeur en hexadécimal également (dans le doute...)

Le code dans le script était (pompé sur l'exemple) :

Code : Tout sélectionner

[...]

long Touche

;Variables needed to feed the IniRead___ functions
long file
long section
long key

;Variables for default values
long dInt

Begin Gamemode

set file to CreateString -1 "monmode.ini"
set section to CreateString -1 "General"
set key to CreateString -1 "Touche"

set dInt to 48
set Touche to IniReadInt file section key dInt

[...]

End
48, c'est pour la touche « B », et dInt, c'est ce qu'il utilise par défaut s'il ne trouve pas la valeur dans l'ini. En jeu ça ne marchait pas avec N, mais bien avec B. Donc je suppose que c'est un problème avec mon .ini, ou les CreateString qui je l'avoue, me dépassent un peu !


Essai n°2 - en utilisant RunBatchScript ( http://cs.elderscrolls.com/index.php/RunBatchScript )
le nouvel .ini :

Code : Tout sélectionner

Set Touche to 49
Le nouveau code :

Code : Tout sélectionner

Begin GameMode

if GetGameLoaded
	set fQuestDelayTime to .05

	if FileExists "Data\ini\monmode.ini"
		PrintToConsole "Ok"                  <= pour vérifier que jusque là ça marchait bien, et c'est le cas.
		RunBatchScript "Data\ini\monmode.ini"     
	else
		PrintToConsole "Epicfail"           <=  :D 
		set Touche to 50                         <= solution de secours si le fichier .ini n'existe pas 
	endif

Endif
Là je pense que quelque chose m'échappe une fois encore dans le fichier .ini avec l'utilisation de la variable, mais je ne sais pas quoi. Une référence peut-être ?

Vos avis m'intéressent !




Edit : je me promenai sur la Wteam, lorsque j'ai vu passer au détour d'un post « variable de quête » et qu'un faisceau lumineux du genre divin, subite et transcendant m'a éclairé :mrgreen:
:arrow:

Code : Tout sélectionner

Set IDdeLaQuêteOùSeTrouveLaVariable.Touche to 49
Par contre pour le cas n°1 je sèche toujours.