Map à objectif (Tuer l'officier allemand).

retour au sommaire

1/ Mapping

Créez une map assez grande (512 X 512 semble être un minimum.( Placez-y comme d'habitude (woldspawn, textures, etc...). Positionnez votre info_player_start dans le coin en bas au gauche. Dans le coin en haut à droite nous allons mettre notre cible (l'officier allemand). Pour cela, dans la vue 2D vous allez faire ceci : clic-droit_ai_german_wehrmact_officer.
En gardant votre entité sélectionnée, donnez lui les key et value suivantes : $targetname / officier
Pour vous montrez que je ne dis pas que des bêtises, vous allez placez un autre soldat allemand dans le coin en bas à droite. Ici pareil, vous allez faire ceci : clic-droit_ai_german_winter_type1.
En gardant votre entité sélectionnée, donnez lui les key et value suivantes : $targetname / soldat (cette étape n'est pas essentielle).
Au final vous devez avoir quelque chose comme ceci.


Donnez votre nom à la map ici "test_officier" et fermez Radiant, le mapping est terminé.

2/ Scripting.

Ouvrez notepad ou une autre éditeur de texte et tapez ceci :

//tuer l'officier allemand.
//architecture:Tropheus
//script:Tropheus inspiré de mohaa_rox du site ".map for medal of honor"

main:
      exec global/ai.scr
      exec global/loadout.scr maps/test_officier.scr
      level waittill prespawn

            exec global/ambient.scr test_officier

      level waittill spawn

            $player item weapons/springfield.tik
            $player item weapons/thompsonsmg.tik

            $player ammo rifle 200
            $player ammo smg 200

      level.script = "maps/test_officier.scr"

            thread objectives
end
//////////////////////////////////////////////////////////////////////////////////////////////////

objectives:
            waitthread global/objectives.scr::add_objectives 1 2 "Tuer l'officier." $officier.origin
            set_objective_pos $officier
            thread objective1
end
//////////////////////////////////////////////////////////////////////////////////////////////////
objective1:

            waitthread global/objectives.scr::current_objectives 1
            iprintln "Tuer l'officier."
            if (IsAlive $officier)
            $officier waittill death
            thread levelend
end
//////////////////////////////////////////////////////////////////////////////////////////////////
levelend:

            waitthread global/objectives.scr::add_objectives 1 0 "Tuer l'officier." $officier.origin
            waitthread global/objectives.scr::current_objectives 0
            iprintln "Mission complete"
            exec global/missioncomplete.scr test_officier

end

Bon je vous mets quelques explications pour les nouveautés, pour les bases allez voir ici

//tuer l'officier allemand.
//architecture:Tropheus
//script:Tropheus inspiré de Mohaa_rox du site ".map for medal of honor"

main:
exec global/ai.scr
exec global/loadout.scr maps/test_officier.scr
level waittill prespawn

exec global/ambient.scr test_officier

level waittill spawn

$player item weapons/springfield.tik
$player item weapons/thompsonsmg.tik

$player ammo rifle 200
$player ammo smg 200

level.script = "maps/test_officier.scr"

thread objectives//envoie sur le premier objectif qui consiste en l'affichage du texte (touche tab) et direction du compas.
end
/////////////////

objectives:
waitthread global/objectives.scr::add_objectives 1 2 "Tuer l'officier." $officier.origin//définit l'objectif (touche tab) et "l'origin" qui sera visée par le compas.
set_objective_pos $officier//dirige le compas vers l'officier
thread objective1//envoie vers la partie du script qui définir la condition pour gagner la partie.
end
/////////////////
objective1:

waitthread global/objectives.scr::current_objectives 1
iprintln "Tuer l'officier."//affiche l'objectif sur l'écran
if (IsAlive $officier)//ici, le"if" implique une condition qui sera activée dans mohaa.
$officier waittill death//Si l'officier allemand meurt, on est envoyé sur le "levelend"
thread levelend
end
////////////////////////
levelend:

waitthread global/objectives.scr::add_objectives 1 0 "Tuer l'officier." $officier.origin
waitthread global/objectives.scr::current_objectives 0//purge les objectifs.
iprintln "Mission complete"
exec global/missioncomplete.scr test_officier//on retourne faire la map

end

Vous enregistrez le tout sous "test_officier.scr" et le tour est jouer. Il ne vous reste plus qu'à compiler et à jouer.
D'ailleurs, je vous propose de tuer le soldat avant de tuer l'officier vous verrez que ce n'est qu'à cette condition que le jeu s'arrête.

Télécharger le pk3.

Ce tutorial est largement inspiré de celui de mohaa_rox "assassination" du site ".map for medal of honor".

Tropheus