introduction aux scripts 1) Principe de base Le but est d'utiliser un langage comprehensible par le compilateur, ce qui sous entends d'etre absolument parfait d'un point de vue syntaxique. pour cela on a: - des variables (accessoirement des constantes) - des fonctions, de la forme FaireUnTruc() On peut donner plus de precisions a la fonction a l'aide d'arguments - des boucles (if, while, for, switch) délimitées en blocs c'est a dire avec des {} pour definir ce qui la compose - les commentaires qui ne sont pas prits en compte a la compilation, ils sont soit entre /* commentaires sur plusieurs lignes */ soit apres // sur la meme ligne (sur l'editeur de NWN ils sont en vert) remarques generales: -Sur NWN on fais la difference entre les majuscules et les minuscules 2) Les variables pour pouvoir utiliser une variable on doit d'abord la declarer, c'est a dire, dire qu'elle existe et de quel type elle est ex: int troud; // créer l'entier "troud" sans lui donner de valeur Dans NWN les types de variables sont: int: les entiers float: les nombres a virgules string: les chaines de caracteres (une phrase quoi) object: qui represente un objet (joueur, armoire.. un truc quoi) vector: qui represente les coordonnées d'un point (sur le repere x,y,z) location: qui represente une position j'avoue la nuance est subtile, on peut convertir un vector en location avec la fonction qui va bien remarque importante: l'endroit ou la variable est définie est important, c'est une question de priorité, une variable définie dans une boucle n'est valable que dans cette boucle cependant elle prévaut sur les variables de meme nom définies avant (uniquement dans la boucle) 3)les operandes d'accord c'est tres bien d'avoir des variables mais comment on les manipule? operations de base: + - * / rien a expliquer, c'est simple pour les verifications c'est autre chose: != different <, > strictement inferieur ou superieur <=,>= superieur/inferieur ou egal == egal || ou inclusif (si les 2 sont verifiés on est bon quand meme) && et 4) Les boucles Elles permettent tout un tas de trucs bien pratique comme faire des exeptions.. refaire plusieurs fois la meme chose .. etc a) la boucle If en francais: Si, elle permet de faire ce qu'elle contiens si la condition de depart est VRAIE (notion binaire, la condition est soit remplie soit non remplie) comment que ca se présente: int troud; if( troud == 1) { FaireDesTrucs(); } on ne met pas de ; quand on definie une boucle, la condition est entre () apres le if et les {} delimitent le contenu de la boucle remarque: il est important de mettre ==, c'est une verification, si on met =, on fixe troud a 1 subtilités: if( troud == 1) { FaireDesTrucs(); } ceci est correct d'un point de vue syntaxique mais sale d'un point de vue lecture, a n'utiliser que pour des boucles courtes if( troud == 1) FaireDesTrucs(); Ceci aussi est correct, dans ce cas la, la boucle contiens uniquement la fonction qui la suit immédiatement (ceci est aussi valable pour les boucles for et while) b) la boucle for Tres utile elle permet par exemple de repeter un nombre défini de fois une partie de code Elle est formée d'une action de départ, d'une condition et d'une action de fin exemple: int i; for(i=1;i<=5;i++) { FaireTruc(); } lorsque l'on arrive a cette partie de code, i est mise a 1 et tant que i est inferieur ou egal a 5, on fais un truc puis un incrémente i autrement dit: i = i + 1 ou encore i += 1 c)la boucle while elle permet de faire un truc tant que la condition est vraie /\ /!!\ Une boucle while dont la condition n'est jamais fausse est un bon moyen de tout planter, heureusement sur NWN, elles sont bloquées au bout d'un certain nombre /____\ mais ca fais drole quand meme (c'est d'ailleur le meme tarif pour la For mais en general c'est sur la while qu'on se bourre) exemple: int troud = 1; While(Troud <= 5) { FaireTruc(); Troud++; } traduction: tant que Troud est inferieur ou egal a 5, on fais un truc et on incrémente Troud d)la boucle switch le meilleur pour la fin, cette boucle ne travaille qu'avec des entiers, elle permet de faire une action specifique (ou plusieurs) en fonction de la valeur de cet entier accessoirement c'est la moins intuitive switch(Troud) { case 1: FaireTruc1(); break; case 2: FaireTruc2(); break; case 35: { FaireTruc3(); break;} } traduction: si troud est a 1, c'est le cas 1, si troud est a 2 c'est le cas 2, si 35, c'est le cas 35, case correspond a la valeur de l'entier que l'on considere le : c'est la syntaxe le break; permet de terminer la boucle, sinon on sort jamais de ce merdier (et de toute facon le compilateur est pas d'accord) remarque: le break fonctionne pareil dans toutes les boucles: il l'arrete et on en sort 5) Fonctions du langage break: fin de la boucle return: fin de la fonction dans laquelle on travaille 6) les Fonctions a) le main sur NWN presque tous les scripts commencent par void main() {} main c'est la fonction principale, celle dans laquelle on commence void signale qu'aucune valeur ne sera renvoyée par main ce qui veut dire que les fonctions, c'est comme les variables: ca se déclare (sauf celles de base qui sont en fait déclarées dans des librairies a part) b) self made function quand tu nous tiens void Action() //declaration et definition de la fonction { FaireTruc(); } void main() { Action(); //on utilise la fonction ecrite plus haut } mais ca sert a rien? ben si ca sert quand on utilise plusieurs fois la meme fonction, ce evite de faire du code a rallonge c) les arguments int compteur; void action(int valeur) { compteur = valeur + compteur; } void main() { int val; action(val); } on ajoute val (argument de action()) a compteur remarque: val et valeur sont 2 variables !=, par l'argument on fais un valeur = val