Les librairies.

Attention : les libraires exploite abondamment le principe des fonctions, et vous devez le maitrisez pour pouvoir créer ou utiliser une librairie

J'ai pas le gout de faire une intro alors on rentre tout de suite dans le vif du sujet:

Une librairie est un fichier regroupant de nombreuses fonction classée par thème (normalement )
Ainsi, une librairie bien utilisée aura pour effet d'ajouter des fonctions a la listes de celles presentes dans nwn
Cela presente l'interet de ne pas avoir a redefinir le corps d'une fonction utile sur chaque scipts, et ainsi étendre l'interet des fonctions

Creation d'une librairie :

Il faut savoir qu'une librairie n'est jamais appelée seule et est toujours associée a un autre scipt, pusqu'elle a pour simple but de regrouper des fonctions. Nous verrons dans la partie utilisation comment associer une librairie avec un autre fichier script
Pour créer une librairie, il faut proceder en deux temps :

La creation du corp des fonctions dans un nouveau fichier(supprimez manuellement la fonction main inutile)
Pensez a bien commenter les fonction, si jamais votre librairie a a être réutilisée, et respectez les conventions d'ecritures :

Une fois les corps des fonction crées(ou avant sa n'a pas d'importance), il faut créer les prototypes des fonctions

Un prototye d'une fonction est en fait la première ligne de la fonction qui est dupliquée au debut du fichier :

le prototype de la fonction:

TypeDeRetour NomDeLaFonction(Type Argument1, Type Argument2, ...) {   //Code de la fonction }


est le suivant :

TypeDeRetour NomDeLaFonction(Type Argument1, Type Argument2, ...);

Notez bien l'apparition du ; a la fin de la ligne

Quel est l'interet des prototypes ?

D'une part, un prototype sert a informer le compilateur de l'existance de la fonction, ce qui permet d'utiliser la fonction avant que le corps de celle-ci ne soit detaillé
Exemple :

void
 fonction1(void) { fonction2(); }
void fonction2(void) { //du code }

Cette ecriture est impossible puisque lors de l'appel de la fonction 2 dans le corp de la fonction 1, celle-ci n'est pas encore definie, et le compilateur ne la connais pas

le même code avec un prototype :


void fonction2(void);
void fonction1(void) { fonction2(); }
void fonction2(void) { //du code }


Cette ecriture est correcte, le compilateur est maintenant informé de la presence de la fonction grace au prototype

Le script editor a egalement trouvé un autre interet aux prototype : Le fait de donner le prototype d'une fonction provoquera son apparition dans la liste des fonction a droite du scitp editor

C'est pas génial ca


//ici vous pouvez commenter tout ce que vous voulez consernant la fonction //Ces commentaires apparaitre dans l'aide en bas du script editor quand la fonction sera selectionnée dans
//la liste de droite. //Il vous faut bien expliquer l'utilisation de votre fonction ici (effet de la fct, desciption des variables en paramètres, etc //Vous pouvez mettre autant de commentaires que vous voulez, tant qu'il n'y a pas de ligne vide entre les commentaires
//et le prototype
TypeDeRetour NomDeLaFonction(Type Argument1, Type Argument2, ...);


Attention : une librairie n'est pas un script complet, et ne peut donc pas être compilé(il le sera lorsqu'un fichier l'utilisera)
Une librerie doit donc être sauvegardé, mais pas complié sans quoi le compilateur provoquera une erreur du type
ERROR: NO FUNCTION STARTINGCONDITIONAL() IN SCRIPT
le fait de sauvegarder provoque une recherche des erreurs, cela ne pose donc aucun problème d'utilidation de ne pas compiler(en pratique, cela ne fait donc aucune difference, il faut juste penser a mettre "save" au lieu de "compile")
Consernant le nom de la librairie, il y a peut être des convention a ce sujet mais je ne les connais pas, donc mettez ce que vous voulez

La libraire est donc prete a être utilisée dans ce module, vous pouvez aussi l'exportez sous la forme de fichiers pour pouvoir le reimporter via un autre module. Bon j'explique pour ceux qui ne connaisse pas : Ben vous venez de pondre une belle librairie, maintenant faut voir comment l'utiliser

Utilisation des Librairies :

Pour commencer, si votre librairie a été téléchargée ou provient d'un autre module, il faut l'importer : "file", "import", puis choisir le fichier

maintenant charger une fonction qui doit utiliser la librairie.

Il va faloir indiquer au compilateur que l'on souaite utiliser un autre fichier
syntaxe :

#include "nom_du_fichier"

le mot clé "#include" indique au compilateur que le fichier entre crochet doit être inserer dans le script(cela equivaux en gros a un copier/coller de la librairie jusque dans le script)

Maintenant toutes les fonctions de la librairie peuvent être utilisées dans le scipt
Note : Pour voir apparaitre les fonction dans la liste a droite il faut d'abord sauvegarder une première fois votre scipt après qu'il ait recu le "#include"

Voila donc pour la creation et l'utilisation des librairies.
Si vous voulez un exemple concret de librairie, bioware en a deja créé qlqunes(dans le menu ouverture de scipt, choisissez "all ressources" puis selectionner par exemple le scipt "nw_i0_plot" : c'est une librarie
Plusieurs libraires commencent a faire leurs apparition, presentant des fonction de routines destiniée a faire gagner du temp a leurs utilisateurs
L'utilisation d'une librairie d'un autre requert quand même une règle : ne modifiez jamais une libraire qui n'est pas la votre, si elle est buggé prevenir son auteur si vous la corrigez. Je vous fait peut être chier a vous faire la morale mais c'est comme ca !!!
Par opposition si vous créez une librairie pensez a la faire claire, donnez bien des explication et faites des noms de fonctions qui tombent sous le sens, de facon a permettre la recherche par mot clé, et ne soyez pas modeste, indiquez au debut votre nom et votre mail.

Bon ben voila, je crois que c'est tout

__________________
Azrael07

C'est Ton Choix...