Aller au contenu principal

Projet 07 : Simple mission

Dans le Projet 06, tu as créé une rencontre d'ambiance non dirigée. Dans le Projet 07, tu conçois ta première véritable mission scénarisée : rejoindre un point de livraison à travers la ville sans mourir en chemin. Tu vas guider le joueur avec des icônes radar, dessiner des marqueurs 3D au sol, gérer les sous-titres d'objectifs, traiter les échecs et abandons avec rigueur et attribuer une récompense financière unique à l'arrivée.


La mission

Concevoir une mission scénarisée complète remplissant six objectifs majeurs :

  1. Initialiser une mission de livraison de colis à la demande via un raccourci clavier (F7).
  2. Créer une icône radar interactive avec tracé GPS dynamique traversant Los Santos.
  3. Afficher un marqueur 3D cylindrique vertical au sol aux coordonnées cibles à chaque frame active.
  4. Évaluer trois issues distinctes : victoire à l'arrivée, défaite par élimination du joueur et abandon par fuite hors zone.
  5. Verser une récompense financière unique strictement verrouillée (500 $) sur Game.Player.Money à l'arrivée.
  6. Supprimer le repère radar et les éléments graphiques dès la fin de la mission ou lors du rechargement.

Spécifications, contraintes

  • Rendu du marqueur à chaque frame : appeler impérativement World.DrawMarker dans OnTick, car les marqueurs 3D du moteur ne durent qu'une seule frame.
  • Guidage GPS actif : assigner _targetBlip.ShowRoute = true pour afficher le ruban d'itinéraire violet sur la mini-carte.
  • Trois issues mutuellement exclusives : gérer l'arrivée (distance < 2,5 m), la mort du joueur (player.IsDead) et l'abandon par éloignement (distance > 500 m).
  • Verrouillage du versement unique : sécuriser la récompense avec un drapeau _rewardGiven pour qu'un joueur restant dans le cercle ne perçoive pas 500 $ à chaque frame.
  • Zéro repère orphelin : s'assurer que _targetBlip.Delete() est systématiquement appelé dans OnAborted pour ne pas souiller la carte de pause.

Étapes de réalisation

  1. Déclarer l'état de la mission : définis des champs pour _targetBlip, _targetPosition, _rewardGiven et _missionActive.
  2. Brancher les événements : dans le constructeur, enregistre des gestionnaires pour KeyDown, Tick et Aborted.
  3. Intercepter le lancement : dans OnKeyDown, associe la touche Keys.F7 à l'appel de StartMission().
  4. Initialiser l'objectif : dans StartMission, réinitialise l'état antérieur, instancie le blip jaune, active ShowRoute = true, réinitialise les drapeaux et affiche un sous-titre d'instruction.
  5. Surveiller la mission dans OnTick :
    • Vérifier si _missionActive est vrai et si le joueur existe.
    • Si player.IsDead, annoncer l'échec, nettoyer et interrompre.
    • Si la distance dépasse 500 mètres, annoncer l'abandon, nettoyer et interrompre.
    • Dessiner le cylindre vertical au sol avec World.DrawMarker.
    • Si la distance est inférieure à 2,5 mètres, appeler CompleteMission().
  6. Programmer la victoire : dans CompleteMission, vérifier !_rewardGiven, créditer 500 $ au joueur, afficher le sous-titre de succès et nettoyer la scène.
  7. Bâtir le nettoyage : dans CleanUp, supprimer _targetBlip s'il existe et passer _missionActive = false. Appeler CleanUp dans OnAborted.

APIs, outils à explorer

  • GTA.Blip : classe représentant les icônes de la mini-carte et de la carte de pause.
  • GTA.World.CreateBlip(Vector3 position) : fait apparaître une icône interactive sur le radar aux coordonnées données.
  • Blip.ShowRoute : propriété booléenne activant le calcul de l'itinéraire routier GPS en temps réel.
  • GTA.World.DrawMarker(MarkerType type, Vector3 pos, Vector3 dir, Vector3 rot, Vector3 scale, Color color) : effectue un rendu graphique immédiat de forme 3D dans le monde de jeu.
  • Game.Player.Money : propriété native accédant au solde bancaire et au portefeuille du protagoniste actif.

Critères de validation

Ton mod est validé dès que :

  • Appui sur F7 : un blip jaune avec tracé GPS apparaît sur le radar et un cylindre jaune s'affiche au sol sur la route.
  • Traversée du cylindre : un sous-titre vert annonce la réussite, 500 $ sont crédités une seule fois, et le blip disparaît.
  • Appui sur F7 suivi d'une élimination par des ennemis : une notification annonce l'échec, le blip est effacé et aucun dollar n'est versé.
  • Éloignement à plus de 500 mètres : un message d'abandon s'affiche et la mission se réinitialise proprement.
  • Rechargement avec Inser : le repère est immédiatement supprimé du radar et de la carte de pause.

Solution, explications

Partner
Solution vérifiée et explications du code

Le sujet, les contraintes et les étapes de réalisation restent 100% libres pour t'exercer par toi-même. Le code source de référence vérifié et les explications détaillées de production sont réservés aux membres du tier Partner.