Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Ahh, voilà quelque chose d'intéressant, et extrêmement utilisé !
Qui n'a jamais joué à une
map avec un compte à rebours ? Vous savez, le petit compteur en haut à droite

.
Voilà un petit
screen pour ceux qui ont la mémoire courte :
Cette partie va vous apprendre à créer un compte à rebours, le lancer, l'afficher aux joueurs voulus, et à manier l'événement
lorsqu'un compte à rebours expire.
Vous serez donc aptes par exemple à faire
"Fin de la partie dans : 30:00", le compteur diminuera au fil du temps, et arrivé à 0, un déclencheur pourra exécuter l'action "fin de la partie".
Mais ça peut être utile pour beaucoup d'autres choses ! (Pour une
tower defense, un compteur "Prochaine vague de monstres dans : 1:00", etc.)
Au passage, pour ceux qui se sont pris la tête quand j'ai dit "tower defense", je vais vous expliquer rapidement : Tower defense est un mode de map assez répandu. Vous avez toutes les x secondes des vagues de monstres, et vous devez construire des tours avec un paysan pour les tuer avant qu'ils n'arrivent en fin de ligne, en combinant des tours qui gèlent pour les ralentir, des tours qui font mal, etc.
Aller zou, on commence

.
Créer un compte à rebours
Pour créer un compte à rebours, il ne s'agit pas d'une action, mais tout simplement d'une variable.
Il faut donc en premier lieu créer une variable de type compte à rebours. Je la nommerai
Compterebours, de type
compteur :
Bien !
Lancer le compte à rebours
Pour notre premier exemple, nous ne montrerons
pas le compte à rebours aux joueurs. C'est-à-dire que nous lancerons un compte à rebours invisible aux joueurs, et nous exécuterons une action lorsque celui-ci expirera.
Créons donc un déclencheur, qui, après une seconde de jeu, lancera notre compte à rebours
Compterebours, d'une durée de 59 secondes. (De cette manière, il expirera à une minute.)
L'événement, extrêmement connu (si vous ne le connaissez pas, vous avez dû louper plusieurs wagons !

) :
Ensuite, l'action qui permettra de lancer le compte à rebours :
Compte à rebours - Start Timer :
Cette fonction prend trois paramètres :
- Timer : vous devrez ici préciser le compte à rebours (timer en anglais) en question. Il s'agira donc bien souvent de votre variable.
- Un coup : ici, vous pouvez préciser si vous voulez que le timer (on va s'habituer à cette expression plutôt qu'à "compte à rebours") ne s'exécute qu'une fois, ou bien s'exécute en boucle, infiniment (à chaque expiration, il recommence).
- 30.00 : là, c'est le nombre de secondes que durera votre timer.
Pour le paramètre
Timer, on met dont notre variable
Compterebours, on laisse
Un coup, et on remplace
30.00 par "59.00"

.
Voilà ! Et si on teste, eh ben.... Rien

.
Oui, oui, je vous rappelle que dans cet exemple, nous ne montrerons pas le
timer aux joueurs, il s'écoulera dans leur dos

. Pour montrer un
timer, il faut une action spécifique que je vous montrerai tout à l'heure

.
Savoir quand le timer expire
Bon ! Créons maintenant un deuxième déclencheur qui s'occupera de savoir quand notre
timer expirera, et qui exécutera une action (peu importe).
Si je vous dis "lorsqu'un compte à rebours expire", ça ne vous dit rien ? Si ?

.
C'est donc grâce à un évènement que nous allons savoir quand un compte à rebours expire. Il s'agit de :
Temps - Timer expires :
Cet événement ne prend qu'un paramètre :
- Timer : Ben tout simplement le timer en question
.
On place donc notre variable
Compterebours dans ce paramètre

.
Le déclencheur s'exécutera donc lorsque le timer expirera (quand il arrivera à 0 seconde) !
En action, je vous laisse le choix

. (Vous pouvez décider de tuer des unités, enfin tout ! Ça dépend juste de ce dont vous avez besoin

).
Lorsqu'un compte à rebours expire, il n'est
pas détruit. Il est donc réutilisable, et relançable pour plus tard, avec une durée différente ! (Ou la même

.)
Si vous devez lancer plusieurs comptes à rebours en même temps, il vous faudra plusieurs variables, ou une variable de déploiement !
Afficher le timer aux joueurs
C'est sûr que ça fait tout de suite plus classe

