Comme vous le savez,il y a énormément de tutoriels sur les fonctions (D'ailleurs je fais celui-ci à la demande de @KyloRen3600)
Cépendant, j'avais envie de le faire moi même et essayer de mieux expliquer que les autres ! ;)
> t'y arrivera pas
Donc,à quoi sert une fonction ?
A rien.
En faite c'est juste pour alléger le code.Si vous avez plusieurs lignes de code par exemple,vous pouvez les mettre dans une fonction,et quand vous l'utiliserez,ça ne prendra qu'une seule ligne de code.Par exemple,on veut tp un certain joueur à une position.Un code comme ça ne serait pas optimisé:
Et voila avec une fonction:
Bref.
Alors une fonction est au début d'un code (Fichier.sk).
Pour déclarer une fonction,vous allez juste taper "function".Espace,le nom de votre fonction (Vous pouvez mettre n'importe quoi)
function MaFonctionAdorée
Ensuite on va définir des paramètres,par exemple dans la fonction on peut pas savoir à quel joueur la faire,il nous faut donc le savoir.Donc on va ouvrir les parenthèses.Après,on met le ":" qui va terminer cette ligne.Voila ce que ça donne pour l'instant:
function MaFunction():
Donc maintenant,pour créer un paramètre,vous allez mettre un nom à ce paramètre,par exemple "zbeub" (Pour bien montrer que l'on met ce que l'on veut)
Donc ça va faire:
function Waw(zbeub):
Après le nom,on va mettre ":" et on va définir le type de ce paramètre.Par exemple,zbeub sera-t-il un joueur,un texte,un nombre ...
Je vais donc mettre "player"
function Waw(zbeub: player):
Vous n'allez sûrement pas comprendre pourquoi faire un paramètre.C'est simple,déjà je vais vous montrer comment appeler une commande et donc l'utiliser:
command /ooooh:
trigger:
Waw(player)
On tape donc le nom de la fonction,parenthèse,et la on va mettre "player" car c'est celui qui fait la commande qui doit recevoir la fonction.On aurait pu faire:
command /ooooh:
trigger:
loop all players:
Waw(loop-player)
Ce player la n'a pas de rapport avec les types qu'on vient de voir hein ! (Aucun rapport avec number,etc) il signifie juste celui qui fait la commande,on peut mettre attacker,victim,loop-player,et autres !
Donc maintenant si on fait ça,"zbeub" sera défini sur le joueur qui fait la commande.Maintenant,on va faire des actions au joueur qui a fait la commande via la fonction.Enfaite,zbeub sera une variable temporaire.
Je récapitule:
Quand on éxecute la fonction,on met le nom,entre parenthèse les paramètres.Si dans la fonction j'ai défini "zbeub" sur un joueur,je suis obligé de mettre un joueur dans l'utilisation de la fonction.
J'ai mis "(zbeub: player)" donc je rappelle encore que zbeub sera un joueur !
Donc entre parenthèse je met à qui la fonction s'effectuera !
Et donc pour mettre un code dans la fonction par exemple:
function Message(joueurquivarecevoirlacommande: player):
send "Attention :D" to {_joueurquivarecevoirlacommande}
Le nom de mon paramètre est "joueur..." donc pour lui send un message,je vais mettre "to {_joueur...}".
Pas besoin de faire
set {_joueur} to {_joueurquivarecevoirlacommande}
ou autres,le paramètre est automatiquement converti en variable temporaire.Imaginons,je veux pouvoir définir le texte qui va lui être envoyé:
function Message(p: player, t: text):
send "%{_t}%" to {_p}
Ici j'ai mis deux paramètres séparés par une virgule,attention,le deuxième est donc un texte et non un joueur.Imaginons que je veux appeler la fonction
command /message
trigger:
Message(player, "Ceci est le text défini dans la commande")
Je mets donc la virgule puis un text entre " car c'est un texte et non un nombre,joueur...
Je vous invite à look une fonction pour par exemple Translate des textes:
function Translate(language: text, p: player):
if {_language} is "english":
message "English" to {_p}
if {_language} is "french":
message "French" to {_p}
Donc on vérifie si le premier paramètre est "english" ou "french" et on fait une action en conséquence.Utilisation de la fonction pour exemple:
command /text:
trigger:
Translate("english", player)
Et comme english est un texte je le mets entre "
Les fonctions sont compliqués,je vous invite à répondre en commentaire si vous avez des questions à propos de tout ça ;)