Faire sauter un flak88.

Titre original : Bombing Stuff
Auteur/autor : mohaa-rox
traduction et adaptation : Tropheus

retour au sommaire

1/ Partie Mapping

C'est la partie la plus longue. Tout d'abord, comme d'habitude, un ,espace de jeu avec tout ce qu'il faut.
Sur cet espace de jeu vous allez placer la base de votre canon. (en vue 2D clic_droit/turretweapon/german/88mmflakbase)

Sur cette base, vous allez placer la tourelle. (en vue 2D clic-droit/turretweapon/german/88mmflakturret) faites bien coïncider les 2 éléments pour que cela fasse quelque chose de réaliste. Pour cela, n'hésitez pas à passer un grille 1.

Tant que la tourelle est sélectionnée, entrez les key / value suivantes :

#set / 1
targetname / exploder

Bon il vous faut maintenant le canon détruit. Pour cela en vue 2D clic_droit/turretweapon/german/88mmflak-destroyed.
Vous la positionnez correctement pour qu'elle prenne la place le l'autre quand elle aura sauté.
Tant qu'elle est sélectionnée donnez lui les
key / value suivantes :

#set / 1
targetname / explodersmashed

Il vous faut maintenant une explosion.
En vue 2D
clic_droit/fx/explosion/tank. avec les key / value suivantes :

#set / 1
targetname / exploderfire

Ce qui pour l'instant donne ceci :

Il vous faut maintenant un endroit ou placer votre bombe.
Pour cela créez un script_model auquel vous donnerez les key / value suivantes :

model / items/pulse_explosive.tik
targetname / bomb1
$trigger_name / bomb1_trigger

Un explosion doit endommager ceux qui sont autour. Alors, vous allez créé un hurtobject. Pour cela, vous allez créez un petit brush auquel vous donnerez la texture "no draw" (que vous trouvez dans common) et que vous transformerez en script_object. Ensuite, vous lui donnez les key / value suivantes :

targetname / hurtobject1

Maintenant, il nous faut le déclencheur. Pour cela vous allez créez un brush autour des éléments cités plus haut, et vous le transformez en trigger_use. Tant qu'il est sélectionné, donnez lui les key / value suivantes :

targetname / bomb1_trigger

Le dernier élément sera un script_origin qui fera pointer le compas sur le flak. Pour cela, donnez lui les key / value suivantes :

targetname / obj1

Et voila la partie flak terminée. Vous devez avoir cet imbroglio d'éléments sur votre flak.

Pour agrémenter le tout vous allez maintenant rajouter des débris qui vont voler dans différentes directions.
Pour cela, construisez des petits brushs avec une texture"métal" et de la forme que vous désirez. Vous les transformez en script_object. Et vous donnez à chacun les key / value suivantes :

#set / 1
target / ex1 (ou un autre numéro pour un autre débris.)
targetname / exploderchunk

Attention, vous allez les placer proche du canon puisque c'est de là qu'ils vont partir lors de l'explosion. MAIS ils ne doivent EN AUCUN CAS être en contact direct avec le cube de la tourelle détruite (explodersmashed).Vous devez donc laissez un espace entre les éléments. (Ces éléments sont invisibles dans le jeu tant que l'explosion n'a pas eu lieu.)

Les débris devront voler, mais pas n'importe où. Vous allez leur donner une cible à chacun. (ou une pour plusieurs).
Pour cela, vous allez positionner des script_origin aux endroits ou doivent voler les débris. Vous leur donnez les key / value suivantes :

#set / 1
targetname / ex1 ou un autre numéro en fonction de la cible désigner par l'exploderchunk.

Vous devez voir une flèche bleue lier le débris à sa cible.

Au final cela doit vous donnez quelque chose comme ça :

Et voici enfin la partie mapping terminée. C'était la plus longue.

ATTENTION. Pour un soucis de visibilité sur les screenshots. J'ai volontairement omis de recouvrir le flak de brush ayant la texture "clip metal" (cf le tutorial sur le nebelwefer). Vous verrez dans le jeu que vous pourrez traverser le "model".

2/ Partie scripting.

Voici le script.

//mapping : Tropheus
//scripting : Tropheus inspiré de mohaarox