.
Nous aurons besoin de deux actions pour afficher un
timer :
- la première servira à créer une fenêtre pour le timer. En effet, à la base, le timer, c'est juste un compte à rebours invisible. Il faut donc lui créer une jolie fenêtre pour l'intégrer dedans
. Elle se nomme : Compte à rebours - Create Timer Window.
- La deuxième va servir à dire : "je souhaite afficher/masquer cette fenêtre timer à tel joueur". Elle se nomme : Compte à rebours - Show / Hide Timer Window For Player.
L'action Compte à rebours - Show / Hide est la même que Compte à rebours - Show / Hide Timer Window For Player, sauf qu'elle permet de montrer / masquer une fenêtre timer à tous les joueurs d'un coup.
Créons donc une jolie fenêtre pour notre
timer. On sélectionne donc l'action
Compte à rebours - Create Timer Window, et on met en paramètre notre variable
timer. Pour le paramètre
title, je vous laisse mettre le titre de votre choix. (Exemple : "fin de la partie dans...")
L'action
Compte à rebours - Show / Hide prend en paramètre non pas le
timer, mais la
fenêtre du
timer. Il va donc falloir lui donner en paramètre la fenêtre
timer que nous venons de créer. Si vous n'utilisez qu'un compteur dans votre
map, alors vous pouvez utiliser le paramètre
Last created Timer Window, se référant à la dernière fenêtre
timer créée.
Sinon, il faudra stocker votre fenêtre
timer dans une variable, et ensuite indiquer cette variable en paramètre

.
Comme on ne sait jamais, on va créer une variable de type
Fenêtre compteur, stocker notre fenêtre
timer dedans, et finalement utiliser cette variable en paramètre de la fonction
Compte à rebours - Show / Hide.
Voilà rapidement un
screenshot de la création de notre variable :
Ensuite, comme pour les textes flottants, nous stockons
Last created Timer Window dans notre variable, de manière à ce que cette dernière stocke notre fenêtre
timer :
Et, finalement, nous pouvons utiliser notre action
Compte à rebours - Show / Hide, avec comme paramètre notre variable, pour afficher ce fameux compteur !
Et voilà

. C'est-y pas génial ?
Important : dans votre déclencheur qui s'exécute lorsque le timer expire, pensez à détruire ou à masquer la fenêtre du compteur ! Sinon, celle-ci restera affichée avec 00:00 , et ça ne fait pas beau ! Vous pouvez utiliser l'action Compte à rebours - Destroy Timer Window.
Et c'est fini pour les
timers ! (Retenez bien le terme anglais

)
Voici un petit récapitulatif : (notez les commentaires dans le déclencheur, ça peut être très pratique d'en mettre si vous partagez votre
map avec tout le monde ! C'est une action en début de liste déroulante

)
Tout d'abord : Un
leaderboard, c'est quoi ?
C'est un tableau visible en jeu, à deux colonnes : une colonne avec un texte (très souvent le nom d'un joueur), et l'autre avec une valeur chiffrée.
Il peut y avoir 12 lignes au maximum (pour les 12 joueurs

).
Voilà même un petit
screenshot de ce à quoi ça ressemble

:
Ces tableaux sont très souvent utilisés pour afficher :
- le nombre d'unités tuées pour chaque joueur.
- Le nombre de vies restantes pour chaque joueur.
- Le nombre de drapeaux capturés pour chaque joueur.
- Etc., etc.
Nous allons donc nous amuser à faire un déclencheur qui affiche un
leaderboard, et le nombre d'unités que le joueur 1 et le joueur 2 ont tué ! (Vous pourrez rajouter des joueurs si vous voulez

.)
Je ne vous cache pas que nous aurons besoin d'une variable de déploiement contenant le nombre d'unités tuées pour chaque joueur.
Exemple avec la variable
tuees :
tuees[1] sera le nombre d'unités tuées par le joueur 1, et
tuees[2] par le joueur 2.
Le type de la variable sera "entier". Signifiant qu'on ne pourra stocker dedans que des nombres entiers. (Ça tombe bien, vu qu'on peut pas "demi-tuer" une unité

.)
Voilà donc ce que donne la création de la variable :
Créer le Leaderboard
Bien ! Notre variable étant créée, nous allons pouvoir nous attaquer à la construction du
leaderboard.
Créons donc un nouveau déclencheur. Comme événement, un banal
Time Elapsed - 1 second fera l'affaire.
Pour afficher un leaderboard en début de partie, n'utilisez pas l'événement Map Initialization. En effet, votre leaderboard ne sera pas affiché à l'aide de cet événement. Préférez donc un bon vieux Time Elapsed - 1 second.
Ensuite vient l'action permettant de créer un
leaderboard, intitulée
Panneau de Commandes - Create :
Vous remarquerez que la version française de "
leaderboard" donne "Panneau de Commandes"

