Gaming Zone Communautes Battlefield PiTrust Communautes Mods
SommairemapstutorielsforumtétéchargementsdiversLes liensLivre d'Or
Contrôler les unités spawnées.(COD et CODUO)


Il est apparu que contrôler les unités qui viennent de spawner était impossible. Je vous présente ici une technique qui permet de le faire. Ce n'est pas la technique par excellence mais elle permet malgré quelques inconvénients de contrôler les AI.

1/ MAPPING

Sur la map test vous trouverez :
- une AI qui est déjà présente sur la map au depart ("actor_axis_snow_wehrmacht_nco_mp40")
- 2 AI ("actor_axis_fallschirmjager_soldiergrey_kar98k") qui spawnent lorsque l'on active le trigger 1 (ne pas oublier de cocher la case "SPAWNER").
- 2 AI ("actor_axis_kriegsmarine_soldier_mp40") qui spawnent lorsque l'on active le trigger 2 (ne pas oublier de cocher la case "SPAWNER").


Vue de la map dans radiant.


Si vous ne vous êtes pas encore familiarisé avec les spawns voici un autre tuto.

2/ SCRIPTING

Voici le script.

main()
{
maps\_load::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");

thread objectif1();
thread objectif2();
thread objectifs();
}

/////////Definition des objectifs//////////////////////
objectifs()
{
objective_add(1,"active",&"LES_SPAWNS_3_OBJ1");
objective_add(2,"active",&"LES_SPAWNS_3_OBJ2");
objective_current(1,2);
}
////////Tuer plusieurs allemands.///////////////////////
objectif1()
{

trig = getent ("dos_trigg","targetname");
trig waittill("trigger");
iprintlnbold("trig_1");


dos = getaiarray("axis");

for (i=0; i<dos.size; i++)


if (isalive(dos[i]))
{
dos[i] waittill("death");
}
objective_state(1,"done");

}

/////Tuer les marins/////////
objectif2()
{

trig_ma = getent ("marins_trig","targetname");
trig_ma waittill("trigger");
iprintlnbold("trig_2");

marin = getentarray("actor_axis_kriegsmarine_soldier_mp40","classname");

for (i=0; i<marin.size; i++)


if (isalive(marin[i]))
{
marin[i] waittill("death");
}
objective_state(2,"done");

}

Explications.

main()
{
maps\_load::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");

thread objectif1();
thread objectif2();
thread objectifs();
}

/////////Definition des objectifs//////////////////////
objectifs()
{
objective_add(1,"active",&"LES_SPAWNS_3_OBJ1");
objective_add(2,"active",&"LES_SPAWNS_3_OBJ2");
objective_current(1,2);//permet d'avoir les 2 objectifs activés (touche TAB).
}

////////Tuer plusieurs allemands.///////////////////////
objectif1()
{

trig = getent ("dos_trigg","targetname");//définition du trigger 1
trig waittill("trigger");//on attend l'activation du trigger pour à la fois faire spawner les 2 AI mais aussi pour continuer le script.
iprintlnbold("trig_1");//permet de voir si on a activé le trigger


dos = getaiarray("axis");//une fois spawnées, on récupère les AI dans un tableau selon leur équipe.
ensuite on gére l'objectif comme on l'a fait dans l'autre tuto.
(tuto "for")

for (i=0; i<dos.size; i++)


if (isalive(dos[i]))
{
dos[i] waittill("death");
}
objective_state(1,"done");

}

/////Tuer les marins/////////
objectif2()
{

trig_ma = getent ("marins_trig","targetname");//définition du trigger  2
trig_ma waittill("trigger");//on attend l'activation du trigger pour à la fois faire spawner les 2 marins mais aussi pour continuer le script.
iprintlnbold("trig_2");//permet de voir si on a activé le trigger

marin = getentarray("actor_axis_kriegsmarine_soldier_mp40","classname");//une fois spawnés, on récupère les marins dans un tableau cette fois-ci selon leur "classname". Eensuite on gére l'objectif comme on l'a fait dans l'autre thread.

for (i=0; i<marin.size; i++)


if (isalive(marin[i]))
{
marin[i] waittill("death");
}
objective_state(2,"done");

}

 

Technique de l'objectif 1

Voici, c'est tout simple. mais il existe un inconvenient. Lorsque vous récupérez les AI "Axes", vous récupérez non seulement les AI qui viennent de spawner , mais aussi celles présentent sur la map qu'elles soient impliquées dans votre objectif ou non.

Technique de l'objectif 2

Ici on a affiné la sélection puisqu'on ne sélectionne que les AI avec comme "classname" "actor_axis_kriegsmarine_soldier_mp40", mais il existe toujours le même inconvenient. Lorsque vous récupérez les AI selon leur "classname" vous récupérez non seulement les AI qui viennent de  spawner , mais aussi celles présentent sur la map (ayant la même "classname") qu'elles soient impliquées dans votre objectif ou non.

3/ EN JEU.

Cas 1.
Promenez-vous sur la map pour tuer le soldat en blanc (snow). Puis activez le trigger et ensuite le trigger 2.
Pour réaliser l'objectif 1 vous devrez tuer les 2 AI spawnées.
Pour réaliser l'objectif 2 vous devrez tuer les 2 marins spawnés.

Cas 2.
Trigger 1 activé avant le trigger 2 sans tuer l'axe snow avant.
Pour réaliser l'objectif 1 vous devrez tuer 3 AI : les 2 AI spawnées plus l'AI déjà présente sur la map au start l'axe (snow).
Pour réaliser l'objectif 2 vous devrez tuer les 2 marins spawnés.

Cas 3.
Trigger 2 activé avant le trigger 1 sans tuer l'axe snow.
Pour réaliser l'objectif 1 vous devrez tuer 5 AI : les 2 marins spawnés, l'AI déjà présente sur la map au start l'axe (snow), puis les 2 autres AI que l'on fait spawnées. Du coup il y a 5 AI présentes sur la map lorsque l'on met les AI AXE en tableau.
Pour réaliser l'objectif 2 vous devrez tuer les 2 marins spawnés.
Dans ce cas, les 2 objectifs se réalisent en même temps.

Voila j'espère que cela pourra vous servir je continue à affiner la sélection car il est possible de le faire je crois.

Téléchargez l'exemple. (uniquement pour CODUO)

Suite : Contrôler finement les AI qui spawnent.

 

Par Tropheus - 2003 Copyright © by CaskAmi Prod. Tout droit réservé.

 

Page générée en

Design / concept Amigos3D - Copyright ©2006 CaskAmi Prod. Tous droits réservés.
Caskami.com est hébergé; par Eliott-Ness.