Gaming Zone Communautes Battlefield PiTrust Communautes Mods
SommairemapstutorielsforumtétéchargementsdiversLes liensLivre d'Or
24/. Intégrer des avions qui volent

 

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

 

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.