Aller au contenu

Skripts MultiLanguages(∞) & Config [1]| Difficulté: ★★★ (complexe)


Messages recommandés

Posté(e)

Introduction:

Bonjour à tous.

Aujourd'hui je fait mon premier tutoriel donc soyez indulgent svp.

Ce tutoriel vous permettra de faire que vos skripts puissent gérer un nombre de langages illimités et en plus d'utiliser un fichier config.

Il sera divisé en plusieurs parties (parce qu’il est long).

PS: Dans ce tuto, les codes seront basés sur ceux de mon skript TnTRun que je suis en train de coder.

 

Sommaire:

Partie 1: ici

Partie 2: cliquer ici

Partie 3: Bientôt!

 

Partie 1:

Alors, commençons.

Sachant que ce que nous voulons faire en sorte que notre skript puisse supporter un nombre illimités de langages, il faut bien un endroit où stocker nos langues, qui seront des fichier .yml.

Il nous faut donc créer un répertoire/dossier. Sachant que le chargement se fera au chargement du skript, il nous faut utiliser l’événement "on load":

on load: #Notre fameux événement
   if folder "plugins/TnTRun" doesn't exists: #On vérifie si le dossier n'existe pas
       create folder "plugins/TnTRun" #Si c'est le cas, on créer ce dossier

Rien de bien compliqué pour l'instant, mais ce n'est pas fini pour les dossier.

Comme nous sommes très perfectionnistes , nous voulons séparer nos fichier langages de notre fichier config.yml car oui nous voulons créer un fichier config.yml car on a marre des options dans les skript. Et si vous en avez pas marre, bah ça changera un peu ^^. Mais celui ci n'existe pas encore, nous alons creer un 2 ème dossier dans le premier, pour nos petits langages:

  if folder "plugins/TnTRun/languages" doesn't exists: #On vérifie si le dossier n'existe pas
       create folder "plugins/TnTRun/languages" #Si c'est le cas, on créer ce dossier

Parfait. Tous est prêt pour recevoir nos petits langages chéris. Mais il nous manque notre fichier config.yml. On va donc le créer et écrire un petit logo dedans :D

   if file "plugins/TnTRun/config.yml" doesn't exists: #on regarde si le fichier n'existe pas
       create file "plugins/TnTRun/config.yml" #si c'est le cas on le crée
       wait 1 tick #On attend un tick
       #Puis on écrit le logo
       write file "##---------------------##" to "plugins/TnTRun/config.yml"
       write file "##|                   |##" to "plugins/TnTRun/config.yml"
       write file "##|      TnT Run      |##" to "plugins/TnTRun/config.yml"
       write file "##|     by remy29     |##" to "plugins/TnTRun/config.yml"
       write file "##|                   |##" to "plugins/TnTRun/config.yml"
       write file "##---------------------##" to "plugins/TnTRun/config.yml"
       write file "" to "plugins/TnTRun/config.yml"
       write file "##Fichier de configuration." to "plugins/TnTRun/config.yml"
       write file "" to "plugins/TnTRun/config.yml"
       write file "" to "plugins/TnTRun/config.yml"

Bien. Maintenant que nous faut-t'il? Des valeurs dans notre fichier config.yml pardi!

Est la première est bien celle qui est utilisé dans touts les skripts dans "options:". Je parle bien entendu de la variable "prefix" ou "logo" comme vous voulez. Donc on va récupérer cette valeur dans le fichier config et l'enregistrer dans une variable.

   set {tntrun.config.prefix} to value "Prefix" get of "plugins/TnTRun/config.yml" #On récupère la valeur

Posté(e)

