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 :
$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é :
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 :
classname
fx_explosion_bridge
model
emitters/explosion_bridge.tik
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é :
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é :
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é :
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é :
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é.