
Nous abordons maintenant la
partie des tutoraiux les plus délicats à faire. Il s'agit
d'utiliser tout ce que vous avez pu voir aux travers des précédents
tutoriaux en complexifiant leurs utilisations de manière à
faire ce que nous voulons avec le moteur du jeu.
Commençons par l'intégration
de 2 avions qui volent. Nous allons pour ce faire agrandir notre SKYBOXE
pour profiter au maximum du vol des avions. Attention à ne
pas générer de LEAK en la modifiant.

Chose faite, nous allons intégrer
notre premier avion, un spitfire. Créez donc un modèle
(xmodel/v_br_air_spitfire) que vous transformerez
en script_model. Ensuite, donnez-lui la ligne suivante : targetname
spitfire. Placez le
modèle dans une des quarts de notre map à mi-hauteur
entre le sol et le plafond de la SKYBOXE.

Maintenant, créez à
l'autre bout un script_origin. Désélectionnez
le puis sélectionnez le modèle et ensuite le script_origin
et connectez-les ensemble (CTRL + K). La flèche
doit aller vers le script_origin, cela trace la direction
de l'avion.

Créez le second modèle
avec la même procédure, le modèle étant
un messerchmitt (xmodel/v_ger_air_me-109) et ajoutez
la ligne targetname
messerchmitt. Connectez-le
ensuite à un autre script_origin et placez
cet avion égèrement devant le premier.

Nous en avons terminé
pour le mapping, mais il va nous falloir déclarer les sons
et créer un script pour animer tout cela. Reprennez le précédent
script principal et ajoutez les lignes en rouge
:
main()
{
setCullFog (0, 6500, .32, .36, .40, 0);
ambientPlay("ambient_mp_brecourt");
maps\mp\_load::main();
level thread maps\mp\tuto_fx::main();
level thread maps\mp\tuto_fenetre::main();
level thread maps\mp\mortier_fx::main();
level thread maps\mp\_tankdrive_gmi::main();
level thread maps\mp\_jeepdrive_gmi::main();
game["allies"] = "american";
game["axis"] = "german";
game["american_soldiertype"] = "airborne";
game["american_soldiervariation"] = "normal";
game["german_soldiertype"] = "wehrmacht";
game["german_soldiervariation"] = "normal";
level thread mortier();
level thread avions();
}
mortier()
{
mortier = getentarray ("mortier","targetname");
while (1)
{
wait (5 + randomfloat(5));
GoodPosition = false;
while (!GoodPosition)
{
rand = randomint(mortier.size);
GoodPosition = true;
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++)
{
if (distance(mortier[rand].origin,players[i].origin) < 200)
{
GoodPosition = false;
break;
}
}
}
mortier[rand] playsound("mortar_incoming");
wait (1.9);
origin = mortier[rand] getorigin();
playfx (level._effect["mortar_explosion"][randomint(2)],
origin);
mortier[rand] playsound("mortar_explosion");
radiusDamage(mortier[rand].origin, 200, 200, 0);
}
}
avions()
{
level.PlaneSpeed = 3; //vitesse de notre avion 1 = très rapide
; 10 = très lent
spitfire = getent ("spitfire","targetname");
messerschmitt = getent ("messerschmitt","targetname");
temp = getent (spitfire.target,"targetname");
spitfire.dest = temp.origin;
spitfire.start = spitfire.origin;
spitfire hide();
temp = getent (messerschmitt.target,"targetname");
messerschmitt.dest = temp.origin;
messerschmitt.start = messerschmitt.origin;
messerschmitt hide();
wait 2;
while (1)
{
messerschmitt thread passage_avions("son_messerchmitt");
wait 1;
spitfire thread passage_avions("son_spitfire");
wait 30; // boucle du thread toutes les X secondes
}
}
passage_avions(sound)
{
if (isdefined (sound))
self playsound (sound);
wait 4;
self show();
self moveto(self.dest, level.PlaneSpeed, 0.1, 0.1);
wait level.PlaneSpeed;
self hide();
self.origin = self.start;
}

