Faire sauter un mur. (2 méthodes)
(Vous allez apprendre à faire sauter un mur avec une
bombe et avec un bazooka.)
Tutorial écrit par Tropheus en s'inspirant de celui de Mohaarox
1/ Mapping
Comme vous en avez l'habitude maintenant, construisez une map avec tous
les éléments nécessaires. (info_player_start, worldspawn
etc...)
Comme nous avons 2 murs à faire exploser, nous allons en construire 2, le premier
en pierres qui sera détruit par une bombe et le second en ciment lui sera détruit
par un bazooka.
a/ Le mur de pierres.
Le mur de pierre constituera le premier groupe d'objets manipulés par le script "exploder".
On donnera donc la valeur 1 à la clé #set pour tous les éléments
qui le nécessitent.
a1/ le mur détruit
Tout d'abord occupons-nous du mur en pierre. Vous allez donc créer un brush
que vous allez mettre en "caulk".
Ensuite grace à l'outil "clip" découpez
le comme vous
voulez, puis enlevez les parties qui doivent disparaître après l'explosion.
Ensuite, selectionnez tous les brushes et dans la vue 2D transformez les en "script_object".
Tant qu'ils sont sélectionnés donner leur les key / value
suivantes :
#set / 1
targetname / explodersmashed
Ensuite, vous pouvez les texturer comme vous le désirez, Attention de n'oublier aucune face.
a2/ Le mur intact.
Construisez maintenant un second brush de la même taille que celui détruit.
Il constituera votre mur intact.
Une fois
construit, texturez-le, puis transformez-le en script_object de la même façon
que précédemment.
Superposez-le à l'autre mur.
Appliquez-lui les key / value
suivantes :
#set / 1
targetname / exploder
a3/ Le système de mise à feu.
Tout d'abord l'explosion.
Dans la vue 2D clic_droit/fx/explosion/wallexploder et vous placez votre explosion
à l'endroit désiré.
key / value
#set / 1
targetname / exploderfire
Ensuite la bombe.
Créer un script_model que vous placez au bon edroit puis vous lui donnez les
key / value suivantes :
model / items/pulse_explosive.tik
targetname / bomb1
$trigger_name / bomb1_trigger
Puis le declencheur.
Pour le trigger un petit brush qui englobe le tout que vous transformez en trigger_use.
ensuite donnez les key / value :
targetname / bomb1_trigger
Le hurtobject
Un petit brush avec la texture "no draw" que l'on convertit en scipt_object et
auquel on donne ces key / value :
targetname / hurtobject1
Le pointeur.
pour faire poinetr le compas du joueur. Un script_origin avec les key / value:
targetname / obj1
A la fin vous devez avoir quelque chose comme ceci :
Il ne vous reste plus qu'à rajouter des débris.
Pour cela
construisez des petits brushes, tarnsformez-les en "script_object" cette
fois-ci séparement sinon ils ne feront qu'un.
Pour chacun donnez leur les key / value :
#set / 1
target / p1 (ou un autre numéro pour un autre débris.)
targetname / exploderchunk
Pour les directions que doivent prendre les débris il faut que vous placiez
les script_origin auquels vous donnerez les key / value suiavntes :
#set / 1
targetname / p1 ou un autre numéro en fonction de la cible désigner
par l'exploderchunk.
Voila votre premier mur terminé voici à quoi il peut ressembler.
b/ Le mur de ciment.
Le mur de ciment constituera le second groupe d'objets manipulés par
le script "exploder".
On donnera donc la valeur 2 à la clé #set pour tous les éléments
qui le nécessitent.
Dans ce cas aussi, la préparation des murs reste la même. Il n'y a que la valeur
de la key #set qui doit être 2.
mur détruit
#set / 2
targetname / explodersmashed
mur intact
#set / 2
targetname / exploder
A l'endroit du tir vous mettez une explosion. Ici, j'ai pris fk/explosion/bombwall
#set / 2
targetname / exploderfire
Un hurtobject qui ne me semble pas nécessaire car vous ne tirerez pas sur
le mur à bout portant.
targetname / hutobject2
Un trigger_multiple
Il englobe le tout c'est à dire la partie qui touchée par le tir déclencera l'expolsion
et la destruction.
targetname / bomb2_trigger
setthread / obj2
health / 50
Le pointeur.
pour faire poinetr le compas du joueur. Un script_origin avec les key / value:
targetname / obj2
Voila si vous voulez des débris vous faites comme pour l'autre mur
en mettant
la valeur 2 à la clé #set
vous devriez avoir ceci :
2/ le scripting.
Voici la partie que vous attendez tous ..... Le scripting.
//mapping : Tropheus
//scripting : Tropheus inspiré de mohaarox
exec global/ai.scr
exec global/loadout.scr maps/test_mur.scr
main:
level waittill prespawn
exec
global/exploder.scr
level waittill spawn
$player takeall
waitthread global/items.scr::add_item "explosive"
$bomb2_trigger nottriggerable
waitthread global/objectives.scr::add_objectives 1 2 "Faire sauter le
mur de pierres" $obj1.origin
set_objective_pos $obj1
thread obj1
end
////////////////////l'explosion du mur de pierres/////////////////////
obj1:
$bomb1_trigger waittill trigger
$bomb1 model "animate/explosive.tik"
$bomb1 playsound explosive
$player stopwatch 5
vwait 5
$player stoploopsound bombtik
$bomb1 playsound explode_tank
$bomb1 remove
waitthread global/exploder.scr::explode 1
radiusdamage $hurtobject1 1256 628
waitthread global/objectives.scr::add_objectives 1 3 "Faire sauter le
mur de pierres" $obj1.origin
set_objective_pos $obj2
$bomb2_trigger triggerable
end
//////////////////// Explosion du mur en ciment//////////////////////
obj2:
waitthread global/objectives.scr::add_objectives 2 2 "Faire sauter
le mur en ciment" $obj2.origin
waitthread global/exploder.scr::explode 2
radiusdamage $hurtobject2 1256 628
waitthread global/objectives.scr::add_objectives 2 3 "Faire sauter le
mur en ciment" $obj2.origin
wait 2
thread levelend
end
///////////
levelend:
waitthread global/objectives.scr::current_objectives 0
iprintln "Mission terminée."
exec global/missioncomplete.scr test_mur
end
Une explication?
//mapping : Tropheus
//scripting : Tropheus inspiré de mohaarox
exec global/ai.scr
exec global/loadout.scr maps/test_mur.scr
main:
level waittill
prespawn
exec global/exploder.scr
level waittill spawn
$player takeall
waitthread global/items.scr::add_item "explosive"//pour
avoir des bombes
$bomb2_trigger nottriggerable//on bloque le second trigger
pour garder une chronologie dans les actions.
waitthread global/objectives.scr::add_objectives 1 2 "Faire
sauter le mur de pierres" $obj1.origin
set_objective_pos $obj1
thread obj1
end
////////////////////l'explosion du mur de pierres/////////////////////
obj1:
$bomb1_trigger waittill trigger
$bomb1 model "animate/explosive.tik"
$bomb1 playsound explosive
$player stopwatch 5
vwait 5
$player stoploopsound bombtik
$bomb1 playsound explode_tank
$bomb1 remove
waitthread global/exploder.scr::explode 1//fait exploser le
groupe 1
radiusdamage $hurtobject1 1256 628
waitthread global/objectives.scr::add_objectives 1 3 "Faire
sauter le mur de pierres" $obj1.origin//objectif rempli
set_objective_pos $obj2//le compas pointe sur le second objectif
$bomb2_trigger triggerable//on active le trigger
end
//////////////////// Explosion du mur en ciment//////////////////////
obj2:
waitthread global/objectives.scr::add_objectives 2 2 "Faire
sauter le mur en ciment" $obj2.origin
waitthread global/exploder.scr::explode 2//fait exploser le
groupe 2
radiusdamage $hurtobject2 1256 628
waitthread global/objectives.scr::add_objectives 2 3 "Faire
sauter le mur en ciment" $obj2.origin
wait 2
thread levelend
end
///////////
levelend:
waitthread global/objectives.scr::current_objectives 0
iprintln "Mission terminée."
exec global/missioncomplete.scr test_mur
end
Bon voici cette partie terminée. Pour le multi les thread restent les mêmes. Seules les définitions en tant qu'objectifs seront différentes.
Tropheus