Le Flak 88.

retour sommaire

Texte original : 88-flak autofire
Auteur/autor : Haui du site/from Mansteinleveldesign
Traduction : Tropheus

Dans ce tutorial, vous allez apprendre à vous faire tirer dessus automatiquement par un flak 88.

1/ Partie MAPPING

a) la map.

Créez une map assez grande (ici j'ai 2752 X 2024) ,et mettez-y les éléments de bases : info_player_start, worldspawn et textures.

b) Le flak


Placez maintenant le flak_88. Tout d'abord, il vous faut placer la base. Vous la trouverez en suivant ce chemin : turretweapon/german/88mmflakbase. Déselctionnez.
Placez maintenant la tourelle sur sa base. Vous la trouverez en suivant ce chemin : turretweapon/german/88mmflakturret. Puis en gardant la tourelle sélectionnée, appuyez sur la touche "N" et entrez les key / Value suivantes : targetname / 88mm_weapon1

Attention de bien "emboiter" la base et la tourelle afin que ce soit plus réaliste.
.

c) Le trigger.

Comme vous pouvez vous en douter, ici on va utiliser un trigger qui déclenchera le mécanisme lorsque le joueur le touchera. Ici pour matérialiser la zone de passage, j'ai mis des plots de chaque côté.

Une fois que vous avez mis votre trigger_multiple sur le passage, gardez le sélectionné et donnez lui les key / value suivantes :
targetname / 88mm_weapon_trigger//nom du trigger_multiple
wait / 5
setthread
/ fire_88mm_weapon//renvoie à la partie du script

Wait 5 c'est le temps minimum en seconde pour recharger. Si vous mettez un nombre inférieur à 5 cela marchera, mais se ne sera plus crédible. Qui peut rechrger un flak 88 en moins de 5 secondes ?
Vous avez donc une configuratoin comme ceci :

2/ Partie SCRIPTING.

Ouvrez notepad et tapez ce qui suit.

//script original par Haui
//Traduction et remaniement par Tropheus

exec global/ai.scr
exec global/loadout.scr maps/test_flak.scr
main:
     level waittill prespawn
        exec global/ambient.scr m3l3
        exec global/exploder.scr
    level waittill spawn
        $player item weapons/colt45.tik
        $player ammo pistol 1000
    level.script="map/test_flak.scr"
end
/////////////////////
fire_88mm_weapon:
    local.gun_name=$88mm_weapon1
    local.target=$player
    local.gun_name setaimtarget local.target
    wait (1)
    local.range=96 + randomint(128)
    local.offset=96 + randomint(128)
    local.gun_name anim fire_scripted
    wait(0.7 + ((randomint(6))*.1))
    local.a=local.target.origin
        if((randomint(100)) < 50)
            local.a[0]=local.a[0] + local.range
        else
            local.a[1]=local.a[1] + local.offset
        if((randomint(100)) > 50)
            local.a[0]=local.a[0] - local.range
        else
        local.a[1]=local.a[1] - local.offset
        local.exp1=spawn "fx/scriptbazookaexplosion.tik"
        local.exp2=spawn "animate/fx_mortar_dirt.tik"
        local.exp3=spawn "animate/fx_mortar_higgins.tik"
        local.exp1.origin=local.a
        local.exp1 anim start
        local.exp2.origin=local.a
        local.exp2 anim start
        local.exp3.origin=local.a
        local.exp3 anim start
        wait(1)
        local.exp1 remove
        local.exp2 remove
        local.exp3 remove
end

Bon j'explique.

Au coursde ce script on aura besoin de définir quelques variables. Le mot clé sera "local" et cela veut dire que la variable créée avec cet attribut, ne sera valable que dans ce thread.

///////////////Partie normale pas d'explication//////////////////
//////////////Attention à ne pas oublier d'activer le script explosion/////////////////////////////

exec global/ai.scr
exec global/loadout.scr maps/test_flak.scr
main:
level waittill prespawn
exec global/ambient.scr m3l3
exec global/exploder.scr
level waittill spawn
$player item weapons/colt45.tik
$player ammo pistol 1000
level.script="map/test_flak.scr"
end

/////////////////////Partie du script (thread) activée au passage du joueur dans le trigger_multiple//////////////////////////////////
fire_88mm_weapon:
//nom du thread
local.gun_name=$88mm_weapon1//première variable "local" ayant pour nom celui du flak et étant appelée "gun_name"
local.target=$player//seconde variable "local" la cible
local.gun_name setaimtarget local.target//le flak va viser la cible grâce à la commande "setaimtarget"
wait (1)//temps d'attente pour que le flak pivote sur son axe. si le pivotement > 90° il faut alors augementer ce temps.
////////////////Viser la cible//////////////////////
local.range=96 + randomint(128)//Ici 2 variables "range" et "offset" qui représentent des distances à partir du joueur.
local.offset=96 + randomint(128)//Si vous voulez plus de précision allez voir
ici.
local.gun_name anim fire_scripted//On lance l'animation du tir du flak 88 (recul tir et fumée sortant du canon) du au script "fire_scripted"
wait(0.7 + ((randomint(6))*.1))//Temps d'attente entre le tir et le moment où la bombe va vous exploser dessus.
/////////////////détermination du point d'impact.//////////////////////////////
local.a=local.target.origin//cette ligne détermine la position directement sur celle du joueur grâce à "origin"
///////////////////////détermination aléatoire du point d'impact autour du joueur car celui-ci est l'élément de référence pour les calculs///////////////////////////////
//////////////////////Pour plus de précision allez voir
ici////////////////////////////////////////////////
if((randomint(100)) < 50)
local.a[0]=local.a[0] + local.range
else
local.a[1]=local.a[1] + local.offset
if((randomint(100)) > 50)
local.a[0]=local.a[0] - local.range
else
local.a[1]=local.a[1] - local.offset
///////////////////les explosions pour des explications détaillées allez voir
ici///////////////////////////
local.exp1=spawn "fx/scriptbazookaexplosion.tik"
local.exp2=spawn "animate/fx_mortar_dirt.tik"
local.exp3=spawn "animate/fx_mortar_higgins.tik"
exec global/earthquake.scr .23 4 00//fait trembler le sol à chaque explosion.
local.exp1.origin=local.a
local.exp1 anim start
local.exp2.origin=local.a
local.exp2 anim start
local.exp3.origin=local.a
local.exp3 anim start
wait(1)//attente avant d'enlever les animations.
local.exp1 remove
local.exp2 remove
local.exp3 remove
end

Attention certaines explosion non pas de dommages associés. Dans ce cas vous utiliserez cette ligne à placer avant le "wait(1)"

setdamageradius local.a.origin 75 200//local.a.origin est la position de la zone de dommages, 75 l'intensité et 200 le rayon.

Dans le jeu.

Dans le jeu. En passant entre les plots, le canon va se mettre à vous viser, puis il tirera et vous touchera.

Avant la visée au début du jeu le canon en position de repos.

Ensuite le canon avant de viser. (Vue du plot gauche).

Une fois que le canon a été activé, il vous vise. (Vue du plot de gauche).

Voila de quoi réjouir certains mappeurs.

Mais ce n'est pas fini car ce "thread" fonctionne aussi en multi_player. (le mapping reste le même cependant je ne sais pas comment faire pour attribuer cet engin à une équipe que l'on soit allié ou axe le canon vise quand même le joueur.)

Pour télécharger le pk3 solo

Pour télécharger le pk3 multi

Retour au sommaire.