exec global/ai.scr
exec global/loadout.scr maps/test_exploflak.scr

main:

    level waittill prespawn

        exec global/exploder.scr

    level waittill spawn

        waitthread global/items.scr::add_item "explosive"
       
waitthread global/objectives.scr::add_objectives 1 2 "Faire sauter le flak" $obj1.origin
        set_objective_pos $obj1
        thread obj1
end
////////////////////l'explosion du flak/////////////////////
obj1:
    $bomb1_trigger waittill trigger
    $bomb1 model "animate/explosive.tik"
    $bomb1 playsound explosive
    $player loopsound bombtik
    $player stopwatch 5
wait 5
    $player stoploopsound bombtik
    $bomb1 playsound explode_tank
    $bomb1 remove
    waitthread global/exploder.scr::explode 1
    radiusdamage $hurtobject1 256 384
    waitthread global/objectives.scr::add_objectives 2 3 "Faire sauter le flak" $obj1.origin
end

Héhéhé !!! Je vois déjà d'ici vos yeux émerveillés, mais attendez les explications pour vous exclamer.

//mapping : Tropheus // c'est moi
//scripting : Tropheus inspiré de mohaarox // c'est encore moi

exec global/ai.scr
exec global/loadout.scr maps/test_exploflak.scr

main:

level waittill prespawn

exec global/exploder.scr // on appelle un script qui va gérer lui même les éléments du mapping (apparition disparition vol explosion etc...)

level waittill spawn


waitthread global/items.scr::add_item "explosive" // Tout faire péter sans bombe c'est difficile.

waitthread global/objectives.scr::add_objectives 1 2 "Faire sauter le flak" $obj1.origin // un objectif dans la fenêtre (touche tab)
set_objective_pos $obj1 // pointage du compas
thread obj1 // on envoie vers le thread obj1
end
////////////////////l'explosion du flak/////////////////////
obj1: // le thread en question
$bomb1_trigger waittill trigger // renvoie au trigger et dis qu'on attend qu'il soit activer pour continuer.
$bomb1 model "animate/explosive.tik" // une fois activé ici, on plante la bombe.
$bomb1 playsound explosive // la bombe emet le son explosive (la pose de la bombe sans doute).
$player loopsound bombtik // tic-tac de la bombe
$player stopwatch 5 // temps avant l'explosion en seconde.
wait 5 // on attend les 5 secondes (visible sur le chronomètre)
$player stoploopsound bombtik // pour l'explosion il faut arrêter le tic tac
$bomb1 playsound explode_tank // son de l'explosion
$bomb1 remove // on enlève la bombe puisqu'elle a explosé
waitthread global/exploder.scr::explode 1 // on active le script exploder (celui du départ pour le "groupe" 1)
radiusdamage $hurtobject1 256 384 // intensité rayon
waitthread global/objectives.scr::add_objectives 2 3 "Faire sauter le flak" $obj1.origin // le contrat est rempli.
end

3/ Variantes

Vous devez faire sauter autre chose. Et bien rien de plus simple, dans la partie mapping vous changez tous les "1" en "2". (Dans le script aussi). Ceci vous le ferez pour chaque nouveau groupe. Pour le troisième élément, vous mettrez "3" etc...

Puis vous rajouter ces lignes (lignes roses) à la fin du thread obj1 comme ceci.

....
waitthread global/exploder.scr::explode 1
// on active le script exploder (celui du départ pour le "groupe" 1)
radiusdamage $hurtobject1 256 384 // intensité rayon
waitthread global/objectives.scr::add_objectives 2 3 "Faire sauter le flak" $obj1.origin // le contrat est rempli.

waitthread global/objectives.scr::add_objectives 2 2 "Faire sauter le second élément." $obj2.origin
set_objective_pos $obj2
thread obj2

end
/////////////////////obj 2 ///////////
obj2:
commandes...
....
commandes
end
/////////////////

Dans le jeu vous verrez ceci :

Le flak intact :

le flak détruit

Les débris qui volent

Bon voila qui est fait.

Bonne explosion et bon mapping.

Téléchargez le pk3

Tropheus

NB : Il se peut qu'il y ait des problèmes avec les sons, dans ce cas il faut les fixer ce qui fera l'objet d'un autre tutorial.

retour au sommaire