Aller au contenu

TMTCPas #2 - Les Fichiers .yml (WildSkript)


Messages recommandés

Posté(e)

Salut à tous !

Si vous êtes ici c'est que vous vous voulez en savoir plus sur les fichiers .yml (yaml) et sur leur utilisation avec WildSkript.

 

Vidéo sur vous n'aimez pas l'écrit:

 

Enfin bref ! Commençons dés maintenant le TMTCPas #2 (Toi même tu sais pas #2)

 

Tout d'abord, il faut savoir qu'un fichier .yml peut ressembler à ça:

 

nombre de parents: 2
famille:
 1 parent: Jean
 2 parent: Jeanne
 enfants:
 - Edouard
 - Michel  

 

Nous avons donc ici plusieurs données, tout d'abord les données "basiques" : nombre de parents

Les données qui sont dite "parents" c'est à dire que vous ne pouvez rien écrire après les ":", ici c'est le cas pour "famille"

Ensuite vous avez les données qui sont dite "enfant", ici c'est le cas pour "1 parent","2 parent" et "enfants"

les données "1 parent" et "2 parent" contiennent des données "basiques" tandis que "enfants" contient une liste.

 

Pour pouvoir éditer un fichier yml et parfois même un dossier.. eh bien il faut savoir le créer, et voilà comment on créer un fichier/dossier :

 

create folder "plugins/TMTCPas" # Va créer un nouveau dossier nommé "TMTCPas"
create file "plugins/TMTCPas/config.yml" # Va créer un nouveau fichier nommé "config.yml" qui se situera à l'intérieur du dossier TMTCPas
delete file "plugins/TMTCPas/config.yml" # Detruit le fichier "config.yml" situé dans le dossier "TMTCPas"
# Ces fichiers/dossier se situeront dans le dossier plugins de votre serveur.

La Documentation Create File/Folder

La Documentation Delete File/Folder

 

Bon, maintenant passons à l'écriture dans votre fichier config, imaginons que vous vouliez faire une config automatique à chaque fois que le script est installé sur votre serveur. Voilà comment nous allons procéder pour écrire à l'intérieur d'un fichier :

 

write file "TMTCPas: 2" to "plugins/TMTCPas/config.yml" # On utilise l’événement write file (ou wf) pour écrire dans un fichier

La Documentation WF/Write File

 

En mettant des données à l'intérieur d'un fichier, vous pourrez par la suite les réutiliser, prenons par exemple ce fichier:

 

nombre de parents: 2
famille:
 1 parent: Jean
 2 parent: Jeanne
 age:
   parent:
     1: 40
     2: 42
 enfants:
 - Edouard
 - Michel  

 

Il faudra procéder comme ceci:

 

set {_nombre.parents} to single value "nombre de parents" get of "plugins/TMTCPas/config.yml" # La variable {_nombre.parents} contient : "2"
set {_famille.1parent} to single value "famille.1 parent" get of "plugins/TMTCPas/config.yml" # Pour marquer la séparation entre une valeur "parent" et une valeur "enfant", il faut utiliser un "."
set {_age.parent1} to single value "famille.age.parent.1" get "plugins/TMTCPas/config.yml" # On récupère l'âge du premier parent.
set {_list.enfant::*} to value list "famille.enfants" get of "plugins/TMTCPas/config.yml" # On récupère la liste des enfants.
# Sachez que lorsque vous faites comme ceci, votre variable sera considéré comme de type text, il faudra donc la parsed as number ou autre pour la réutiliser comme vous le souhaitez.

 

La Documentation Single Value

La Documentation Value List

 

Ensuite, vous pouvez également changer les données qui sont situés à l'intérieur d'un fichier,

prenons ce fichier:

Pour changer la valeur "nombre de parents" on va faire comme ceci:

 

set "nombre de parents" to "3" in yaml file "plugins/TMTCPas/config.yml" # Change "nombre de parents: 2" en "nombre de parents: 3"

 

Pour "1 parent" on fera comme ceci:

set "famille.1 parent" to "Laurent" in yaml file "plugins/TMTCPas/config.yml" # Change la valeur "1 parent: Jean" et "1 parent: Laurent"

 

La Documentation Change Yaml Value

 

Pour ajouter/retirer une valeur d'une liste, il faut faire comme ça:

 