Maintenant, nous allons passer
à l'étape la plus délicate de ce tutorial, la
déclaration des sons à jouer au moment du passage des
avions. Rappelez-vous : messerschmitt
thread passage_avions("son_messerchmitt")
et spitfire thread passage_avions("son_spitfire").
Pour cela, nous allons devoir créer un nouveau fichier son
où nous placerons nos sons puis nous déclarerons ce
nouveau fichier son dans notre précédent fichier CSV
que nous avions préalablement créé pour notre
véhicule piolotable (cf. tutorial 22).
Commençons par l'explication
des variables que nous allons mettre dans notre nouveau fichier son.
Chaque ajout de son se traduit par un certains nombre de variables
à savoir :
name,sequence,file,vol_min,vol_max,pitch_min,pitch_max,dist_min,dist_max,lod_min,lod_max,channel,type,
probability,loop,masterslave,loadspec,subtitle
name : nom
de l'alias qui est utilisé pour jouer le son
sequence : utilisé pour identifier uniquement
les entrées d'alias quand plusieurs sons sont utilisés
pour un seul alias, utilisé uniquement pour bloquer les copies
non désirées (par défaut = 0)
file : le nom exacte du fichier à jouer
vol_min : 0 équivaut au silence, 1 équivaut
au volume normal (defaut = 1)
vol_max : équivaut au silence, 1 équivaut
au volume normal (defaut = identique à vol_min)
pitch_min : 1 pour une lecture normal, 2 pour une
lecture accélérée 2 fois, 0.5 pour une lecture
ralenti de moitié (defaut = 1)
pitch_max : 1 pour une lecture normal, 2 pour une
lecture accélérée 2 fois, 0.5 pour une lecture
ralenti de moitié (defaut = identique à pitch_min)
dist_min : le son sera toujours joué en volume
normal à l'intérieur de cette distance (defaut = 120)
dist_max : le son n'est pas joué au-delà
de cette distance.Si laissé à blanc ou mis à
0, le son sera joué à partir de n'importe quelle distance.
Cela n'interfère par avec la dégressivité du
son.
channel : auto, menu, weapon, voice, item, body,
local, music, announcer (defaut = auto)
type : streamed (lu en direct) ou loaded chargé
en mémoire (defaut = loaded)
probability : probabiliter de jouer ce son au lieu
d'un autre son (si existance de plusieurs sons pour le même
alias (defaut = 1)
loop : pour les cas où le son doit boucler
"looping" ou ne pas boucler "nonlooping" (defaut
= "nonlooping")
masterslave : si "master", alors c'est
le son principal (maître). si présence d'un nombre, alors
le son (slave) ne dépassera pas le volume d'un autre son principal
(maître) actuellement joué. Si blanc, alors ni principal
(master) , ni esclave (slave).
loadspec : liste des maps (séparée
d'un espace) qui peuvent utiliser cet alias (ex : burnville dawnville).
Si blanc, l'alias est utilisé pour toutes les maps
Chaque variable est séparée
d'une virgule, c'est le format même de type CSV.
Créons maintenant notre fichier personnel de sons. Pour cela,
nous allons utiliser MS Excel qui nous permettra de séparer
les variables grâce à une conversion rapide. Si vous
n'avez pas excel, il ne vous reste plus qu'à gérer cette
situation en créant le fichier sous notepad, mais vous devrez
alors compter les virgules pour repérer à quel niveau
vous devez intégrer telle ou telle variable.
Pour se repérer dans
le fichier, il est impératif de copier la ligne de description
des variables à savoir : name,sequence,file,vol_min,vol_max,pitch_min,pitch_max,dist_min,dist_max,lod_min,lod_max,channel,type,
probability,loop,masterslave,loadspec,subtitle
et ce, dans la première cellule d'excel.

Nous allons ensuite convertir
le fichier de manière à ce qu'il soit plus lisible pour
le compléter. A partir du mennu DONNEES, sélectionnez
CONVERTIR.

Dans cette fenêtre (Etape
1 sur 3),sélectionnez l'option DELIMITE puis
cliquez sur le bouton SUIVANT.

A l'Etape 2 sur 3, cocher la
case "Virgule" et cliquez sur le bouton
TERMINER.

Notre fichier est maintenant
en forme pour pouvoir être complété, chaque colonne
étant rattachée à une variable.

Pour nos 2 avions, nous allons
prendre 2 fichiers sons différents (lesquels sont disponibles
dans le fichier pakuo02.pk3) :
Spitfire :
spit_flyover01.wav
Messerschmitt : bf109_attack01c.wav

Nous allons donc déclarer
nos 2 alias nécessaires à savoir :
pour notre Spitfire
: son_spitfire,,vehicles/spit_flyover01.wav,1.25,,,,100000,,,,,,,,
pour notre Messerschmitt : son_messerchmitt,,vehicles/bf109_attack01c.wav,1.25,,,,100000,,,,,,,,

Sauvegardez (cf.
tutorial 22) ensuite le fichier CSV (sous
le nom tuto_son_custom.csv) dans un nouveau répertoire
nommé soundaliases (call of duty game/uo/soundaliases).
Nous allons corriger le formattage du fichier suite à la conversion
de celui-ci par MS EXCEL. Pour ce faire, ouvrez l'explorateur et rechercher
le fichier nouvellement créé, le fichier sélectionné
faites un CDS ==> Ouvrir avec ==> WORDPAD.

A l'ouverture du fichier, on
peut s'appercevoir que nos varaibles sont déparées de
points-virgule ";" au
lieu de virgule ",".

Nous allons donc remplacer
les ";" par des ","
à l'aide de la fonction REMPLACER du menu
EDITION et du bouton REMPLACER TOUT.

Notre fichier est maintenant
formatté correctement en un seul clique, vous pouvez enregistrer
le fichier tel quel. et fermer WORDPAD.

Dernière chose à
faire, déclarer ce nouveau fichier (tuto_son_custom.csv)
dans notre précédent fichier CSV (tuto_24.csv
puisque tuto_24.map) en ajoutant la ligne tuto_son_custom.csv
(cf. flèche rouge).

Au final, voici ce que vous
devriez avoir dans le répertoire UO : soundloadspecs/mp/tuto_24.gsc
- soundaliases/tuto_son_custom.csv.

Vous pouvez maintenant compiler
votre map et tester le fruit de votre travail.
Les fichiers (.map - .gsc -
csv) de notre tuto 24/. 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é.