Gaming Zone Communautes Battlefield PiTrust Communautes Mods
SommairemapstutorielsforumtétéchargementsdiversLes liensLivre d'Or
Explosion d'un wagon

 

Bon, allez vous chercher un bon café sinon vous allez vous endormir devant l'explication
Pour faire ce tutorial, j'ai repris la locomotive et un wagon de l'excellentissime map d'Amigos3D "TIRTAGAINE KECHTAT". Je ne reviendrai donc pas sur comment faire la loco et le wagon en brush, je suppose que cela ne vous pose plus aucun problème.
Avant de commencer, les mots de couleur cyan représente les informations à entrer dans Key (fenêtre entité - touche "N") et les mots de couleurs rouge les informations à entrer dans Value.
D'abord, nous allons créer la bombe. Pour cela, faites un cube de 8 x 8 unités et donnez-lui la fonction SCRIPT_MODEL. Ensuite, entrez ces différentes lignes :

#exploder_set 1
$explosion_fx fx/fx_flak88_explosion.tik
$trigger_name bombe_wagon
model items/pulse_explosive.tik
targetname explosion_wagon

Normalement, votre brush est devenu un modèle (charge explosive) comme sur le screenshot ci-après :

Nous allons maintenant placer le TRIGGER qui va servir à déclencher la bombe.
De la même manière, faite un brush de 10 x 10 et donner-lui la fonction TRIGGER_USE.
Ensuite dans la fenêtre entité :

targetname bombe_wagon

Placez ce TRIGGER de manière à ce qu'il englobe le modèle comme ci-après :

Pour donner une explosion assez conséquente, j'ai ajouté un modèle d'explosion supplémentaire (celui-ci est donc facultatif).
Créez un brush de 8 x 8 et dans la fenêtre entité, donnez lui les fonctions suivantes :

#set 1
classname fx_explosion_bridge
model emitters/explosion_bridge.tik
targetname exploderfire

Placez le modèle non loin de la source d'explosion.

Maintenant, on va atttaquer la partie la plus difficile de ce tutorial. Pour ce tutorial où je fais exploser un wagon, je vais conserver la partie basse du wagon, par contre, partie haute sera explosée. Pour cela, j'ai séparé les 2 parties de manière à voir concrètement le résultat. En effet, à la fin de la manipulation, tous les brushs seront les uns sur les autres, et il sera difficile de se donner une idée du résultat. Une fois la partie haute séparée, copier la une deuxième fois à l'identique, ceci sera nécessaire pour la suite :

Sélectionnez maintenant tous les brushs de la copie 1 et donnez lui la fonction SCRIPT_OBJECT.

Ensuite, dans la fenêtre entité :

#set 1
targetname exploder

comme sur le screen suivant :
Maintenant, nous allons préparer ce que sera le résultat de l'explosion sur le wagon. Pour cela, prenons maintenant la copie 2 et utilisez la fonction CLIP pour morceler la partie haute du wagon pour lui donner un aspect détruit (lorsque vous avez positionné les 2 points, utilisez les touches SHIFT + ENTREE pour conserver les 2 parties du brush). Répétez la même chose sur toutes les faces du wagon. C'est là que rentre en jeu votre imagination. Cela doit donner à peu près cela :

Une fois toutes les faces prètes, nous allons séparer les brushs "débris" (ceux qui sont sélectionnés dans le screen suivant) qui seront effacés par le jeu de ceux qui seront affichés après l'explosion.

Sur l'autre partie, nous allons appliquer une texture "WOOD" à la place de la texture "CAULK".

Une fois terminé, nous allons prendre tous ces brushs et les placer sur la partie basse du wagon. C'est ce que nous auront quand la bombe aura explosée. J'ai d'ailleur positionné une partie de la porte coulissante autrement en lui appliquant une rotation (mais c'est du détail). Les brushs toujours, donnez leur la fonction SCRIPT_OBJECT et dans la fenêtre entité :

