Le Flak 88.
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