Aller au contenu
  • 0

Question

Posté(e)

Bonjour à tous !

 

J'ai codé un skript de sanctions (Ban / Tempban / Mute / Tempmute / Unban / Unmute / ...) mais j'ai un gros problèmes avec les TimeSpans, quand je fais la commande de mute temporaire ou de ban temporaire, exemple : /tempban coucou 30d Killaura / Forcefield ... sa ne fonctionne pas mais si je fais : /tempban coucou second/minute/hour/... Killaura / Forcefield ... sa le ban mais ... que soit 1 seconde, soit 1 minute, soit 1 heure, soit 1 jour ... je voudrais savoir comment réglé sa pour enfin finir la prochaine version de mon skript de modération ( disponible dans l'onglet ressources 😉 ) 

 

Versions : 

Skript » 2.2-Dev25

SkQuerry » 3.21.4

SkRayFall » 1.4

Serveur » 1.8

 

Code :

# ============================= #

     # ---- Options ----#

# ============================= #

options:
    prefix: &4&lSanctions &8»
    message: www.arcania-network.fr/forum/bannissements
    permission: moderator.sanctions

# ========================================== #

 # ---- Sanctions ( ban / mute / ... ) ----#

# ========================================== #

command /ban [<offline player>] [<text>]:
    trigger:
        if player has permission "{@permission}":
            if arg 1 is not set:
                if arg 2 is not set:
                    send "{@prefix} &cVeuillez mettre le pseudo du joueur à bannir et une raison !"
                    stop
            if arg 1 is set:
                if arg 2 is not set:
                    send "{@prefix} &cVeuillez mettre une raison pour bannir &6%arg 1% &c!"
                    stop
                if arg 2 is set:
                    if {ban.%arg 1%} is false:
                        broadcast "&b&m--|----------------------------------------|--"
                        broadcast "          &cUn joueur à été banni du serveur !"
                        broadcast "&b&m--|----------------------------------------|--"
                        kick arg 1 due to "&cVous avez été banni du serveur%nl%%nl%&bTemps &8: &6Définitivement%nl%&bRaison &8: &6%arg 2%%nl%&bSanction donnée par &8: &6%player%%nl%%nl%&ePour contester votre bannissement rendez-vous sur &b{@message}"
                        set {ban::%arg 1%} to true
                        set {reason} to arg 2
                        set {player} to player
                        stop
                    if {ban::%arg 1%} is true:
                        send "{@prefix} &cCe joueur est déjà banni !"
                        stop
        else:
            send "{@prefix} &cVous n'avez pas la permission d'utiliser ceci !"
            stop
                    
# --------------------------------------------------------------------------------------------------------------------------------------------------------- #
                    
command /tempban [<offline player>] [<timespan>] [<text>]:
    trigger:
        if player has permission "{@permission}":
            if arg 1 is not set:
                if arg 2 is not set:
                    if arg 3 is not set:
                        send "{@prefix} &cVeuillez mettre le pseudo du joueur à bannir, la durée et une raison !"
                        stop
            if arg 1 is set:
                if arg 2 is not set:
                    if arg 3 is not set:
                        send "{@prefix} &cVeuillez mettre une durée pour bannir &6%arg 1% &cet une raison !"
                        stop
                if arg 2 is set:
                    if arg 3 is not set:
                        send "{@prefix} &cVeuillez mettre une raison pour bannir &6%arg 1% &c!"
                        stop
                    if arg 3 is set:
                        if {tempban::%arg 1%} is false:
                            broadcast "&b&m--|----------------------------------------|--"
                            broadcast "          &cUn joueur à été banni du serveur !"
                            broadcast "&b&m--|----------------------------------------|--"
                            set {tempban::%arg 1%} to true
                            set {timespan} to arg 2
                            set {reason2} to arg 3
                            set {player2} to player
                            kick arg 1 due to "&cVous avez été banni du serveur%nl%%nl%&bTemps &8: &6%arg 2%&6%nl%&bRaison &8: &6%arg 3%%nl%&bSanction donnée par &8: &6%player%%nl%%nl%&ePour contester votre bannissement rendez-vous sur &b{@message}"
                            wait arg 2
                            set {tempban::%arg 1%} to false
                            broadcast "&b&m--|----------------------------------------|--"
                            broadcast "        &cUn joueur à été débanni du serveur !"
                            broadcast "&b&m--|----------------------------------------|--"
                            stop
                        if {tempban::%arg 1%} is true:
                            send "{@prefix} &cCe joueur est déjà banni !"
                            stop
        else:
            send "{@prefix} &cVous n'avez pas la permission d'utiliser ceci !"
            stop
            
# --------------------------------------------------------------------------------------------------------------------------------------------------------- #
                                
command /tempmute [<offline player>] [<timespan>] [<text>]:
    trigger:
        if player has permission "{@permission}":
            if arg 1 is not set:
                if arg 2 is not set:
                    if arg 3 is not set:
                        send "{@prefix} &cVeuillez mettre le pseudo du joueur à mute, la durée et une raison !"
                        stop
            if arg 1 is set:
                if arg 2 is not set:
                    if arg 3 is not set:
                        send "{@prefix} &cVeuillez mettre une durée pour mute &6%arg 1% &cet une raison !"
                        stop
                if arg 2 is set:
                    if arg 3 is not set:
                        send "{@prefix} &cVeuillez mettre une raison pour mute &6%arg 1% &c!"
                        stop
                    if arg 3 is set:
                        if {tempmute::%arg 1%} is false:
                            send "{@prefix} &fVous avez mute &6%arg 1% &fpour &6%arg 3% &fpendant &6%arg 2%"
                            send "&b&m--|----------------------------------------|--" to arg 1
                            send " " to arg 1
                            send "     &cVous avez été réduit au silence" to arg 1
                            send " " to arg 1
                            send "     &bPendant &8: &6%arg 2%" to arg 1
                            send "     &bRaison &8: &6%arg 3%" to arg 1
                            send "     &bSanction donnée par &8: &6%player%" to arg 1
                            send " " to arg 1
                            send "&b&m--|----------------------------------------|--" to arg 1
                            set {tempmute::%arg 1%} to true
                            wait arg 2
                            set {tempmute::%arg 1%} to false
                            send "&b&m--|----------------------------------------|--" to arg 1
                            send "          &cVous n'êtes plus réduit au silence" to arg 1
                            send "&b&m--|----------------------------------------|--" to arg 1
                            stop
                        if {tempmute::%arg 1%} is true:
                            send "{@prefix} &cCe joueur est déjà mute !"
                            stop
        else:
            send "{@prefix} &cVous n'avez pas la permission d'utiliser ceci !"
            stop

# --------------------------------------------------------------------------------------------------------------------------------------------------------- #
                        
command /unmute [<offline player>]:
    trigger:
        if player has permission "{@permission}":
            if arg 1 is not online:
                send "{@prefix} &cCe joueur n'est pas en ligne actuellement !"
                stop
                send "{@prefix} &cVeuillez mettre le pseudo du joueur à unmute !"
                stop
            if arg 1 is set:
                set {tempmute::%arg 1%} to false
                send "&b&m--|----------------------------------------|--" to arg 1
                send "          &cVous n'êtes plus réduit au silence" to arg 1
                send "&b&m--|----------------------------------------|--" to arg 1
                send "{@prefix} &6%arg 1% &fà été unmute !"
        else:
            send "{@prefix} &cVous n'avez pas la permission d'utiliser ceci !"
            stop
            
command /unban [<offline player>]:
    trigger:
        if player has permission "{@permission}":
            if arg 1 is not set:
                send "{@prefix} &cVeuillez mettre le pseudo du joueur à unban !"
                stop
            if arg 1 is set:
                set {tempban::%arg 1%} to false
                broadcast "&b&m--|----------------------------------------|--"
                broadcast "        &cUn joueur à été débanni du serveur !"
                broadcast "&b&m--|----------------------------------------|--"
                set {ban::%arg 1%} to false
        else:
            send "{@prefix} &cVous n'avez pas la permission d'utiliser ceci !"
            stop
                    
# ================================== #

 # ---- Evénements ( Sanctions )----#

# ================================== #

on join:
    if {ban::%player%} is true:
        set join message to ""
        kick player due to "&cVous avez été banni du serveur%nl%%nl%&bTemps &8: &6Définitivement%nl%&bRaison &8: &6%{reason}%%nl%&bSanction donnée par &8: &6%{player}%%nl%%nl%&ePour contester votre bannissement rendez-vous sur &b{@message}"
        stop
    if {tempban::%player%} is true:
        set join message to ""
        kick player due to "&cVous avez été banni du serveur%nl%%nl%&bTemps &8: &6%{timespan}%%nl%&bRaison &8: &6%{reason2}%%nl%&bSanction donnée par &8: &6%{player2}%%nl%%nl%&ePour contester votre bannissement rendez-vous sur &b{@message}"
        stop
    if {ban::%player%} is not set:
        set {ban::%player%} to false
    if {tempban::%player%} is not set:
        set {tempban::%player%} to false
    if {tempmute::%player%} is not set:
        set {tempmute::%player%} to false
        
on chat:
    if {tempmute::%player%} is true:
        cancel event
        send "{@prefix} &cVous êtes réduit au silence !"
        stop
        
# ============================= #

   # ---- Informations ----#

# ============================= #

# Skript fait par Zerox_GraphicsYT !

# Youtube : https://www.youtube.com/channel/UCMif2oSXQsCfxHicuuoUOXQ?view_as=subscriber
# Skript-mc : https://skript-mc.fr/forum/profile/14485-zerox-graphics/
# Discord : Zerox Graphic's | Graphiste Free#7097
# Serveur Discord : https://discord.gg/tCq2Z3N

# Merci de ne pas enlever mon pseudo du skript, ni de vous l'approprié !

 

Merci de votre aide !

9 réponses à cette question

Messages recommandés

  • 0
Posté(e)
il y a 1 minute, Davarck (Codeur Skript) a dit :

Bonjour, essaye de mettre le timespan à la fin genre:

/tempban joueur raison 30 days

Je sais pas si ça marchera 😕

Va falloir que je recode tout mais je le fais après

  • 0
Posté(e)

Essaye ça (pour bannir un joueur : /ban <joueur> <temps> <raison> ; pour le pardonner : /pardon <joueur>) :

function timeInFrench(time: timespan) :: text:
	set {_texts::*} to split {_time} by " "
	set {_number.1} to {_texts::1} parsed as a number
	set {_number.1} to rounded {_number.1}
	set {_text.1} to {_texts::2}
	if {_texts::3} is set:
		set {_number.2} to {_texts::4} parsed as a number
		set {_number.2} to rounded {_number.2}
		set {_text.2} to {_texts::5}
	loop 2 times:
		if {_number.%loop-value%} is set:
			set {_character} to first character of {_text.%loop-value%}
			if {_character} is "s":
				if {_number.%loop-value%} < 2:
					set {_text.%loop-value%} to "seconde"
				else:
					set {_text.%loop-value%} to "secondes"
			else if {_character} is "m":
				if {_number.%loop-value%} < 2:
					set {_text.%loop-value%} to "minute"
				else:
					set {_text.%loop-value%} to "minutes"
			else if {_character} is "h":
				if {_number.%loop-value%} < 2:
					set {_text.%loop-value%} to "heure"
				else:
					set {_text.%loop-value%} to "heures"
			else if {_character} is "d":
				if {_number.%loop-value%} < 2:
					set {_text.%loop-value%} to "jour"
				else:
					set {_text.%loop-value%} to "jours"
	if {_number.2} is not set:
		set {_time} to "%{_number.1}% %{_text.1}%"
	else:
		set {_time} to "%{_number.1}% %{_text.1}% et %{_number.2}% %{_text.2}%"
	return {_time}

command /ban [<offline player>] [<text>] [<text>] [<text>]:
	executable by: players and console
	trigger:
		if sender is a player:
			if player is not an op:
				send "Tu n'as pas la permission requise."
				stop
		if argument 1 is not set:
			send "Tu dois préciser un joueur."
		else:
			set {_player} to argument 1
			if player is {_player}:
				send "Tu ne peux pas te bannir toi-même."
			else if {_player} has not already played before:
				send "Ce joueur ne s'est jamais connecté."
			else:
				set {_uuid} to UUID of {_player}
				if {banned.%{_uuid}%} is true:
					set {_difference} to difference between now and {banishment.%{_uuid}%.date}
					if {_difference} is less than {banishment.%{_uuid}%.time}:
						send "Ce joueur est déjà banni."
						stop
				if argument 2 is not set:
					send "Tu dois préciser une durée."
				else if argument 2 parsed as a number is not set:
					send "La durée n'a pas été écrite correctement."
				else if argument 3 is not set:
					send "La durée n'a pas été écrite correctement."
				else:
					set {_time} to "%argument 2% %argument 3%" parsed as a timespan
					if {_time} is not set:
						send "La durée n'a pas été écrite correctement."
					else if argument 4 is not set:
						send "Tu dois préciser une raison."
					else:
						set {banned.%{_uuid}%} to true
						set {banishment.%{_uuid}%.date} to now
						set {banishment.%{_uuid}%.time} to {_time}
						set {banishment.%{_uuid}%.reason} to {_reason}
						set {_time} to timeInFrench({_time})
						if {_player} is online:
							kick {_player} due to "Tu as été banni pendant %{_time}% pour ""%{_reason}%""."
						send "Le joueur ""%{_player}%"" a été banni pendant %{_time}% pour ""%{_reason}%""."

command /pardon [<offline player>]:
	executable by: players and console
	trigger:
		if sender is a player:
			if player is not an op:
				send "Tu n'as pas la permission requise."
				stop
		if argument 1 is not set:
			send "Tu dois préciser un joueur."
		else:
			set {_player} to argument 1
			if player is {_player}:
				send "Tu n'es pas sanctionné..."
			else:
				set {_uuid} to UUID of {_player}
				if {banned.%{_uuid}%} is not set:
					send "Ce joueur n'est pas sanctionné."
				else:
					set {_difference} to difference between now and {banishment.%{_uuid}%.date}
					if {_difference} is more than {banishment.%{_uuid}%.time}:
						send "Ce joueur n'est pas sanctionné."
					else:
						clear {banned.%{_uuid}%}
						clear {banishment.%{_uuid}%.date}
						clear {banishment.%{_uuid}%.time}
						clear {banishment.%{_uuid}%.reason}
						send "Le joueur ""%{_player}%"" a été pardonné."

on connect:
	set {_uuid} to UUID of player
	if {banned.%{_uuid}%} is true:
		set {_difference} to difference between now and {banishment.%{_uuid}%.date}
		if {_difference} is less than {banishment.%{_uuid}%.time}:
			set {_reason} to {banishment.%{_uuid}%.reason}
			set {_remaining.time} to difference between {_difference} and {banishment.%{_uuid}%.time}
			set {_remaining.time} to timeInFrench({_remaining.time})
			kick player due to "Tu as été banni pour ""%{_reason}%"". Temps restant : %{_remaining.time}%."
		else:
			clear {banned.%{_uuid}%}
			clear {banishment.%{_uuid}%.date}
			clear {banishment.%{_uuid}%.time}
			clear {banishment.%{_uuid}%.reason}

 

  • 0
Posté(e)
Il y a 1 heure, Davarck (Codeur Skript) a dit :

Bonjour, essaye de mettre le timespan à la fin genre:

/tempban joueur raison 30 days

Je sais pas si ça marchera 😕

Sa fonctionne merciiiiiii 🙂

il y a une heure, Skripting a dit :

Essaye ça (pour bannir un joueur : /ban <joueur> <temps> <raison> ; pour le pardonner : /pardon <joueur>) :


function timeInFrench(time: timespan) :: text:
	set {_texts::*} to split {_time} by " "
	set {_number.1} to {_texts::1} parsed as a number
	set {_number.1} to rounded {_number.1}
	set {_text.1} to {_texts::2}
	if {_texts::3} is set:
		set {_number.2} to {_texts::4} parsed as a number
		set {_number.2} to rounded {_number.2}
		set {_text.2} to {_texts::5}
	loop 2 times:
		if {_number.%loop-value%} is set:
			set {_character} to first character of {_text.%loop-value%}
			if {_character} is "s":
				if {_number.%loop-value%} < 2:
					set {_text.%loop-value%} to "seconde"
				else:
					set {_text.%loop-value%} to "secondes"
			else if {_character} is "m":
				if {_number.%loop-value%} < 2:
					set {_text.%loop-value%} to "minute"
				else:
					set {_text.%loop-value%} to "minutes"
			else if {_character} is "h":
				if {_number.%loop-value%} < 2:
					set {_text.%loop-value%} to "heure"
				else:
					set {_text.%loop-value%} to "heures"
			else if {_character} is "d":
				if {_number.%loop-value%} < 2:
					set {_text.%loop-value%} to "jour"
				else:
					set {_text.%loop-value%} to "jours"
	if {_number.2} is not set:
		set {_time} to "%{_number.1}% %{_text.1}%"
	else:
		set {_time} to "%{_number.1}% %{_text.1}% et %{_number.2}% %{_text.2}%"
	return {_time}

command /ban [<offline player>] [<text>] [<text>] [<text>]:
	executable by: players and console
	trigger:
		if sender is a player:
			if player is not an op:
				send "Tu n'as pas la permission requise."
				stop
		if argument 1 is not set:
			send "Tu dois préciser un joueur."
		else:
			set {_player} to argument 1
			if player is {_player}:
				send "Tu ne peux pas te bannir toi-même."
			else if {_player} has not already played before:
				send "Ce joueur ne s'est jamais connecté."
			else:
				set {_uuid} to UUID of {_player}
				if {banned.%{_uuid}%} is true:
					set {_difference} to difference between now and {banishment.%{_uuid}%.date}
					if {_difference} is less than {banishment.%{_uuid}%.time}:
						send "Ce joueur est déjà banni."
						stop
				if argument 2 is not set:
					send "Tu dois préciser une durée."
				else if argument 2 parsed as a number is not set:
					send "La durée n'a pas été écrite correctement."
				else if argument 3 is not set:
					send "La durée n'a pas été écrite correctement."
				else:
					set {_time} to "%argument 2% %argument 3%" parsed as a timespan
					if {_time} is not set:
						send "La durée n'a pas été écrite correctement."
					else if argument 4 is not set:
						send "Tu dois préciser une raison."
					else:
						set {banned.%{_uuid}%} to true
						set {banishment.%{_uuid}%.date} to now
						set {banishment.%{_uuid}%.time} to {_time}
						set {banishment.%{_uuid}%.reason} to {_reason}
						set {_time} to timeInFrench({_time})
						if {_player} is online:
							kick {_player} due to "Tu as été banni pendant %{_time}% pour ""%{_reason}%""."
						send "Le joueur ""%{_player}%"" a été banni pendant %{_time}% pour ""%{_reason}%""."

command /pardon [<offline player>]:
	executable by: players and console
	trigger:
		if sender is a player:
			if player is not an op:
				send "Tu n'as pas la permission requise."
				stop
		if argument 1 is not set:
			send "Tu dois préciser un joueur."
		else:
			set {_player} to argument 1
			if player is {_player}:
				send "Tu n'es pas sanctionné..."
			else:
				set {_uuid} to UUID of {_player}
				if {banned.%{_uuid}%} is not set:
					send "Ce joueur n'est pas sanctionné."
				else:
					set {_difference} to difference between now and {banishment.%{_uuid}%.date}
					if {_difference} is more than {banishment.%{_uuid}%.time}:
						send "Ce joueur n'est pas sanctionné."
					else:
						clear {banned.%{_uuid}%}
						clear {banishment.%{_uuid}%.date}
						clear {banishment.%{_uuid}%.time}
						clear {banishment.%{_uuid}%.reason}
						send "Le joueur ""%{_player}%"" a été pardonné."

on connect:
	set {_uuid} to UUID of player
	if {banned.%{_uuid}%} is true:
		set {_difference} to difference between now and {banishment.%{_uuid}%.date}
		if {_difference} is less than {banishment.%{_uuid}%.time}:
			set {_reason} to {banishment.%{_uuid}%.reason}
			set {_remaining.time} to difference between {_difference} and {banishment.%{_uuid}%.time}
			set {_remaining.time} to timeInFrench({_remaining.time})
			kick player due to "Tu as été banni pour ""%{_reason}%"". Temps restant : %{_remaining.time}%."
		else:
			clear {banned.%{_uuid}%}
			clear {banishment.%{_uuid}%.date}
			clear {banishment.%{_uuid}%.time}
			clear {banishment.%{_uuid}%.reason}

 

Je déteste les trucs qui utilisent des fonctions car je n'y comprends rien mais merci quand même ^^

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.