Aller au contenu

Question

Posté(e)

Version de Minecraft : 1.17.1
Version de Skript : 2.6.1

Addons utilisés: SkRayFall - SkQuery 3 et 4 - Skelett

Type du skript : Bonsoir à tous, voilà j'ai créé un skript qui ouvre un menu de sanctions, jusque là pas de problème. J'aimerai savoir comment récupérer le nom du joueur sans passé par "arg 1" qui ne peut pas prendre en considération. De ce fait, savoir si cela est possible est / ou si je dois faire une fonction pour récupérer le nom du joueur cible et ainsi coder librement pour mes sanctions via le menu.

A noter que j'utilise aucun addons pour la syntaxe simplement l'implantation que propose Skript.

Description du script :

Voici donc le code qui permet de lancer le menu :

command /moderation <player>:
	trigger:
		open chest inventory with 3 row named "&6Modération" to player
		wait 1 tick
		set {arg1moderation} to arg 1
		set {_currentSlot} to 0
		while {_currentSlot} < 27:
			set slot {_currentSlot} of open inventory of player to black stained glass pane
			increase {_currentSlot} by 1
			if {_currentSlot} is 10:
				set {_currentSlot} to 17
				
		
		# -------------- Statistiques du joueur ------------------------------------
		set {_item} to arg-1's skull
		set line 1 of {_item}'s lore to "&fVie du joueur: &e%arg-1's health%"
		set line 2 of {_item}'s lore to "&fNiveau de faim: &e%arg-1's food level%"
		set line 3 of {_item}'s lore to "&fRang Staff: &e%{adminrank.%uuid of arg 1%}%"
		set slot 10 of open inventory of player to {_item} named "%arg-1%"
		
		# -------------- Item de fermeture d'inventaire ----------------------------
		set {_item} to barrier
		set line 1 of {_item}'s lore to "&aFermeture du menu"
		set slot 16 of open inventory of player to {_item} named "&bFermer"
		
		# -------------- Item de sanctions ----------------------------------------
		set {_item} to red wool
		set line 1 of {_item}'s lore to "&aInterface des sanctions."
		set slot 13 of open inventory of player to {_item} named "&bSanctions administratives"

 

Puis direction le "On inventory Click" dans la partie qui nous intéresse :

else if index of event-slot is 4:
			open chest inventory with 1 row named "&6&lMenu mute de &f%{arg1moderation}%" to player
			wait 1 tick
			set {_currentSlot} to 0
			while {_currentSlot} < 9:
				set slot {_currentSlot} of open inventory of player to black stained glass pane
				increase {_currentSlot} by 1
				
			# -------------------- MUTE JOUEUR POUR SPAM --------------------------------------
			set {_item} to orange wool
			set line 1 of {_item}'s lore to "&aMute le joueur pour spam"
			set slot 1 of open inventory of player to {_item} named "&3Spam"
			set {raisonmute0} to "Spam dans le tchat"
			
	if name of event-inventory is "&6&lMenu mute de &f%{arg1moderation}%":
		if index of event-slot is 4:
			# code ici pour mon mute et récupérer la variable

J'aimerai du coup remplacer la variable qui donne bien le joueur ciblé {arg1moderation} par quelque chose de plus simple à utiliser dans mon code de mute ci-joint et qui fonctionne.

command /mute [<player>] [<time span>] [<text>]:
	trigger:
		if {adminrank.%uuid of player%} is not "Createur" or "Administrateur" or "Modérateur":
			send "&cTu n'as pas les permissions pour faire cette commande."
			stop
		else if arg 1 is not set:
			send "&cSpécifiez un joueur connecté."
			stop
		else if {mute.%arg 1%} is not set:
			set {mute.%arg 1%} to true
			send "&bModération: &7Vous venez de &6mute &7le joueur &c%arg 1%" to player
			message "&cSanction: &7vous venez d'être mute par &c%player% &7pour %arg 2%." to arg 1
			add "%nl%%arg 1% a été mute le %now%" to {sanctions.%uuid of arg 1%::*}
			add 1 to {nbrmute.%uuid of arg 1%}
			set {jailresason::%uuid of arg-1%} to arg-2
		else if {mute.%arg 1%} is set:
			delete {mute.%arg 1%}
			send "&bModération: &7Vous venez de &6unmute &7le joueur &c%arg 1%" to player
			message "&cSanction: &7vous venez d'être unmute par &c%player%." to arg 1

 

Merci pour le temps que certains prendront à lire et comprendre mon problème.

3 réponses à cette question

Messages recommandés

  • 0
Posté(e) (modifié)
Il y a 14 heures, Mr_Kofte a dit :

Version de Minecraft : 1.17.1
Version de Skript : 2.6.1

Addons utilisés: SkRayFall - SkQuery 3 et 4 - Skelett

Type du skript : Bonsoir à tous, voilà j'ai créé un skript qui ouvre un menu de sanctions, jusque là pas de problème. J'aimerai savoir comment récupérer le nom du joueur sans passé par "arg 1" qui ne peut pas prendre en considération. De ce fait, savoir si cela est possible est / ou si je dois faire une fonction pour récupérer le nom du joueur cible et ainsi coder librement pour mes sanctions via le menu.

A noter que j'utilise aucun addons pour la syntaxe simplement l'implantation que propose Skript.

Description du script :

