Aller au contenu

Messages recommandés

Posté(e)

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 ;)

  • J'aime 2
  • 4 mois après...
Posté(e)

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 ?

Posté(e)

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 ^^

Posté(e)

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:

Posté(e)

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)

Posté(e)
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é

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.