Aller au menu - Aller au contenu

Icône Les déclencheurs (B : complexes)

Mise à jour : 22/07/2009
1 414 visites depuis 7 jours, dont 11 sur ce chapitre classé 94/786
Nous avons vu jusqu'ici la partie "simple" des déclencheurs. Il en reste encore quelques-uns plus complexes mais très intéressants. Grâce à eux, vous saurez faire tout ce que vous voudrez pour appeler une entité.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Appels d'entités dans un ordre prédéfini

Entité concernée : multi_manager
Type d'entité : entité-point
Difficulté : moyen

Imaginons que le joueur entre dans un couloir tout noir. Il y a 3 lampes mais elles sont éteintes. Il appuie sur l'interrupteur, et là, les lampes s'allument l'une après l'autre à une seconde d'intervalle.

Ce genre de chose, vous n'auriez pas pu le faire si vous aviez donné le même nom aux 3 entités light. En effet, elles se seraient allumées en même temps, et ici on veut qu'elles s'allument l'une après l'autre.
C'est l'entité multi_manager va nous permettre de réaliser cet effet. Elle permet d'appeler des entités dans un ordre précis en laissant un intervalle de X secondes entre chaque appel. C'est donc vous qui définissez quand telle entité doit être appelée.

Son utilisation est assez particulière. Commencez par intégrer une entité-point de type multi_manager et ouvrez ses propriétés.
Comme vous pouvez le voir, cette entité ne possède qu'un attribut : "Name", que vous connaissez bien.

Donnez donc un nom au multi_manager. Dans notre cas, on va lui donner le nom "allumerlampes".
L'interrupteur est un bouton qui pointe vers le multi_manager. Son attribut "Target" a donc la valeur "allumerlampes".

Et maintenant, comment je fais pour dire quelles entités le multi_manager doit appeler ?
C'est là que c'est un peu particulier. Ouvrez les propriétés du multi_manager, et désactivez le bouton "Smart Edit". Ce bouton permet normalement d'avoir accès à l'interface "simple" pour les propriétés d'entités. Ce que vous voyez maintenant est l'interface complexe ;)

Cliquez sur le petit bouton "add" en bas pour rajouter une nouvelle clé (attribut). Une petite fenêtre s'affiche et vous demande le nom de la clé et sa valeur. Remplissez comme ceci :
  • Key : entrez ici le nom de l'entité à appeler.
  • Value : entrez ici au bout de combien de temps cette entité doit être appelée. Entrez une valeur en secondes et n'oubliez pas d'utiliser le point comme séparateur décimal (ex : "1.5").
Répétez ceci autant de fois que vous voulez appeler d'entités.

Moi, mes lampes s'appelaient "lampe1", "lampe2" et "lampe3" et je voulais les appeler à une seconde d'intervalle à chaque fois. Voici le résultat que je vois sous Worldcraft :

Image utilisateur


Cette entité possède un seul Flag : "multithreated". S'il est coché, alors le multi_manager peut être appelé plusieurs fois en même temps par des joueurs différents (en multijoueurs seulement). Il peut alors par exemple s'exécuter 3 fois en même temps si 3 joueurs l'ont activé alors qu'il était déjà activé ;)
Bon, c'est pas évident à expliquer mais en fait c'est très simple. Sachez que ce flag est quand même assez rarement coché mais il peut servir !

Verrouiller une entité

Entité concernée : multisource
Type d'entité : entité-point
Difficulté : assez difficile

Voilà le scénario : une grosse porte blindée est protégée et ne peut pas être ouverte avant que le joueur ait appuyé sur 2 boutons.
Ce genre de choses arrive souvent dans l'aventure de Half-Life : Gordon doit par exemple réactiver l'oxygène, le feu, les moteurs... avant de pouvoir lancer une explosion qui déchire tout !

