Aller au contenu

Classement


Contenu populaire

Affichage du contenu avec la meilleure réputation le 06/12/22 dans toutes les zones

  1. 1 point
    Bonjour à tous :D Aujourd'hui je vous propose un petit tutoriel de compte à rebours pour vos serveurs. Ce compte à rebours est surtout destiné aux mini-jeux que vous souhaitez faire. Ce tuto vous servira à faire par exemple un compte à rebours qui peut s'interrompre si un joueur se déco durant le décompte. (Note: j'ai fait ce code pour un mini jeu mais je n'ai gardé que la partie décompte. Pour un jeu du type uhc, plusieurs ajouts s'imposent :)) Nous allons voir comment faire ceci pas à pas ^^' Tout d'abord, lorsque le joueur rejoint l'uhc on veut l'ajouter dans la liste avec tous les autres joueurs présents options: uhclogo: &9[&2UhcRun&9] #Ici c'est une variable crée pour pas avoir à placer 50 fois le [uhcRun] mais inutile ici ^^ on join: add player to {uhc.players::*} broadcast "{@uhclogo} &a%player% a rejoint la partie &b(%size of {uhc.players::*}%/20)" #Quand le joueur rejoint, il est ajouté dans la liste et un message est envoyé avec le nombre de joueurs. #%size of {uhc.players::*}% détecte le nombre d'éléments dans la liste (en l’occurrence, ici c'est des joueurs) Ensuite, on veut lancer le compte à rebours lorsqu'il y a 8 joueurs ou plus. Pour cela on utilise encore le type %size of {uhc.players::*}% mais pour une condition cette fois ^^ if size of {uhc.players::*} = 8: set {_time} to 60 broadcast "{@uhclogo} &eCommencement de la partie dans &a%{_time}% &esecondes. #S'il y a 8 joueurs ou plus de connectés, on lance alors le décompte. On définit une variable (locale pour éviter les problèmes) sur une valeur de 60. (pour une minute, à vous de mettre plus si vous voulez un décompte plus long ^^) Mais cela ne s'arrête pas ici ! Et il ne suffit pas de mettre des messages à la suite avec le 20/15/10/5 secondes. Car on veut qu'il y ait obligatoirement 8 joueurs ou plus pour commencer la partie. Si quelqu'un déco, le décompte doit s'interrompre et devra reprendre à 60 secondes lorsqu'il y en aura assez. while size of {uhc.players::*} >= 8: remove 1 from {_time} wait 1 second if {_time} = 30 or 20 or 15 or 10 or 5 or 4 or 3 or 2: broadcast "{@uhclogo} &eCommencement de la partie dans &a%{_time}% &esecondes." else if {_time} = 1: broadcast "{@uhclogo} &eCommencement de la partie dans &a%{_time}% &eseconde." else if {_time} = 0: broadcast "{@uhclogo} &eLancement de la partie..." stop else: wait 0 tick Avec ce bout de code, on va vérifier en permanence à l'aide d'une boucle while si le nombre de joueurs est de 8 ou plus. Si effectivement, il y a plus de 8 joueurs, nous allons retirer 1 "point" de la variable (donc de 60 on passe à 50) et ce à 1 seconde d'intervalle toujours ! (ceci nous fait notre chrono). Mais on veut aussi executer certaines actions lorsqu'il reste x secondes. pour cela il faut à l'aide de la boucle vérifier à chaque seconde écoulée si on arrive à 30/20/15 ou 10 secondes restantes. le " if {_time} = 30 or 20 or 15 or 10 or 5 or 4 or 3 or 2: " sert à regarder justement combien de secondesi l reste dans le décompte ! A ce moment là, on pourra envoyer un message précisant combien de secondes il reste en analysant le nombre de "points" dans la variable à l'aide une fois de plus de %{_time}% Et enfin, lorsque la variable est arrivée à 0 c'est le top départ :D. pour les 2 dernières lignes, cela sert juste à relancer la boucle (tant évidemment qu'il y aura toujours 8 joueurs) depuis le haut quand le nombre de seconde qu'il reste n'est pas égal à 30/20/10 et les autres. Il est possible que certaines de mes explications ne soient pas claires. Je vais vous mettre le code en entier et préciser chaque ligne :D options: uhclogo: &9[&2UhcRun&9] on join: add player to {uhc.players::*} broadcast "{@uhclogo} &a%player% a rejoint la partie &b(%size of {uhc.players::*}%/20)" if size of {uhc.players::*} = 8: set {_time} to 60 broadcast "{@uhclogo} &eCommencement de la partie dans &a%{_time}% &esecondes." while size of {uhc.players::*} >= 8: remove 1 from {_time} wait 1 second if {_time} = 30 or 20 or 10 or 5 or 4 or 3 or 2: broadcast "{@uhclogo} &eCommencement de la partie dans &a%{_time}% &esecondes." else if {_time} = 1: broadcast "{@uhclogo} &eCommencement de la partie dans &a%{_time}% &eseconde." else if {_time} = 0: broadcast "{@uhclogo} &eLancement de la partie..." stop else: wait 0 tick #Quand le joueur rejoint le serveur... #...on l'ajoute à la liste des joueurs... #...et on lance un message de join avec le nombre de joueurs connectés en analysant le nombres d'éléments dans la liste #Si le nombre de joueurs présents dans la liste est superieur ou égal à 8... #...on crée une variable qui sera notre décompte et on lui donne l'équivalent d'une minute... #...et on lance un message pour prévenir le début du décompte ! #Maintenant on va en permanence vérifier s'il y a 8 joueurs ou plus grâce à la liste. si c'est le cas alors... #...on enlève "1" de la variable {_time} (pour notre décompte) #Pour éviter un décompte trop rapide, on rajoute un délai de 1 seconde entre chaque retrait de la variable (et ainsi faire un décompte toute les secondes (classique quoi :D)) #Désormais, on va vérifier après un certain nombre de retrais de la variable (1 retrait équivaut à une seconde d'écoulée) on vérifie à combien est la variable et donc combien de secondes reste-t-il. S'il reste 30/20/10/5/4/3 ou 2 secondes... #...on envoie un message prévenant précisément le nombre de secondes qu'il reste en "lisant la variable" #S'il ne reste par contre qu'une seconde... #...on envoie le même message mais cette fois au singulier et non pluriel (l'orthographe :):):)) #Si maintenant il n'y a plus de secondes (donc si on est à 0)... #...On lance la partie :D... #...et on arrête le skript pour éviter que la boucle tourne inutilement (car elle continuera de tourner tant qu'il y aura plus de 8 joueurs rappelez vous !) #mais par contre si le nombre de secondes restantes est supérieur à 5 mais n'est pas multiple de 10... #...on met un délai nul pour relancer la boucle et ainsi continuer le chrono en toute sérénité :) Nous sommes déjà rendus à la fin de ce tutoriel ! Merci à vous d'avoir pris le temps de le lire. S'il vous à plu n'hésitez pas à mettre un like ou à me le dire en message. S'il y a des choses qui ne sont pas assez claires et/ou mal expliquées et/ou que vous ne comprenez pas, faites le moi savoir et j'essayerais de rendre une partie plus compréhensible :) Sachez aussi que je prend toute critique constructive afin que je puisse progresser encore et encore :) A très bientôt <3
×
×
  • 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.