Ajouter un camion de transport de troupes.
Tutorial inital : Adding
a Vehicule With AI to your SP Map by BODGER2
Traduit
par Tropheus
Grâce à ce tutorial vous aller apprendre à introduire dans votre map SP un camion de transport de troupes en mouvement, avec à son bord 9 soldats, du son, des explosions lorsqu'il est touché par un PanzerFaust et en plus les gars sortent du camion lorqu'il arrive au terme de son trajet.
NDT :
Cependant il existe un
bug. Si vous détruisez le camion avant qu'il arrive au terme de son trajet, c'est
le modèle détruit qui va jusqu'au bout, ce qui est peut réaliste. Alors arrangez
vous pour que le joueur ne puisse détruire le camion qu'une fois arrivé à son
terme.
A/ MAPPING
1. Créer un SCRIPT_VEHICLE.
Tout d'abord, il faut ouvrir codradiant et dans la vue 2D clic-droit/script/vehicle.
Donnez lui ensuite les KEYS et VALUES suivantes :
classmane / script_vehicle
model / xmodel/vehicle_german_truck
vehicletype / GermanFordTruck
script_vehiclegroup / 1
targetname / truck1
2. Créer des INFO VEHICLE NODES
Vous allez maintent créer le chemin que devra parcourir votre camion. Pour cela toujours dans la vue 2D vous allez faire clic-droit/info/vehicle_node.
Vous allez paramètrer
le premier PATHNODE de
façon à le définir comme premier. Pour
cela entrez les KEYS et VALUES suivantes
:
spawnflag / 1
Vous pouvez aussi ajouter d'autres paramètres
tels que la vitesse
speed / 10
(10 semble être une vitesse acceptable)
Ajouter maintenant et de la même façon d'autres "info vehicle node" pour créer le chemin (Attention il ne faut pas les paramétrer comme le premier (sauf la vitesse)). Au passage je vous rappelle que pour créer un chemin il faut au moins 2 paths.
Pour faire tourner votre
véhicule
votre camion il vous faudra utiliser des "info vehicle node rotate".
(exemple : key : angle / value : 0
225 0)
3. Connecter le camion au chemin.
Rien de plus simple. Sélectionner tout d'abord le CAMION puis
le premier
NODE. Une fois que les 2 sont sélectionnés
appuyez sur les touches
"CTRL" + "K". Cette manipulation connectera le camion
au premier noeud en donnant un targetname au Node et en "targetant" directement
le camion sur ce targetname.
Pour continuer le chemin selectionnez maintenant le premier noeud puis le second et
appuyez à nouveau sur les touches "CTL" + "K".
Vous allez procéder ainsi jusqu'au bout de votre chemin.
4/ Créer les soldats de l'Axe.
Dans la vue 2D clic-droit/ACTOR/le soldat désiré.
Donner lui ensuite les KEY et VALUES suivantes :
script_vehiclegroup / 1
spawnflag / 3 (ceci
se fait en cochant les cases SPAWNER et FORCESPAWNER dans la
fenêtre entité)
targetname / truckguys
Vous pouvez ainsi mettre
jusqu'à 9 soldats dans votre camion en incluant le
chauffeur. Pour le faire vous pouvez cloner le premier soldat.
il auront tous ainsi le même targetname.
Pour désigner le chauffeur prenez un des gars et changez le targetname en driver.
Placez ensuite vos gars près du camion. Vous n'avez pas à les
connecter au camion car le script s'en chargera.
ATTENTION !!! POUR QUE LES SOLDATS SPAWNENT IL FAUT ABSOLUMENT QUE LE JOUEUR SOIT INCAPABLE DE LES VOIR SPAWNER. SI JAMMAIS C'ETAIT LE CAS LES SOLDATS NE SPAWNERAIENT PAS.
5/ Créer unTRIGGER. (pas nécessaire dans toutes les maps)
Le trigger servira à activer
le camion et le spawn des axes.
Créer
un brush puis lui donner la texture "trigger" puis selectionner
le bruh et dans la vue 2D clic-droit/trigger/multiple.
targetname / truck_trigger
Pour connecter le trigger au camion, sélectionner d'abord le trigger puis le camion et appuyez ensuite sur les touches "CTRL"+"K".
Et nous en avons fini avec la partie mapping nous allons passer maintenant à la partie scripting.
6/ Pathnodes et autre cover node ou prone node.
Si vous ne voulez pas que que Ai restent bêtement debout une fois descendues du camion dites leur ce qu'il faut faire.
Ce qui vous donne:

