
Un FX est
comme une texture GFX animée, au détail
prêt qu'il ne fonctionne pas sur un brush mais n'importe où
sur la carte. Son fonctionnement est très simple puisqu'il
s'agit d'une animation faite de succession d'images déjà
prédéfinies, et ceci sur un plan en 3 dimensions. Voyons
comment intégrer cela sur notre carte.
Dans ce tutorial, nous allons
créer une cheminée afin de pouvoir intégrer 2
FX (feu + fumée). Pour les plus fainéants d'entre-vous,
je vous ai préparé le prefab de notre cheminée
qui se trouve ici
(EDITION ==> CHARGER PREFAB).
Pour les autres, nous allons donc la construire en 4 étapes
rapides.
Tracez un brush de 76
x 27 x 4 unités de hauteur, les 3 côtés
visibles seront texturés avec la texture ardennes/walls/rock@stonewall1
et le dessus avec la texture austria/walls/concrete@chateau_fireplacefnt.

Placez maintenant les supports
de chaque côté avec une hauteur de 36 unités
peu importe l'épaisseur, 16 unités
semble un bon compromis. De même que le socle de notre cheminée,
texturez encore l'intérieur avec la texture austria/walls/concrete@chateau_fireplacefnt
et l'extérieur avec la texture ardennes/walls/rock@stonewall1.
Vous pouvez bizeauter (clipper) les 2 pieds pour
donner une forme un peu plus originale (cf. screenshot).

Placez maintenant son "chapeau"
(19 unités de hauteur) puis utilisez toujours
les mêmes textures pour différencier l'intérieur
de l'extérieur. Vous devrez peut être reprendre toutes
les textures externes de la cheminée pour pouvoir aligner correctement.
Comme pour les pieds, bizeauter (clipper) pour lui
donner une forme plus convenable.

Dernière étape,
ajouter le conduit jusqu'au plafond (afin de rester logique dans notre
construction), clipper le brush puis texturez le brush avec la texture
ardennes/walls/rock@stonewall.

Plaçons maintenant une
petite grille. Pour cela, créez un brush de 24 unités
de hauteur sur toute la longueur (dans le tuto : 42 unités),
l'épaisseur étant de 1 unité.
Texturez tout le brush avec la texture NODRAW DECAL,
puis texturez uniquement la face avant avec la texture ukraine/transparents/metal_masked@kharkovfence1.
Pour la placer correctement,
prenons l'inspecteur de surface. (1)
Nous allons répéter 2 fois la texture sur la largeur,
(2) cliquez sur le bouton
AJUSTER, (3)
puis le bouton APPLIQUER et enfin (4)
le bouton OK.

Théoriquement, la texture
doit être correctement placée comme le screenshot suivant.
Sinon, recommencez la manipulation.

Nous allons placer un modèle
spécifique pour notre cheminée : il s'agit d'un support
contenant 2 buches et de la cendre faite en texture GFX.
ce modèle est le suivant : xmodel/o_us_prps_fireplacelogs.
Faites en sorte de le placer correctement à l'intérieur
de la cheminée, nhésitez pas à le réduire
en faisant un modescale .65
(soit 65% de sa taille initiale) et vérifie l'angle de placement.

Qui dit feu, dit source de lumière,
plaez une entité LIGHT juste au dessus puis modifier la couleur
en choisissant une couleur orange prononcée. Réduisez
l'intensité light 75
et supprimez le radius (zone de forte luminosité) overbrightShift
1.

Pour finir, nous allons indiquer
au moteur où il devra charger notre FX. Pour
cela, nous allons utiliser un script_origin. Faites
un CDS sur une des vues 2 D et sélectionnez
le menu SCRIPT ==> ORIGIN.

