Aller au contenu
Goetheus

Remplacement d'un Type %% en fonction de sa valeur

Messages recommandés

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

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)

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

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

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

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é.

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites
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

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)

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites
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

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

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

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites
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

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

×
×
  • 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.