remove "Edouard" from yaml list "famille.enfants" from file "plugins/TMTCPas/config.yml" # Retire Edouard de la liste des enfants
add "SNOWACH" to yaml list "famille.enfants" from file "plugins/TMTCPas/config.yml" # Ajoute @Snowach à la liste des enfants
add "PsYZiiK" to yaml list "famille.enfants" from file "plugins/TMTCPas/config.yml" # Ajoute @PsYZiiK à la liste des enfants

Il n'y a pas de documentation pour ça.

 

Sachez également que vous pouvez récupérer l'ensemble d'un fichier dans une variable :

 

set {_content} to content of file "plugins/TMTCPas/config.yml" # La varialbe {_content} contient tout le texte situé dans le fichier "config.yml"
create file "plugins/TMTCPas/config2.yml" # Creation d'un nouveau fichier
wf "%{_content}%" to "plugins/TMTCPas/config2.yml"

 

Attention : Cet fonctionnalité de WildSkript ne fonctionne pas si Umbaska est installé sur votre serveur.

La Documentation Content Of File

 

Ce tutoriel est désormais fini ! Si tu n'as pas compris ce tutoriel, envoie-moi un MP qu'on règle tout ça ensemble :)

  • J'aime 3
  • 2 semaines après...
Posté(e)
Et @GauvainWizard , sais-tu comment récupérer le texte en tant que location ?

Je n'y arrive pas :/

Il faut récupérer d'abord les points X, Y et Z et le monde la location et ensuite on fusionne le tout pour en faire une location.

 

set {ta.variable} to position X, Y, Z of world "Monde"

  • J'aime 2
Posté(e)
Il faut récupérer d'abord les points X, Y et Z et le monde la location et ensuite on fusionne le tout pour en faire une location.

 

set {ta.variable} to position X, Y, Z of world "Monde"

 

Je pense que je me suis mal exprimé, et que j'ai oublié de donner des informations importantes :p

 

Pour essayer les .yml, j'ai voulu faire un système de /sethome.

 

Je peux créer le fichier, y ajouter/supprimer des données mais je ne peux pas récupérer le texte en tant que location :/

 

Par exemple, je fais /sethome 1 . Du coup, ma location est inscrite en tant que single value of "Home1" . Mais quand je récupère dans une variable, je ne peux pas tp le joueur à celle-ci.

 

[spoiler=Mon Code]

Oui, c'est vraiment pas optimisé. Mais je cherche à tester les yml, non essayer de raccourcir au maximum.

 

command /sethome <number>:
   trigger:
       if file "plugins/Skript/SaveBase/%player%.data.yml" doesn't exists:
           create file "plugins/Skript/SaveBase/%player%.data.yml"
           wf "Home1:" to "plugins/Skript/SaveBase/%player%.data.yml"
           wf "Home2:" to "plugins/Skript/SaveBase/%player%.data.yml"
       if arg 1 is 1 or 2:
           if arg 1 is 1:
               set {_loc.home} to location of player
               set "Home1" to "%{_loc.home}%" in yaml file "plugins/Skript/SaveBase/%player%.data.yml"
           if arg 1 is 2:
               set {_loc.home} to location of player
               set "Home2" to "%{_loc.home}%" in yaml file "plugins/Skript/SaveBase/%player%.data.yml"
       else:
           send "&cErreur : Vous ne pouvez pas avoir plus de 2 home !"


command /home <number>:
   trigger:
       if arg 1 is 1 or 2:
           if arg 1 is 1:
               set {_loc.home1.tp} to single value "Home1" get of "plugins/Skript/SaveBase/%player%.data.yml"
               teleport player to {_loc.tp}
           if arg 1 is 2:
               set {_loc.home2.tp} to single value "Home2" get of "plugins/Skript/SaveBase/%player%.data.yml"
               teleport player to {_loc.home2.tp}




on script load:
   if folder "plugins/Skript/SaveBase" doesn't exists:
       create folder "plugins/Skript/SaveBase"

 

 

 

Posté(e)
Je pense que je me suis mal exprimé, et que j'ai oublié de donner des informations importantes :p

 

Pour essayer les .yml, j'ai voulu faire un système de /sethome.

 

Je peux créer le fichier, y ajouter/supprimer des données mais je ne peux pas récupérer le texte en tant que location :/

 

Par exemple, je fais /sethome 1 . Du coup, ma location est inscrite en tant que single value of "Home1" . Mais quand je récupère dans une variable, je ne peux pas tp le joueur à celle-ci.

 

[spoiler=Mon Code]

Oui, c'est vraiment pas optimisé. Mais je cherche à tester les yml, non essayer de raccourcir au maximum.

 