#set 1
targetname explodersmashed

Sélectionnez maintenant tous les brushs de la copie 1 et positionnez les par dessus, c'est notre wagon avant l'exlosion :

Vous pensez avoir fini, que néni !!! Nous allons maintenant utiliser quelques brushs de la copie 2 (l'autre partie non utilisée) pour placer en fait quelques morceaux qui voleront au moment de l'explosion. Prenez un morceau de la porte coullissante et placez le brush juste à côté de la porte actuelle. Ne vous inquiétez pas, le brush n'est affiché ni avant ni après l'explosion, mais juste pendant. Attention, ne JAMAIS supperposer ces brushs sur d'autres, vous auriez des bugs graphiques dans le jeu !!!
Maintenant entrez ceci dans le fenêtre entité :

#set 1
target morceau1
targetname exploderchunk

comme sur le screen suivant :

Nous allons maintenant lui donner une direction vers lequel le brush sera envoyé. Créez un brush de 8 x 8 et donnez lui la fonction SCRIPT_ORIGIN. Ensuite dans la fenêtre entité :

targetname morceau1

Normalement, si vous avez bien suivi, une petite flèche bleue part de votre brush vers l'entité rouge ORIGIN que nous venons de créer !!!

Répétez cette procédure pour chaque brush que vous placerez autour du wagon sans oublier de changer le nom (targetname de l'entité ORIGIN : morceau2 - morceau3 etc ...). Une fois que vous avez fini, appliquez une texture sur les faces actuellement en CAULK en y mettant par exemple la texture WOOD (comme précédement).

Au final, voici ce que vous pourriez avoir dans radiant (j'ai positionné 8 brushs qui voleront à l'explosion de la bombe)

Il ne reste plus qu'à créer le fichier script (scr) pour que notre objectif fonctionne correctement :


//|Nom de la carte : obj_tutorial_wagon |//
//|Architecture : CaskAmi Prod. |//
//|Script : CaskAmi Prod. |//

main:

setcvar "g_obj_alliedtext1" "Détruire le wagon"
setcvar "g_obj_axistext1" "Protéger le wagon"

setcvar "g_scoreboardpic" "none"

//-----------------------------//
level waittill prespawn
//-----------------------------//

level.script = maps/obj/obj_tutorial_wagon.scr

exec global/exploder.scr //initialise le système d'explosion

level.dmrespawning = 0 //réapparition des joueurs 0 = non ; 1 = oui
level.dmroundlimit = 4 //limite de temps pour poser la bombe
level.clockside = "axis" //équipe qui gagne si la bombe n'est pas posée au bout de la limite de temps

level.defusing_team = "axis" //équipe qui désamorce la bombe (donc qui protège l'objectif)
level.planting_team = "allies" //équipe qui attaque et doit poser la bombe

//-----------------------------//
level waittill spawn
//-----------------------------//

level.bomb_damage = 200 //dégats provoqués lors de l'explosion de la bombe
level.bomb_explosion_radius = 1048 //rayon d'action des dégats provoqués par la bombe

//-----------------------------//
//level waittill roundstart //enlever les 2 slashs (//) devant la ligne si vous jouez à plusieurs
//-----------------------------//

$explosion_wagon thread global/obj_dm.scr::bomb_thinker //lance le système d'amorçage/désamorçage de la bombe
$explosion_wagon thread victoire_axe
thread victoire_allies $explosion_wagon

end

//===========================//
//*** Victoire des alliés ***//
//===========================//
victoire_allies local.bombe:

while (local.bombe.exploded != 1)
{
wait 0.1
}
wait 1

teamwin allies

end

//===========================//
//*** Victoire de l'axe ***//
//===========================//
victoire_axe:

level waittill axiswin

end

--------------------------------------------------------------------------------

Voila pour le script, sauvez-le, et il ne reste plus qu'à tester. Le fichier contenant le .map - .bsp - .scr se trouve ici.

 

 

Par Caskou - 2003 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.