[Résolu] SRD_CharacterCreatorEx erreur "folders is not defined"
Mer 30 Aoû 2017 - 2:01
Sur RMMV, je me suis lancé dans un projet que j'envisage à terme d'exporter sur Android. Dans RMMV, je lance mon jeu, tout va bien. Je tente un premier export, sous forme de site web pour Windows, et c'est là que ca commence à bugger.
Parmi les scripts que j'utilise j'ai choisi de prendre le Character Creator Ex. Evidemment j'ai veillé à ce que toutes les ressources que j'utilise (en l'occurrence le dossier du générateur) aient bien été exportées. Et dès que je lance le fichier index.html, voilà le résultat :
(j'ai redéclaré les fonctions gérant les erreurs pour afficher la trace de l'erreur sous le message, parce que je n'avais rien dans la console)
Le script que j'utilise est disponible ici : http://sumrndm.site/character-creator-ex/
Et la fonction qui bugge est celle ci :
Merci par avance à tous ceux qui pourront m'aider
PS : j'ai essayé de chercher si d'autres avaient eu la même erreur sur le site de SumRndmDde, mais mon anglais étant ce qu'il est, j'ai cherché les occurrences du mot folders sans rien trouver
Parmi les scripts que j'utilise j'ai choisi de prendre le Character Creator Ex. Evidemment j'ai veillé à ce que toutes les ressources que j'utilise (en l'occurrence le dossier du générateur) aient bien été exportées. Et dès que je lance le fichier index.html, voilà le résultat :
(j'ai redéclaré les fonctions gérant les erreurs pour afficher la trace de l'erreur sous le message, parce que je n'avais rien dans la console)
Le script que j'utilise est disponible ici : http://sumrndm.site/character-creator-ex/
Et la fonction qui bugge est celle ci :
- Code:
_.preloadCharacterPieces = function() {
const folders = this.getFolderList(); // <<<<<<<<<<<<<<<< C'est ici que la variable folders est censée être définie
_._ccex_loads = 0;
_._ccex_files = -1;
let tempFiles = 0;
const increaseLoads = function() {
_._ccex_loads++;
}
for(let i = 0; i < folders.length; i++) { // <<<<<<<<<<<<<<< C'est là que le script plante, folders n'est pas défini
const files = this.getFileList(folders[i] + '/');
for(let j = 0; j < files.length; j++) {
this.loadImageWPath(this.path + folders[i] + '/walk/', files[j]).addLoadListener(increaseLoads.bind(this));
this.loadImageWPath(this.path + folders[i] + '/dead/', files[j]).addLoadListener(increaseLoads.bind(this));
this.loadImageWPath(this.path + folders[i] + '/face/', files[j]).addLoadListener(increaseLoads.bind(this));
this.loadImageWPath(this.path + folders[i] + '/sv/', files[j]).addLoadListener(increaseLoads.bind(this));
tempFiles += 4;
}
}
_._ccex_files = tempFiles;
this.loadImage('CustomCharacter');
this.loadImage('CustomFace');
this.loadImage('Background');
this.loadImage('Walk-Background');
this.loadImage('Dead-Background');
this.loadImage('SV-Background');
this.loadImage('Face-Background');
};
Merci par avance à tous ceux qui pourront m'aider
PS : j'ai essayé de chercher si d'autres avaient eu la même erreur sur le site de SumRndmDde, mais mon anglais étant ce qu'il est, j'ai cherché les occurrences du mot folders sans rien trouver
- AshalaMembre
- Nombre de messages : 546
Age : 32
Localisation : L'Antre-Deux-Mondes.
Distinction : "A une araignée au plafond" [Nowa]
Date d'inscription : 09/06/2016
Re: [Résolu] SRD_CharacterCreatorEx erreur "folders is not defined"
Mer 30 Aoû 2017 - 9:25
Le premier truc que j'essaierai, c'est de voir si en format .exe ça donne la même erreur, vérifier que le dossier a bien le même nom, au même emplacement... Le plugin a l'air de galérer à lister les fichiers durant la boucle.
Après je file au boulot dans peu de temps alors je regarderai plus tard. Je n'ai pas l'impression que les autres sur le site avaient la même erreur, les lignes de code étaient différentes :/
EDIT : La documentation du plugin m'efforce de penser qu'il faudrait que tu revérifie l'agencement des dossiers, même si tu dis l'avoir fais, juste "au cas où".
On dirait que les dossiers /walk/ /dead/ /face/ /sv/ n'ont pas été exporté d'après le message.
Après je file au boulot dans peu de temps alors je regarderai plus tard. Je n'ai pas l'impression que les autres sur le site avaient la même erreur, les lignes de code étaient différentes :/
EDIT : La documentation du plugin m'efforce de penser qu'il faudrait que tu revérifie l'agencement des dossiers, même si tu dis l'avoir fais, juste "au cas où".
On dirait que les dossiers /walk/ /dead/ /face/ /sv/ n'ont pas été exporté d'après le message.
Re: [Résolu] SRD_CharacterCreatorEx erreur "folders is not defined"
Mer 30 Aoû 2017 - 18:39
Au départ, j'ai pensé à ca aussi (et effectivement, comme j'avais coché l'option "Exclure les ressources inutilisées", j'ai été obligé de les copier/coller dans le dossier de mon export)
Tous les sous dossiers du dossier img\SumRndmDde\character-creator-ex\ ont bien 4 sous dossiers, à savoir dead\, face\, sv\ et walk\
J'ai lancé comme tu m'y invitais le Game.exe du dossier exporté, il se lance bien (sans erreur). J'ai relancé ensuite le index.html, là il plante comme cette nuit... Mais je crois qu'avec tes explications j'ai enfin compris pourquoi ce bug : j'ai fait un export windows, donc, et le Game.exe est à la racine du dossier exporté, tandis qu'index.html est dans le dossier www\. Je viens de voir que l'export vers les navigateurs était une autre option, donc j'essaie et je reviens ici pour dire si ca a marché
Edit 1:
A première vue, l'export web me donne la même arborescence que l'export windows (sauf que je n'ai évidemment pas ni l'exécutable windows ni les dll). J'ai bien sûr réexporté les images du générateur de personnages (ainsi qu'un autre dossier d'images qui ne s'exporte pas non plus tout seul)
Suspense...
...
... Même erreur... T_T Mais le problème est peut être celui sur lequel tu as mis le doigt : le dossier courant n'est pas le même selon si on lance Game.exe (là on est à la racine du dossier exporté) ou si on lance index.html (là on est dans un sous dossier www\)
Tous les sous dossiers du dossier img\SumRndmDde\character-creator-ex\ ont bien 4 sous dossiers, à savoir dead\, face\, sv\ et walk\
J'ai lancé comme tu m'y invitais le Game.exe du dossier exporté, il se lance bien (sans erreur). J'ai relancé ensuite le index.html, là il plante comme cette nuit... Mais je crois qu'avec tes explications j'ai enfin compris pourquoi ce bug : j'ai fait un export windows, donc, et le Game.exe est à la racine du dossier exporté, tandis qu'index.html est dans le dossier www\. Je viens de voir que l'export vers les navigateurs était une autre option, donc j'essaie et je reviens ici pour dire si ca a marché
Edit 1:
A première vue, l'export web me donne la même arborescence que l'export windows (sauf que je n'ai évidemment pas ni l'exécutable windows ni les dll). J'ai bien sûr réexporté les images du générateur de personnages (ainsi qu'un autre dossier d'images qui ne s'exporte pas non plus tout seul)
Suspense...
...
... Même erreur... T_T Mais le problème est peut être celui sur lequel tu as mis le doigt : le dossier courant n'est pas le même selon si on lance Game.exe (là on est à la racine du dossier exporté) ou si on lance index.html (là on est dans un sous dossier www\)
- AshalaMembre
- Nombre de messages : 546
Age : 32
Localisation : L'Antre-Deux-Mondes.
Distinction : "A une araignée au plafond" [Nowa]
Date d'inscription : 09/06/2016
Re: [Résolu] SRD_CharacterCreatorEx erreur "folders is not defined"
Mer 30 Aoû 2017 - 18:49
Marf, à partir de là il va peut être falloir regarder dans le plugin et voir si tu peux modifier le path pour la version html ><
Bon courage en tout cas :/
Bon courage en tout cas :/
Re: [Résolu] SRD_CharacterCreatorEx erreur "folders is not defined"
Mer 30 Aoû 2017 - 19:30
J'ai trouvé *o* (ca m'aura pris du temps, mais j'ai trouvé, je le jure !)
En fait ca tient au comportement du script. Si il est lancé depuis NodeJs (autrement dit depuis Game.exe ou depuis RMMV directement), alors il parcourt le dossier img\SunRndmDde\character-creator-ex\ à la recherche des différents morceaux pour les précharger (comme ca, à l'appel du script, pas de latence inutile). Jusque là, aucun problème. J'ajouterai qu'il enregistre les différentes informations sur l'arborescence dans un fichier json nommé cc-info.sumrndmdde et contenu dans le dossier data\. Pourquoi ? J'y viens.
Si il n'est pas chargé depuis NodeJs, et c'est le cas si le jeu est exporté pour être joué sur un navigateur, ou encore sur android, le script ne recherche plus les arborescences en local. C'est là qu'intervient notre petit json cc-info.sumrndmdde. En effet, il suffit de le lire pour avoir toutes les informations utiles au script.
Bon, jusque là, tout marche bien.
Dans les deux cas de figure, le script charge la liste des répertoires dans une variable nommée _.fileInfoStuff (qui n'est rien d'autre qu'un objet json qui va contenir entre autre chose, la liste des dossiers, plus tard accessible avec la clé folder)
Là encore, rien d'anormal, le script fait ce dont il a besoin pour fonctionner plus tard.
Si le jeu est lancé depuis Game.exe ou encore RMMV, alors c'est cette fonction qui est appelée :
Et maintenant, si le jeu n'est pas lancé en local (ou en tout cas pas depuis Game.exe ou RMMV) ? Je vous l'ai dit le script va chercher sa configuration dans le fichier json mentionné plus haut. C'est cette fonction qui fait ce boulot :
Alors pourquoi ca bugge ? Il m'aura fallu faire des alert et des console.log à différents endroits du script pour comprendre tout ceci. Dans le corps de la fonction, rien ne vous choque ?
Aller je vous donne un indice Regardez ce que me retourne un console.log(this) placé à l'intérieur de la condition du code précédent :
Vous avez compris cette fois ? ^_^ this est la requête ajax et non le script. Pour corriger cette erreur, il ne faut pas faire
En fait ca tient au comportement du script. Si il est lancé depuis NodeJs (autrement dit depuis Game.exe ou depuis RMMV directement), alors il parcourt le dossier img\SunRndmDde\character-creator-ex\ à la recherche des différents morceaux pour les précharger (comme ca, à l'appel du script, pas de latence inutile). Jusque là, aucun problème. J'ajouterai qu'il enregistre les différentes informations sur l'arborescence dans un fichier json nommé cc-info.sumrndmdde et contenu dans le dossier data\. Pourquoi ? J'y viens.
Si il n'est pas chargé depuis NodeJs, et c'est le cas si le jeu est exporté pour être joué sur un navigateur, ou encore sur android, le script ne recherche plus les arborescences en local. C'est là qu'intervient notre petit json cc-info.sumrndmdde. En effet, il suffit de le lire pour avoir toutes les informations utiles au script.
Bon, jusque là, tout marche bien.
Dans les deux cas de figure, le script charge la liste des répertoires dans une variable nommée _.fileInfoStuff (qui n'est rien d'autre qu'un objet json qui va contenir entre autre chose, la liste des dossiers, plus tard accessible avec la clé folder)
Là encore, rien d'anormal, le script fait ce dont il a besoin pour fonctionner plus tard.
Si le jeu est lancé depuis Game.exe ou encore RMMV, alors c'est cette fonction qui est appelée :
- Code:
_.saveFileInfoStuff = function() {
const folds = this.getFolderListNodeJs();
this.fileInfoStuff.folders = folds;
for(let i = 0; i < folds.length; i++) {
const fold = folds[i] + '/';
this.fileInfoStuff[fold] = this.getFileListNodeJs(fold);
}
const data = LZString.compressToBase64(JSON.stringify(this.fileInfoStuff));
const fs = require('fs');
const dirPath = this.getFilePathData();
const filePath = dirPath + 'cc-info.sumrndmdde';
fs.writeFileSync(filePath, data);
};
- Code:
this.fileInfoStuff.folders = folds;
Et maintenant, si le jeu n'est pas lancé en local (ou en tout cas pas depuis Game.exe ou RMMV) ? Je vous l'ai dit le script va chercher sa configuration dans le fichier json mentionné plus haut. C'est cette fonction qui fait ce boulot :
- Code:
_.loadSaveInfoFile = function() {
var xhr = new XMLHttpRequest();
var url = 'data/cc-info.sumrndmdde';
xhr.open('GET', url);
xhr.onload = function() {
if (xhr.status < 400) {
this.fileInfoStuff = JSON.parse(LZString.decompressFromBase64(xhr.responseText));
}
};
xhr.onerror = function() {};
xhr.send();
};
- Code:
this.fileInfoStuff = JSON.parse(LZString.decompressFromBase64(xhr.responseText));
Alors pourquoi ca bugge ? Il m'aura fallu faire des alert et des console.log à différents endroits du script pour comprendre tout ceci. Dans le corps de la fonction, rien ne vous choque ?
- Code:
xhr.onload = function() {
if (xhr.status < 400) {
this.fileInfoStuff = JSON.parse(LZString.decompressFromBase64(xhr.responseText));
}
};
Aller je vous donne un indice Regardez ce que me retourne un console.log(this) placé à l'intérieur de la condition du code précédent :
- Code:
19:26:41,391 XMLHttpRequest { fileInfoStuff: Object, onreadystatechange: null, readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, responseURL: "file:///D:/Users/Sphinx/Mes%20jeux%…", status: 200, statusText: "OK", responseType: "" } 1 SRD_CharacterCreatorEX.js:554:13
Vous avez compris cette fois ? ^_^ this est la requête ajax et non le script. Pour corriger cette erreur, il ne faut pas faire
- Code:
this.fileInfoStuff = JSON.parse(LZString.decompressFromBase64(xhr.responseText));
- Code:
_.fileInfoStuff = JSON.parse(LZString.decompressFromBase64(xhr.responseText));
- AshalaMembre
- Nombre de messages : 546
Age : 32
Localisation : L'Antre-Deux-Mondes.
Distinction : "A une araignée au plafond" [Nowa]
Date d'inscription : 09/06/2016
Re: [Résolu] SRD_CharacterCreatorEx erreur "folders is not defined"
Mer 30 Aoû 2017 - 19:38
Félicitations et merci de nous détailler la solution !
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|