Hooooo! Mais on est bête! La valeur n'est pas écrite dans le fichier! Il faut donc qu'on détecte si la variable est nulle, c'est à dire si elle ne contient rien. Nous allons donc écrire dans notre variable comme nous 'lavons fait plus haut. Mais ce n'est pas aussi simple! Le problème est que à chaque fois que notre skript va charger, la variable va de nouveaux s'écrire dans le fichier! Pour remédier à cela, il nous suffi de regarder si la variable est nulle ou pas, et si elle est nulle d'écrire dans le fichier cette variable dans le fichier. Mais encore un problème se pose à nous, si la variable à été défini dans le fichier, quelle à été récupéré, et que le texte dans le fichier à été effacé, lors du chargement, le skript va incrémenter la nouvelle valeur à notre variable prefix. Le problème c'est que comme notre nouvelle valeur est nulle, la variable ne va pas s’incrémenter de cette valeur, c'est comme ça, me demandez pas pourquoi. Le fait est que notre skript ne va réécrire dans le fichier vu que la variable n'est pas nulle. Pour remédier à ça, il nous suffit d’effacer la variable juste avant. On veut aussi une prise en compte des colors codes, parce que sinon c'est moche ^^.

Bien maintenant, en code ça donne quoi?

   clear {tntrun.config.prefix} #On éfface la variable
  set {tntrun.config.prefix} to value "Prefix" get of "plugins/TnTRun/config.yml" #On récupère la valeur
   if {tntrun.config.prefix} is not set: #On regarde si la variable n'est pas défini
       write file "Prefix: '&8[&9TnTRun&8]'" to "plugins/TnTRun/config.yml" #Si c'est le cas on écrit le réglage dans le fichier
       set {tntrun.config.prefix} to value "Prefix" get of "plugins/TnTRun/config.yml" #Et on redéfini la variable avec la nouvelle valeur
   replace all "&" with "§" in {tntrun.config.prefix} #Prise en compte des colors codes.

Et voilà c'est la fin de cette première partie. Je posterai très prochainement la 2ème. Dîtes moi si vous avez aimé (ou pas) si j'ai fait des erreurs dans les codes (ça arrive toujours), des fautes d'ortho (je croi qyan a) ou des suggestions pour la partie 2.

Cordialement,

remy29.

  • J'aime 2
Posté(e)

J'ai rien pigé ? On fait quoi ???

 

set {tntrun.config.prefix} to value "Prefix" get of "plugins/TnTRun/config.yml" #On récupère la valeur if {tntrun.config.prefix} is not set: #On regarde si la variable n'est pas défini write file "Prefix: '&8[&9TnTRun&8]'" to "plugins/TnTRun/config.yml" #Si c'est le cas on écrit le réglage dans le fichier set {tntrun.config.prefix} to value "Prefix" get of "plugins/TnTRun/config.yml" #Et on redéfini la variable avec la nouvelle valeur
Posté(e)

Bien, mais tu savais qu'on pouvait faire plus simple x) ? :

 

options:
   Dossier: TnT-Run # Nom du dossier
   Fichier: Lang.yml # Nom du fichier

on load: # Lors d'un Reload...
   if folder "plugins/{@Dossier}" doesn't exists: # On vérifie si le dossier n'existe pas...
       create folder "plugins/{@Dossier}" # Si c'est le cas, on le crée...
   if file "plugins/{@Dossier}/{@Fichier}" doesn't exists: # On vérifie si le fichier n'existe pas...
       create file "plugins/{@Dossier}/{@Fichier}" # Si c'est le cas, on le crée...
       wait 1 tick # On attend un Tick...
       wf "Language: en_US" to "plugins/{@Dossier}/{@Fichier}" # Dedans, on écrit ceci...
       wait 1 tick # On attend encore un Tick...
       set {language} to value "Language" get of "plugins/{@Dossier}/{@Fichier}" # On règle la variable {language} qui sera en rapport avec ce qu'on a écrit plus haut...
   else:
       set {language} to value "Language" get of "plugins/{@Dossier}/{@Fichier}" # Dans tous les cas, il faut toujours régler la variable...


