Shit Fliez Index du Forum Shit Fliez
Bienvenue sur le forum officiel des Shit Fliez !
 
 AccueilAccueil  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Programmation de l'éditeur en ligne

 
Poster un nouveau sujet   Répondre au sujet    Shit Fliez Index du Forum -> Edition de Final Fantasy VII
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Fremen^SF
GDB des Shit Fliez


Inscrit le: 21 Mar 2003
Messages: 860
Localisation: Versailles

MessagePosté le: 10 Oct 2003 4:04    Sujet du message: Programmation de l'éditeur en ligne Répondre en citant

Format du fichier mis à jour le 01/11

Encore un nouveau topic, cette fois-ci pour parler de la programmation du site en php/cgi. Juste pour mémoire, il en a été question dans le topic Avancement du projet, mais l'avis de chacun est le bienvenu.
Je me suis permi de prendre un peu d'avance, car j'ai du retard sur mes cours et j'ai profité de mon "temps libre" actuel pour avancer sur ce projet. Car par la suite je passerai ici beaucoup plus rarement.

En ce qui concerne la partie cgi - dont je m'occupe - j'ai créé un programme import.cgi dont je vais expliquer la syntaxe. J'espère qu'elle correspond plus ou moins à ce qu'on a prévu avec Speedy.

Pour le moment, c'est mon PC qui fait office de serveur cgi/php, mon PC est allumé tout le temps donc pour le moment ça devrait suffire.
Les cgi sont donc stockés à cette adresse (à laquelle on ne peut de toute façon pas accéder Sourire ) :
http://fremensf.no-ip.com/cgi-bin/
Et la partie php, à laquelle Speedy a un accès via ftp, se trouvera ici :
http://fremensf.no-ip.com/ff7/
Si quelqu'un souhaite avoir un accès pour participer, il n'y a pas de problèmes.

L'appel à import.cgi peut se faire avec les paramètres suivants (dans n'importe quel ordre) :

subdir=sous-dossier où se trouve la racine du site FF7
Par exemple ff7/, il suffit juste de penser à mettre le slash à la fin Sourire )
Par défaut, ff7/ sera utilisé

filename=nom du fichier "file" à extraire.
Par exemple en mettant file, des fichiers fileN seront générés dans ff7/files/ (si subdir=ff7/). Le dossier "files" est un dossier que j'ai fixé, mais je ne pense pas que ça cause problème. Embarassé

filenum=numero du file à extraire (-1 signifie tous)
Par exemple, en mettant 24, et si subdir=ff7/ et filename=file, un fichier file24 sera généré dans ff7/files/

scenename=nom du fichier scene.bin à extraire.
Tous les fichiers "scene.bin" se trouvent dans ff7/scenes/. Actuellement il y a les trois originaux que l'on possède : scenepsfr.bin (provenant de la version ps française), scenepcfr.bin (provenant de la version pc française) et scenepcen.bin (provenant de la version pc anglaise ou US).
Autrement dit, pour relire des données originales d'un ou plusieurs "file", il suffira d'appeler import.cgi en lui donnant l'un de ces noms de fichiers.
Quant aux fichiers scene.bin supplémentaires, il suffirait de les stocker dans ce même dossier. J'ai pensé que ça laisserait suffisamment de champ au niveau de la programmation php ?


Un petit exemple d'utilisation d'import.cgi :
http://fremensf.no-ip.com/cgi-bin/import.cgi?filenum=-1&filename=pc_fr_org_&scenename=scenepcfr.bin
va le lire fichier http://fremensf.no-ip.com/ff7/scenes/scenepcfr.bin (scenename=scenepcfr.bin et par défaut subdir=ff7/), y extraire les 256 fichiers archivés (filenum=-1) et enfin générer des fichiers nommés pc_fr_org_0, pc_fr_org_1, ..., pc_fr_org_255 dans le répertoire http://fremensf.no-ip.com/ff7/files/

