Salut a tous.
Suite a une demande en message privée de @Silass_ qui avais un problème pour faire fonctionner les fonctions,
je me suis rendue compte qu'il y avait très peut d'explication sur ce sujet, ou alors des exemples qui ne sont pas fonctionnel.
j’étais tomber une fois ( rassurer vous je me suis pas fait mal :D ) sur un bon court tutoriel en anglais mais je ne le retrouve pas, je vais donc essayer de partager avec tous le monde ce que j'en avais compris.
Tous d'abord ce que je vais utiliser c'est Skript 2.2 minimum et l'Addon SkQuery ( et oui c'est dans le titre ^^ ).
La base d'une fonction:
function Nom(t:text)::text:
return {_t}
ont as d'abord " function " qui commence par dire a Skript /!\ ceci sera une fonction.
Nom => c'est le nom de votre fonction, vous pouvez lui donner n'importe quel nom mais éviter les espaces et les accents.
text => seras le type de retour de la fonction, cela peut être "player,number,text..." en gros les types que skript peut retournée.
return => c'est ce que la fonction va retournée ( ici sa renvoie {_t} car le type de la fonction est "text").
Voici quelque exemples et leur explication.
Imaginons une fonction qui permet d'envoyer un message a un joueur pour une commande de give.
command /giveme <item>:
trigger:
if player has permission "sk.grade.vip":
if player has permission "sk.kit":
if player has permission "sk.give.%{arg-1}%":
message "Give Autorisé"
else:
message "Give refusé"
else:
message "Give refusé"
else:
message "Give refusé"
ce Skript est volontairement absurde mais c'est pour l'exemple qui va venir ;)
que constatons nous du skript ci-dessus ?
1 - ont vérifie plusieurs permission
2 - un message identique reviens "Give refusé"
si je veux modifié le texte "Give refusé" il faut que je le modifie trois fois dans ce code et encore ici le Skript et très court, si il était plus long, ont risquerais d'en oublier un, de plus si je fait le même message pour différent kit, et bien il faudrait le modifié a d'autres endroit encore, donc comment faire pour rendre la modification du message "Give refusé" plus simple ?
et bien avec une fonction ont peut
je reprend le skript ci-dessus et j'ajoute une fonction.
function MsgGive(p: player, t: text):
if {_t} is "yes":
send "Give Autorisé" to {_p}
else:
send "Give refusé" to {_p}
command /giveme <item>:
trigger:
if player has permission "sk.grade.vip":
if player has permission "sk.kit":
if player has permission "sk.give.%{arg-1}%":
MsgGive(player,"yes")
else:
MsgGive(player,"no")
else:
MsgGive(player,"no")
else:
MsgGive(player,"no")
voila si je veux modifier "Give refusé" je peut le faire dans la fonction et ce serras modifié partout dans mon code.
bon ok c'est bien beau je vous ais balancer un bout de code mais l'avons nous compris ?
au cas ou je vais le détailler ^^
function MsgGive(p: player, t: text): <= vous constaterais la disparition du type de retour, en effet il est possible de faire une fonction qui ne renvoie rien mais qui ce contente d’exécuter ce quelle as dedans.
ont a déjà vue plus haut que
MsgGive était le nom de la fonction
p => est un nom de variable qui aura pour valeur un joueur de type "player"
p peut être de n'importe quel nom, c'est a dire qu'ont peut faire aussi ceci
function MsgGive(joueur: player, t: text):
maintenant le nom de la variable est joueur et aura pour valeur un joueur "player"
player étant le type que skript va interpréter
t = > et bien comme pour p, mais cette fois ont auras une valeur de type "text"
encore une fois, t peut avoir un autre nom comme "msg, texte, ... libreAvotreImagination"
p et t étant des noms de variable, nous allons les réutiliser dans la fonction comme une variable temporaire.
vous savez les variables {_variable} avec le _ ' tiret du 8 comme certain aime le dire :D '
ce qui donne {_p} et {_t}, qui aurons les valeur que vous aurais mie dans l'appelle de la fonction:
MsgGive(player,"no")
player étant le joueur qui a taper la commande, "no" étant une valeur texte.
---------------------------------------------------------------------------------------------------------------------------
_______ Suite plus tard avec plus d'exemple sur type de retour de la fonction_____________
je finirais plus tard le reste du tutoriel, mais vous avez normalement de quoi commencer a comprendre ;)
mais aussi, cela vous permet de me dire quelle sont les parties qui sont difficile a comprend afin que je puisse l'améliorer et rendre plus claire ce que j'ai écrit mais aussi ce qui va suivre ;)
bien évidement, j'autorise le Staff a corriger mon écrit qui doit forcément contenir des fautes ( si vous pouviez juste me MP quelle était les fautes histoire de pouvoir m'améliorer en orthographe ;) )