Un cube rouge vient se placer
sur votre zone de travail. Déplacez simplement le script_origin
et place-le dans le modèle (sur le screenshot, le modèle
été filtré pour mieux montrer son placement.
Un script_origin peut très bien recouper des
brushs que des modèles, n'hésitez donc pas à
intégrer sa partie basse dans le socle de notre cheminée.
Chose faite, nous allons lui
donner un targetname. ce targetname
sera ensuite associé à notre FX, que
nous déclarerons dans notre fichier script (GSC).
Donnons donc le nom à notre script_origin
: targetname feu.

Terminons la mapping par ajouter un nouveau
script_model pour le haut du conduit de notre cheminée.
Donnons-lui aussi un nom à savoir targetname
fumee.
Attention à ne pas utiliser de caractères spéciaux
comme é - à - &
etc.

Filtrez les modèles
(ALT 2)et light (ALT 0), et sélectionnez
tous les brushs de la cheminée pour les mettre en DETAIL.
Sauvegardez votre map, nous allons maintenant passer au script nécessaire
pour l'utilisation des FX.

Nous avons vu dans le tutorial
15 comment créer un fichier GSC.
Nous allons donc reprendre ce fichier pour le compléter des
éléments nécessaires au fonctionnement des FX.
Dans notre fichier GSC principal
(normalement celui qui se nomme comme notre fichier MAP
et BSP, nous allons ajouter une ligne pour indiquer
au moteur de charger un nouveau script (notre script FX).
Ajoutez donc la ligne suivante :
level thread maps\mp\tuto_fx::main();
Cela indique simplement au moteur de charger
la chaîne main() à partir du fichier
tuto_fx.gsc (que nous allons créer après)
lequel se situe dans le répertoire maps\mp\.

Nous y voici, la dernière
ligne droite de notre tutorial. Ouvrez le bloc-note sur une page vierge,
nous allons déclarer nos 2 FX nécessaires
(pour mémoire targetname
feu et fumee).
Nous allons utiliser une fonction loopfx, c'est-à-dire, un
FX en boucle.
main()
{
Feu();
Fumee();
}
Feu()
{
level._effect["feu"] = loadfx("fx/map_mp/mp_fireplace_fire.efx");
// pour l'effet FX "feu", on
déclare le fichier .efx choisi.
org = getent ("feu","targetname"); //
notre script_origin (targename feu)
est déclaré comme entité feu.
maps\mp\_fx::loopfx("feu", org.origin, 1); //
l'effet FX est rattaché à notre entité
feu.
}
Fumee()
{
level._effect["fumee"] = loadfx("fx/map_mp/mp_smokemist_chimney.efx");
//
pour l'effet FX "fumee", on
déclare le fichier .efx choisi.
org = getent ("fumee","targetname"); //
notre script_origin (targename fumee)
est déclaré comme entité fumee.
maps\mp\_fx::loopfx("fumee", org.origin, 1); //
l'effet FX est rattaché à notre entité
fumee.
}
Si vous voulez accélérer ou ralentir
la répétition du FX , il suffit de
jouer sur de délai de répétition : loopfx("effet",
origine, délai de répétition)
:
maps\mp\_fx::loopfx("feu", org.origin,
1) //répétition du FX à chaque
seconde
maps\mp\_fx::loopfx("feu", org.origin, 2)
//répétition du FX toutes les 2 secondes
maps\mp\_fx::loopfx("feu", org.origin, .5)
//répétition du FX toute les demi-secondes
Enregistrez maintenant le script sous le nom
tuto_fx.gsc.

Pour comprendre, voici les
fichiers que nous avons utilisés. Ils se trouvent dans le pakuo00.pk3,
répertoire fx/map_mp/ :
level._effect["feu"]
= loadfx("fx/map_mp/mp_fireplace_fire.efx");
level._effect["fumee"] = loadfx("fx/map_mp/mp_smokemist_chimney.efx");
Pour prendre d'autres FX,
il suffit simplement de les choisir dans le pk3 et
d'écrire correctement le chemin où ils se trouvent.

Pour résumer, si vous
voulez ajouter d'autres FX, il suffit simplement
d'ajouter autant de thread que vous avez de script_origin
:
1er script_origin : targename
1
2ème script_origin : targename
2
3ème script_origin : targename 3
------------------------------------
main()
{
1(); //lancement de
notre thread 1
2(); //lancement de
notre thread 2
3();
//lancement de notre thread 3
}
1()
{
level._effect["effet1"] = loadfx("chemin du fichier
efx");
org = getent ("effet1","targetname");
maps\mp\_fx::loopfx("effet1", org.origin, 1);
}
2()
{
level._effect["effet2"] = loadfx("chemin du fichier
efx");
org = getent ("effet2","targetname");
maps\mp\_fx::loopfx("effet1", org.origin, 1);
}
3()
{
level._effect["effet3"] = loadfx("chemin du fichier
efx");
org = getent ("effet3","targetname");
maps\mp\_fx::loopfx("effet1", org.origin, 1);
}
Vous pouvez maintenant compiler
votre map et tester le fruit de votre travail.
Les fichiers (.map - .gsc)
de notre tuto 18/. se trouve ici.
Pour l'utiliser, à partir du menu FICHIER,
sélectionnez IMPORTEZ (.map) ==> IMPORTEZ
NOUVELLE MAP.

Par
Caskou
- 2005 Copyright © by CaskAmi Prod.
Tout droit réservé.