iLaZz Posté(e) le 12 février 2018 Posté(e) le 12 février 2018 Dans ce tutoriel je vais vous expliquer le principe de ce type de fonction. 1) Comment créer ces fonctions ? Que font-elles ? function <nom de la faction>(<parameters>) :: <type>: return <> [parsed as <type>] <nom de la faction> c'est simplement le nom associé à cette fonction. <type> c'est le type de la valeur renvoyée. Que mettre à la place de '<parameters>' ? Les paramètres regroupent les informations nécessaire au lancement de la fonction, ils peuvent être facultatif ou obligatoire. Comment ajouter un paramètre ? ...(<nom du paramètre>: <type>)... Comment ajouter plusieurs paramètres ? ...(<nom du paramètre 1>: <type 1>, <nom du paramètre 2>: <type 2>)... Comment rendre un paramètre facultatif ? Il est conseillé de mettre vos paramètres facultatifs en dernier, comme ceci: ...(<nom du paramètre 1>: <type 1>, <nom du paramètre 2>: <type 2> = <value 2>)... Comment récupérer les paramètres dans la fonction en elle-même ? Il suffit simplement de faire comme si c'étaient des variables mais temporaires. function exemple(txt: text) :: text: if {_txt} is ... : function exemple(j: player) :: text: if {_j} is ... : Comment renvoyer la valeur maintenant: Il suffit d'écrire 'return <value>' et de remplacer <value> par la valeur souhaitée. Exemple système de division # inutile mais pour expliquer function division(nombre1: number, nombre2: number) :: object: if {_nombre2} is 0: return "Impossible" else: return "%{_number1} / {_number2}%" parsed as number Ici 'object' permet de regrouper tous les types et de ne pas en cibler un seul, c'est aussi le type de la valeur renvoyée. Maintenant ce que ça donne: command /division <number> <number>: trigger: send "%division(arg 1, arg 2)%" to sender # si argument 2 est 0 renvoie: "Impossible" # sinon renvoie: %arg 1/arg 2% Ce type de fonction va renvoyer une valeur, ré-utilisable hors de la fonction: send "Il y a %numberofAFK()% joueurs afk" to sender Si votre fonction contient des paramètres, renseignez les pour obtenir la valeur: send "Il y a %numberofAFK(30)% joueurs afk" to sender Erreurs à ne pas faire: Dans ce type de fonction les délais ne sont pas autorisés, il est impossible de retrouver ceci function exemple(text: text = "") :: text: wait a second return "Fin" La fonction doit forcément renvoyer une valeur, par toutes ses branches, il est impossible de retrouver ceci: function exemple(text: text) :: text: if {_text} is "Start": return "Fin" Il faudrait mettre ceci: function exemple(text: text) :: text: if {_text} is "Start": return "Fin" stop return "Erreur" Suffisant ou pas ? 1
Olyno Posté(e) le 12 février 2018 Posté(e) le 12 février 2018 Dans ce tutoriel je vais vous expliquer le principe de ce type de fonction. 1) Comment créer ces fonctions ? Que font-elles ? function <nom de la faction>(<parameters>) :: <type>: return <> [parsed as <type>] <nom de la faction> c'est simplement le nom associé à cette fonction. <type> c'est le type de la valeur ranvoyée. Que mettre à la place de '<parameters>' ? Les paramètres regroupent les informations nécessaire au lancement de la fonction, ils peuvent être facultatif ou obligatoire. Comment ajouter un paramètre ? ...(<nom du paramètre>: <type>)... Comment ajouter plusieurs paramètres ? ...(<nom du paramètre 1>: <type 1>, <nom du paramètre 2>: <type 2>)... Comment rendre un paramètre facultatif ? Il est conseillé de mettre vos paramètres facultatifs en dernier, comme ceci: ...(<nom du paramètre 1>: <type 1>, <nom du paramètre 2>: <type 2> = <value 2>)... Comment récupérer les paramètres dans la fonction en elle-même ? Il suffit simplement de faire comme si c'étaient des variables mais temporaires. function exemple(txt: text) :: text: if {_txt} is ... : function exemple(j: player) :: text: if {_j} is ... : Comment renvoyer la valeur maintenant: Il suffit d'écrire 'return <value>' et de remplacer <value> par la valeur souhaitée. Exemple système de division # inutile mais pour expliquer function division(nombre1: number, nombre2: number) :: object: if {_nombre2} is 0: return "Impossible" else: return "%{_number1} / {_number2}%" parsed as number Ici 'object' permet de regrouper tous les types et de ne pas en cibler un seul, c'est aussi le type de la valeur renvoyée. Maintenant ce que ça donne: command /division <number> <number>: trigger: send "%division(arg 1, arg 2)%" to sender # si argument 2 est 0 renvoie: "Impossible" # sinon renvoie: %arg 1/arg 2% Ce type de fonction va renvoyer une valeur, ré-utilisable hors de la fonction: send "Il y a %numberofAFK()% joueurs afk" to sender Si votre fonction contient des paramètres, renseignez les pour obtenir la valeur: send "Il y a %numberofAFK(30)% joueurs afk" to sender Erreurs à ne pas faire: Dans ce type de fonction les délais ne sont pas autorisés, il est impossible de retrouver ceci function exemple(text: text = "") :: text: wait a second return "Fin" La fonction doit forcément renvoyer une valeur, par toutes ses branches, il est impossible de retrouver ceci: function exemple(text: text) :: text: if {_text} is "Start": return "Fin" Il faudrait mettre ceci: function exemple(text: text) :: text: if {_text} is "Start": return "Fin" stop return "Erreur" Suffisant ou pas ? Il faudrait revoir la présentation de ton tutoriel qui est un peu cochonne, mais sinon, pourquoi pas ;)
Inerska Posté(e) le 13 février 2018 Posté(e) le 13 février 2018 Il faudrait revoir la présentation de ton tutoriel qui est un peu cochonne, mais sinon, pourquoi pas ;) "Un peu cochonne" et ben, gros vocabulaire mdrr. Sympa le tuto' merci.
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant