private async Task <Ped[]> SpawnBodyguards(Ped targetPed, int amount) { PedGroup group = new PedGroup(); group.Add(targetPed, true); group.FormationType = FormationType.Default; group.SeparationRange = 1f; RelationshipGroup relationship = World.AddRelationshipGroup("_ASSASSIN_TARGETS"); relationship.SetRelationshipBetweenGroups(new RelationshipGroup(Util.GetHashKey("COP")), Relationship.Respect, true); relationship.SetRelationshipBetweenGroups(new RelationshipGroup(Util.GetHashKey("SECURITY_GUARD")), Relationship.Respect, true); targetPed.RelationshipGroup = relationship; Random random = new Random(); Ped[] bodyguards = new Ped[amount]; for (int i = 0; i < amount; i++) { float x = Util.GetRandomFloat(random, -2, 2); float y = Util.GetRandomFloat(random, -2, 2); Vector3 spawnPos = targetPed.GetOffsetPosition(new Vector3(x, y, 0f)); Ped bodyguard = await Util.CreatePed(PedHash.FibOffice01SMM, spawnPos); bodyguard.Armor = 300; bodyguard.Weapons.Give(WeaponHash.CarbineRifle, int.MaxValue, true, true); bodyguard.RelationshipGroup = new RelationshipGroup(Util.GetHashKey("SECURITY_GUARD")); group.Add(bodyguard, false); bodyguards[i] = bodyguard; } return(bodyguards); }
public static void Recruit(this Ped ped, Ped leader) { if (leader != null) { PedGroup currentPedGroup = leader.CurrentPedGroup; ped.LeaveGroup(); InputArgument[] arguments = new InputArgument[] { ped.Handle, false }; Function.Call(Hash._0xF0A4F1BBF4FA7497, arguments); ped.Task.ClearAll(); currentPedGroup.SeparationRange = 2.147484E+09f; if (!currentPedGroup.Contains(leader)) { currentPedGroup.Add(leader, true); } if (!currentPedGroup.Contains(ped)) { currentPedGroup.Add(ped, false); } ped.IsPersistent = true; ped.RelationshipGroup = leader.RelationshipGroup; ped.NeverLeavesGroup = true; Blip currentBlip = ped.CurrentBlip; if (currentBlip.Type != 0) { currentBlip.Remove(); } Blip blip2 = ped.AddBlip(); blip2.Color = BlipColor.Green; blip2.Scale = 0.65f; blip2.Name = "Group"; PlayerGroup.SetPedTasks(ped, PedTasks.Follow); } }
public static void Recruit(this Ped ped, Ped leader) { if (!(leader == null)) { PedGroup group = leader.CurrentPedGroup; ped.LeaveGroup(); Function.Call(Hash.SET_PED_RAGDOLL_ON_COLLISION, ped.Handle, false); ped.Task.ClearAll(); group.SeparationRange = 2.14748365E+09f; if (!group.Contains(leader)) { group.Add(leader, true); } if (!group.Contains(ped)) { group.Add(ped, false); } ped.IsPersistent = true; ped.RelationshipGroup = leader.RelationshipGroup; ped.NeverLeavesGroup = true; Blip currentBlip = ped.CurrentBlip; if (currentBlip.Type != 0) { currentBlip.Remove(); } Blip blip = ped.AddBlip(); blip.Color = BlipColor.Green; blip.Scale = 0.65f; blip.Name = "Group"; PlayerGroup.SetPedTasks(ped, PedTasks.Follow); } }
public override void SpawnEntities() { int rand = Database.Random.Next(3, 6); Vector3 spawn = GetSpawnPoint(); if (IsValidSpawn(spawn)) { for (int i = 0; i <= rand; i++) { Ped ped = World.CreateRandomPed(spawn.Around(5f)); if (!(ped == null)) { Blip blip = ped.AddBlip(); blip.Color = GTA.BlipColor.Blue; blip.Name = "Friendly"; ped.RelationshipGroup = Relationships.FriendlyRelationship; ped.Task.FightAgainstHatedTargets(9000f); ped.SetAlertness(Alertness.FullyAlert); ped.SetCombatAttributes(CombatAttributes.AlwaysFight, true); ped.Weapons.Give(Database.WeaponHashes[Database.Random.Next(Database.WeaponHashes.Length)], 25, true, true); _pedGroup.Add(ped, i == 0); _pedGroup.FormationType = 0; _peds.Add(ped); EntityEventWrapper eventWrapper = new EntityEventWrapper(ped); eventWrapper.Died += EventWrapperOnDied; eventWrapper.Disposed += EventWrapperOnDisposed; } } UI.Notify("~b~Friendly~s~ survivors nearby.", true); } }
public static void Recruit(this Ped ped, Ped leader, bool canBeTargeted, bool invincible, int accuracy) { if (!(leader == null)) { ped.LeaveGroup(); ped.SetRagdollOnCollision(false); ped.Task.ClearAll(); PedGroup group = leader.CurrentPedGroup; group.SeparationRange = 2.14748365E+09f; if (!group.Contains(leader)) { group.Add(leader, true); } if (!group.Contains(ped)) { group.Add(ped, false); } ped.CanBeTargetted = canBeTargeted; ped.Accuracy = accuracy; ped.IsInvincible = invincible; ped.IsPersistent = true; ped.RelationshipGroup = leader.RelationshipGroup; ped.NeverLeavesGroup = true; Blip currentBlip = ped.CurrentBlip; if (currentBlip.Type != 0) { currentBlip.Remove(); } Blip blip = ped.AddBlip(); blip.Color = GTA.BlipColor.Blue; blip.Scale = 0.7f; blip.Name = "Friend"; EntityEventWrapper wrapper = new EntityEventWrapper(ped); wrapper.Died += delegate(EntityEventWrapper sender, Entity entity) { Blip currentBlip2 = entity.CurrentBlip; if (currentBlip2.Type != 0) { currentBlip2.Remove(); } wrapper.Dispose(); }; ped.PlayAmbientSpeech("GENERIC_HI", SpeechModifier.Standard); } }
public override void SpawnEntities() { Vector3 spawn = GetSpawnPoint(); if (IsValidSpawn(spawn)) { DropType[] dropTypes = (DropType[])Enum.GetValues(typeof(DropType)); DropType randDrop = _dropType = dropTypes[Database.Random.Next(dropTypes.Length)]; string model = (_dropType == DropType.Weapons) ? "prop_mil_crate_01" : "ex_prop_crate_closed_bc"; _prop = World.CreateProp(model, spawn, Vector3.Zero, false, false); if (_prop == null) { Complete(); } else { Vector3 position = _prop.Position; _blip = World.CreateBlip(position.Around(45f), 145f); _blip.Color = GTA.BlipColor.Yellow; _blip.Alpha = 150; _dropZone = _blip.Position; position = _prop.Position; Vector3 particlePos = position.Around(5f); _particle = WorldExtended.CreateParticleEffectAtCoord(particlePos, "exp_grd_flare"); _particle.Color = Color.LightGoldenrodYellow; int rand = Database.Random.Next(3, 6); for (int i = 0; i <= rand; i++) { Vector3 pedSpawn = spawn.Around(10f); PedHash pedHash = _pedHashes[Database.Random.Next(_pedHashes.Length)]; Ped ped = World.CreatePed(pedHash, pedSpawn); if (!(ped == null)) { if (i > 0) { ped.Weapons.Give(_weapons[Database.Random.Next(_weapons.Length)], 45, true, true); } else { ped.Weapons.Give(GTA.Native.WeaponHash.SniperRifle, 15, true, true); } ped.Accuracy = 100; ped.Task.GuardCurrentPosition(); ped.RelationshipGroup = Relationships.MilitiaRelationship; _pedGroup.Add(ped, i == 0); _peds.Add(ped); EntityEventWrapper pedWrapper = new EntityEventWrapper(ped); pedWrapper.Died += PedWrapperOnDied; } } Model val = "mesa3"; position = _prop.Position; World.CreateVehicle(val, World.GetNextPositionOnStreet(position.Around(25f))); UI.Notify(string.Format("~y~Merryweather~s~ {0} drop nearby.", (_dropType == DropType.Loot) ? "loot" : "weapons")); } } }
public static void Recruit(this Ped ped, Ped leader, bool canBeTargeted, bool invincible, int accuracy) { if (Entity.op_Equality((Entity)leader, (Entity)null)) { return; } ped.LeaveGroup(); ped.SetRagdollOnCollision(false); ped.get_Task().ClearAll(); PedGroup currentPedGroup = leader.get_CurrentPedGroup(); currentPedGroup.set_SeparationRange((float)int.MaxValue); if (!currentPedGroup.Contains(leader)) { currentPedGroup.Add(leader, true); } if (!currentPedGroup.Contains(ped)) { currentPedGroup.Add(ped, false); } ped.set_CanBeTargetted(canBeTargeted); ped.set_Accuracy(accuracy); ((Entity)ped).set_IsInvincible(invincible); ((Entity)ped).set_IsPersistent(true); ped.set_RelationshipGroup(leader.get_RelationshipGroup()); ped.set_NeverLeavesGroup(true); ((Entity)ped).get_CurrentBlip()?.Remove(); Blip blip = ((Entity)ped).AddBlip(); blip.set_Color((BlipColor)3); blip.set_Scale(0.7f); blip.set_Name("Friend"); EntityEventWrapper wrapper = new EntityEventWrapper((Entity)ped); wrapper.Died += (EntityEventWrapper.OnDeathEvent)((sender, entity) => { entity.get_CurrentBlip()?.Remove(); wrapper.Dispose(); }); ped.PlayAmbientSpeech("GENERIC_HI", SpeechModifier.Standard); }
public void CreatePedGroup() { if (groupId == 0) { groupId = World.AddRelationshipGroup("EscortGroup"); } target.RelationshipGroup = groupId; PedGroup targetGroup = new PedGroup(); targetGroup.Add(target, true); foreach (Ped bodyGuard in escortPeds) { if (!inVehicle) { targetGroup.Add(bodyGuard, false); } bodyGuard.RelationshipGroup = groupId; Function.Call(Hash.SET_PED_TO_INFORM_RESPECTED_FRIENDS, bodyGuard, 5000, -1); } World.SetRelationshipBetweenGroups(Relationship.Hate, Function.Call <int>(Hash.GET_PLAYER_GROUP, Game.Player), groupId); }
/// <summary> /// Instantiate Heli with parameters. /// </summary> /// <param name="model">Model name of the helicopter to use</param> /// <param name="height">hover _height of the helicopter</param> /// <param name="radius">hover _radius of the helicopter</param> /// <param name="bulletproof">Whether the helicopter is _isBulletproof</param> public SupportHeli(string model, float height, float radius, bool bulletproof, bool spawnFarAway) : base(model, height, radius, bulletproof, spawnFarAway) { // get the player's current PedGroup (or create a new one if player is not in one) leaderPedGroup = _leader.PedGroup; if (leaderPedGroup == null) { leaderPedGroup = new PedGroup(); leaderPedGroup.Add(_leader, true); } leaderPedGroup.SeparationRange = 99999f; leaderPedGroup.Formation = Formation.Circle2; // set the list of seats (based on helicopter _model, but temporarily all the same) seatSelection = new VehicleSeat[] { VehicleSeat.LeftRear, VehicleSeat.RightRear }; }
public override void SpawnEntities() { Vector3 spawn = GetSpawnPoint(); if (IsValidSpawn(spawn)) { Vehicle vehicle = World.CreateVehicle(Database.GetRandomVehicleModel(), spawn, (float)Database.Random.Next(1, 360)); if (vehicle == null) { Complete(); } else { _vehicle = vehicle; Blip vehicleBlip = _vehicle.AddBlip(); vehicleBlip.Name = "Enemy Vehicle"; vehicleBlip.Sprite = GTA.BlipSprite.PersonalVehicleCar; vehicleBlip.Color = GTA.BlipColor.Red; EntityEventWrapper vehicleWrapper = new EntityEventWrapper(_vehicle); vehicleWrapper.Died += VehicleWrapperOnDied; vehicleWrapper.Updated += VehicleWrapperOnUpdated; for (int i = 0; i < vehicle.PassengerSeats + 1; i++) { if (_group.MemberCount < 6 && vehicle.IsSeatFree(GTA.VehicleSeat.Any)) { Ped ped = vehicle.CreateRandomPedOnSeat((i == 0) ? GTA.VehicleSeat.Driver : GTA.VehicleSeat.Any); if (!(ped == null)) { ped.Weapons.Give(Database.WeaponHashes[Database.Random.Next(Database.WeaponHashes.Length)], 25, true, true); ped.SetCombatAttributes(CombatAttributes.AlwaysFight, true); ped.SetAlertness(Alertness.FullyAlert); ped.RelationshipGroup = Relationships.HostileRelationship; _group.Add(ped, i == 0); Blip blip = ped.AddBlip(); blip.Name = "Enemy"; _peds.Add(ped); EntityEventWrapper pedWrapper = new EntityEventWrapper(ped); pedWrapper.Died += PedWrapperOnDied; pedWrapper.Updated += PedWrapperOnUpdated; pedWrapper.Disposed += PedWrapperOnDisposed; } } } UI.Notify("~r~Hostiles~s~ nearby!"); } } }
/// <summary> /// Apply configurations to ground crew /// </summary> /// <param name="crew"><c>Ped</c> to apply configuration to</param> /// <returns><c>true</c> if the specified <c>Ped</c> is in the leader's PedGroup</returns> protected bool configureGroundCrew(Ped crew) { // add to player's PedGroup if there is space leaderPedGroup.Add(crew, false); crew.NeverLeavesGroup = true; // verify that the crew is part of the player's PedGroup if (!crew.IsInGroup) { return(false); } // draw blip crew.AddBlip(); crew.AttachedBlip.Scale = blipScale; crew.AttachedBlip.Color = BlipColor.Green; return(true); }
public static void SurvivorGroupSpawn(Vector3 pos, GroupType groupType = 3, int groupSize = -1, PedTasks pedTasks = 1) { if (groupType == GroupType.Random) { int num = RandoMath.CachedRandom.Next(0, 3); if (num == 0) { groupType = GroupType.Friendly; } if (num == 1) { groupType = GroupType.Neutral; } if (num == 2) { groupType = GroupType.Hostile; } } List <Ped> list = new List <Ped>(); PedGroup group = new PedGroup(); if (groupSize == -1) { groupSize = RandoMath.CachedRandom.Next(3, 9); } int num2 = 0; while (true) { if (num2 >= groupSize) { foreach (Ped ped2 in list) { if (group.MemberCount < 1) { group.Add(ped2, true); continue; } group.Add(ped2, false); } group.FormationType = FormationType.Default; foreach (Ped ped3 in group.ToList(true)) { PlayerGroup.SetPedTasks(ped3, pedTasks); } return; } SurvivorPed ped = SurvivorSpawn(pos); if (groupType == GroupType.Friendly) { ped.pedEntity.RelationshipGroup = Relationships.FriendlyGroup; ped.pedEntity.AddBlip(); ped.pedEntity.CurrentBlip.Color = BlipColor.Blue; ped.pedEntity.CurrentBlip.Scale = 0.65f; ped.pedEntity.CurrentBlip.Name = "Friendly"; } else if (groupType == GroupType.Neutral) { ped.pedEntity.RelationshipGroup = Relationships.NeutralGroup; ped.pedEntity.AddBlip(); ped.pedEntity.CurrentBlip.Color = BlipColor.Yellow; ped.pedEntity.CurrentBlip.Scale = 0.65f; ped.pedEntity.CurrentBlip.Name = "Neutral"; } else if (groupType == GroupType.Hostile) { ped.pedEntity.RelationshipGroup = Relationships.HostileGroup; ped.pedEntity.AddBlip(); ped.pedEntity.CurrentBlip.Color = BlipColor.Red; ped.pedEntity.CurrentBlip.Scale = 0.65f; ped.pedEntity.CurrentBlip.Name = "Hostile"; } list.Add(ped.pedEntity); num2++; } }
public static void SurvivorGroupSpawn(Vector3 pos, GroupType groupType = GroupType.Random, int groupSize = -1, PedTasks pedTasks = PedTasks.Wander) { if (groupType == GroupType.Random) { int rndGroupType = RandoMath.CachedRandom.Next(0, 3); if (rndGroupType == 0) { groupType = GroupType.Friendly; } if (rndGroupType == 1) { groupType = GroupType.Neutral; } if (rndGroupType == 2) { groupType = GroupType.Hostile; } } List <Ped> peds = new List <Ped>(); PedGroup group = new PedGroup(); if (groupSize == -1) { groupSize = RandoMath.CachedRandom.Next(3, 9); } for (int i = 0; i < groupSize; i++) { SurvivorPed sPed = SurvivorSpawn(pos); if (groupType == GroupType.Friendly) { sPed.pedEntity.RelationshipGroup = Relationships.FriendlyGroup; sPed.pedEntity.AddBlip(); sPed.pedEntity.CurrentBlip.Color = BlipColor.Blue; sPed.pedEntity.CurrentBlip.Scale = 0.65f; sPed.pedEntity.CurrentBlip.Name = "Friendly"; } else if (groupType == GroupType.Neutral) { sPed.pedEntity.RelationshipGroup = Relationships.NeutralGroup; sPed.pedEntity.AddBlip(); sPed.pedEntity.CurrentBlip.Color = BlipColor.Yellow; sPed.pedEntity.CurrentBlip.Scale = 0.65f; sPed.pedEntity.CurrentBlip.Name = "Neutral"; } else if (groupType == GroupType.Hostile) { sPed.pedEntity.RelationshipGroup = Relationships.HostileGroup; sPed.pedEntity.AddBlip(); sPed.pedEntity.CurrentBlip.Color = BlipColor.Red; sPed.pedEntity.CurrentBlip.Scale = 0.65f; sPed.pedEntity.CurrentBlip.Name = "Hostile"; } peds.Add(sPed.pedEntity); } foreach (Ped ped in peds) { if (group.MemberCount < 1) { group.Add(ped, true); } else { group.Add(ped, false); } } group.FormationType = 0; List <Ped> groupPeds = group.ToList(true); foreach (Ped ped in groupPeds) { PlayerGroup.SetPedTasks(ped, pedTasks); } }