Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Erreur "Unknown token" Lun 23 Avr 2012 - 22:35 | |
| Parmi les erreurs fréquemment rencontrées lors de la compilation du code AGS se trouve celle du Unknown token. Le but de ce sujet est de dresser une liste rapide des différentes sources possible de ce problème. L'idéal serait de la mettre à jour selon nos découvertes et suggestions éventuelles. Explications générales- Spoiler:
L'erreur Unknown token signifie qu'AGS a rencontré une expression dans le code qui ne réfère à rien. C'est-à-dire que vous avez entré une expression qui n'est ni une fonction, ni une variable, ni un mot-clé natifs d'AGS et qui ne figure pas non plus parmi la liste des noms de variables et fonctions existantes à l'endroit où se trouve cette expression. Il va donc falloir chercher à définir ce à quoi vous vouliez faire référence par l'expression et comment reformuler l'expression de façon à rendre la référence effective. Liste des causes possibles- Faute de frappe
La cause la plus fréquente est certainement une faute de frappe. En effet, il suffit d'une lettre en trop ou en moins, de deux lettres inversées ou même d'une inversion minuscule/majuscule et le compilateur d'AGS, qui n'est qu'une machine sans cervelle, ne va plus comprendre ce à quoi vous faites référence. Solution : vérifier que vous n'avez pas simplement fait une faute de frappe, et corrigez-la le cas échéant.
- Variable localement inaccessible
Cette erreur peut aussi être causée par une confusion dans la portée des variables. En effet, chaque variable est déclarée (créée) quelque part et cela va déterminer à partir d'où elle est accessible. Vous avez donc peut-être essayé d'utiliser le nom d'une variable qui est déclarée à l'intérieur d'une (autre) fonction, plus loin dans le script ou dans un autre script sans qu'elle ait été importée auparavant. Solutions : déclarer la variable plus haut/hors de la fonction/l'importer, ou vous arranger pour passer la valeur qui vous intéresse en paramètre de la fonction le cas échéant. Voir aussi : La position du header où vous importez vos variables
- Fonction localement inaccessible
Ce problème est exactement le même que le précédent, à ceci près que cette fois il est question de déclaration de fonctions : il ne sera donc pas question d'une fonction déclarée à l'intérieur d'une autre fonction. En revanche il est possible que vous tentiez d'appeler une fonction qui est déclarée plus bas dans le script, ou qui appartient à un autre script et que vous n'avez pas importée auparavant. Solution : déclarer la fonction plus haut dans le script (nécessairement avant l'endroit où vous y faites appel) / importer la fonction dans les en-têtes de vos scripts. Voir aussi : La position du header où vous importez vos variables
- Nom d'objet hors de la pièce
Une cause pas si rare et difficile à identifier au début est l'utilisation d'un nom de script d'objet (par exemple oPorte) dans un script qui n'est pas celui correspondant à la pièce dans laquelle se trouve l'objet. En effet, chaque objet est local à sa pièce et vous pouvez très bien appeler deux portes qui se trouvent dans des pièces différentes par le même nom oPorte par exemple. Du coup, cette expression réfère bien à l'objet en question dans le script de la pièce correspondante, mais n'est aucunement référencé depuis les autres scripts (script global, module, pièce où il n'existe pas d'objet portant ce nom). Solution : utiliser le tableau object à la place si vous êtes dans le script global ou un module et vérifiez la pièce où se trouve le joueur (avec la propriété player.Room) avant d'utiliser object[N]. Ce tableau étant local lui aussi, vous ne pouvez pas accéder aux objets se trouvant dans une autre pièce que celle où se trouve actuellement le joueur.
- Copier-coller aveugle
Si vous copiez-collez aveuglément un code, chacun des causes précédentes est potentiellement présente. Si vous l'avez copié depuis Internet ou autre, vérifiez qu'il ne contient pas des noms de variables, de personnages, d'objets, etc. qui ne sont là qu'à titre d'exemple. Solution : remplacez les expressions d'exemple par ce qui leur correspond dans votre projet. Il est également possible que vous ayez copié-collé tout ou partie d'un script faisant référence à des variables/fonctions/objets/etc. vers un autre script où ces variables/fonctions/objets/etc. ne sont pas accessibles. Solution : trouvez ce qui est accessible dans le script d'origine et déclarez-le si possible dans le script de destination. Dernière mise à jour : mardi 24 avril_________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
Godzillu Grand Cliqueur Royal
Nombre de messages : 1658
Date d'inscription : 11/03/2007
| Sujet: Re: Erreur "Unknown token" Mar 24 Avr 2012 - 8:50 | |
| Excellente initiative! Merci Kitai |
|