Bienvenue visiteur !
|
Désactiver la neige
Statistiques
Liste des membres
Contact
Mentions légales
368 connectés actuellement
30912414 visiteurs depuis l'ouverture
2050 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
LizyEe -
posté le 22/08/2016 à 12:15:13 (22 messages postés)
| | Domaine concerné: javascript
Logiciel utilisé: MV
Bonjour, j'ai une erreur que je n'arrive pas à comprendre dans mon script, je pense que ça a un rapport avec la porter des fonctions/variables mais je ne trouve aucun moyen de résoudre l'erreur .
Ici je crée une variable 'this._selfConditions = {};' dans initialize de Game_Event, puis je crée deux nouvelle fonctions pour y avoir accès :
- setSelfConditionTemp(key, value)
- getSelfConditionTemp(key)
Je fait une sorte de Game_SelfSwitches mais dans l'événement même, pour le moment tout fonctionne même avec une commande script :
- $gameMap.event(this._eventId).setSelfConditionTemp([this._mapId, this._eventId, "A"], true);.
et une condition script :
- $gameMap.event(this._eventId).getSelfConditionTemp([this._mapId, this._eventId, "A"]);
La ou arrive l'erreur c'est quand je test directement dans la fonction 'meetsConditions(page)' de Game_Event, lorsque j'utilise this.getSelfConditionTemp(key) sa ne fonctionne plus :x.
Pastebin : http://pastebin.com/396YLcb2
Vous savez pourquoi j'ai une erreur ?
|
Tassle -
posté le 22/08/2016 à 13:32:03 (5274 messages postés)
| Disciple de Pythagolf | Jamais fait de javascript donc je vais ptêt' dire une connerie mais tu as bien défini la valeur de _selfConditions[key] avant de tenter d'y accéder ? Parce que si tu appelles pas setSelfConditionTemp avant ton hash est vide.
|
~~ |
LizyEe -
posté le 22/08/2016 à 14:33:12 (22 messages postés)
| | Bah en faite non car en événement quand je fait ceci ça fonctionne:
> Condition : $gameMap.event(this._eventId).getSelfConditionTemp([this._mapId, this._eventId, "A"]);
--> Message : "Ok"
> Sinon :
--> $gameMap.event(this._eventId).setSelfConditionTemp([this._mapId, this._eventId, "A"], true);
> Fin
J'ai placer un 'alert("La fonction a été appeler ! (Key : " + key + ")");' dans la fonction 'getSelfConditionTemp(key)' c'est comme un print("") en ruby, et les deux appels différent ont la même valeur key.
1
2
3
4
5
| Game_Event.prototype.getSelfConditionTemp = function(key) {
alert("La fonction a été appeler ! (Key : " + key + ")");
// Problème avec this.getSelfConditionTemp(key) : Cannot read property '[object Array]' of undefined
return this._selfConditions[key] == true ? true : false;
}; |
Du coup en événement et avec 'this.getSelfConditionTemp(key)' il me dit bien l'alerte, sauf que avec 'this.getSelfConditionTemp(key)' sa me dit que le key n'est pas défini, hors le key est bien égale à [this._mapId, this._eventId, c.selfSwitchCh] .
1
2
3
4
5
6
7
8
9
10
11
12
| var _Game_Event_meetsConditions = Game_Event.prototype.meetsConditions;
Game_Event.prototype.meetsConditions = function(page) {
var c = page.conditions;
if (c.selfSwitchValid) {
var key = [this._mapId, this._eventId, c.selfSwitchCh];
// Appel de this.getSelfConditionTemp(key)
if ($gameSelfSwitches.value(key) !== true && this.getSelfConditionTemp(key)) {
return false;
}
}
return true;
}; |
|
Tassle -
posté le 22/08/2016 à 15:38:52 (5274 messages postés)
| Disciple de Pythagolf | Ouais en fait je crois que je capte que dalle à comment fonctionne la syntaxe du javascript x) Désolé
Par contre ça je pense que même en javascript c'est caca :
1
| return this._selfConditions[key] == true ? true : false; |
T'as pas besoin d'un opérateur ternaire pour ça :V
(ça corrige pas ton problème mais voilà, faudra attendre qu'un mec qui s'y connaisse passe ici)
|
~~ |
LizyEe -
posté le 22/08/2016 à 16:24:54 (22 messages postés)
| | Pas de souci ahah, moi ça fait que 2 jours que j'ai commencer le javascript et c'est plus dur/bordélique que le ruby .
Ah oui ta raison, je test un boolean pour renvoyer un boolean .
|
Aminomad -
posté le 22/08/2016 à 19:49:58 (150 messages postés)
| | En fait au moment de l'initialisation de Game_Event, tu appelles l'ancienne définition de initialize, qui appelle la fonction refresh(), qui appelle la fonction findProperPageIndex(), qui appelle la fonction meetsConditions, qui essaie d'accéder à _selfConditions.
Or à ce moment là, cet objet n'existe pas puisque c'est la ligne suivante dans ton nouveau initialize qui le définit.
Du coup je pense qu'en inversant les deux lignes, ça devrait marcher:
1
2
3
4
| Game_Event.prototype.initialize = function(mapId, eventId) {
this._selfConditions = {};
_Game_Event_initialize.call(this, mapId, eventId);
}; |
|
The Lone Chameleon |
LizyEe -
posté le 22/08/2016 à 22:02:16 (22 messages postés)
| | Hannnnn mais alors c'était juste à cause de ça !, je me sans vraiment nulle tout d'un coup car j'ai eu du mal à trouver l'erreur, je suis aller plein de fois dans Game_Event pour finalement passer à coter du plus évident, Tassle avais presque raison 'this._selfConditions = {};' n'était pas défini .
Au final c'est comme les blagues, la réponse est tellement évidente qu'on la trouve pas .
Bon à l'avenir si j'ai une erreur la première chose que je vais faire c'est de regarder les appel des fonctions !
Merci pour votre aide !
|
Aminomad -
posté le 22/08/2016 à 22:31:50 (150 messages postés)
| | C'est souvent comme ça que ça se passe, on peut passer des heures à chercher pour une virgule mal placée.
En tout cas, tu as l'air de bien gérer, ton code est propre et méthodique (tout le contraire du mien).
Je suis un peu jaloux...
Bonne continuation !
|
The Lone Chameleon |
Index du forum > Entraide > [RESOLU] [MV][plugin] Erreur dans un plugin que j'ai créé
|
|
|