예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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++;
            }
        }