.
Celle-ci prend deux paramètres :
- All Players : il faut spécifier ici un groupe de joueurs qui seront habilités à voir le leaderboard (ou panneau de commande).
- Title : tout simplement le titre de notre leaderboard.
Comme on veut que tout le monde soit au courant du nombre de meurtres de chaque joueur, on va laisser
All Players qui signifie
Tous les Joueurs. Pour le titre, on peut mettre "Unités Tuées", ou "Frags", enfin comme bon vous semble

.
Voici donc ce à quoi doit ressembler votre action (même si ça ne change pas beaucoup

) :
Une fois créé pour les joueurs définis, le leaderboard est affiché automatiquement. Je vous donnerai une action pour masquer / afficher un leaderboard un tout petit peu après.
Mais pour l'instant, le
leaderboard est... vide !
Il va donc falloir y ajouter les joueurs, pour qu'on puisse voir le nombre d'unités qu'ils ont tuées.
On va utiliser pour cela l'action
Panneau de Commandes - Add Player :
4 paramètres pour cette action :
- Joueur 1 (Rouge) : le joueur qui devra être ajouté.
- Last Created Leaderboard : il faut préciser ici dans quel leaderboard devra être ajouté le joueur. Si votre map n'utilise qu'un seul leaderboard, laissez Last Created Leaderboard, sinon utilisez les variables
.
- Label : là, c'est le nom qu'il faudra mettre pour votre joueur. Comme nous on veut faire apparaître le nom du joueur, on utilisera une fonction pour afficher son nom.
- : Enfin, la valeur associée au nom du joueur. Il faudra mettre ici le nombre d'unités tuées. Toutefois, comme ce n'est que le début de la partie et qu'on suppose que les joueurs n'ont tué aucune unité, on peut laisser 0.0
En premier paramètre, bah on laisse le
Joueur 1 (Rouge), puisqu'on veut ajouter le joueur rouge.
Après, pareil, on laisse
Last Created Leaderboard, puisqu'on a créé le
leaderboard juste avant !
Pour le nom du joueur, c'est différent. On peut s'amuser à mettre "Joueur Rouge", mais ça n'aurait pas trop d'intérêt. On va donc mettre le nom du joueur.
Pour ça, cliquez sur le paramètre
Label, cliquez sur la liste des fonctions, et prenez
Joueur - Player Name :
Cette fonction prend elle-même un paramètre : le numéro du joueur dont on doit prendre le nom. Je vous laisserai vous débrouiller pour lui préciser Joueur 1 (Rouge)

.
Enfin, comme je l'ai déjà expliqué, on laisse 0 pour la valeur. On la changera plus tard, lorsque le joueur tuera une unité.
Voici donc à quoi doit ressembler votre action :
Et rebelote pour le joueur Bleu ! Sauf qu'on doit changer la valeur du premier paramètre, et la valeur pour la fonction
Joueur - Player Name (pensez-y bien, sinon vos deux joueurs auront le même nom dans le
leaderboard 
).
Vous devez donc maintenant avoir deux fois l'action
Panneau de Commandes - Add Player, l'une pour le joueur rouge et l'autre pour le joueur bleu :
Hurray ! Déjà la moitié de fait, pfiuu

