Tuer un ou plusieurs allemands.
(COD et CODUO)
utilisation de l'opérateur de contrôle "FOR".
Les objectifs de ce tuto sont de vous présenter une map à 2 objectifs et de vous expliquer l'utilisation de l'opérateur de controle "FOR".. Dans un premier temps tuer un seul soldat, et lorsque ceci est fait tuer 2 soldats. Vous verrez qu'au niveau mapping rien de bien sorcier et qu'au niveau script juste une petite modification permet de réaliser ces deux objectifs.
1/ Mapping.
a) soldat seul
Créez votre map comme vous
en avez l'habitude. Placer tout d'abord un axe (clic-droit en vue 2D/actor/choix
du soldat) auquel vous donnerez les key / value.
targetname / fin // ou tout ce que vous voulez.
b) plusieurs soldats.
Dans ce cas faites juste comme au-dessus, mais placez 2 soldats
au lieu d'un seul. Donner leur le même targetname.
ici j'ai choisi "dos".
targetname / dos //ou tout ce que vous voulez.
Voila le mapping est terminé.
2/ Scripting.
a) le fichier gsc.
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();
}
////////Tuer un allemand.///////////////////////
objectif1()
{
objective_add(1,"active",&"TUER_ENNEMI_OBJ1",getent("fin","targetname").origin);
objective_current(1);
fin = getent("fin","targetname");
fin waittill("death");
objective_state(1,"done");
thread objectif2();
}
////////Tuer plusieurs allemands.///////////////////////
objectif2()
{
objective_add(1,"active",&"TUER_ENNEMI_OBJ2",getent("dos_org","targetname").origin);
objective_current(1);
dos = getentarray("dos","targetname");
for (i=0; i<dos.size; i++)
if (isalive(dos[i]))
{
dos[i] waittill("death");
}
missionsuccess("tuer_ennemi",true);
}
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();//envoie vers l'objectif1
}
////////Tuer un allemand.///////////////////////
objectif1()
{
objective_add(1,"active",&"TUER_ENNEMI_OBJ1",getent("fin","targetname").origin); //ajout de l'objectif 1 ici !e compas pointe sur l'Axe.
objective_current(1);
fin = getent("fin","targetname"); //on prend "fin" comme "mot" (variable) pour pouvoir le travailler dans le script.
fin waittill("death"); //on attend qu'il meure.
objective_state(1,"done"); //on dit
que l'objectif est accompli c'est a dire que le soldat est mort.
thread objectif2(); / / envoie vers l'objectif 2
}
////////Tuer plusieurs allemands.///////////////////////
objectif2()
{
objective_add(1,"active",&"TUER_ENNEMI_OBJ2",getent("dos_org","targetname").origin);
objective_current(1);
dos_tab
= getentarray("dos","targetname");//on
désigne par "dos_tab" le tableau dont les éléments
ont tous comme "targetname"
"dos" sur la map.
Ici on va utiliser la commande de condition "for", combinée à la commande
"if".
Décriptage de "for", cela veut dire que tant que i<dos-tab.size
le jeu execute les
lignes, puis revient vérifier la condition.
Ici "i" est un index qui permet de désigner n'importe quel élément
du tableau.
i=0 ==> 0 est la valeur de départ de i
i<dos_tab.size (dos_tab.size= la taille du tableau (nb de cases) ici 2) "i"
plus
petit
que la taille du tableau.
i++ incrémentation de "i" à chaque passage.
for (i=0; i<dos_tab.size; i++)//tant que "i" sera plus petit que la taille
du tableau (2) on executera les lignes de commande ssuivantes.
if (isalive(dos_tab[i]))//si un des éléments du tableau
est encore vivant on passe à la suite.
dos_tab[i] correspond en fait à quelque soit l'élément du tableau .
{
dos_tab[i] waittill("death");//on attend qu'un élément du tableau
meurt.
}
missionsuccess("tuer_ennemi",true);//si plus
aucun ennemi est vivant on désigne la fin de la mission.
}
voici pour la partie gsc.
b) le fichier str
Dans le dossier "localizedstrings" créez un dossier "french" puis dans ce dossier placez le fichier .str avec la même nom que votre map dont voici le contenu.
REFERENCE OBJ1
LANG_FRENCH "Tuer l'allemand."
REFERENCE OBJ2
LANG_FRENCH "Tuer les allemands."
ENDMARKER
Téléchargez l'exemple fait uniquement pour CODUO.
Tutorial créé par Tropheus.
Pour CaskAmiProd
et MohaaScriptLib
by Tropheus©
juin 2005