Gaming Zone Communautes Battlefield PiTrust Communautes Mods
SommairemapstutorielsforumtétéchargementsdiversLes liensLivre d'Or
18/. Ajouter des FX

 

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

 

Page générée en

Design / concept Amigos3D - Copyright ©2006 CaskAmi Prod. Tous droits réservés.
Caskami.com est hébergé; par Eliott-Ness.