Gaming Zone Communautes Battlefield PiTrust Communautes Mods

Tuer un ou plusieurs allemands. (COD et CODUO)
utilisation de l'opérateur de contrôle "FOR".

Retour sommaire.

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