command /sethome <number>:
   trigger:
       if file "plugins/Skript/SaveBase/%player%.data.yml" doesn't exists:
           create file "plugins/Skript/SaveBase/%player%.data.yml"
           wf "Home1:" to "plugins/Skript/SaveBase/%player%.data.yml"
           wf "Home2:" to "plugins/Skript/SaveBase/%player%.data.yml"
       if arg 1 is 1 or 2:
           if arg 1 is 1:
               set {_loc.home} to location of player
               set "Home1" to "%{_loc.home}%" in yaml file "plugins/Skript/SaveBase/%player%.data.yml"
           if arg 1 is 2:
               set {_loc.home} to location of player
               set "Home2" to "%{_loc.home}%" in yaml file "plugins/Skript/SaveBase/%player%.data.yml"
       else:
           send "&cErreur : Vous ne pouvez pas avoir plus de 2 home !"


command /home <number>:
   trigger:
       if arg 1 is 1 or 2:
           if arg 1 is 1:
               set {_loc.home1.tp} to single value "Home1" get of "plugins/Skript/SaveBase/%player%.data.yml"
               teleport player to {_loc.tp}
           if arg 1 is 2:
               set {_loc.home2.tp} to single value "Home2" get of "plugins/Skript/SaveBase/%player%.data.yml"
               teleport player to {_loc.home2.tp}




on script load:
   if folder "plugins/Skript/SaveBase" doesn't exists:
       create folder "plugins/Skript/SaveBase"

 

 

Quand j'enregistre une location, j'enregistre les x, y et z un par un pour ensuite pouvoir les récupérer plus facilement ^^ Je te conseille de faire de même

  • J'aime 1
Posté(e)

Donc dans le .yml ça devrait ressembler à un truc comme ça ?

 

 

Home1:

x: blablabla

y: blablabla

z: blablabla

Home2:

etc

 

 

 

EDIT :

 

Enfin réussi :D

 

Au lieu de set une variable à la location,

j'ai fais un run command "/tp x y z" as op. C'est beaucoup plus simple *-*

 

Merci à vous deux !

  • J'aime 1
  • 3 semaines après...
Posté(e)

Intéressant mais, je te conseil de refaire ce tuto avec les functions proposées par SkUtilities, WildSkipt n'étant plus développé et apparemment instable (Source: avis des dev').. vu que SkUtilities à repris tout ça :D

 

Sinon cool d'apprendre les YAML au gens

  • 1 mois après...
  • 3 semaines après...
  • 1 an après...
Posté(e)

Bonour j'ai le droit, je ne sais pas si j'ai le droit de poser une question mais elle est relative au tuto en effet:

dans le fichier yml de l'exemple je cherche a retourner l'information suivante:

set {_nombre.parents} to single value "nombre de parents" get of "plugins/TMTCPas/config.yml"
# La variable {_nombre.parents} contient : "2"

 

Sauf que je ne veux pas retourner deux mais "Nombre de parent"

pour mieux comprendre je stock un uuid par section comme ceci:

f5834312-7d83-4a83-8b81-ab75f02c0fe2:
 Bypass: 'false'
 Pseudo:
 - DevilishDante
 - Test
 - OuiOui
 IP:
 - xx.xx.xxx.xxx

Mais impossible de recupèré l'uuid :/, merci d'avance de votre aide

Posté(e)

Salut salut

Je te conseille de t'orienter vers skript-yaml pour travailler avec des fichiers yaml, je ne peux pas t'aider pour Wildskript.

Et un piti conseil, évite les gros up

Merci,

Gauvain

Posté(e)
Salut salut

Je te conseille de t'orienter vers skript-yaml pour travailler avec des fichiers yaml, je ne peux pas t'aider pour Wildskript.

Et un piti conseil, évite les gros up

Merci,

Gauvain

On va dire qu'il y a une tombe qui c'est mal décomposée.

Posté(e) (modifié)

Pardon ça me semblait approprié de poster ici vu que mon soucis découlait directement d'ici X)

j'uperais plus !

 

PS: Merci pour les indications mais je pense avoir trouvé en effet pour récuperer ce que je veux il faut que je fasse comme le fichier de groupmanager en gros:

User:
 xxxx-xxxx-xxxx-xxxx-xxxx:
   pseudo: DevilishDante

voilla si jamais quelqu'un a le même soucis que moi il a sa réponse X)

Modifié par Invité

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.