la
création des fonction.
Tadaaaa !!!
Pof un nouveau tut à la suite du premier
Là ça va porter sur la creation des fonction...
Attention : pour l'assimilation de ce tut vous
devrez d'abord comprendre et maitriser tout les cours de script pur les quiches
d'Amaranthe.
Je vais tout de suite préciser un truc, la création de fontion est intéressante
pour principalement deux choses :
1. Eviter des répétitions dans un script en généralisant un code redondant.
2. Permettre l'utilisation d'un script sous la forme d'une fonction, et ainsi
pouvoir l'utiliser comme n'importe quel fonction de neverwinter
Tout dabord je trouve necessaire de clarifier le fait que dans le script editor,
tout est fonction.
je m'explique : a chaque fois que vous tappez qlc avec un nom et des parenteses,
si c pas une structure de controle (bloc if, while, for, ect), c une fonction
la syntaxe toute bête de la fonction, pompé sur mon bouquin de c++, est
:
TypeDeRetour NomDeLaFonction(Type Argument1, Type Argument2, ...) { //Code de la fonction }
|
Pour l'instant c super complexe mais partez pas je vais vous expliquer...
TypeDeRetour, c'est la variable que doit retourner la fonction une fois terminée.
ca peut etre tout type de variable, int, string, float, object, location, ect...
ca peut aussi ne rien être, au quel cas on va mettre void (vide).
NomDeLaFonction, c tout simplement bah euh le nom de la fonction tient, c a vous
de l'inventer
Type Argument : ca c une définition de variable. Type c le type de variable, et
Argument1 c le nom de la variable. Cette variable sera définie lors de l'appel
de la fonction, et pourra être utilisée au sein de cette fct
Une fontion peut attendre autant d'arguments que voulus
Pour clarifier tout ca on va prendre la fonction de neverwinter GetLocation
Si on la selectionne dans le script editor on voit sa syntaxe :
location GetLocation(object oObject)
|
ca veut dire que la fonction attend pour argument un objet, et renvoie une location
dans la pratique, on utilise cette fonction en initialisant une location, par
exemple
location lLocation = GetLocation(oObject);
|
et on obtient une location
Maintenant, pour créer un fonction soit même, il faut faire sa propre syntaxe.
Le mieux c de présenter tout ca par un exemple
le problème c que j'ai pas d'idées...
Tient par exemple une fonction qui donne de l'XP a tous les joueurs, comme ca
en plus elle sera récuperable pasqu'elle est vraiment pratique
void GiveXPToAllPlayers(int nXpAmount) { object oPC; object oLastPC = GetLastPCRested(); int i = 0; do
{ oPC = GetNextPC(); GiveXPToCreature(oPC, nXpAmount); }
while(oPC != GetNextPC); return; }
|
Maintent les explications :
1.Dans cet exemple on n'attend pas de valeur de retour, donc notre fonction va
être de type void.
2.int nXpAmount représente la quantité d'XP que l'on veut donner a tout les joueurs.
3.La boucle do {} while permet de passer en revue les joueurs jusqu'au dernier
4.On initialise oPC avec le PC suivant et on lui donne l'experience grace a la
fct suivante. Comme on peut le voir, la valeur nXpAmount est définie est récupérée
dans les arguments de notre fonction
5.Pour finir on vérifie si le PC actuel n'est pas le dernier, au quel cas on arrete
tout.
6.Le return indique la fin de la fonction. Il est facultatif dans une fonction
de type void, mais obligatoire dans les autres cas où il est utilisé pour renvoyé
la valeur voulue. Par exemple, la dernière ligne du code source de GetLocation
doit être un truc du genre return lLocation;
A partir de la l'utilisation de la fonction se fait comme les originales, dans
notre code on peut rentrer GiveXPToAllPlayer(200), et pof, 200 d'XP pour tout
le monde.
L'utilisation des fonction requiert quand même une restriction, il faut placer
le corp de la fonction (le code) avant la fonction qui appelle celle ci.
Un petit truc en passant : avez vous remarqué le truc dans lequel vous tapez votre
code ? main() .
Bingo, c'est une fonction. Celle si est en fait automatiquement appelée quand
la condition est remplie (OnSpawn, OnAttack, ect)
Pour finir, je vais parler en vitesse des paramètres par défaut:
si vous écrivez une fonction dans ce genre la :
void MaFonction(int Integer, int Surcharge = 1)
|
vous pouvez l'appeler de deux manière :
MaFonction(UneVariable, UneAutreVariable);//ca c'est comme normalement
MaFonction(UneVariable);// Dans ce cas la, l'opérateur Surcharge prendra automatiquement la valeur 1
|
Le système de paramètre par défaut permet de créer les valeurs par default les
plus courantes, mais qui peuvent être changés en cas de besoin
Par exemple, la fonction
void ActionMoveToObject(object oObject, int bRun = FALSE)
ActionMoveToObject(oMonObjet, TRUE);//L'objet va courir ActionMoveToObject(oMonObjet);//L'objet ne va pas courir (c comme si on mettait FALSE)
|
Voila je pense que j'ai a peu près tout dit, maintenant vous pouvez faire des
fonction a volonté, c vraiment superutile quand on fait des gros scripts bien
costaux qui demande de la rigueur dans l'écriture, et puis, ceux d'entre vous
qui n'ont pas ce genre de projets, vous pouvez avez toujours appris des trucs
quand à l'utisation des fonctions de base
J'ai plus vraiment d'idée pour des tuts je crois que vous avez maintenant toutes
les bases pour "scripter", mais si vous vous avez des idées pour des tuts que
vous aimeriez, faites moi le savoir
Et puis toujours pareil si vous avez pas compris vous demandez, en générales les
réponces viennent vite sur ce forum.
bon bein @+
PS : Desolé pour les fôtes d'orthographe je peux pas m'en empecher
__________________
Azrael07
C'est Ton Choix...