> Tutoriel LeekScript
Vous codez votre IA comme un bienheureux. Les lignes défilent, et les noms de variables et de fonctions très logiques, tel sfatyu_2 s’enchaînent, la vie est belle... Soudain ! La touche "sauvegarder" est pressée et votre code est vérifié par le compilateur. Il soutient votre regard, intensément... Et la, c'est le drame ! Une (ou plusieurs !) grosse lignes rouges s'affichent en bas de votre éditeur, que peuvent bien signifier ces formules magiques étranges et ésotériques ?
Ce guide vous révélera la vérité pour que vous aussi, vous devienné des sacheurs.
Qui est ce qui a oublié de déclarer sa variable ? Un petit retour au tutoriel sur Les Variables et le tutoriel sur Les Fonctions peut s’avérer utile.
Ici, la variable enemy n'est pas déclarée. Il faut d'abord la créer avec le mot clef var. Correction : var enemy = getNearestEnemy();
Et pour celui la alors ? !ex unknown func
Et bien l'auteur n'est qu'un singe avec un clavier, et n'a pas vu qu'il a utilisé getNeerest (qui n'existe pas) au lieu de getNearest, déclarée juste au dessus.
On ne peut pas redéclaré une variable avec le même nom d'une variable déjà déclarée.

Correction (moche) : var moi2 = 1 Une meilleure correction serait d'utiliser des noms qui correspondent vraiment au rôle de vos variables .
Attention: Cette erreur peut aussi apparaître a cause du nom d'une variable globale.
Cette erreur vous tombera également dessus si vous utilisez une virgule a la place du vénéré point virgule : 
Correction : var enemy = getNearestEnemy();
Cela est due a la déclaration des variables en ligne : var variable1 = 1, variable2 = 2; est une syntaxe tout a fait valide (voir Les Variables).
Comme l'erreur précédente, on ne peut pas réutiliser un nom de fonction déjà utilisé.

Correction (très moche) : function getNearest2() {
Alors on tente d'utiliser le nom d'une variable global comme nom de paramètre hein ? Vous savez ce que ça pourrait vous coûter si vous étiez tomber avec un de mes collègues moins sympa ?

Correction :
Comme le message d'erreur l'indique, il manque une parenthèse a la ligne indiquée. !wrong if
Ici, la ligne 19 du code devrait être if (not isAlive(enemy)) {
Un appel de fonction non refermé ?? Voila ce que vous récoltez ! !val attendue
Correction moveToward(enemy);
Des paramètres ? kezako ? Un petit retour sur le tutoriel Les Fonctions s'impose !
Ici, la fonction moveToward accepte de 1 a 2 paramètres, et on lui en donne 0. Évidement le compilateur nous tape sur les doigts. Correction moveToward(enemy); ou moveToward(enemy, mp); avec mp un nombre.
Notez que vous obtiendrez la même erreur si vous donnez trop de paramètres a une fonction (Eg: moveToward(enemy, mp, truc);).
C'est quoi un bloc ? Et bien c'est une section de code entouré par des { }. Ici, on a ouvert un bloc avec { sans le refermer. !blocs pas refermes
Ici il manque le } après la fin du if. Le compilateur nous indique donc la fin du bloc actuel (ici la fin du fichier) pour indiquer qu'on oublié de fermer tous les blocs. Correction :
Cette situation est l'inverse de la précédente. On a fermé un bloc avec } sans l'ouvrir d'abord... !bloc a fermer
Correction : if (not isAlive(enemy)) {
Refaites un tours vers le tutoriel sur Les Fonctions : même si on n'a pas de paramètre a passer a une fonction, il faut au moins mettre les parenthèses ().

Correction : function getNearest() {
Comme précédemment, quand on déclare une fonction, il ne faut pas oublier de fermer les parenthèses avant le {.
Correction : getNearest() {
Un petit tour sur le tutoriel sur Les Boucles ? Le do-while nécessite un while a la fin du bloc.

Correction : } while(true);
Comment ça personne n'utilise les do while ?


Dans ces deux cas, on a oublié de donner un nom a notre variable. Un petit tour sur le tutoriel Les Variables ne ferait pas de mal.
Correction : var maVariable = 1; global maVariable = "Variable";
Une condition else (ou else if) doit toujours être précédé d'une condition if (voir Les Conditions). On est des gens civilisés ici ! On n'utilise pas sinon sans scie, sinon on se fait taper sur les doigts.

Correction:
Vous obtiendrez cette erreur quand vous ne respectez pas la syntaxe d'une expression particulière. Ici c'est un ternaire. Si vous ne connaissez pas les ternaires, c'est une notation du if {} else {} en une seule ligne (voir Les Conditions et les Opérations).

Correction : (getAliveEnemies() > 0) ? getNearestEnemy() : getEnemies()[0];
Comment ça ce code ne sert a rien ? J'te permet pas ! Est ce que je critique ton code moi ?
Un point virgule on vous a dit ! Pas vraiment un point, pas vraiment une virgule, un peu des deux. L'erreur du caractère invalide vous tombera dessus comme la faim sur le pov' monde.

Correction : var enemy = getNearestEnemy();

Inattendu ? Ça c'est clair ! Comment en êtes vous arrivé la ?? Il ne faut pas utiliser un opérateur (Les Opérateurs) comme une variable.
Le LeekScript ne permet de déclarer des fonctions que dans le bloc principal, impossible de déclarer une fonction dans un autre bloc.


Correction :
Il existe un cas particulier ou l'on peut déclarer une fonction dans une autre, passez voir le tutoriel sur Les Fonctions.
Comme précédent mais avec les variables globales ! Une variable globale ne peut pas être déclarée dans un autre bloc que le bloc principal. Pas dans un if, pas dans une boucle, pas dans une fonction, un point virgule c'est tout.

Correction :
Utiliser les include c'est bien, les utiliser correctement c'est mieux ! Ici, on essaye d'inclure une IA ailleurs que dans le bloc principal, et le compilateur nous observe avec des yeux qui font peur...

Correction :
Note : L'auteur dénigre toute responsabilité en cas de la non-victoire en utilisant l'IA de Pilow.
Cette erreur donne une très bonne description d'elle même : l'utilisation de break ne peut se faire que dans une boucle (voir Les Boucles)

Correction :
Remarque : Ce code donne exactement le même résultat qu'en utilisant un if, car la boucle est brisée au premier tour. Cependant c'est quand même ridicule non ?
Exactement la même erreur que celle juste au dessus, mais vous utilisez le continue plutôt que break.
Note : Utilisez le code suivant pour faire pleurer des Pilow et réchauffer la salle serveur :
Dans la catégorie du concours trés spécifique des erreurs de compilation trés longues et auto explicatives, voila le champion. Si vous avez cette erreur, c'est que vous avez une instruction placée dans un endroit de votre code qui ne sera jamais executé. En effet, dans l'exemple ci dessous, on a mis le debug après l'instruction break, qui nous sort directement de la boucle !

Correction :
Comme indiqué dans sa description, cette erreur peut également arriver avec un return ou un continue.

Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.