Goetheus 13 Posté : 8 juillet 2016 Salutations ! C'est encore moi :D décidément ! Alors cette fois je viens vous embêter avec du remplacement à choix multiples modifiables ! Ou plus précisément, pour le remplacement d'un Type %% définit à l'avance en fonction de sa valeur. Admettons que nous ayons un joueur %player% invoqué dans un message send comme suit : "%player% s'en va en guerre", donnerait "PSEUDO s'en va en guerre". Néanmoins, j'aimerais définir à l'avance en haut de mon skript différentes possibilités en fonction du pseudo qui va être affiché, de façon à ce que si %player% = tel pseudo. Alors PSEUDOMODIF sera affiché. J'ai tenté avec les Options {@}, mais je suis limité à remplacer tous les pseudos par une même valeur. Alors qu'il faudrait s'adapter en fonction du pseudo. Le tout doit être interne même au Script, pour pas que tous les pseudo soient remplacés dés qu'ils apparaissent dans le chat évidemment. Je suis preneur de toute idée, même succincte ! :D Merci par avance. Partager ce message Lien à poster Partager sur d’autres sites
Yghore 379 Répondu : 8 juillet 2016 j'ai pas tout compris ? x) Partager ce message Lien à poster Partager sur d’autres sites
gougouli 4 Répondu : 8 juillet 2016 Ah genre tu veux: il y a deux joueurs, si joueur1 est désigné, ça mette "%pseudo-joueur1% va en guerre" et si joueur2 est désigné, ça mette "%pseudo-joueur2% bat en retraite" ? Partager ce message Lien à poster Partager sur d’autres sites
Anarchick 101 Répondu : 8 juillet 2016 Je n'ai pas tout compris mais tu voudrais un truc du genre : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Tu peux aussi utiliser le > if "%{_pseudo}%" contains "{@word}" < qui est plus général (enfin si tu as un système de clan dans els pseudo ou je ne sais quoi) 1 Partager ce message Lien à poster Partager sur d’autres sites
Goetheus 13 Répondu : 8 juillet 2016 Salutations ! Merci à tous pour votre engouement ! Alors, je n'ai peut être pas été très clair dans ma description, mais c'est ma faute, j'ai voulu simplifier en prenant l’exemple de %player% mais je vais reprendre de zéro ! En fait, j'ai réalisé un script qui tourne bien. Hélas, au milieu du script revient souvent le type %region% que ce soit dans le code ou dans des messages envoyés aux joueurs. Or, mes IDs des régions sont, admettons "1863AGB". --> Le joueur entre dans une région, un message s'affiche (avec la région en question %region%), du coup ça va afficher un nom tout pas beau "1863AGB". J'aimerais donc le modifier en "Les terres du Mordor" (par exemple). Sachant qu'il y a beaucoup de régions, et donc beaucoup de nom à définir, j'aimerais que tout soit regroupé au même endroit dans le script. Un peu comme un fichier config, c'est pourquoi j'ai essayé de le faire avec les variables options, mais en vain. On aurait, par exemple, au début du document : regions: 1863AGB: Les terres du Mordor 5899TRF: La Comté 4412OIA: Minas Tirith De plus, j'aimerais également proposer une description par région. Par exemple : regions: 1863AGB: Les terres du Mordor 1863AGB_2: Une terre brûlée et hantée par de terribles maléfices... Tout ça pour quoi ? Pour éviter tout d'abord d'alourdir le code en le faisant avec des if %region% contains... blablabla, et pour également pouvoir injecter le Nom de la région et/ou sa Description, à n'importe quel moment, en utilisant %region% (en variables du coup je pense ?). Comme ça le script va toujours se référer à la région concernée, et afficher son nom et sa description. Donc oui ! L'idée est là. Mais c'est peut être un peu "lourd" pour l'objectif ? Code: set {_pseudo} to player's name if "%{_pseudo}%" is "{@pseudo1}": set {_pseudo} to "pseudo_modifier" if "%{_pseudo}%" is "{@pseudo2}": set {_pseudo} to "pseudo_modifier" send "%{_pseudo}% s'en va faire la gueguerre" to all players Navré de ne pas m'être exprimé correctement... Et merci ! Partager ce message Lien à poster Partager sur d’autres sites
Anarchick 101 Répondu : 8 juillet 2016 Dans se cas je te conseille d'enregistrer tes régions et descriptions dans un fichier .yml Je ne sais plus qu'elle plugin te permet de lire et d’éditer ce type de fichier. Perso je n'aime pas du tout utiliser les variable fixe de Skript (quand celà doit être une statistique sur un joueur) , je stock toutes mes statistiques de joueur dans un dossier avec des fichiers séparer, exemple pour moi c'est Anarchick.yml ou dedans j'ai mes stats de Kill / death / ratio / dernière connexion / score / ... j'ai aussi un fichier SERVEUR.yml qui stock des info du serv tel que le nombre de joueurs qui l'ont rejoins / le nombre de partis qui ont été joué / ... Je te conseil donc de faire un fichier REGION.yml et d'utiliser les syntax : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Pour info dans ce type de syntax lorsque j'utilise "info.%{_le nom de la région où est le joueur}%" , le symbole " . " est particulier puisqu'il permet de "descendre de 1 étage" (je ne connais pas le bon terme) Dans ton fichier REGIONS.yml tu auras ça : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Et puisque tes noms de régions + info seront stocké dans des variable, ce sera très simple de faire appel à elles 1 Partager ce message Lien à poster Partager sur d’autres sites
Goetheus 13 Répondu : 8 juillet 2016 D'accord je vois. Oui j'imaginais bien un YAML comme ça ! Du coup, le dilemne : Wildskrip ou Umbaska ? Les deux permettant d'écrire et de lire dans du YAML... Je vais tenter ça dans tous les cas. Merci pour ton aide précieuse ! EDIT 1: Problèmes avec Umbaska (non stable). EDIT 2: C'est Wildskript qu'il faut apparemment pour la single value... Je test et ferais un EDIT 3 ^^' EDIT 3 : Après tests avec Wildskript (la version portée 1.9), oui ça fonctionne, mais je reçois une erreur sévère de la part de Skript, lorsque j'entre dans une région ! Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Avec la version pour 1.7.9 de Wildskript : erreur "it is up to date?"... Je vais vérifier les versions de skript/spigot/wildskript... car je suis sous 1.9.4 actuellement. Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 8 juillet 2016 En 1.9 Skript ne gère plus les régions malheureusement. Je te conseille donc de regarder du côte de l'addon PirateSK: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. 1 Partager ce message Lien à poster Partager sur d’autres sites
Goetheus 13 Répondu : 8 juillet 2016 En 1.9 Skript ne gère plus les régions malheureusement. Sûr et certain ? Car je suis sous Skript 1.9 (+Spigot 1.9) et ça tourne très bien. C'est lors de l'intégration YAML/Wildskript qu'il y a un soucis. Et j'ai lu sur Bukkit que Wildskript ne serait plus maintenu par ses auteurs : Un des auteurs répond "Unfortunately yes. You should use Umbaska >> Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. à un "Project abandonned?" ( Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. ) Partager ce message Lien à poster Partager sur d’autres sites
Anarchick 101 Répondu : 8 juillet 2016 Umbaska dit qu'il possède une grande partie de Wildskript mais je ne suis pas sûr de ça, heureusement il existe une version non officiel de Wildskript pour la 1.9 (là je la teste et elle semble marcher, elle n'ajoute rien de plus que la version d'avant) Et Umbaska marche mieux sous Spigot 1.9.2 (pour le moment) Après que Skript ne gère plus les régions je n'en sais rien, essaie plusieurs version de WorldGuard au cas où (ça m'a résolu un problème sur un autre plugin différent de Skript) 1 Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 8 juillet 2016 Le problème dans tes logs vient de SkRayFall qui essaye de charger un titre avec une valeur null (qui veut dire que ça ne vaut strictement rien en Java). Mais maintenant que j'y pense, Skript convertis les valeurs null en quelques chose de non null pour lui, donc ça ne viendrait pas de là. Le problème vient alors de SkRayFall, peut-être. 1 Partager ce message Lien à poster Partager sur d’autres sites
Goetheus 13 Répondu : 8 juillet 2016 Le problème vient alors de SkRayFall, peut-être. Humm oui je vois, possible. J'ai peut être fait une erreur dans la position ou la mise en page de mon fichier YAML, ce qui ferait que ça abouti sur une valeur null... Je vais tenter quelques petites choses, notamment pour les versions WG/Spigot/Skript...etc. Umbaska dit qu'il possède une grande partie de Wildskript Pareil, c'est ce que j'avais lu. Mais du coup, ton code ne pourra fonctionner, et Umbaska n'utilise pas du tout le même procéder pour lire un YAML :/ Merci encore ! A très vite ! Partager ce message Lien à poster Partager sur d’autres sites
Goetheus 13 Répondu : 10 juillet 2016 Salutations à tous ! Pas trop eu le temps ce week end ;) Me revoilà donc que maintenant ! Avec les astuces YAML données par @Anarchick ! Et un Rayfall à jour cette fois ci ! Hélas ça ne fonctionne pas, mais je pense savoir pourquoi ! En réalité, la variable %region% ne donne pas comme valeur le nom de la région, mais le nom de la région + le nom du monde... Ce qui donne par exemple "region1 in world Flat" Or, impossible de mettre des espaces pour faire ce que je veux que ce soit dans le fichier yml ou dans des conditions sur d'autres plugins... Il faudrait qu'il y ait que le nom de la région, et non pas le monde. Un moyen de faire ça ? J'ai tenté de replace "in world flat" dans la variable %region%, mais Skript m'a gentillement dit que ce n'était pas possible ^^' Partager ce message Lien à poster Partager sur d’autres sites
Anarchick 101 Répondu : 10 juillet 2016 Inspire toi de ça (dsl j'ai pas le temps de te faire un vrai code je te copie donc mon propre système de reload qui devrait t'aider pour ton code) Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. En gros quand je fais /skr name1 name2 name3 name4 name*test ça exécute les commandes /skript reload name1 /skript reload name2 /skript reload name3 /skript reload name4 /skript reload name test #ici tu remarque qu'il y a un espace entre "name" et "test" grâce au symbole "*" en bref tu devra te servir de ceci > set {_reload::*} to arg-1 split by " " parsed as text 1 Partager ce message Lien à poster Partager sur d’autres sites
Goetheus 13 Répondu : 10 juillet 2016 set {_reload::*} to arg-1 split by " " parsed as text Merci. Mais hélas ce type de ligne de code ne peut être utilisée qu'avec un évènement "command". Et je ne peux pas non plus diviser la variable %region% pour y remplacer quelque chose. C'est Skript qui le dit dans les erreurs :/ Alors je viens de tester autre chose : à chaque fois ajouter un "if" avec la contenance du nom de la région, évidemment ça fonctionne. Mais ça fait 24 fois (nb de région) x 3 (nb d’occurrences dans le code). Autant vous dire que ça fait pas très pro, et que c'est bien lourd :/ EDIT : J'ai revu le code, en me détachant de Wildskript, et donc avec SkQuery. Même soucis pour la lecture du fichier YAML, je pense que les espaces dans la variable %region% empêchent totalement de l'appeler... puisque ça fonctionne très bien sans variable, avec un simple mot, ou même séparé par des underscore :/ Partager ce message Lien à poster Partager sur d’autres sites
Goetheus 13 Répondu : 11 juillet 2016 Au temps pour moi ! Tout fonctionne désormais correctement. J'ai été très stupide : je testais la region1 dans le fichier YAML, alors qu'en jeu j'entrais dans la région2... Ca ne risquait pas de fonctionner ! Donc les espaces sont bels et bien acceptés dans les fichiers YAML et peuvent être appelés ! Je tiens à tous vous remercier pour votre aide ! Ca fait plaisir de voir un forum (d'autant plus Minecraftien) aussi accueillant et solidaire ! Merci à tous ! <3 Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 11 juillet 2016 Si tout marche, n'oublie pas de passer ton sujet en résolu, ça aide pour les recherches et pour les modérateurs ;) 1 Partager ce message Lien à poster Partager sur d’autres sites
Goetheus 13 Répondu : 11 juillet 2016 Done! Merci encore ! Partager ce message Lien à poster Partager sur d’autres sites