Rei_anami

Rob People

Sep 26th, 2022
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using GTA;
  2. using GTA.Math;
  3. using GTA.Native;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Windows.Forms;
  7.  
  8.  
  9.  
  10. public class RobPeople : Script
  11. {
  12.     List<Ped> PeopleRobbed = new List<Ped>();
  13.  
  14.  
  15.     int RobMeter;
  16.     Ped RobbbedPed;
  17.     bool RoberyInProgress=false;
  18.     public RobPeople()
  19.     {
  20.         Tick += OnTick;
  21.         KeyDown += OnKeyDown;
  22.         KeyUp += OnKeyUp;
  23.     }
  24.  
  25.     bool IsCop(Ped ped)
  26.     {
  27.         Vector3 pedpos = ped.Position;
  28.         float radius = 0.5f;
  29.         if (ped.IsSittingInVehicle() && CanWeUse(ped.CurrentVehicle)) radius = (ped.CurrentVehicle.Model.GetDimensions().X) / 2;
  30.         return Function.Call<bool>(Hash.IS_COP_PED_IN_AREA_3D, pedpos.X + radius, pedpos.Y + radius, pedpos.Z + radius, pedpos.X - radius, pedpos.Y - radius, ped.Position.Z - radius);
  31.     }
  32.  
  33.     void OnTick(object sender, EventArgs e)
  34.     {
  35.  
  36.         if (RoberyInProgress)
  37.         {
  38.             if (CanWeUse(RobbbedPed))
  39.             {
  40.                 if (RobbbedPed.IsDead || !RobbbedPed.IsInRangeOf(Game.Player.Character.Position, 50f))
  41.                 {
  42.                     RoberyInProgress = false;
  43.                     RobMeter = 0;
  44.                 }
  45.             }
  46.             else
  47.             {
  48.                 RoberyInProgress = false;
  49.                 RobMeter = 0;
  50.             }
  51.         }
  52.  
  53.  
  54.         Entity victim = Game.Player.GetTargetedEntity();
  55.         if (CanWeUse(victim) && Function.Call<bool>(Hash.IS_ENTITY_A_PED, victim))
  56.         {
  57.             Ped ped = victim as Ped;
  58.  
  59.             if (ped.IsInRangeOf(Game.Player.Character.Position,20f) && ped.Model != PedHash.ShopKeep01 && !IsPedInList(ped, PeopleRobbed) && (RoberyInProgress || IsThisEntityAheadThatEntity(Game.Player.Character,ped))
  60.                 && ped.IsOnFoot && !IsCop(ped) && !ped.IsRagdoll && ped.IsAlive && !ped.IsInjured && ped.Weapons.Current.Hash == WeaponHash.Unarmed)
  61.             {                
  62.                 if ((!CanWeUse(RobbbedPed) || RobbbedPed.Handle != ped.Handle) && !RoberyInProgress)
  63.                 {
  64.                     RoberyInProgress = true;
  65.                     RobbbedPed = ped;
  66.                     ped.AlwaysKeepTask = true;
  67.                     ped.Task.ClearAll();
  68.                     TaskSequence RaceSequence = new TaskSequence();
  69.                     ped.Task.TurnTo(Game.Player.Character,300);
  70.                     ped.Task.HandsUp(10000);
  71.                     RaceSequence.Close();
  72.                     ped.Task.PerformSequence(RaceSequence);
  73.                     RaceSequence.Dispose();
  74.                     ped.BlockPermanentEvents = true;
  75.                     Function.Call(GTA.Native.Hash._PLAY_AMBIENT_SPEECH1, Game.Player.Character.Handle, "Generic_Insult_High", "Speech_Params_Force");
  76.                 }
  77.                 else
  78.                 {
  79.                     Function.Call(Hash.UPDATE_TASK_HANDS_UP_DURATION, ped, 5000);
  80.                     RobMeter++;
  81.                 }
  82.  
  83.                 if (RobMeter > 100)
  84.                 {
  85.                     RobMeter = 0;
  86.                     PeopleRobbed.Add(ped);
  87.                     Function.Call(GTA.Native.Hash._PLAY_AMBIENT_SPEECH1, ped.Handle, "GENERIC_FRIGHTENED_MED", "SPEECH_PARAMS_FORCE_SHOUTED_CRITICAL");
  88.                     ped.Task.FleeFrom(Game.Player.Character,-1);
  89.                     int money = ped.Money;
  90.                     if (money < 10) money = RandomInt(50, 100);
  91.                     World.CreateAmbientPickup(PickupType.MoneyCase, ped.Position + ped.ForwardVector * 0.5f, "prop_ld_wallet_01", money);
  92.                     RoberyInProgress = false;
  93.                 }
  94.             }
  95.         }
  96.         if (PeopleRobbed.Count > 20) PeopleRobbed.RemoveAt(0);
  97.     }
  98.  
  99.  
  100.     void OnKeyDown(object sender, KeyEventArgs e)
  101.     {
  102.  
  103.     }
  104.     void OnKeyUp(object sender, KeyEventArgs e)
  105.     {
  106.  
  107.     }
  108.  
  109.     bool IsCopNearby(Vector3 pos, float radius)
  110.     {
  111.         return Function.Call<bool>(Hash.IS_COP_PED_IN_AREA_3D, pos.X + radius, pos.Y + radius, pos.Z + radius, pos.X - radius, pos.Y - radius, pos.Z - radius);
  112.     }
  113.  
  114.     int RandomInt(int min, int max)
  115.     {
  116.         max++;
  117.         return Function.Call<int>(GTA.Native.Hash.GET_RANDOM_INT_IN_RANGE, min, max);
  118.     }
  119.     bool IsThisEntityAheadThatEntity(Entity ent1, Entity ent2)
  120.     {
  121.         Vector3 pos = ent1.Position;
  122.  
  123.         return Function.Call<Vector3>(Hash.GET_OFFSET_FROM_ENTITY_GIVEN_WORLD_COORDS, ent2, pos.X, pos.Y, pos.Z).Y > 0f;
  124.     }
  125.  
  126.     void DisplayHelpTextThisFrame(string text)
  127.     {
  128.         Function.Call(Hash._SET_TEXT_COMPONENT_FORMAT, "STRING");
  129.         Function.Call(Hash._ADD_TEXT_COMPONENT_STRING, text);
  130.         Function.Call(Hash._DISPLAY_HELP_TEXT_FROM_STRING_LABEL, 0, 0, 0, -1);
  131.     }
  132.  
  133.  
  134.     bool CanWeUse(Entity entity)
  135.     {
  136.         return entity != null && entity.Exists();
  137.     }
  138.     bool IsPedInList(Ped ped, List<Ped> list)
  139.     {
  140.         foreach (Ped man in list)
  141.         {
  142.             if (man.Handle == ped.Handle)
  143.             {
  144.                 return true;
  145.             }
  146.         }
  147.         return false;
  148.     }
  149.  
  150. }
Add Comment
Please, Sign In to add comment