Aller au contenu

[TimeSpan] Un TimeSpan comme Essentials ?


Messages recommandés

Posté(e)

Oyez, oyez, jeunes demoiselles et damoiseaux,

Commençons par le commencement,

 

Version: 1.8

Type de Skript: TimeSpan & Sanctions

Description:

 

Je viens aujourd'hui vous demandez un bout de skript, il me suffit juste de voir le fonctionnement pour le réadapter aux autres sanctions ^^'

 

Bref, je ne vais pas y passer par quatre chemins, j'aurais besoin de vos compétences pour un script de bannissement temporaire où la commande serait la suivante:

/tempban <JOUEUR> <TIME SPAN> <RAISON>

Et j'aimerais que le TimeSpan soit sous la forme suivante:

/tempban Law 1h test

Voilà, je ne sais pas si ce type de TimeSpan est réalisable mais je crois me souvenir que @PsYZiiK avait fait un script similaire dans les demandes mais je parviens pas à retrouver celui-ci.

Je vous souhaite une agréable journée/soirée,

Law.

  • J'aime 1
Posté(e)
Oui @PsYZiiK a bien fait un skript de modération il s'appelle Z-Modération fouille dans les ressources

Ah, ce n'est pas de ça dont je parlais ^^' Dans son Skript Z-Modération ( respectable travail au passage ), les sanctions se font par GUI et non pas par commandes. Je me souviens l'avoir vu dans les demandes de Skript ou d'aide et il avait posté ( si ma mémoire ne me fait pas défaut ) un script similaire à ma demande ^^'

  • J'aime 1
Posté(e)

Bonjour pour transformer le format "1h, 2m, 5d etc....."

PsyZiik (Je fais exprés de pas le tagguer il doit déjà l'être assez) utilise une fonction qui transforme ce format en timespan

function TransformTime(time: text) :: timespan:
   if length of {_time} is 2:
       set {_time} to "0%{_time}%"
   set {_characters::*} to {_time} split at ""
   if {_characters::3} is "s":
       set {_characters::3} to " seconds"
   else if {_characters::3} is "m":
       set {_characters::3} to " minutes"
   else if {_characters::3} is "h":
       set {_characters::3} to " hours"
   else if {_characters::3} is "d":
       set {_characters::3} to " days"
   set {_result} to "%{_characters::1}%%{_characters::2}%%{_characters::3}%" parsed as timespan
   return {_result}

 

Après il met la durée de la sanction dans une variable "set {mute.time.%uuid of arg 1%} to TransformTime("%arg 2%")"

 

Et après ta juste à check quand le joueur se connecte si la différence entre sa date de ban ({mute.now.%uuid of arg 1%}) et maintenant et supérieur ou égal à {mute.time.%uuid of arg 1%}

  • J'aime 2
Posté(e)

Wow, je dois bien avoué que je n'ai rien compris x') As-tu un exemple de script sur ton ordinateur ou pas ? Car là je ne comprends vraiment pas :x

Posté(e)

Ah, ce n'est pas de ça dont je parlais ^^' Dans son Skript Z-Modération ( respectable travail au passage ), les sanctions se font par GUI et non pas par commandes. Je me souviens l'avoir vu dans les demandes de Skript ou d'aide et il avait posté ( si ma mémoire ne me fait pas défaut ) un script similaire à ma demande ^^'

Les sanctions ne se font pas que par GUI, regarde bien la présentation ;) !

 

Tu peux très bien utiliser la commande /zTempBan <Pseudo> <Temps> (Le temps comme Essentials) <Raison>^^ ! De plus la commande est personnalisable + tous les messages & co !

 

Sinon, il faudrait faire une fonction, @Soufreur78, l'a fait ! Il te suffit de mettre en entrée "10s" sous forme de texte, et en sortie ça va te donner "10 seconds" sous forme de TimeSpan.

 

Exemple :

 

