Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Mapping > [Warcraft 3] Général > War3 editor : des bases au complexe > Des bases à l'avancé > Quelques petits suppléments > Lecture du tutoriel

Quelques petits suppléments

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)
Avatar
Auteur : RaptorTeak
Visualisations : 1 603

Plus d'informations Plus d'informations
Dans cette partie, je vais juste vous apprendre à manier des choses que nous ne pouvions voir puisqu'elles nécessitent des variables (hé oui, encore et toujours les variables :) ). C'est pourquoi je vous conseille fortement d'avoir lu le chapitre précédent.

En gros, après ce chapitre, et tous les chapitres précédents, vous serez capables, j'espère, de commencer des maps plutôt bien complètes.

Je vous rappelle toutefois que les maps prennent du temps à faire, et que la partie déclencheurs est très souvent la moins amusante (sauf quand ça finit enfin par marcher, après 50 essais :p ).

Bonne lecture !
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire

Les comptes à rebours

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 :

Image utilisateur


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 :

Image utilisateur


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 ! ^^ ) :

Image utilisateur


Ensuite, l'action qui permettra de lancer le compte à rebours : Compte à rebours - Start Timer :

Image utilisateur


Cette fonction prend trois paramètres :



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 o_O .

Oui, oui, je vous rappelle que dans cet exemple, nous ne montrerons pas le timer aux joueurs, il s'écoulera dans leur dos :p . 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 ? :p .
C'est donc grâce à un évènement que nous allons savoir quand un compte à rebours expire. Il s'agit de : Temps - Timer expires :

Image utilisateur


Cet événement ne prend qu'un paramètre :



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 :p .)


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 :D .

Nous aurons besoin de deux actions pour afficher un timer :



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...")

Image utilisateur


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 :

Image utilisateur


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 :

Image utilisateur


Et, finalement, nous pouvons utiliser notre action Compte à rebours - Show / Hide, avec comme paramètre notre variable, pour afficher ce fameux compteur !

Image utilisateur


Et voilà :D . 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 :p )

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 :) )

Image utilisateur

Les Leaderboards

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 :p :

Image utilisateur


Ces tableaux sont très souvent utilisés pour afficher :



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é :lol: .)

Voilà donc ce que donne la création de la variable :

Image utilisateur


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 :


Image utilisateur


Vous remarquerez que la version française de "leaderboard" donne "Panneau de Commandes" ^^ .

Celle-ci prend deux paramètres :



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 ^^ ) :


Image utilisateur


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 :


Image utilisateur


4 paramètres pour cette action :



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 :


Image utilisateur


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 :


Image utilisateur


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 :

Image utilisateur


Hurray ! Déjà la moitié de fait, pfiuu :) . (Je vous conseille d'aller vous aérer avant d'attaquer la suite :p .)

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 :



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 ?

Image utilisateur


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 :

Image utilisateur


Et enfin, comme on veut le possesseur de Killing Unit, on choisit comme paramètre de cette fonction réponse-événement : Killing Unit :

Image utilisateur


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 :

Image utilisateur


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 :

Image utilisateur


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 :

Image utilisateur


On valide, et voilàààà, notre youlie action Set Variable complétée :

Image utilisateur


Maintenant (je vous rassure ça va être moins fastidieux :D ), 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 :


On remplit donc tout ça, pour obtenir au final :

Image utilisateur


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 :D . 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 ;) .

Idées d'exercices !

Comme ce chapitre doit encore être un peu flou pour vous, je vous recommande vivement ces exercices, de sorte que vous vous familiarisiez avec le milieu ;) .

Course aux points





Compteur d'unités





Je vous laisse en trouver d'autres, et vous conseille aussi de mixer leaderboards et compteurs ;) .

Essayez aussi de faire des compteurs "cycliques". J'entends par là que lorsque votre compteur arrive à expiration, vous le relancez, et c'est reparti pour un tour, en boucle.

Si vous êtes bons élèves et que vous avez tout lu et enregistré depuis le début de ce tutoriel, ça n'a pas dû être très dur à comprendre, mais c'est toujours utile de le savoir !

Allez mapper maintenant. Le fait de pratiquer est la meilleure chose à faire pour apprendre. (Prenez mon cas par exemple : je n'ai jamais suivi aucun tuto. A la base, j'ai regardé les déclencheurs des autres maps pour voir comment ça marchait, et j'ai appris tout seul au fur et à mesure !)

Ce tutoriel est là principalement pour vous aider dans votre progression, mais si vous ne pratiquez pas, cela ne suffira pas. (De toutes façons, si vous le lisez, c'est parce que vous avez envie de pratiquer, sauf si c'est pour le fun, mais ce serait louche dans ces cas-là :p .)

Le prochain chapitre sera un chapitre de relaxation (autant pour vous que pour moi ^^ ) : en avant les cinématiques :D .
Chapitre précédent Sommaire
Retour en haut Retour en haut


Créé : le 08/02/2006 à 17:48:32
Modifié : le 22/08/2008 à 15:49:40
Avancement : 100%
Licence : Copie non autorisée

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 778 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0497s (0.0336s)