Bon, dans notre cas il s'agit donc d'une porte bloquée tant que 2 boutons n'ont pas été activés. Voici ce que vous devez faire dans l'ordre :
  1. Intégrez un multisource dans votre map (il sera invisible quand vous jouerez).
  2. Donnez-lui un nom dans son attribut "Name", par exemple ici : "bloqueur". Seul cet attribut nous servira ici. Les 2 autres, "Target" et "Global State Master", servent respectivement lorsque vous utilisez un game_team_master, et lorsque vous faites une partie solo qui se déroule sur plusieurs maps.
  3. Occupez-vous maintenant des boutons. Leur attribut "Target" doit pointer sur le multisource. On va donc ici mettre Target = "bloqueur", et ce pour les 2 boutons.
  4. Attention ! Les boutons se désactivent par défaut au bout de quelques secondes, et ils ne sont alors plus considérés comme activés ! Je vous recommande donc fortement de mettre la valeur "-1" à leur attribut "Delay before reset".
  5. Dans le champ "Master" de la porte, mettez le nom du multisource. Ici : Master = "bloqueur".
Et voilà ! Que se passera-t-il ? La porte refusera de s'ouvrir tant que les 2 boutons n'auront pas été activés !
Notez que lorsque les 2 boutons auront été activés, la porte ne s'ouvrira pas toute seule. Mais elle ne sera plus bloquée : le joueur pourra alors l'ouvrir lorsqu'il s'en approchera...

Relais d'appels

Entité concernée : trigger_relay
Type d'entité : entité-point
Difficulté : assez facile

Le trigger_relay est une entité un peu oubliée, parce que rarement utile. Toutefois, il m'a semblé important de vous en parler rapidement pour que vous sachiez au moins que ça existe.

Que fait-elle ? Elle sert de relai, comme son nom l'indique, entre un déclencheur et sa cible.

Par exemple, un bouton permet d'allumer une lumière... plutôt que de faire pointer le bouton vers l'entité light, vous le faites pointer vers le trigger_relay qui appelera à son tour l'entité light.

??? Mais c'est complètement débile ? A quoi ça sert ?
Lol, oui c'est vrai on a l'impression que ça revient au même. Mais grâce à cette entité et à sa propriété "KillTarget", vous pourrez supprimer une entité du jeu qui ne sert plus à rien avant d'appeler la lumière.
Bon, c'est un peu limité je le reconnais, mais il fallait que vous sachiez que ça existe.

A noter que l'attribut "Trigger State" ne sert que lorsque vous utilisez une variable globale (dans une partie solo qui se déroule sur plusieurs maps). Il définit l'état de cette variable.
Quant au flag "Remove on fire", s'il est coché alors l'entité trigger_relay sera retirée du jeu après avoir été utilisée.

Changer la cible d'une entité

Entité concernée : trigger_changetarget
Type d'entité : entité-point
Difficulté : assez facile

Voilà une autre entité spéciale, mais celle-ci est bien plus intéressante. Comme son nom l'indique, elle permet de changer la cible (Target) d'une entité, et ce en cours de partie.

Pour s'en servir, il faut placer d'abord cette entité quelque part dans la map (logique). Editez ensuite les attributs suivants :
  • Name : nom de l'entité trigger_changetarget. Lorsqu'elle sera appelée, elle changera la cible d'une autre entité.
  • Target : nom de l'entité donc vous devez modifier la cible.
  • New Target : indiquez ici la nouvelle cible à donner pour cette entité.
Cette entité vous sera certainement utile à un moment, donc ne l'oubliez pas !
Voiiilàà... Je crois qu'avec tout ça on aura fait le tour des appels d'entités dans Worldcraft lol ;)

Il faut dire que c'est quelque chose de très important et d'incontournable en mapping, et avec ce que je vous ai appris vous pouvez vous vanter de tout savoir dessus.
Chapitre précédent Sommaire Chapitre suivant

Partager

1 commentaire pour "Les déclencheurs (B : complexes)"
Note moyenne : 3.81 / 4 (47 votes)
Pseudo Commentaire
Hors ligne Bogoris # Posté le 28/07/2006 à 19:33:52

Études : Université de Bretagne Sud

Citation : M@teo21
Target : nom de l'entité donc vous devez modifier la cible.

Y'aurait pas une petite faute ?

Voir tous les commentaires