Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Ectelion Membre reconnu
Inscrit le: 12 Nov 2011 Messages: 1062 Sujets: 107 Spécialité en worldedit: Inactif(Enfin presque) Médailles: 1 (En savoir plus...)
|
Posté le: 07/11/15 19:21 Sujet du message: Récupérer les données d'un fichier txt |
|
|
C'est possible ? Je sais qu'on peut exporter des données(généralement on exporte un code de save/load comme dans GoH ou TKoK)
ex: le résultat d'un export de code sur TKoK
Jass: | function PreloadFiles takes nothing returns nothing
call Preload( "
Name: Ectelion
Class: Paladin
Level: 9
Exp: 2180
Gold: 235
Password:
4A8y3-YYmw1-UinRe-wWTXA-oh1bW-1f949-Rl2Mc-MIz3K-wArti-iXG9A-w8jsG-SWgMe-7f4P8-SJE2y-nOJgS-7yHFT-FBnd3-O
Note: Ignore the text about Preloading, that is normal.
" )
call PreloadEnd( 0.0 )
endfunction |
En fait je faisait le tour des fonctions GUI et je suis tombé sur celles de Preload dans Partie.
Et du coup je me suis dit que si on pouvait exporter des données, on devait pouvoir les importer (pour obtenir un truc mimant les BDD de SCII(même si sur SCII ça doit pas marcher avec des fichiers, j'ai passé 10min sur l'éditeur mais je pense pas que les deux systèmes soient comparables.).)
Après je parle du GUI, mais j'imagine que ça doit être aussi/seulement possible en JASS/vJASS(à supposer que ça le soit). _________________
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 11/11/15 10:09 Sujet du message: |
|
|
Pour l'écriture d'un fichier:
Jass: | call PreloadGenStart()
call Preload("Your save/load code is: load-load-load-load")
call PreloadGenEnd("C:\\saveloadcode.txt") |
Généra le fichier:
Jass: | function PreloadFiles takes nothing returns nothing
call Preload( "Your save/load code is: load-load-load-load" )
call PreloadEnd( 0.0 )
endfunction |
Le truc c'est que Warcraft écris le paramètre texte de la fonction Preload dans le fichier sans échapper les caractères, donc le code suivant
Jass: | call PreloadGenStart()
call Preload("\")\n
call LoadCharacter(\"load-load-load-load\")\n
")
call PreloadGenEnd("C:\\saveloadcode.txt") |
Généra le fichier:
Jass: | function PreloadFiles takes nothing returns nothing
call Preload( "" )
call LoadCharacter("load-load-load-load")
call PreloadEnd( 0.0 )
endfunction |
Que tu peux exécuter avec PreloadFile.
Donc oui c'est possible de lire un fichier, le problème? c'est que tu dois avoir la clé de registre AllowLocalFiles à true pour que Warcraft essaye d'ouvrir un fichier local, autrement il va uniquement chercher dans les archives mopaqs.
C'est pour cela que des RPG comme TKoK se contentent seulement d'écrire le fichier pour que l'utilisateur fasse seulement un copier/coller.
Il est néanmoins possible avec ces hacks sur le Preload d'écrire un fichier .bat que tu peux faire changer la clé de registre AllowLocalFiles, le problème c'est que l'utilisateur doit exécuter le fichier .bat. _________________
|
|
Revenir en haut |
|
|
Ectelion Membre reconnu
Inscrit le: 12 Nov 2011 Messages: 1062 Sujets: 107 Spécialité en worldedit: Inactif(Enfin presque) Médailles: 1 (En savoir plus...)
|
Posté le: 11/11/15 17:44 Sujet du message: |
|
|
D'accord, donc il est (techniquement) possible de créer un save-load automatique.
En gros(si j'ai bien compris), si l'on voulait se rapprocher au plus près de l'automatisme il faudrait que le déclencheur de sauvegarde check si il y a un fichier .txt qui indique que l'automatisation est faîte, comme au 1er lancement, il ne trouvera pas le fichier puisque la clé de registre AllowLocalFiles ne vaut pas true, il le crée ainsi que le fichier correspondant au héros, de plus il doit créer un fichier .bat qui devrait s'exécuter tout seul[ pour changer la valeur de AllowLocalFiles en true puis s'autosupprimer. aux autres sauvegardes, comme on aurait le fichier qui indique que la sauvegarde se fait automatiquement, on aurait pas besoin de le faire.
Je pense que c'est trop fastidieux(et en plus là je parle du fonctionnement théorique) pour représenter un réel intérêt car c'est pas ce que ça coute à l'utilisateur de copier-coller son code.
En tous cas, c'est bon à savoir _________________
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 12/11/15 12:10 Sujet du message: |
|
|
Je viens de penser qu'il y a un moyen:
Lorsque Warcraft essaye d'ouvrir une archive mpq il lis les premiers octets pour trouver la signature du format de fichier quelques choses comme tous les 512 octets. C'est comme cela que l'on peut voir des mods Warcraft qui se font en un exécutable à placer dans le dossier de Warcraft, en réalité on peut l'ouvrir avec un archiveur mpq, ils ont tout simplement rajouter les données du fichier mpq à la fin de l'exécutable et changer le code de l'exécutable pour qu'il ouvre en plus l'archive exécutable.
Bref PreloadGenEnd génère du texte en début de fichier et fin de fichier, mais entre les deux on peut écrire du texte et normalement des données binaires.
En conclusion il est possible d'écrire un fichier mpq, si on lui donne un nom de fichier que warcraft ouvre automatiquement au lancement on pourrait donc faire un système de sauvegarde/chargement automatique et d'autres choses car cela ne se limiterai pas seulement à l'exécution de Jass.
Après cela nécessite d'écrire en Jass un archiveur mpq, cela n'est pas si compliqué que cela car le format est bien documenté et il n'oblige pas la compression des fichiers. _________________
|
|
Revenir en haut |
|
|
|