Beispiel #1
0
 public PedData(int handle, int hash, Vector3 rotation, Vector3 position, PedTasks task, List <Weapon> weapons)
 {
     this.Handle   = handle;
     this.Hash     = hash;
     this.Rotation = rotation;
     this.Position = position;
     this.Task     = task;
     this.Weapons  = weapons;
 }
 public PedData(int handle, int hash, Vector3 rotation, Vector3 position, PedTasks task, List <Weapon> weapons)
 {
     Handle   = handle;
     Hash     = hash;
     Rotation = rotation;
     Position = position;
     Task     = task;
     Weapons  = weapons;
 }
Beispiel #3
0
        public static void AddPedData(Ped ped)
        {
            PedTasks task = Population.survivorList.Find(a => a.pedEntity == ped).tasks;
            IEnumerable <WeaponHash> source = from hash in (WeaponHash[])Enum.GetValues(typeof(WeaponHash))
                                              where ped.Weapons.HasWeapon(hash)
                                              select hash;

            WeaponComponent[] componentHashes = (WeaponComponent[])Enum.GetValues(typeof(WeaponComponent));
            PedData           item            = new PedData(ped.Handle, ped.Model.Hash, ped.Rotation, ped.Position, task, source.ToList <WeaponHash>().ConvertAll <UndeadStreets.Weapon>(delegate(WeaponHash hash) {
                GTA.Weapon weapon = ped.Weapons[hash];
                return(new UndeadStreets.Weapon(weapon.Ammo, weapon.Hash, (from h in componentHashes
                                                                           where weapon.IsComponentActive(h)
                                                                           select h).ToArray <WeaponComponent>()));
            }).ToList <UndeadStreets.Weapon>());

            PlayerPedCollection.Add(item);
        }
        public void AddMenuTasks(UIMenu menu)
        {
            var tasks = new List <dynamic>
            {
                "None",
                "Wander",
                "Guard",
                "Follow",
                "Leave"
            };
            var newitem = new UIMenuListItem("Task", tasks, 0, "Select a task for your Group member(s)");

            menu.AddItem(newitem);
            menu.OnListChange += (sender, item, index) =>
            {
                if (item == newitem)
                {
                    string taskString = item.Items[index].ToString();
                    if (taskString == "None")
                    {
                        taskApply = PedTasks.None;
                    }
                    else if (taskString == "Wander")
                    {
                        taskApply = PedTasks.Wander;
                    }
                    else if (taskString == "Guard")
                    {
                        taskApply = PedTasks.Guard;
                    }
                    else if (taskString == "Follow")
                    {
                        taskApply = PedTasks.Follow;
                    }
                    else if (taskString == "Leave")
                    {
                        taskApply = PedTasks.Leave;
                    }
                }
            };
        }
        public static void AddPedData(Ped ped)
        {
            SurvivorPed survivorPed         = Population.survivorList.Find(match: a => a.pedEntity == ped);
            PedTasks    pedTasks            = survivorPed.tasks;
            IEnumerable <WeaponHash> hashes = from hash in (WeaponHash[])Enum.GetValues(typeof(WeaponHash))
                                              where ped.Weapons.HasWeapon(hash)
                                              select hash;

            WeaponComponent[] componentHashes = (WeaponComponent[])Enum.GetValues(typeof(WeaponComponent));
            List <Weapon>     weapons         = hashes.ToList().ConvertAll(delegate(WeaponHash hash)
            {
                GTA.Weapon weapon            = ped.Weapons[hash];
                WeaponComponent[] components = (from h in componentHashes
                                                where weapon.IsComponentActive(h)
                                                select h).ToArray();
                return(new Weapon(weapon.Ammo, weapon.Hash, components));
            }).ToList();
            PedData pedData = new PedData(ped.Handle, ped.Model.Hash, ped.Rotation, ped.Position, pedTasks, weapons);

            PlayerPedCollection.Add(pedData);
        }
Beispiel #6
0
        public void AddMenuTasks(UIMenu menu)
        {
            List <object> list1 = new List <object>();

            list1.Add("None");
            list1.Add("Wander");
            list1.Add("Guard");
            list1.Add("Follow");
            list1.Add("Leave");
            List <object>  items   = list1;
            UIMenuListItem newitem = new UIMenuListItem("Task", items, 0, "Select a task for your Group member(s)");

            menu.AddItem(newitem);
            menu.OnListChange += delegate(UIMenu sender, UIMenuListItem item, int index) {
                if (ReferenceEquals(item, newitem))
                {
                    string str = item.Items[index].ToString();
                    if (str == "None")
                    {
                        this.taskApply = PedTasks.None;
                    }
                    else if (str == "Wander")
                    {
                        this.taskApply = PedTasks.Wander;
                    }
                    else if (str == "Guard")
                    {
                        this.taskApply = PedTasks.Guard;
                    }
                    else if (str == "Follow")
                    {
                        this.taskApply = PedTasks.Follow;
                    }
                    else if (str == "Leave")
                    {
                        this.taskApply = PedTasks.Leave;
                    }
                }
            };
        }
Beispiel #7
0
 public static void SetPedTasks(Ped ped, PedTasks task)
 {
     ped.Task.ClearAll();
     if (task != PedTasks.Follow)
     {
         if (task == PedTasks.Guard)
         {
             ped.Task.GuardCurrentPosition();
         }
         else if (task == PedTasks.Wander)
         {
             ped.Task.WanderAround(ped.Position, 100f);
         }
         else if (task == PedTasks.None)
         {
             ped.Task.StandStill(-1);
         }
         else if (task == PedTasks.Leave)
         {
             ped.LeaveGroup();
             Blip currentBlip = ped.CurrentBlip;
             if (currentBlip.Handle != 0)
             {
                 currentBlip.Remove();
             }
             ped.RelationshipGroup = Relationships.FriendlyGroup;
             ped.Task.ClearAll();
             Blip blip2 = ped.AddBlip();
             blip2.Color = BlipColor.Blue;
             blip2.Scale = 0.65f;
             blip2.Name  = "Friendly";
             task        = PedTasks.Wander;
             ped.Task.WanderAround(ped.Position, 100f);
         }
     }
     Population.survivorList.Find(a => a.pedEntity == ped).tasks = task;
 }
Beispiel #8
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++;
            }
        }
Beispiel #9
0
        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);
            }
        }