B/ SCRIPTING
Voici le script qui vous permettra de faire marcher votre système.
main()
{
maps\_load::main();
maps\_truck::main();
//GIVE PLAYER WEAPONS
level.player takeallweapons();
level.player giveWeapon("panzerfaust");
level.player giveWeapon("thompson");
level.player giveWeapon("colt");
level.player giveWeapon("fraggrenade");
level.player switchToWeapon("thompson");
//TRUCK
trucktrig = getent ( "truck_trigger","targetname");
trucktrig waittill ("trigger");
truck =
getent ( "truck1","targetname");
path = getVehicleNode (truck.target,"targetname");
truck attachpath(path);
truck maps\_truck::init();
truck maps\_truck::attach_guys();
truck startPath();
truck waittill ("reached_end_node");
truck notify ("unload");
}
Voici quelques explications.
main()
{
maps\_load::main();//charge tous les scripts globaux
qui permettront à la map de fonctionner.
maps\_truck::main();//ceci précache les models et
charge
les effets.
//GIVE PLAYER WEAPONS
level.player takeallweapons();
level.player giveWeapon("panzerfaust");//vous
pouvez maintenant détruire le camion.
level.player giveWeapon("thompson");
level.player giveWeapon("colt");
level.player giveWeapon("fraggrenade");
level.player switchToWeapon("thompson");
//TRUCK
trucktrig = getent ( "truck_trigger","targetname");//inutile
si vous n'avez pas de TRIGGER
trucktrig waittill ("trigger");//inutile
si vous n'avez pas de TRIGGER
truck =
getent ( "truck1","targetname");//définit
le camion.
path = getVehicleNode (truck.target,"targetname");//definit les
paths (le chemin)
truck attachpath(path);//attache le camion au chemin.
truck maps\_truck::init();//lance la partie init du script truck (initialise
la camion)
truck maps\_truck::attach_guys();//attache les soldats au camion.
truck startPath();//début du mouvement
truck waittill ("reached_end_node");//le mouvement
continue jusqu'au dernier path.
truck notify ("unload"); //Les Allemands sautent du camion.
}
C/ SOLUTIONS
a/ Solution
1
Il se peut que comme moi vous rencontriez un gros problème
avec votre trajet. C'est a dire que, le chemin ne se trace pas sauf si vous
mettez le second node comme START NODE.

Mais dans ce cas, le camion ne dépasse pas le premier node. Vous allez essayé de targeté le camion sur le second node et là votre chemin disparaît. Alors pour y remédier gardez votre première version second node = START NODE. On va le faire changer avec le script.
Dans le script vousavez juste à changer cette ligne.
path = getVehicleNode (truck.target,"targetname"); par
path = getVehicleNode ("targetname_du_second_node","targetname");
Car en fait c'est le script qui détermine le début du path.
b/ Solution 2
Seconde solution apportée par Bushman et complémentée par Flyfab.
Vous laissez tout comme il est indiqué dans le tuto, seulement vous allez ajouter la clé/valeur suivante :
lookahead / 1
Cette clé semble indiquer la trajectoire à avoir. Plus elle est élevée, plus le camion ira en ligne droite. Regardez les screens de radiant ci-dessous.

lookahead / 1

lookahead / 10
Merci beaucoup à Bushman et Flyfab pour leur aide sur cette partie.
Bon j'espère que vous pourrez en tirer profit.
Voici la map téléchargeable pour UO.
TROPHEUS
Pour CaskamiProd
et MohaaScriptLib
avec l'autorisation de l'auteur.
Tropheus ©
Octobre 2005