
Mr_Kofte
-
Compteur de contenus
77 -
Inscription
-
Dernière visite
-
Jours gagnés
2
Type de contenu
Profils
Forums
Téléchargements
Messages posté(e)s par Mr_Kofte
-
-
Salut salut, je te conseil d'installer advancement-skript qui te permet d'avoir des événement supplémentaires et conditions.
Une fois installée tu n'as plus qu'à entrer ce type de syntaxe :
on advancement: if "%event-advancement%" contains "Nom de l'advancement": ton code
Tu retrouveras ici la liste des advancements : https://minecraft.fandom.com/wiki/Advancement
Hésite pas à liker si je t'ai aider !
-
1
-
-
Il y a 20 heures, DKSM a dit :
Oula, si tu veux envoi moi ton discord en MP pour en parler ^^
Mais en brouillon ca donneraion place unBloc:if le bloc et un bloc utilisé dans les métiers:if {bloc::%player's world%} is not set:add player's world to {bloc::*}if {bloc::player's world%::%chunk at event-block%} is not set:add chunk at event-block to {bloc::player's world%::*}add location of event-block to {bloc::player's world%::%chunk at event-block%::*}on break:if {bloc::player's world%::%chunk at event-block%} is set:if {bloc::player's world%::%chunk at event-block%::%location of event-block%} is set:on donne pas d'xpremove location of event-block from {bloc::player's world%::%chunk at event-block%::*}Alors, on est sur un truc très dégueulasse pas utilisable pour l'exemple. C'est juste pour donner une potentiel idée de la démarche ^^
Il pourrait être optimisé pour être plus précis et minimiser encore les calculs inutiles
Pour pas conserver certaines variables vides inutilement, il faudrait aussi nettoyer les variables
Le tout de manière plus propre, probablement avec des fonctions pour que ce soit plus propres et une manière simple de vérifier si c'est un bloc de métier
Ok, alors voici mon discord : Conor#2001 ou sans le hastag 🙂 -
Le 10/06/2023 à 19:22, DKSM a dit :
En faite, tu as pas besoin de stocker de variable sur la buche cassé, de toute façon, elle ne la retiendra pas ^^
Techniquement, tout ce qui est posé par un joueur n'est pas censé apporté d'XP si on le recasse dans ton système de métier
Donc ce qu'il faudrait je pense, c'est stocker la position du bloc qui est posé par un joueur, et ensuite vérifier quand on casse un bloc:
Si le bloc en question fait partie de la liste:
- on ne donne pas d'XP mais aussi
- supprimer le bloc de la liste vu qu'il n'existe plus
Je te recommande aussi pour que la vérif ne soit pas trop lourde de segmenté la recherche du bloc
Par exemple, si une variable fini par contenir 200 000 blocs, on va pas passer au travers des 200 000 blocs à chaque fois qu'un joueur casse un bloc
On peut commencer par trier par Monde, ensuite par chunk et enfin par bloc, tu peux aussi segmenter pour optimiser encore plus sur plusieurs couche en Y
Bien sûr, pour encore optimiser la variable, on ne stockera que les blocs en rapport avec les métiers et pas tous les blocs que pose tous les joueurs ^^
Salut merci pour ta réponse !
Aurais-tu un exemple de skript pour que je comprenne comment tu réaliserais celui-ci ? -
Version de Minecraft : 1.19.4
Version de Skript : 2.6.3Addons utilisés: /
Type du skript : Variable bloc
Description du script :
Bonsoir !
J'aimerai faire un petit système qui permet quand le joueur casse une buche ça set une variable sur la buche cassée et s'il l'a pose et qu'il la recasse ça ne lui donne pas d'expérience job...
if {metier.%player's uuid%} is "Bûcheron": if event-block is oak log or birch log or spruce log or jungle log or acacia log or mangrove log: if {Bloc::%targeted block%} is event-block: send "impossible de faire ça !" stop set {Bloc::%targeted block%} to event-block add 3 to {experience::jobbucheron::%player's uuid%} send action bar "&b➠ &rVous recevez &e+3 &rd'expérience !" to player edit score id "xp.%player%" to "&e• &eExpérience: &7%{experience::jobbucheron::%player's uuid%}% / %requiredExpBucheron({level::jobbucheron::%player's uuid%})%" and 90
Merci à vous ! -
Pour ce que ça intéresse voici la solution avec le skript-gui :
command /test [<text>] [<text>]: trigger: if arg 1 is not set: create a gui with virtual chest inventory with size 3 named "test": wait 1 tick set {_s} to 0 loop {warp::*}: set {_tp} to loop-value make gui slot {_s} with enchanted book named "Warp: %loop-index%": teleport player to {_tp} add 1 to {_s} open last created gui to player
A savoir que le loop value dans le make gui n'est pas fonctionnel et de fait il faut set une variable provisoire en indiquant que c'est bien la valeur définie. Enjoy et RESOLU !
-
Du coup, comment je peux récupérer ma variable temporaire pour l'ajouter au menu gui ? @Souipi
command /warp [<text>] [<text>]: trigger: if arg 1 is not set: create a gui with virtual chest inventory with size 3 named "&6Warps disponibles:": wait 1 tick set {_s} to 0 loop {warp::*}: make gui slot {_s} named "test" with lore "test" #format slot {_s} of player with enchanted book named "&eWarp: %loop-index%" to be unstealable add 1 to {_s}
-
Oui c'est plutôt sympatique, je vais l'installer et faire le code en suivant la documentation néamanoins comment récupérer le nom de mes warps vu que tu sembles l'utiliser ?
-
Quand bien même j'utiliserai Tuske le problème reste le même: comment récupérer le nom de l'item sur lequel le joueur va cliquer ?
J'ai check la documentation de Tuske et rien n'est expliqué sur ce sujet ou du moins ma problématique... -
il y a 21 minutes, Souipi a dit :
Il y a plusieurs manières de faire un GUI avec Skript :
(recommandé) Avec skript-gui — Vous avez sûrement entendu parler de TuSKe. L'addon skript-gui est exactement la même chose, mais spécialisé dans les GUIs. L'avantage est qu'il présente beaucoup moins de bugs, et celui-ci est régulièrement mis à jour. Si vous utilisez TuSKe vous devriez changer, c'est toujours mieux ! Vous retrouverez toutes les informations avec la commande.auto skript-gui
sur le discord.
Avec Skript de base — Oui, c'est possible ! Ça fonctionne même très bien. Les syntaxes sont par contre beaucoup moins pratiques : pour empêcher de bouger un item ou faire une action au clic, il faudra utiliser un événement séparé et vérifier qu'il s'agit du bon inventaire.Avec SkQuery — Non ! SkQuery est extrêmement déconseillé pour faire des GUIs : ils présentent beaucoup de bugs, sont vieux et pas pratiques. Tournez vous plutôt vers skript-gui, voire Skript.
Oui alors le GUI fonctionne ce n'est pas le problème c'est dans le inventory click ou je n'arrive pas à récupérer le nom de mon item tout simplement 🙂
-
Version de Minecraft : 1.19.4
Version de Skript : 2.6.2Addons utilisés: SkQuery
Type du skript : Ecrivez ici le type de skript souhaité
Description du script :
Bonjour, j'ai fais un système de warp par menu gui et j'aimerai maintenant pouvoir m'y téléporter. Pour cela j'aimerai récupérer l'item sur lequel le joueur va cliqué qui est pour toutes les warps un livre enchanté avec le nom du warp défini précédemment.
Je me doute que c'est dans le on inventory click, mais je ne sais pas faire (loop ? While ?)
Merci à vous !
La commande warp qui fonctionne sans problème :
command /warp [<text>] [<text>]: trigger: if arg 1 is not set: open chest with 2 rows named "&6Warps dispos" to player wait 1 tick set {_s} to 0 loop {warp::*}: format slot {_s} of player with enchanted book named "&eWarp: %loop-index%" to be unstealable add 1 to {_s} if arg 1 is "set": if arg 2 is set: set {warp::%arg 2%} to player's position send "&7[&6ADMIN +&7] &b» &e&oWarp &c&o&l%arg 2% &e&odéfini en %location of player%" if arg 1 is "remove": if arg 2 is set: if {warp::*} contains {warp::%arg 2%}: clear {warp::%arg 2%} send "&7[&6ADMIN +&7] &b» &c&oVous avez supprimer la warp &e&o%arg 2%" else: send "&7[&cErreur&7] &b» &c&oLa warp &e&o%arg 2% &c&on'existe pas !"
LA PARTIE ICI QUI NOUS INTERESSE :on inventory click: if inventory name of player's current inventory is "&6Warps dispos": loop {warp::*}: if clicked item's name is "&eWarp: %loop-index%": send "ok"
-
Il y a 5 heures, mhugg a dit :
Hello, tu aurais ton code avec le add? Ou c'est le set?
tout est la dans le code
J'ai pu trouver la solution que je partage ici pour supprimer le warp set
if arg 1 is "remove": if arg 2 is set: if {warp::*} contains {warp::%arg 2%}: clear {warp::%arg 2%} send "&7[&6ADMIN +&7] &b» &c&oVous avez supprimer la warp &e&o%arg 2%" else: send "&7[&cErreur&7] &b» &c&oLa warp &e&o%arg 2% &c&on'existe pas !"
Maintenant j'aimerai pouvoir me téléporter à mes warps, comment faire ? J'ai essayé plusieurs choses :
on inventory click: if inventory name of player's current inventory is "&6Warps dispos": loop {warp::*}: if loop-item is {warp::%loop-value%}: send "test"
-
Version de Minecraft : 1.19.4
Version de Skript : 2.6.3Addons utilisés: SkQuery
Type du skript : Retirer une variable dans une liste GUI
Description du script :
Salut à tous !
Je viens demander un peu d'aide car je ne comprends pas comment retirer un argument émis par le joueur dans ma liste ouverte par un menu GUI. En effet le système est simple, l'admin fait la commande /warp add <nom> et ça ajoute un papier avec les infos du warp dans le menu. Le problème c'est que je n'arrive pas du tout à supprimer le warp existant dans le menu GUI et ni faire de téléportation en cliquant sur le papier du warp.
command /warp [<text>] [<text>]: trigger: if arg 1 is not set: open chest with 2 rows named "&6Warps dispos" to player wait 1 tick set {_s} to 0 loop {warp::*}: format slot {_s} of player with paper named "&eWarp: %loop-index%" with lore "&5Clique pour te téléporter" to close add 1 to {_s} if arg 1 is "set": if arg 2 is set: set {warp::%arg 2%} to player's position send "&7[&6ADMIN +&7] &b» &c&oWarp &e&o%arg 2% &c&odéfini en &e&o%location of player%" if arg 1 is "remove": if {warp::*} contains "%arg 2%": remove arg 2 from {warp::*} send "ok remove !"
-
Cela fonctionne merci à toi @scooby906
Serais-tu comment retirer un item déjà dans la liste de ma commande du style /retireritem:command /item: trigger: if {adminrank.%uuid of player%} is not "Gestion Loup" or "Développeur": send "&cCommande réservée pour les hr's de l'équipe admin !" stop else: set {_n} to 0 open chest with 6 rows named "&9Listing" to player wait 2 ticks loop {item::*}: format slot {_n} of player with loop-value to close add 1 to {_n}
-
Il y a 22 heures, scooby906 a dit :
Bonsoir,
tu peux faire comme ceci pour sauvegarder ton item:
command /saveitem <text>: usage: &cTu dois faire /saveitem NOM trigger: if {adminrank.%uuid of player%} is not "Gestion Loup" or "Développeur": send "&cCommande réservée pour les hr's de l'équipe admin !" stop set {item::%arg-1%} to player's tool send "Nouvel item sauvegardé: &b%{item::%arg-1%}% !"
Et comme ceci pour le récupérer:command /retrieveitem <text>: usage: &cTu dois faire /saveitem NOM trigger: if {adminrank.%uuid of player%} is not "Gestion Loup" or "Développeur": send "&cCommande réservée pour les hr's de l'équipe admin !" stop if {item::%arg-1%} is set: give {item::%arg-1%} to player send "Vous venez de recevoir %{item::%arg-1%}%" else: send "&cErreur, aucun objet avec le nom ""&e%arg-1%""&c n'est enregistré."
Si tu as des questions sur le code, n'hésite pas à me le dire.
Bonne fin de soirée à toi ^^
Super ça fonctionne et comment je peux le give sur un event sans avoir l'argument 1 dans la variable de type :
On break:
Code ? -
Version de Minecraft : 1.16.5
Version de Skript : 2.6Addons utilisés: SkQuery, SkRayFall, WildSkript
Type du skript : Récupérer plusieurs item dans une variable dynamique
Description du script :
Bonsoir l'équipe !
Je viens vers vous car j'aimerai faire une commande dyanmique à savoir un /saveitem qui va sauvegarder l'item en question avec le lore et le name custom que j'ai défini avant.
Le problème c'est que la commande d'effectue comme suivant : /saveitem <nom>
J'aimerai pouvoir par une variable récupérer donc l'item en question dont la variable aura été <nom> et je ne sais pas comment faire parce que actuellement je suis obligé de le définir moi même comme ça :µ
command /saveitem [<text>]: trigger: if {adminrank.%uuid of player%} is not "Gestion Loup" or "Développeur": send "&cCommande réservée pour les hr's de l'équipe admin !" stop else: if arg 1 is "cuivre": set {itemcuivre} to player's tool send "Save item: &b%{itemcuivre}% !" if arg 1 is "argent": set {itemargent} to player's tool send "Save item: &b%{itemargent}% !" if arg 1 is "or": set {itemor} to player's tool send "Save item: &b%{itemor}% !" if arg 1 is "pain": set {itempain} to player's tool send "Save item: &b%{itempain}% !"
Donc j'aimerai pouvoir récupérer la variable <text> donc que l'admin va définir...
J'espère que j'ai été clair dans mes explications, merci de votre aide ! -
Ok j'ai trouvé la solution que je vous partage ici :
if {adminrank.%uuid of player%} is "Gestion Loup" or "Garde_loup" or "Héros" or "Développeur": loop all players: if {staffchat.%uuid of loop-player%} is true: if message contains "!": cancel event send "&c[Admin]: %message%" to loop-player else if {staffchat.%uuid of loop-player%} is not set: if message contains "!": stop
RESOLU -
Salut, merci cela fonctionne ;
En revanche, j'aimerai comprendre comment faire :
Pour que les autres mecs ayant des permissions autres puisse aussi parler sur le tchat général :
loop all players: if {staffchat.%uuid of loop-player%} is set: cancel event send "Admin: %message%" to loop-player else: if {adminrank.%uuid of player%} is "Gestion Loup": if {aduty.%player%} is true: set the chat format to "&c[&6&l&o%{adminrank.%uuid of player%}%&c] &e&o%player% &7: %message%" else: set the chat format to "&c[&9&l&oHéros&c] &9&o%player% &7: %message%"
En gros je veux que juste les mecs qui ont le staff de true = envoie un message uniquement aux mecs qui ont la variable sur trueET que les gens classiques n'ayant pas la variable sur true puisse quand même parler... Voici en tout mon chat :
on chat: replace all "&" in message with "§" if {tempmute.%uuid of player%} is true: set {_tempmute} to {time.tempmute.%uuid of player%} remove difference between now and {start.tempmute.%uuid of player%} from {_tempmute} if difference between now and {start.tempmute.%uuid of player%} is less than {time.tempmute.%uuid of player%}: cancel event send "&6[Mute] &fVous êtes réduit au silence pendant &c%{_tempmute}%" to player #wait {_tempmute} else: send "&6[Mute] &fVous pouvez de nouveau parler %player% !" delete {tempmute.%uuid of player%} delete {time.tempmute.%uuid of player%} delete {now.tempmute.%uuid of player%} stop if {tempjail.%uuid of player%} is true: #set {_test} to difference between now and {start.tempjail.%uuid of player%} set {_mute} to {time.tempjail.%uuid of player%} remove difference between now and {start.tempjail.%uuid of player%} from {_mute} if difference between now and {start.tempjail.%uuid of player%} is less than {time.tempjail.%uuid of player%}: cancel event replace "second" with "seconde" in {_mute} replace "hour" with "heure(s)" in {_mute} replace "day" with "jours" in {_mute} send "&6[Mute] &fVous êtes réduit au silence pendant &c%{_mute}%" to player else: send "&6[Mute] &fVous pouvez de nouveau parler %player% !" delete {tempjail.%uuid of player%} delete {time.tempjail.%uuid of player%} delete {now.tempjail.%uuid of player%} stop if {adminrank.%uuid of player%} is "Garde_loup": if {aduty.%player%} is true: set the chat format to "&c[&3&l&o%{adminrank.%uuid of player%}%&c] &b&o%player% &7: %message%" else: set the chat format to "&c[&9&l&oHéros&c] &9&o%player% &7: %message%" if {adminrank.%uuid of player%} is "Développeur": if {aduty.%player%} is true: set the chat format to "&c[&b&l&o%{adminrank.%uuid of player%}%&c] &b&o%player% &7: %message%" else: set the chat format to "&c[&9&l&oDév&c] &9&o%player% &7: %message%" if {adminrank.%uuid of player%} is "Héros": if {gduty.%player%} is true: set the chat format to "&c[&9&l&oHéros&c] &9&o%player% &7: %message%" else: set the chat format to "(Aventurier) %player% : %message%" loop all players: if {staffchat.%uuid of loop-player%} is set: cancel event send "Admin: %message%" to loop-player else: if {adminrank.%uuid of player%} is "Gestion Loup": if {aduty.%player%} is true: set the chat format to "&c[&6&l&o%{adminrank.%uuid of player%}%&c] &e&o%player% &7: %message%" else: set the chat format to "&c[&9&l&oHéros&c] &9&o%player% &7: %message%"
Je n'arrête pas d'essayer différente forme et je ne comprends pas la mécanique... -
Justement c'est là que ça coince je veux que la permission soit ça :
{staffchat.%uuid of loop-player%}et donc ne pas utiliser has permission
-
Salut je te remercie,
Et comment envoyer donc dans le tchat un message écrit uniquement par les joueurs ayant cette permission et que les autres n'ayant pas la permission ne puisse pas voir le message ? -
Version de Minecraft : 1.16.5
Version de Skript : 2.6Addons utilisés: SkQuery, WildSkript
Type du skript : Admin chat
Description du script :
Salut l'équipe !
Je viens vers vous, car je souhaite faire un admin tchat avec une variable définie.
Je n'arrive pas à faire un loop correct pour vérifier que le joueur ait bien la variable activée
J'ai cherché sur internet et je trouve souvent ça :
Citationloop-player has not permission "test.test"
Et moi je veux juste vérifier si mon joueur parmi tous les joueurs a cette variable :
set {staffchat.%uuid of player%} to true
Et ensuite dans le on chat envoyer UNIQUEMENT le message du joueur ayant la variable set à TOUS LES JOUEURS ayant cette même variable set.
si quelqu'un peut m'aider je vous remercie par avance...
En effet les loops ne sont pas trop mon fort. -
Bonjour !
Super cela fonctionne à merveille, merci à toi !
--> Résolu -
Ca me dit ça quand je fais :
set {muteok.%{sender}%}
-
Il y a 2 heures, Zeedix a dit :
Bonjour,
As-tu essayé de déclarer ta variable comme ceci :
set {_sender} to arg 1's name
Ca fonctionne chez moi
Bonne journée
EDIT:
Je pense avoir compris le problème. Comme tu set une variable temporaire elle s'efface avant l'inventory click.
personnellement je ferais comme ça :
set {sender} to arg 1's name
Ensuite dans l'inventory click:
send "Le joueur défini est: %{sender}% " clear {sender}
Normalement ça devrait le faire 🙂
Salut, merci pour le coup de pouce cela fonctionne !
Dernière petite question pour en revenir au skript de base, comment puis-je récupérer le {sender} donc le nom du joueur afin de le mute dans une variable type :
set {muteok.%{mute.sender}%}
-
Non non !
En fait la commande fonctionne ce n'est pas le problème.
La commande /mute ouvre un gui jusque la pas de" problème aussi.
Ensuite je vais dans l'événement ON INVENTORY CLICKEt c'est la que j'y arrive pas. Dans l'évent je souhaite récupérer le nom du joueur de la commande /mute et le mettre dans on inventory click
Genre voilà je définie ça dans le menu GUI
Donc la logiquement je récupère le pseudo du joueur dans la variable _sender :
set {_sender} to name of arg 1
Et dans l'event on inventory click je souhaite savoir qui est le joueur définie :
send "Le joueur défini est: %{_sender}% "
Et ça me marque dans minecraft : "Le joueur défini est <none>"
Job - Variable dans un bloc
dans Résolus
Posté(e)
Résolu avec @DKSM