SHARE
TWEET

MissionExample (Hitman)

Eddlm Oct 22nd, 2017 (edited) 153 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     bool MissionIsRunning = false;
  2.     Vector3 MissionTrigger = Vector3.Zero;
  3.  
  4.     int EnemyRLGroup = World.AddRelationshipGroup("enemies");
  5.     List<Ped> Guards = new List<Ped>(); //The list of peds that will guard the Target ped.
  6.     Ped Target = null; //The target ped itself.
  7.     Ped Companion = null; //Your companion.
  8.     int Reward = 5000;
  9.     Vector3 Location = Vector3.Zero;
  10.  
  11.     void OnTick(object sender, EventArgs e)
  12.     {
  13.         if (MissionIsRunning)
  14.         {
  15.             HandleMission();
  16.         }
  17.         else
  18.         {
  19.             if (Game.Player.Character.IsInRangeOf(MissionTrigger, 2f))
  20.             {
  21.                 SetupMission();
  22.             }
  23.         }
  24.     }
  25.  
  26.     void SetupMission()
  27.     {
  28.         //Set relationships
  29.         World.SetRelationshipBetweenGroups(Relationship.Hate, Game.GenerateHash("PLAYER"), EnemyRLGroup);
  30.         World.SetRelationshipBetweenGroups(Relationship.Hate, EnemyRLGroup, Game.GenerateHash("PLAYER"));
  31.  
  32.         //Create the Target
  33.         Target = World.CreateRandomPed(Location);
  34.  
  35.         Target.AlwaysKeepTask = true;
  36.         Target.RelationshipGroup = EnemyRLGroup;
  37.         Target.Weapons.Give(WeaponHash.Bat, -1, true, true);
  38.         Target.Task.WanderAround(Location, 4f);
  39.  
  40.  
  41.         //Create the Guards
  42.         int NumberOfGuards = 4;
  43.         for (int i = 0; i < NumberOfGuards; i++)
  44.         {
  45.             Ped p = World.CreateRandomPed(Location.Around(3));
  46.  
  47.             p.AlwaysKeepTask = true;
  48.             p.RelationshipGroup = EnemyRLGroup;
  49.             p.Weapons.Give(WeaponHash.Pistol, 90, true, true);
  50.             p.Task.WanderAround(Location, 5f);
  51.    
  52.             Guards.Add(p);
  53.         }
  54.  
  55.         //Create the companion
  56.         Companion = World.CreateRandomPed(Game.Player.Character.Position.Around(3f));
  57.         Companion.AlwaysKeepTask = true;
  58.         Companion.RelationshipGroup = Game.GenerateHash("PLAYER");
  59.         Companion.Task.FollowToOffsetFromEntity(Game.Player.Character, Game.Player.Character.ForwardVector * -1, 2f, -1, 2f, true); //Make the companion follow the player
  60.  
  61.         UI.ShowSubtitle("~b~[Contact]~w~: Kill the guy located in "+World.GetStreetName(Location)+".", 6000);
  62.         MissionIsRunning = true;
  63.     }
  64.     void HandleMission()
  65.     {
  66.         //Win conditions
  67.         if (Target.IsDead)
  68.         {          
  69.             Game.Player.Money += Reward;
  70.             UI.Notify("~g~Mission completed.");
  71.             CleanMissionEntities();
  72.             MissionIsRunning = false;
  73.             return;
  74.         }
  75.  
  76.         //Fail conditions
  77.         if (Game.Player.IsDead)
  78.         {
  79.             UI.Notify("~r~Mission failed.");
  80.             CleanMissionEntities();
  81.             MissionIsRunning = false;
  82.             return;
  83.         }
  84.  
  85.         //^ We always RETURN whenever the mission has ended, to make sure the mission doesn't get processed anymore.
  86.         //If you won/failed, there's no point if checking anything mission-specific anymore.
  87.  
  88.  
  89.    //Handle the entities
  90.         //Teleport the companion near the player if its too far away (lost)
  91.         if (Companion.Exists() && Companion.IsAlive && Companion.IsInRangeOf(Game.Player.Character.Position, 50f))
  92.         {
  93.             Companion.Position = Game.Player.Character.Position.Around(2f);
  94.         }
  95.  
  96.         //For the sake of examples, we'll make an excuse to handle the target, make them flee if you're nearby and armed with an RPG.        
  97.         if(!Target.IsFleeing && Game.Player.Character.IsInRangeOf(Target.Position, 40f) && Game.Player.Character.Weapons.Current.Hash == WeaponHash.RPG)
  98.         {
  99.             //This bit only will be applied if the target is NOT fleeing yet, and because we task them to flee, "IsFleeing" will remain true forever, preventing this from triggering again.
  100.             //So we can put here stuff that will only happen ONCE, when the Target starts fleeing.
  101.             //Like a subtitle emulating the Target's vocal reaction.
  102.  
  103.             UI.ShowSubtitle("~r~[Target]:~w~ WHAT THE FUCK, DUDE", 3000);
  104.             Target.Task.FleeFrom(Game.Player.Character, -1);
  105.         }
  106.     }
  107.  
  108. //This function will make sure all entities are removed from your control, and left to be despawned by the game.
  109. //You can force an immediate deletion by replacing 'MarkAsNoLongerNeeded()' with 'Delete()'.
  110.     void CleanMissionEntities()
  111.     {
  112.         if (Target.Exists()) Target.MarkAsNoLongerNeeded();
  113.  
  114.         foreach (Ped p in Guards)
  115.         {
  116.             if (p.Exists()) p.MarkAsNoLongerNeeded();
  117.         }
  118.  
  119.         if (Companion.Exists()) Companion.MarkAsNoLongerNeeded();
  120.     }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top