Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 16/12/2020 dans toutes les zones

  1. 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 ;) )
    1 point
  2. OH-MA-GAD let me prendre you dans mes bras ! mon sauveur probleme quand je claque sa fait rien x) j'ai verifié par moi meme mais je trouve aucun erreur : command /bouteille: options: option name = option value trigger: if player's level is greater than 0: set {level.bouteille} to value of xp bottle set {level.%player%.now} to player's level reduce the player's level by {level.%player%.now} give player a experience bottle named "&6&lBouteille d'experience" with lore "&7Niveaux contenus: &9%{level.%player%.now}%" send "[XP] &7Vous venez de stacker &e%{level.%player%.now}% &7niveaux&7." on rightclick holding a experience bottle: if name of player's tool contains "&6&lBouteille d'experience": set {_level::*} to lore of player's tool split at " " delete player's tool set {_level} to {_level::3} set player's level to ({_level} parsed as number + player's level)
    1 point
  3. Le syndrome du bottlexp, je l'ai vécu aussi t'inquiète pas j'ai du racheter un clavier (non, je plaisante, je ne suis pas fou): J'ai LA solution à ton problème il te suffit de jouer avec le lore de l'objet: on rightclick holding a experience bottle: if name of player's tool contains "&6&lBouteille d'experience": set {_level::*} to lore of player's tool split at " " delete player's tool set {_level} to {_level::3} set player's level to ({_level} parsed as number + player's level) Pas testé mais normalement ça marche, si t'as rien compris je t'explique: Au clic d'une bouteille d'experience si le nom contient ""&6&lbouteille etc..." alors ça va créer une liste temporaire qui va comporter tout les mots du lore de l'item en question et avec "split" on divise ces mots la par des espaces (donc à chaque espace c'est un nouveau mot pour la liste) donc le troisième mot qui est donc le niveau indiqué par la bouteille est ajouté au niveau actuel du joueur qui click dessus... Fiou compliqué tout ça :eek:
    1 point
  4. NoxTails submitted a new resource: [plain]Backpack[/plain] - [plain]Coffres personnels pour chaque joueurs[/plain] Read more about this resource...
    1 point
×
×
  • 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.