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 :
- Initialiser une mission de livraison de colis à la demande via un raccourci clavier (
F7). - Créer une icône radar interactive avec tracé GPS dynamique traversant Los Santos.
- Afficher un marqueur 3D cylindrique vertical au sol aux coordonnées cibles à chaque frame active.
- Évaluer trois issues distinctes : victoire à l'arrivée, défaite par élimination du joueur et abandon par fuite hors zone.
- Verser une récompense financière unique strictement verrouillée (500 $) sur
Game.Player.Moneyà l'arrivée. - 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.DrawMarkerdansOnTick, car les marqueurs 3D du moteur ne durent qu'une seule frame. - Guidage GPS actif : assigner
_targetBlip.ShowRoute = truepour 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
_rewardGivenpour 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é dansOnAbortedpour ne pas souiller la carte de pause.
Étapes de réalisation
- Déclarer l'état de la mission : définis des champs pour
_targetBlip,_targetPosition,_rewardGivenet_missionActive. - Brancher les événements : dans le constructeur, enregistre des gestionnaires pour
KeyDown,TicketAborted. - Intercepter le lancement : dans
OnKeyDown, associe la toucheKeys.F7à l'appel deStartMission(). - Initialiser l'objectif : dans
StartMission, réinitialise l'état antérieur, instancie le blip jaune, activeShowRoute = true, réinitialise les drapeaux et affiche un sous-titre d'instruction. - Surveiller la mission dans
OnTick:- Vérifier si
_missionActiveest 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().
- Vérifier si
- 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. - Bâtir le nettoyage : dans
CleanUp, supprimer_targetBlips'il existe et passer_missionActive = false. AppelerCleanUpdansOnAborted.
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
F7suivi 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
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.