Shelk Posté(e) le 26 septembre 2017 Posté(e) le 26 septembre 2017 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é: command /untp: trigger: if player has permission "tp.*": if player's world is "world": if player has 1 golden ingot in her inventory: teleport player to {maloc} remove 1 golden ingot from player else: message "Pas autorisé" else: message "Pas autorisé" else: message "Pas autorisé" Et voila avec une fonction: function Tp(p:player): if {_p} has permission "tp.*": if {_p}'s world is "world": if {_p} has 1 golden ingot in her inventory: teleport {_p} to {maloc} remove 1 golden ingot from {_p} else: message "Pas autorisé" to {_p} else: message "Pas autorisé" to {_p} else: message "Pas autorisé" to {_p} command /untp: trigger: Tp(player) 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 ;) 2
Syst3ms Posté(e) le 26 septembre 2017 Posté(e) le 26 septembre 2017 Ces fonctions viennent de Skript, pas de skQuery. 1
Shelk Posté(e) le 26 septembre 2017 Auteur Posté(e) le 26 septembre 2017 Ah bon ? Je change le titre alors xDD Je pensais qu'il le fallait ^^
KyloRen3600 Posté(e) le 26 septembre 2017 Posté(e) le 26 septembre 2017 Merci beacoup c est plus clair comme ça pour moi et ça m evite de chercher un tuto (meme si il y en a plein) :)
DofyGame Posté(e) le 12 février 2018 Posté(e) le 12 février 2018 Très bon tutoriel : D J'ai bien compris l'utilisation et le fonctionnement d'une fonction... Mais du coup je suis curieux qu'est-ce qu'une fonction avec return ^^ ? Cela pourra t-il faire le sujet d'un prochain tutoriel ?
Shelk Posté(e) le 15 février 2018 Auteur Posté(e) le 15 février 2018 Ctrop petit pour en faire un tutoriel,mais si par exemple on return quelque chose,la fonction est terminé donc elle s'arrête. On peut return true par exemple,du coup si on prend cette exemple,on pourra utiliser comme ça la fonction: if AdminOrNot(player) is true: ... (Code par exemple de la fonction que j'ai mis) function AdminOrNot(p: player): if {grade.%{_p}%} is "Admin": return true else: return false On peut return une variable aussi,un chiffre ... Edit: Oops ! Une fonction Skript je crois ne peut pas return un boolean,j'ai fail. Enfaite faut juste le considérer comme un string donc <<return "true">> et après dans la condition <<if AdminOrNot(player) is "true":>>,c'est tout ^^
noftaly Posté(e) le 15 février 2018 Posté(e) le 15 février 2018 Si ça peut return un boolean ! Mais quand tu définis la fonction il faut pas mettre ":" ala fin mais " :: boolean:"
noftaly Posté(e) le 15 février 2018 Posté(e) le 15 février 2018 ups boolean pas boomerand* xDD Et sinon je ne savais pas que c'était possible de faire un return sans ca :o Pour moi quand tu définis ta fonction avec return, après tu dois définir le type de ce que tu vas return : function maFonction() :: integer: function maFonction() :: text: function maFonction() :: boolean:
Shelk Posté(e) le 15 février 2018 Auteur Posté(e) le 15 février 2018 Erreur de ma part encore :eek: Je viens de coder pendant 6h d'affilés je suis à bout mdr Sinon le :: <type>: il faut le coller à la parenthèse (à part si ça marche sans mais jfais toujours comme ça)
noftaly Posté(e) le 15 février 2018 Posté(e) le 15 février 2018 Erreur de ma part encore :eek: Je viens de coder pendant 6h d'affilés je suis à bout mdr Sinon le :: <type>: il faut le coller à la parenthèse (à part si ça marche sans mais jfais toujours comme ça) ah moi je l'ai jamais collé a la parenthèse xDD je trouve que ca rend mieux :p ca fiat plus aéré
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