euh Mickey j'ai beau chercher je ne vois strictement rien d'objet dans ce langage

Ah si on appel des objets

mais c'est bien tout.
Le polymorphisme, n'existe pas, l'heritage non plus, et moi un truc qui m'embete plus qui n'existe pas c'est la surcharge...
Ne vous trompez pas, le NWNScript ressemble pas au C ou en tout cas il y ressemble comme le Pascal... la seule chose qui y ressemble c'est la syntaxe et le fait que l'on ecrit #include ... en haut, le fait que la fonction principal s'appel void main() ... mais c'est bien tout.
Pas de tableau, pas de pointeur... que du passage de parametre par valeur...
Donc à partir de là, il y a quelques trucs que tu peux faire pour éviter les lourdeurs.
1 - Préférer les switch case au if else
2 - Eviter des boucles - Privilégier le while au for
3 - N'utiliser la récursivité qu'en toute dernière extrémité
4 - Déclarer correctement ses variables, les utiliser, et ensuite les détruire
5 - Eviter les boucles insolvables (le compilateur te prévient en général sauf dans des cas particuliers)
6 - Privilégier le code générique et réutilisable
7 - Utiliser le modèle objet
8 - Privilégier les bibliothèques que des scripts éparpillés
9 - Une fonction = un besoin
ok pour 1, 3, 4, 5, 6, 9
Pour le 2 j'aurais tendace a dire le contraire, preferer le for au while... mais pour etre sur il faudrait voir ce que fait le compilo... (en tout cas en C je te dirais directement qu'il faut preferer le for surtout si tu connais la limite haute au moment de la compilation... for (i=0; 5>i; i++) par exemple là les derniers compilo c ne font pas de boucle mais recopie le code a l'interieure de la boucle 5 fois

)
et pour le 8 faut faire attention, car ce qui est mis en include est enfait plus ou moins copier dans ton source. L'include ressemble plus a un COPY cobol

Ce qui fait quelorsque tu as des grosses libraries tu finis par avoir de gros fichier ncs.
Pour exemple il suffit de rechercher le lvl d'un PJ. Si tu fais un script an utilisant GetCharacterLevel() tu vas sacrement voir la difference avec un script ou tu utilise GetHitDice()...
Donc des librairies oui car cela est fait pour maintenir plus facilement. Mais il faut faire des librairies avec une unite 'fonctionnel' precise.
Au niveau des variables etc... lorsque vous appelez plus d'une fois la meme fonction qui a un type de retour donne, avec des parametres identiques. Ben affectez la a une variable pour ne l'appelz qu'une seule et unique fois.
exemple :
void main()
{
....
if (GetHitDice(oPC)>0)
{
....
}
...
if (GetHitDice(oPC) > 5)
...
}
il vaut mieux ecrire
void main()
{
...
int iLevel = GetHitDice(oPC);
if (iLevel > 0)
...
if(iLevel > 5)
...
}
A contrario si vous utilisez qu'une fois ca sert a rien...
Un autre truc le Wizard pour le StartingConditionnal eviter le...

D'abord parce qu'il pense en negatif ce qui est relativement chiant a lire (enfin pour moi qui pense en positif

) et ensuite parce qu'il fait vraiement n'importe quoi des qu'il y a plusieurs condition... il ne connait pas a priori l'usage du OR (||) ni du AND (&&)