Message populaire angelus76 Posté(e) le 25 septembre 2015 Message populaire Posté(e) le 25 septembre 2015 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 ;) ) 8
Whaxion Posté(e) le 25 septembre 2015 Posté(e) le 25 septembre 2015 Tuto génial ! Justement je me demandais comment fonctionnais les fonction ! Pour tout dire j'ai tout compris (en ayant codé pendant un peu moins d'un an en skript c'est logique mais je ne savais pas comment ca fonctionnais :/)
Snowach Posté(e) le 25 septembre 2015 Posté(e) le 25 septembre 2015 WHAAAAAAT ! C'est du JAVA ? Ça ressemble, sinon très bon tutoriel mais j'ai rien compris x) C'est compliqué mais tu explique bien :) En fin de compte, je commence peu à peu de comprendre les fonctions.
Im_PasteK Posté(e) le 25 septembre 2015 Posté(e) le 25 septembre 2015 WHAAAAAAT ! C'est du JAVA ? Ca ressemble, sinon très bon tuto mais j'ai rien compris x) C'est compliqué mais tu explique bien :) Non --' c'est skript ^^
angelus76 Posté(e) le 25 septembre 2015 Auteur Posté(e) le 25 septembre 2015 WHAAAAAAT ! C'est du JAVA ? Ca ressemble, sinon très bon tuto mais j'ai rien compris x) C'est compliqué mais tu explique bien :) c'est du Skript ;) et non du JAVA :) en effet d'un langage a un autre, le codage est souvent ressemblent ;) quand tu dit c'est compliqué, c'est le tuto qui est difficile a comprendre ? car si c'est le cas hésite pas a me dire quelle sont les parties compliqué a comprendre pour que je les explique mieux ;)
angelus76 Posté(e) le 25 septembre 2015 Auteur Posté(e) le 25 septembre 2015 j'ai apporter une correction au tuto, en effet j'avais fait un exemple de tête qui retourner un Boolean, mais les fonction Skript ne retourne pas de boolean ^^ j'ai donc corriger le code et apporter une explication concernant les "return" des fonctions, je vais donc apporter plus tard l'explication des "return" sans faire d'erreur cette fois :D
Snowach Posté(e) le 25 septembre 2015 Posté(e) le 25 septembre 2015 c'est du Skript ;) et non du JAVA :) en effet d'un langage a un autre, le codage est souvent ressemblent ;) quand tu dit c'est compliqué, c'est le tuto qui est difficile a comprendre ? car si c'est le cas hésite pas a me dire quelle sont les parties compliqué a comprendre pour que je les explique mieux ;) Tu expliques très très bien ^^
NelGossem_ Posté(e) le 25 septembre 2015 Posté(e) le 25 septembre 2015 J'avais déjà téléchargé 2/3 skripts ou je voyais des lignes de code comme ca mais je comprenais rien à ca . Maintenant c'est plus clair ! Merci ;)
Tazmaik Posté(e) le 10 octobre 2015 Posté(e) le 10 octobre 2015 Bonjour :) serais t'il possible de précise quel version de skquery tu utilise parce ton code => 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") retourne ça au reload [03:59:12 ERROR]: 'MsgGive(p: player, t: text)' is not a text (test.sk, line 1: function MsgGive(p: player, t: text):') [03:59:12 ERROR]: 'MsgGive(player,"yes")' is not a boolean (yes/no) (test.sk, line 12: MsgGive(player,"yes")') [03:59:12 ERROR]: 'MsgGive(player,"no")' is not a boolean (yes/no) (test.sk, line 14: MsgGive(player,"no")') [03:59:12 ERROR]: 'MsgGive(player,"no")' is not a boolean (yes/no) (test.sk, line 16: MsgGive(player,"no")') [03:59:12 ERROR]: 'MsgGive(player,"no")' is not a boolean (yes/no) (test.sk, line 18: MsgGive(player,"no")') Skript 2.1.2 Skquery 3.21.4
angelus76 Posté(e) le 10 octobre 2015 Auteur Posté(e) le 10 octobre 2015 et avec Skript 2.2 ? car j'ai la même version pour SkQuery
Tazmaik Posté(e) le 10 octobre 2015 Posté(e) le 10 octobre 2015 Effectivement avec la version pirate de Skript 2.2 les fonctions fonctionnes Peut etre serais t'il bien d'ajouter la version nécessaire de Skript dans les prérequit Aussi, existe t'il un post expliquant comment ce procurer Skrip 2.2 avec aussi tous les ajout que posède cette version? je me demande vraiment si il préférable ou non d'utiliser la version 2.2, si il ne peut pas avoir de problème de performance
minouis55 Posté(e) le 15 octobre 2015 Posté(e) le 15 octobre 2015 Super Tuto, j'en ferais sans doute une vidéo :)
Bloubiboulga Posté(e) le 19 octobre 2015 Posté(e) le 19 octobre 2015 Effectivement avec la version pirate de Skript 2.2 les fonctions fonctionnes Peut etre serais t'il bien d'ajouter la version nécessaire de Skript dans les prérequit Aussi, existe t'il un post expliquant comment ce procurer Skrip 2.2 avec aussi tous les ajout que posède cette version? je me demande vraiment si il préférable ou non d'utiliser la version 2.2, si il ne peut pas avoir de problème de performance slt, je viens tout juste de télécharger Skript2.2.jar ici pas besoins de s’inscrire fermez la popup ! voici la page contenant 3 fichiers à download
Totueur Posté(e) le 20 octobre 2015 Posté(e) le 20 octobre 2015 Merci angelus , tu es vraiment très utilise dans cette communauté ^^
03maxime Posté(e) le 25 octobre 2015 Posté(e) le 25 octobre 2015 Merci très utile (dsl la discutions est vieille)
Execut Design Posté(e) le 25 novembre 2015 Posté(e) le 25 novembre 2015 Enfaite ça sert à quoi une fonction du coup à part executer 2 choses en même temps ?
minouis55 Posté(e) le 26 novembre 2015 Posté(e) le 26 novembre 2015 A éviter de répéter une partie de ton skript, et donc de l'opti. Ca peut aussi servir à organiser ton skript :) 1
angelus76 Posté(e) le 27 novembre 2015 Auteur Posté(e) le 27 novembre 2015 @Execut Design Je t'invite a lire une explication de l'utilité des fonction ici https://skript-mc.fr/forum/index.php?threads/lps-1-les-functions.2154/#post-22860 ;)
Kwizzy Posté(e) le 29 novembre 2015 Posté(e) le 29 novembre 2015 Pour retourner une liste faites function name(var: type) :: textS : Il faut juste mettre un S (minuscule). Exemple : function getListYML(research: text , file: text) :: texts: #research = a récupéré #file = file set {_g::*} to yaml list "%{_research}%" from file "%{_file}%.yml" return {_g::*} Et après pour set la variable faites : set {_varlist::*} to getListYML("list" , "exemple")
Execut Design Posté(e) le 29 novembre 2015 Posté(e) le 29 novembre 2015 Ducoup, Quel est la Différence entre une function & un sub (avec un invoke) ? o_O :confused:o_O:eek::confused: 1
angelus76 Posté(e) le 2 avril 2016 Auteur Posté(e) le 2 avril 2016 fait ton propre avis https://skript-mc.fr/forum/threads/les-subs-fini-les-fonctions.4431/ 1
XxNatou2000xX Posté(e) le 13 juillet 2016 Posté(e) le 13 juillet 2016 OUai enfin SKquery est un peu intuile c'est pour racoursire ... je m'en passerai ^^
MeDrioX Posté(e) le 25 septembre 2016 Posté(e) le 25 septembre 2016 Si j'ai bien compris c'est pour raccourcir quand on tape ? par exemple Nan enfaite pas d'exemple on va me crashé dessus XD mais sa reviens au meme que les options ? [spoiler=EXEMPLE x)] options: p: lol pm: Ta pas le droit ok: OK PARDON TA LE DOIT XDD command /lol: permission: {@p} permission message: {@pm} trigger: message "{ok}"
GauvainWizard Posté(e) le 25 septembre 2016 Posté(e) le 25 septembre 2016 Si j'ai bien compris c'est pour raccourcir quand on tape ? par exemple Nan enfaite pas d'exemple on va me crashé dessus XD mais sa reviens au meme que les options ? [spoiler=EXEMPLE x)] options: p: lol pm: Ta pas le droit ok: OK PARDON TA LE DOIT XDD command /lol: permission: {@p} permission message: {@pm} trigger: message "{ok}" Ce n'est pas du tout un raccourci comme les options ^^
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