public static void LoadPedFromPedData(PedData pedData) { Ped ped = World.CreatePed(pedData.Hash, pedData.Position); SurvivorPed item = new SurvivorPed(ped); Population.survivorList.Add(item); if (ped != null) { ped.Rotation = pedData.Rotation; pedData.Weapons.ForEach(w => ped.Weapons.Give(w.Hash, w.Ammo, true, true)); pedData.Handle = ped.Handle; ped.Recruit(Game.Player.Character); SetPedTasks(ped, pedData.Task); } }
public static SurvivorPed SurvivorSpawn(Vector3 pos) { Ped ped; if (!customSurvivors) { ped = World.CreateRandomPed(pos.Around(5f)); } else { Model model = new Model(RandoMath.GetRandomElementFromList <string>(SurvivorModels)); ped = World.CreatePed(model, pos.Around(5f)); } InputArgument[] arguments = new InputArgument[] { ped.Handle, 0, 0 }; Function.Call(Hash._0x70A2D1137C8ED7C9, arguments); InputArgument[] argumentArray2 = new InputArgument[] { ped.Handle, true }; Function.Call(Hash._0x8E06A6FE76C9EFF4, argumentArray2); InputArgument[] argumentArray3 = new InputArgument[] { ped.Handle, true }; Function.Call(Hash._0x77A5B103C87F476E, argumentArray3); InputArgument[] argumentArray4 = new InputArgument[] { ped.Handle, true }; Function.Call(Hash._0x6B7A646C242A7059, argumentArray4); ped.DiesInstantlyInWater = false; InputArgument[] argumentArray5 = new InputArgument[] { ped.Handle, 1, true }; Function.Call(Hash._0x4D9CA1009AFBD057, argumentArray5); int num = RandoMath.CachedRandom.Next(0, 11); ped.MaxHealth = 100; ped.Health = ped.MaxHealth; ped.Armor = 70; if (num < 5) { ped.Weapons.Give(WeaponHash.SMG, 300, true, true); ped.Weapons.Give(WeaponHash.Pistol, 120, true, true); ped.Weapons.Give((WeaponHash)(-1716189206), 0, false, true); } if (num >= 5) { ped.Weapons.Give((WeaponHash)(-1074790547), 300, true, true); ped.Weapons.Give(WeaponHash.CombatPistol, 120, true, true); ped.Weapons.Give((WeaponHash)(-853065399), 0, false, true); } ped.Money = 0; ped.NeverLeavesGroup = true; SurvivorPed item = new SurvivorPed(ped); bool flag = false; int num2 = 0; while (true) { if (num2 < survivorList.Count) { if (survivorList[num2].pedEntity != null) { num2++; continue; } survivorList[num2].AttachData(ped); item = survivorList[num2]; flag = true; } if (!flag) { survivorList.Add(item); } else { UI.Notify("Survivor not added to list"); } return(item); } }
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++; } }