Voici donc le code qui permet de lancer le menu :


command /moderation <player>:
	trigger:
		open chest inventory with 3 row named "&6Modération" to player
		wait 1 tick
		set {arg1moderation} to arg 1
		set {_currentSlot} to 0
		while {_currentSlot} < 27:
			set slot {_currentSlot} of open inventory of player to black stained glass pane
			increase {_currentSlot} by 1
			if {_currentSlot} is 10:
				set {_currentSlot} to 17
				
		
		# -------------- Statistiques du joueur ------------------------------------
		set {_item} to arg-1's skull
		set line 1 of {_item}'s lore to "&fVie du joueur: &e%arg-1's health%"
		set line 2 of {_item}'s lore to "&fNiveau de faim: &e%arg-1's food level%"
		set line 3 of {_item}'s lore to "&fRang Staff: &e%{adminrank.%uuid of arg 1%}%"
		set slot 10 of open inventory of player to {_item} named "%arg-1%"
		
		# -------------- Item de fermeture d'inventaire ----------------------------
		set {_item} to barrier
		set line 1 of {_item}'s lore to "&aFermeture du menu"
		set slot 16 of open inventory of player to {_item} named "&bFermer"
		
		# -------------- Item de sanctions ----------------------------------------
		set {_item} to red wool
		set line 1 of {_item}'s lore to "&aInterface des sanctions."
		set slot 13 of open inventory of player to {_item} named "&bSanctions administratives"

 

Puis direction le "On inventory Click" dans la partie qui nous intéresse :


else if index of event-slot is 4:
			open chest inventory with 1 row named "&6&lMenu mute de &f%{arg1moderation}%" to player
			wait 1 tick
			set {_currentSlot} to 0
			while {_currentSlot} < 9:
				set slot {_currentSlot} of open inventory of player to black stained glass pane
				increase {_currentSlot} by 1
				
			# -------------------- MUTE JOUEUR POUR SPAM --------------------------------------
			set {_item} to orange wool
			set line 1 of {_item}'s lore to "&aMute le joueur pour spam"
			set slot 1 of open inventory of player to {_item} named "&3Spam"
			set {raisonmute0} to "Spam dans le tchat"
			
	if name of event-inventory is "&6&lMenu mute de &f%{arg1moderation}%":
		if index of event-slot is 4:
			# code ici pour mon mute et récupérer la variable

J'aimerai du coup remplacer la variable qui donne bien le joueur ciblé {arg1moderation} par quelque chose de plus simple à utiliser dans mon code de mute ci-joint et qui fonctionne.


command /mute [<player>] [<time span>] [<text>]:
	trigger:
		if {adminrank.%uuid of player%} is not "Createur" or "Administrateur" or "Modérateur":
			send "&cTu n'as pas les permissions pour faire cette commande."
			stop
		else if arg 1 is not set:
			send "&cSpécifiez un joueur connecté."
			stop
		else if {mute.%arg 1%} is not set:
			set {mute.%arg 1%} to true
			send "&bModération: &7Vous venez de &6mute &7le joueur &c%arg 1%" to player
			message "&cSanction: &7vous venez d'être mute par &c%player% &7pour %arg 2%." to arg 1
			add "%nl%%arg 1% a été mute le %now%" to {sanctions.%uuid of arg 1%::*}
			add 1 to {nbrmute.%uuid of arg 1%}
			set {jailresason::%uuid of arg-1%} to arg-2
		else if {mute.%arg 1%} is set:
			delete {mute.%arg 1%}
			send "&bModération: &7Vous venez de &6unmute &7le joueur &c%arg 1%" to player
			message "&cSanction: &7vous venez d'être unmute par &c%player%." to arg 1

 

Merci pour le temps que certains prendront à lire et comprendre mon problème.

Bah ... passe par une fonction qui va s'occuper d'ouvrir les différents menus '-'
Tu peux faire, par exemple :

function OpenGUI(Sender: player, Target: offline player, Menu: text, Submenu: text):
	if {_Menu} = "Ban", "Mute" or "Kick": # Je sais plus si c'est juste 1 égal ou 2, ça fait un bail que j'ai pu fais de Skript ^^'
		if {_Submenu} = "Triche":
			# Tu ouvres le menu contenant les diverses sanctions liées à la triche.
		if {_Submenu} = "Mauvais Comportement":
			# Tu ouvres le menu contenant les diverses sanctions liées au mauvais comportement.
		if {_Submenu} = "Autre":
			# Tu ouvres le menu contenant les sanctions non-catégorisées.
	else:
		# Ouvres le menu par défaut avec les diverses catégories menant aux différentes sanctions.
		

Ensuite, pour ouvrir l'un des menus, tu fais juste :

OpenGUI(player, arg-1, "(Nom de menu -> Variable {_Menu} dans la fonction)", "(Nom du sous-menu -> Variable {_Submenu} dans la fonction)")

Pour finir, lors de l'application d'une sanction, sur l'item dans ton menu, tu fais ça :

set slot 0 of open inventory of {_Sender} to stone to run [make player execute command "/mute %{arg-1}% (Ta durée) (Ta raison)"]

Voilà ! 🙂
 

Par contre, je te conseilles vivement de passer sous Skript-GUI, SkQuery est très ancien et très peu optimisé.

Modifié par Shykuzo
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
×
×
  • 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.