Dans tous les cas, si le cgi ne plante pas (il y aurait une raison ? ^^), il enverra une page en text (text/plain) contenant (uniquement) la chaîne "OK" lorsqu'il aura fini ses opérations.
Autre remarque, si le programme en cgi est déjà utilisé par un autre utilisateur (le script s'éxécute très rapidement mais on ne sait jamais), il se mettra en pause pendant une seconde avant de réessayer, de sorte à libérer du temps CPU.

Bref, maintenant voici le "format" des fichiers que ce programme génère. J'ai vérifié le contenu du "file0" et il correspondait à l'original, néanmoins il se peut qu'il contienne encore de petites bêtises. Une façon de le vérifier sera de faire le programme cgi inverse pour voir s'il reconstitue bien un fichier scene.bin valide.

Chaque fichier contient toutes les valeurs d'un "file", dans le même ordre que dans le fichier scenestats.txt. Toutes les valeurs sont exprimés en décimal, et il n'y a qu'une seule valeur par ligne. Exception faite des chaînes de caractères qui elles ne prennent qu'une ligne chacune. Autre remarque, pour les valeurs connues (tous les trucs qui ne sont pas "unkwnown"), lorsque la valeur est "vide" (exemple : pas d'objet, pas de monstre à un emplacement, etc...), on trouve à la place une ligne vide. Voici maintenant le format du fichier, (grossièrement). Pour faire plus propre, je remplace parfois les sauts de ligne par des ";"

Code:

// Note : les fichiers générés ne contiennent pas de saut de ligne
// contrairement à cet exemple
ID_monstre_1;ID_monstre_2;ID_monstre_3;ID_monstre_4 // entiers non signés 16bit
                                                    // peuvent être des lignes vides si ID absent
unkwnown1;unknown2;...;unknown80 // 80 chars dont on ne connait pas le sens
unkwnown1;unknown2;...;unknown192 // encore 192 chars dont on ne connait pas le sens précis
monster_ID01;X01;Y01;Z01;ligne_01;ligne2_01;unknown_01 // 6 short int et un long int
monster_ID02;X02;Y02;Z02;ligne_02;ligne2_02;unknown_02 // 6 short int et un long int
...
monster_ID24;X24;Y24;Z24;ligne_24;ligne2_24;unknown_02 // 6 short int et un long int
                                                       // si monster_ID est vide, les autres lignes du groupe seront vides aussi

// Caractéristiques du monstre 1 (ou lignes vides s'il n'existe pas). Sauf si précisé, ce sont des unsigned char
ID;nom;niveau;vitesse;chance;esquive_physique;force
défense_physique;magie;défense_magique;MP;AP;HP;EXP;gils

objet_methode1;...;objet_methode4 // *** méthode d'obtention des objets
objet1;...;objet4 // *** (short int) id des objets

objet_obtenu_avec_Trans // ou vide si absent ^^ (short int)
element1;element2;...;element8 // liste de huit éléments (ou vide si aucun)
lien1;lien2;...;lien8 // lien entre l'élément et le monstre
actionID1;actionID2;...;actionID16 // liste des ID d'attaques spéciales (ou vide si aucun)
actiontextID1;actiontextID2;...;actiontextID16 // liste des ID de texte de chaque attaque (ou vide si aucun) (short int)
unknown1;unknown2;...;unknown32 // qu'est-ce que ces chars ? // *** 36 éléments -> 32
unknown1;unknown2;...;unknown8  // qu'est-ce [...] ? // *** 12 éléments -> 8
unknown1;unknown2               // qu'est-ce [...] ?
unknown1;unknown2;...;unknown4  // qu'est-ce [...] ?
unknown1;unknown2;...;unknown4  // qu'est-ce [...] ?

// Caractéristiques du monstre 2 (ou lignes vides s'il n'existe pas).
...

// Caractéristiques du monstre 3 (ou lignes vides s'il n'existe pas).
...

unknown1;unknown2;...;unknown896 // encore des chars :)
attack_name_ID1 // unsigned short int (vide si pas d'attaque)
attack_name1 // nom de l'attaque (sinon vide)
attack_name_ID2 // unsigned short int (vide si pas d'attaque)
attack_name2 // nom de l'attaque (sinon vide)
...
attack_name_ID32 // unsigned short int (vide si pas d'attaque)
attack_name32 // nom de l'attaque (sinon vide)

unknown1;unknown2;...;unknown512 // qu'est-ce que ces chars ?

// Ici commencent les scripts -_-
// Ils sont normalement formattés correctement, mais
// je laisse les explications pour quand ce sera utile.



Pour information, les "éléments" et les "liens" sont listés dans mon ancienne doc - qui date d'une semaine ou deux Sourire

Quant à la liste des objets, je l'ai mise en ligne ici. C'est une liste en anglais (qu'on ne me demande pas d'où qu'elle vient Clin d'oeil ), mais c'est un début.


Voilà, je crois que c'est à peu près tout pour les spécifications de import.cgi, heureusement export.cgi fera le contraire, donc ce sera moins long à raconter Sourire
Un dernier point tout de même : il y a aussi en ligne un importdbg.cgi. Il fonctionne presque pareil, sauf qu'au lieu d'écrire "OK", il va afficher tout le déroulement du script étapes par étapes. On ne sait jamais, ça peut être utile en cas de besoin. Sinon son fonctionnement est identique.

En tout cas je suis ouvert à tout commentaire sur quoi que ce soit.
_________________


Dernière édition par Fremen^SF le 01 Nov 2003 9:19; édité 1 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur
Fremen^SF
GDB des Shit Fliez


Inscrit le: 21 Mar 2003
Messages: 860
Localisation: Versailles

MessagePosté le: 16 Oct 2003 6:19    Sujet du message: Répondre en citant

Voyant que import.cgi a motivé toute la population, sous cette pression je me suis empressé de faire export.cgi ! Clin d'oeil

Après avoir utilisé import.cgi pour extraire des fichiers textes d'un scene.bin original, et export.cgi pour récupérer ces mêmes fichiers textes et recréer un nouveau "scene.bin", et après avoir comparé mon ancien et nouveau "scene.bin", je pense pouvoir affirmer que tout doit fonctionner correctement. J'ai vraiment souffert sur cette partie, donc il se peut qu'il y ait quelques oublis.

export.cgi n'accepte que trois paramètres utiles :

- subdir : sous-dossier où se trouve la racine du site FF7

- filename : le nom des fichiers "file" à extraire.
Par exemple en mettant file, des fichiers fileN seront générés dans ff7/files/ (si subdir=ff7/). Le dossier "files" est un dossier que j'ai fixé, mais je ne pense pas que ça cause problème. Embarassé

- scenename : le nom du fichier "scene.bin" à créer. Il sera automatiquement stocké dans le sous-dossier "scenes".

La syntaxe rejoint donc celle de import.cgi.

Il ne reste donc plus qu'à faire un joli script en PHP pour afficher tout ça et le tour sera joué Clin d'oeil
_________________
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur
jopfleger



Inscrit le: 07 Oct 2003
Messages: 48
Localisation: Strasbourg

MessagePosté le: 17 Oct 2003 8:32    Sujet du message: Répondre en citant

La population qui a applaudi unanimement import.cgi salue export.cgi.
Si la population ne descend pas sur les Champs, c'est parcequ'on n'a pas le droit de projeter n'importe quelle photo (même Fremen rhabillé par un grand couturier) sur un mur d'eau au Trocadéro, ce genre de pub est limité aux footeux.
Il faut bien avouer qu'ils sont autrement méritants, c'est un fan qui parle.
_________________
Aimant s'instruire, partager le goût des voyages et l'acquisition de connaissances, se sentant responsable ("spectateur engagé", Raymond Aron). Ma caractéristique c'est l'émerveillement devant la diversification de toutes les formes de vie.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail
Fremen^SF
GDB des Shit Fliez


Inscrit le: 21 Mar 2003
Messages: 860
Localisation: Versailles

MessagePosté le: 01 Nov 2003 6:45    Sujet du message: Répondre en citant

Merci Jop, je n'avais même pas vu ce post, et en fait je n'en demandais pas autant Clin d'oeil

Voilà sinon je postais juste en m'adressant tout particulièrement à Speedy, pour prévenir que j'ai enfin trouvé comment régler le problème de serveur SQL que j'avais. Autrement dit il ne reste plus qu'à passer à la pratique, ou bien même donner un petit peu de nouvelles, ce serait toujours ça de pris. Sourire

P.S.: Le format de fichier (plus haut) a été modifié en prenant en compte les découvertes de FWS (cf. topic "déchiffrage du fichier SCENE.BIN"). Les 4 modifications sont indiquées par des ***
_________________
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur
Speedy^SF
Shit Fliez


Inscrit le: 21 Mar 2003
Messages: 758
Localisation: Troyes

MessagePosté le: 05 Nov 2003 21:40    Sujet du message: Répondre en citant

Fremen : nouvelle prise en considération STOP suis actuellement en manque de temps libre STOP retourne en production dés que possible STOP salutation à vous STOP cordialement JR STOP

^_^
_________________
Speeeeeeddyyyyyyyyyyy !!!!!!
Personnal Website
Team Website
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Shit Fliez Index du Forum -> Edition de Final Fantasy VII Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001 phpBB Group
trevorj :: theme by ~// TreVoR \\~
Traduction par : phpBB-fr.com