function CheckTime(time: text) :: boolean: # Fonction qui va vérifier si une durée a été écrite correctement !
   if length of {_time} is 2:
       set {_check::*} to groups 0 of "%{_time}%" matched to "^[0-9](s|S|m|M|h|H|d|D)$"
   else if length of {_time} is 3:
       set {_check::*} to groups 0 of "%{_time}%" matched to "^[0-9]{2}(s|S|m|M|h|H|d|D)$"
   if {_check::*} is set:
       return true
   else:
       return false

function TransformTime(time: text) :: timespan: # Fonction qui va retourner le temps sous forme de TimeSpan !
   if length of {_time} is 2:
       set {_time} to "0%{_time}%"
   set {_characters::*} to {_time} split at ""
   if {_characters::3} is "s":
       set {_characters::3} to " seconds"
   else if {_characters::3} is "m":
       set {_characters::3} to " minutes"
   else if {_characters::3} is "h":
       set {_characters::3} to " hours"
   else if {_characters::3} is "d":
       set {_characters::3} to " days"
   set {_result} to "%{_characters::1}%%{_characters::2}%%{_characters::3}%" parsed as timespan
   return {_result}

function SanctionTime(time: timespan) :: text: # Fonction qui va retourner le temps de la sanction !
   set {_time} to "%{_time}%"
   set {_words::*} to {_time} split at " "
   if {_words::2} is "second" or "seconds":
       set {_words::2} to "seconde(s)"
   else if {_words::2} is "minute" or "minutes":
       set {_words::2} to "minute(s)"
   else if {_words::2} is "hour" or "hours":
       set {_words::2} to "heure(s)"
   else if {_words::2} is "day" or "days":
       set {_words::2} to "jour(s)"
   set {_result} to "%{_words::1}% %{_words::2}%"
   return {_result}

function TimeLeft(difference: timespan, cooldown: timespan) :: text: # Fonction qui va retourner le temps d'une sanction temporaire !
   subtract {_difference} from {_cooldown}
   set {_cooldown} to "%{_cooldown}%"
   replace "second " with "seconde(s) " in {_cooldown}
   replace "seconds" with "seconde(s)" in {_cooldown}
   replace "minute " with "minute(s) " in {_cooldown}
   replace "minutes" with "minute(s)" in {_cooldown}
   replace "hour " with "heure(s) " in {_cooldown}
   replace "hours" with "heure(s)" in {_cooldown}
   replace "day " with "jour(s) " in {_cooldown}
   replace "days" with "jour(s)" in {_cooldown}
   replace "and" with "et" in {_cooldown}
   set {_words::*} to {_cooldown} split at " "
   if {_words::5} is set:
       set {_words::1} to rouned down ("%{_words::1}%" parsed as number)
       set {_words::4} to rouned down ("%{_words::4}%" parsed as number)
       set {_result} to "%{_words::1}% %{_words::2}% %{_words::3}% %{_words::4}% %{_words::5}%"
   else:
       set {_words::1} to rouned down ("%{_words::1}%" parsed as number)
       set {_result} to "%{_words::1}% %{_words::2}%"
   return {_result}

command /tempban <offline player> <text> <text>:
   trigger:
       if CheckTime(arg 2) is false:
           send "&cErreur : La durée n'a pas été écrite correctement !"
       else:
           set {ban.%arg 1%} to true
           set {ban.now.%arg 1%} to now
           set {ban.time.%arg 1%} to TransformTime(arg 2)
           set {ban.reason.%arg 1%} to arg 3
           wait a tick
           set {_time} to SanctionTime({ban.time.%arg 1%})
           broadcast "&b> %arg 1% &7a été banni par &b%player% &7pendant &b%{_time}% &7pour &b%arg 2% &7!"

on join:
   if {ban.%player%} is true:
       if difference between {ban.now.%player%} and now is less than {ban.time.%player%}:
           wait a tick
           set {_time.left} to TimeLeft(difference between {ban.now.%player%} and now, {ban.time.%player%})
           kick player due to "&cErreur : Vous avez été banni !%nl%%nl%&7Raison : &a%{ban.reason.%player%}%%nl%&7Temps restant : &a%{_time.left}%"

  • J'aime 1
×
×
  • 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.