public bool IsCreatedIn(float radius, List <string> selectedModels) { if (relationship == 0 || selectedModels == null) { return(false); } Vector3 safePosition = Util.GetSafePositionIn(radius); if (safePosition.Equals(Vector3.Zero)) { Logger.Error("Driveby: Couldn't find safe position. Abort.", name); return(false); } for (int cnt = 0; cnt < 5; cnt++) { Road road = Util.GetNextPositionOnStreetWithHeading(safePosition.Around(50.0f)); if (road != null) { Logger.Write(false, "Driveby: Found proper road.", name); spawnedVehicle = Util.Create(name, road.Position, road.Heading, true); if (!Util.ThereIs(spawnedVehicle)) { Logger.Write(false, "Driveby: Couldn't create vehicle. Abort.", name); Restore(true); continue; } else if (spawnedVehicle.PassengerSeats < 1) { Logger.Write(false, "Driveby: Passenger seats are needed but there isn't.", name); Restore(true); return(false); } Logger.Write(false, "Driveby: Created vehicle successfully.", name); List <WeaponHash> drivebyWeaponList = new List <WeaponHash> { WeaponHash.MicroSMG, WeaponHash.Pistol, WeaponHash.APPistol, WeaponHash.CombatPistol, WeaponHash.MachinePistol, WeaponHash.MiniSMG, WeaponHash.Revolver, WeaponHash.RevolverMk2, WeaponHash.DoubleActionRevolver }; Util.Tune(spawnedVehicle, false, (Util.GetRandomIntBelow(3) == 1), false); for (int i = -1; i < spawnedVehicle.PassengerSeats; i++) { if (spawnedVehicle.IsSeatFree((VehicleSeat)i)) { members.Add(spawnedVehicle.CreatePedOnSeat((VehicleSeat)i, selectedModels[Util.GetRandomIntBelow(selectedModels.Count)])); Script.Wait(50); } } Logger.Write(false, "Driveby: Tuned vehicle and created members.", name); if (members.Find(p => !Util.ThereIs(p)) != null) { Logger.Write(false, "Driveby: There is a member who doesn't exist.", name); Restore(true); continue; } foreach (Ped p in members) { Util.SetCombatAttributesOf(p); Function.Call(Hash.SET_DRIVER_ABILITY, p, 1.0f); Function.Call(Hash.SET_DRIVER_AGGRESSIVENESS, p, 1.0f); p.AlwaysKeepTask = true; p.BlockPermanentEvents = true; p.Weapons.Give(drivebyWeaponList[Util.GetRandomIntBelow(drivebyWeaponList.Count)], 100, true, true); p.Weapons.Current.InfiniteAmmo = true; p.ShootRate = 1000; p.RelationshipGroup = relationship; p.IsPriorityTargetForEnemies = true; p.FiringPattern = FiringPattern.BurstFireDriveby; Logger.Write(false, "Driveby: Characteristics are set.", name); } if (SpawnedPedExistsIn(members)) { Logger.Write(false, "Driveby: Created driveby successfully.", name); blipName = VehicleInfo.GetNameOf(spawnedVehicle.Model.Hash); return(true); } else { Logger.Write(false, "Driveby: Driver doesn't exist.", name); Restore(true); } } } Logger.Error("Driveby: Couldn't find proper road. Abort.", name); return(false); }
public bool IsCreatedIn(float radius, Road road) { if (relationship == 0 || road.Position.Equals(Vector3.Zero)) { return(false); } spawnedVehicle = Util.Create(name, road.Position, road.Heading, true); if (!Util.ThereIs(spawnedVehicle)) { Logger.Error("Racer: Couldn't create vehicle. Abort.", name); return(false); } spawnedPed = spawnedVehicle.CreateRandomPedOnSeat(VehicleSeat.Driver); if (!Util.ThereIs(spawnedPed)) { Logger.Error("Racer: Couldn't create driver. Abort.", name); spawnedVehicle.Delete(); return(false); } Logger.Write(false, "Racer: Created vehicle and driver successfully.", name); Script.Wait(50); Function.Call(Hash.SET_DRIVER_ABILITY, spawnedPed, 1.0f); Function.Call(Hash.SET_DRIVER_AGGRESSIVENESS, spawnedPed, 1.0f); SetExhausts(); Util.Tune(spawnedVehicle, true, true, true); Logger.Write(false, "Racer: Tuned racer vehicle.", name); spawnedPed.RelationshipGroup = relationship; spawnedPed.IsPriorityTargetForEnemies = true; spawnedPed.AlwaysKeepTask = true; spawnedPed.BlockPermanentEvents = true; Logger.Write(false, "Racer: Characteristics are set.", name); if (Util.BlipIsOn(spawnedPed)) { Logger.Error("Racer: Blip is already on racer. Abort.", name); Restore(true); return(false); } else { if (!spawnedVehicle.Model.IsCar && !spawnedPed.IsWearingHelmet) { spawnedPed.GiveHelmet(false, HelmetType.RegularMotorcycleHelmet, 4096); } TaskSequence ts = new TaskSequence(); ts.AddTask.DriveTo(spawnedVehicle, goal, 10.0f, 100.0f, 262692); // 4 + 32 + 512 + 262144 ts.AddTask.Wait(10000); ts.AddTask.CruiseWithVehicle(spawnedVehicle, 100.0f, 262692); // 4 + 32 + 512 + 262144 ts.Close(); spawnedPed.Task.PerformSequence(ts); ts.Dispose(); Logger.Write(false, "Racer: Created racer successfully.", name); blipName += VehicleInfo.GetNameOf(spawnedVehicle.Model.Hash); return(true); } }
public bool IsCreatedIn(float radius) { Vehicle[] nearbyVehicles = World.GetNearbyVehicles(Game.Player.Character.Position, radius); if (nearbyVehicles.Length < 1) { Logger.Error("ReplacedVehicle: There is no vehicle near. Abort.", name); return(false); } for (int trycount = 0; trycount < 5; trycount++) { Vehicle selectedVehicle = nearbyVehicles[Util.GetRandomIntBelow(nearbyVehicles.Length)]; if (Util.WeCanReplace(selectedVehicle) && !selectedVehicle.IsPersistent && !selectedVehicle.IsAttached() && !Util.ThereIs(selectedVehicle.GetEntityAttachedTo()) && Util.SomethingIsBetweenPlayerAnd(selectedVehicle)) { Logger.Write(false, "ReplacedVehicle: Replaceable vehicle found.", name); Vector3 selectedPosition = selectedVehicle.Position; float selectedHeading = selectedVehicle.Heading; float selectedSpeed = selectedVehicle.Speed; bool driverIsNeeded = Util.ThereIs(selectedVehicle.Driver); string blipName; BlipColor blipColor; selectedVehicle.Delete(); spawnedVehicle = Util.Create(name, selectedPosition, selectedHeading, true); if (!Util.ThereIs(spawnedVehicle)) { Logger.Write(false, "ReplacedVehicle: Couldn't create selected vehicle. Abort.", name); Restore(true); continue; } Logger.Write(false, "ReplacedVehicle: Created vehicle.", name); if (driverIsNeeded) { spawnedPed = spawnedVehicle.CreateRandomPedOnSeat(VehicleSeat.Driver); if (Util.ThereIs(spawnedPed)) { Script.Wait(50); spawnedVehicle.EngineRunning = true; spawnedVehicle.Speed = selectedSpeed; spawnedPed.RelationshipGroup = Function.Call <int>(Hash.GET_HASH_KEY, "CIV" + spawnedPed.Gender.ToString().ToUpper()); spawnedPed.Task.CruiseWithVehicle(spawnedVehicle, 20.0f, (int)DrivingStyle.Normal); spawnedPed.MarkAsNoLongerNeeded(); Logger.Write(false, "ReplacedVehicle: Created driver.", name); } else { Logger.Write(false, "ReplacedVehicle: Couldn't create driver in replacing vehicle.", name); } } if (Util.GetRandomIntBelow(3) == 1) { blipName = "Tuned "; blipColor = BlipColor.Blue; Util.Tune(spawnedVehicle, Util.GetRandomIntBelow(2) == 1, Util.GetRandomIntBelow(2) == 1, false); Logger.Write(false, "ReplacedVehicle: Tune replacing vehicle.", name); } else { blipName = ""; blipColor = BlipColor.White; Logger.Write(false, "ReplacedVehicle: Remain stock replacing vehicle.", name); } if (Util.BlipIsOn(spawnedVehicle)) { Logger.Error("ReplacedVehicle: Blip is already on replacing vehicle. Abort.", name); Restore(true); } else { Util.AddBlipOn(spawnedVehicle, 0.7f, BlipSprite.PersonalVehicleCar, blipColor, blipName + VehicleInfo.GetNameOf(spawnedVehicle.Model.Hash)); Logger.Write(false, "ReplacedVehicle: Create replacing vehicle successfully.", name); return(true); } } } Restore(true); return(false); }