. (Je vous conseille d'aller vous aérer avant d'attaquer la suite

.)
Maintenant, on peut entamer notre deuxième déclencheur : celui qui modifiera la valeur affichée pour montrer combien d'unités chaque joueur a tué.
On crée donc un deuxième déclencheur, que je nommerai "ajoutLeaderboard".
Occupons-nous d'abord de l'événement. Le déclencheur ayant pour but de mettre à jour le nombre d'unités tuées pour chaque joueur, il faudra utiliser l'événement
Unité - Generic Unit Event.
Comme paramètre, mettez
meurt.
Je vous rappelle que cet événement génère les réponses-événements
Killing Unit et
Killed Unit. Comme on s'intéresse au tueur, nous aurons besoin de
Killing Unit.
Pour les actions, le mieux est d'abord de tout faire en français :
- d'abord, il faut mettre à jour les "rouages", donc non visibles, de la map. J'entends par là augmenter la variable tuees[joueur qui a tué l'unité] de 1. On fera donc une action pour augmenter cette variable de 1.
- Ensuite, mettre à jour l'aspect graphique, c'est-à-dire mettre à jour le nombre de frags dans le leaderboard, pour le joueur en question. Nous utiliserons l'action Panneau de Commandes - Change Player Value.
Quoiii ?? Y a que deux actions ? C'est tout ?
Bah oui, même si on pouvait croire que c'était complexe, pas du tout, c'est relativement simple

.
On commence donc par la première action, qui est
Set Variable. Dans le premier paramètre, on met la variable
tuees.
Mais là, on est encore confrontés au problème : que met-on dans les crochets ?
Au final, il faudra qu'il y ait le numéro du joueur qui a fait le
frag, dans ces crochets. Comme pour le chapitre sur les variables, nous utiliserons la fonction
Joueur - Player Number.
Cette fonction qui prend elle-même un paramètre : le joueur en question.
Mais ce joueur en question, qui est-il ? Je vous rappelle qu'il s'agit du joueur qui a fait le
frag. Toutefois, ce n'est pas le joueur qui fait le
frag, mais l'unité qu'il possède.
Il s'agit donc, pour être le plus précis possible, du "joueur qui possède l'unité qui a fait le
frag".
Autrement dit, le possesseur de
killing Unit 
.
Cliquez donc sur le paramètre de la fonction
Joueur - Player Number, et choisissez la fonction permettant de retrouver le possesseur d'une unité :
Owner Of Unit :
Et enfin, comme on veut le possesseur de
Killing Unit, on choisit comme paramètre de cette fonction
réponse-événement : Killing Unit :
Et on valide tout !
Voilà, la première partie de l'
action est terminée : le déclencheur sait maintenant quelle variable utiliser avec quoi mettre entre ses crochets

. (Eh oui, tout ça pour ça !)
On en est donc à ce stade de l'action :
La deuxième partie de l'action va définir la nouvelle valeur de tuees[
numéro du joueur]. Je vous rappelle que le but est que cette variable incrémente de 1. Ce qu'il va falloir faire, c'est donc "valeur actuelle de tuees[
numéro du joueur] + 1". De cette manière, la valeur acquerra son actuelle valeur + 1.
Cliquez donc sur le paramètre
Value.
Je vous rappelle que ce que nous voulons faire est une addition (valeur actuelle +1) : nous allons donc devoir utiliser une fonction, qui est d'ailleurs mise par défaut :
arithmetic.
Cette fonction permet simplement d'effectuer une opération (+ - / *) entre deux nombres :
On remarque tout d'abord que par défaut, il y a en deuxième partie exactement ce que l'on veut : "+1".
On aura donc juste à modifier le paramètre
Value. On clique sur celui-ci, et là je vous rappelle que nous voulons mettre la valeur actuelle de tuees[
numéro du joueur]. Eh bien là, en fait... on se rend compte qu'il va falloir mettre exactement la même chose que pour le tout premier paramètre de la fonction
Set Variable, qui est :
tuees[Player Number Of(Owner Of(Killing Unit))]. On remet donc exactement la même chose que nous avons effectuée précédemment, et on doit obtenir ça :
On valide, et voilàààà, notre youlie action
Set Variable complétée :
Maintenant (je vous rassure ça va être moins fastidieux

), l'action qui permet de mettre à jour cette valeur dans le
leaderboard 
.
On sélectionne donc l'action
Panneau de Commandes - Change Player Value.
Voici les paramètres :
- Joueur 1 (Rouge) : nous allons évidemment modifier ce paramètre, puisque nous ne voulons pas mettre à jour le score du Joueur Rouge, mais celui du fraggeur en question. Nous mettrons donc ici un bête Owner Of(Killing Unit).
- (Last Created Leaderboard) : nous laisserons ce paramètre ici. En effet, nous n'utilisons qu'un seul leaderboard, ce qui fait que Last Created Leaderboard pointera toujours sur celui que nous désirons. Vous aurez toutefois besoin de variables si vous comptez utiliser plusieurs leaderboards dans votre map
.
- 0 : ben non, on ne va pas lui mettre "0" à chaque fois qu'il tue une unité
. Nous mettrons ici pour la troisième fois le fameux tuees[Player Number Of(Owner Of(Killing Unit))]
.
On remplit donc tout ça, pour obtenir au final :
Et voilà, vous pouvez tester, c'est magique, si le joueur rouge tue une unité, hop : +1 est ajouté dans son
leaderboard, et si c'est le joueur bleu, pareil

.
Mais euhh, moi je veux que le joueur le plus fort soit tout en haut tandis que le moins fort soit tout en bas !!
Mais c'est tout à fait possible

. Il y a une fonction très intéressante qui s'intitule :
Panneau de Commandes - Sort.
Il prend en paramètre le
leaderboard à trier, et s'il faut trier dans l'ordre croissant ou décroissant. Il faut mettre cette fonction à la
fin du
deuxième déclencheur. Il faut en effet retrier le tableau à chaque
kill, puisque peut-être qu'un joueur vient d'en dépasser un autre

.