command /message:  # Notre commande
   trigger:
       if {language} is "en_US": # On vérifie si la langue que nous avons mis est bien "en_US"
           send "Hello!" # Si c'est le cas, on envoie "Hello!" au joueur
       if {language} is "fr_FR": # Si la langue que nous avons mis est "fr_FR"
           send "Bonjour !" # On envoie "Bonjour !" au joueur

# Tout simplement x) ![/code,

Mais y a encore plus simple ! Sans fichier .YML ! :

[code]options:
   Language: en_US

command /message:
   trigger:
       if {@Language} is "en_US":
           send "Hello!"
       if {@Language} is "fr_FR":
           send "Bonjour !"

Posté(e)
J'ai rien pigé ? On fait quoi ???

Regarde plus haut

--

Bien, mais tu savais qu'on pouvait faire plus simple x) ? :

 

options:
   Dossier: TnT-Run # Nom du dossier
   Fichier: Lang.yml # Nom du fichier

on load: # Lors d'un Reload...
   if folder "plugins/{@Dossier}" doesn't exists: # On vérifie si le dossier n'existe pas...
       create folder "plugins/{@Dossier}" # Si c'est le cas, on le crée...
   if file "plugins/{@Dossier}/{@Fichier}" doesn't exists: # On vérifie si le fichier n'existe pas...
       create file "plugins/{@Dossier}/{@Fichier}" # Si c'est le cas, on le crée...
       wait 1 tick # On attend un Tick...
       wf "Language: en_US" to "plugins/{@Dossier}/{@Fichier}" # Dedans, on écrit ceci...
       wait 1 tick # On attend encore un Tick...
       set {language} to value "Language" get of "plugins/{@Dossier}/{@Fichier}" # On règle la variable {language} qui sera en rapport avec ce qu'on a écrit plus haut...
   else:
       set {language} to value "Language" get of "plugins/{@Dossier}/{@Fichier}" # Dans tous les cas, il faut toujours régler la variable...


command /message:  # Notre commande
   trigger:
       if {language} is "en_US": # On vérifie si la langue que nous avons mis est bien "en_US"
           send "Hello!" # Si c'est le cas, on envoie "Hello!" au joueur
       if {language} is "fr_FR": # Si la langue que nous avons mis est "fr_FR"
           send "Bonjour !" # On envoie "Bonjour !" au joueur

# Tout simplement x) ![/code,

Mais y a encore plus simple ! Sans fichier .YML ! :

[code]options:
   Language: en_US

command /message:
   trigger:
       if {@Language} is "en_US":
           send "Hello!"
       if {@Language} is "fr_FR":
           send "Bonjour !"

Et si je laisse le fichier mais que j'éfface tout dedans??

Et pour explication en rapport avec ton 2ème code, la 2ème partie en parlera. Bon d'accord, j'explique :

Le but est de pouvoir gérer un nombre de language illimités sans avoir a modifier le code. Juste en créant un fichier. Mais surtout, regardez /lang sur E****** (dsl pub j'était obligé d'en citer un) . Chaque joueur peut avoir un language différent simultanément.

 

PS: Pour + d'explication si c'est pas clair, le nom d'un fichier langue sera par exemple fr_FR, et contiendra touts les messages.

Posté(e)

Oui et bha soir tu fais des variable direct dans le code , soit un fichier, cela a déjà été fais look XpBank ou SkStats ( Il vas bientôt sortir) de plus je comptais faire un Skript "LangHook" avec des message dedans préconfigué et un fichier lang spécial pour chaque skript, et les dev n'aurai plus qu'a invoké des fonctiton pour obttenire la lang qu'il souhaite

Posté(e)

Encore une fois vous n'avez pas compris. J'ai regardé xpbank . Tu peux bien changer de langage mais...

1. C'est le même langage pour TOUTS les joueurs!

2. Ce n'est facile d'ajouter un langage, il faut chercher dans le code, ect...

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.