Example #1
0
        // Holster Weapon
        private async Task StoreWeapon(string _animType, CharacterInventoryItem _weapon)
        {
            // Animation
            await Game.Player.Character.Task.PlayAnimation(WeaponStoreAnimations[_animType][0], WeaponStoreAnimations[_animType][1], 10f, 10f, 2750, AnimationFlags.None | AnimationFlags.AllowRotation | AnimationFlags.UpperBodyOnly, -10f);

            // Weapon Hash
            WeaponHash storingWeaponHash = (WeaponHash)Game.GenerateHash(_weapon.Data["WeaponModel"].ToString());

            // Ammo Left
            int ammoLeft = Game.Player.Character.Weapons[storingWeaponHash].AmmoInClip;

            // Removing Weapon
            Game.Player.Character.Weapons.Remove(storingWeaponHash);

            // Set Slots and Save Ammo
            if (SessionManager.PlayerSession.SpawnedCharacter.Inventory.PrimaryWeaponOne == _weapon)
            {
                // New Weapon Object
                Entity newShownObject = await World.CreateProp(new Model(storingWeaponHash), Game.Player.Character.Position, true, false);

                // Remove Player Collision
                newShownObject.SetNoCollision(Game.Player.Character, true);

                // Attach Weapon
                newShownObject.AttachTo(Game.Player.Character);

                WeaponSlotOne = newShownObject;
                if (_weapon.Magazine != null)
                {
                    SessionManager.PlayerSession.SpawnedCharacter.Inventory.PrimaryWeaponOne.Magazine.Data["AmmoCount"] = ammoLeft;
                }
            }
            else if (SessionManager.PlayerSession.SpawnedCharacter.Inventory.PrimaryWeaponTwo == _weapon)
            {
                // New Weapon Object
                Entity newShownObject = await World.CreateProp(new Model(storingWeaponHash), Game.Player.Character.Position, true, false);

                // Remove Player Collision
                newShownObject.SetNoCollision(Game.Player.Character, true);

                // Attach Weapon
                newShownObject.AttachTo(Game.Player.Character);

                WeaponSlotTwo = newShownObject;
                if (_weapon.Magazine != null)
                {
                    SessionManager.PlayerSession.SpawnedCharacter.Inventory.PrimaryWeaponTwo.Magazine.Data["AmmoCount"] = ammoLeft;
                }
            }
            else if (SessionManager.PlayerSession.SpawnedCharacter.Inventory.SecondaryWeapon == _weapon)
            {
                if (_weapon.Magazine != null)
                {
                    SessionManager.PlayerSession.SpawnedCharacter.Inventory.SecondaryWeapon.Magazine.Data["AmmoCount"] = ammoLeft;
                }
            }

            EquippedWeapon = null;
            Utils.WriteLine("WEAPON HOLSTERING");
        }
Example #2
0
    /// <summary>
    /// Creates the liste items.
    /// </summary>
    /// <returns>The liste items.</returns>
    /// <param name="midgardCharaktere">Midgard charaktere.</param>
    private List <CharacterInventoryItem> CreateListeItems(List <MidgardCharakter> midgardCharaktere)
    {
        List <CharacterInventoryItem> listItems = new List <CharacterInventoryItem>();

        foreach (var charakter in midgardCharaktere)
        {
            CharacterInventoryItem newItem = CreateInventoryItem(charakter);
            listItems.Add(newItem);
        }

        return(listItems);
    }
Example #3
0
    /// <summary>
    /// Creates the inventory item from the string for a name (charactername)
    /// </summary>
    /// <returns>The inventory item.</returns>
    /// <param name="name">Name.</param>
    private CharacterInventoryItem CreateInventoryItem(MidgardCharakter charakter)
    {
        string name = charakter.CharacterName;

        if (name == null || name.Length == 0)
        {
            name = UNNAMED;
        }

        CharacterInventoryItem newItem = new CharacterInventoryItem();

        newItem.name       = name;
        newItem.mCharacter = charakter;
        return(newItem);
    }
Example #4
0
 private void PopulateItemSpawns()
 {
     foreach (KeyValuePair <int, LootSpawnPoint> spawn in ItemSpawns)
     {
         CharacterInventoryItem allowedItem = null;
         int _attempts = 0;
         allowedItem = Items[Items.Count == 0 ? 0 : new Random(DateTime.Now.Millisecond).Next(0, Items.Count)];
         do
         {
             allowedItem = Items[Items.Count == 0 ? 0 : new Random(DateTime.Now.Millisecond).Next(0, Items.Count)];
             _attempts  += 1;
         } while (!isLevelAllowed(allowedItem.Level, spawn.Value.AllowedLevels) && _attempts <= 20);
         ItemSpawns[spawn.Key].SetLootItem(allowedItem);
     }
 }
Example #5
0
 private void PickupItem(CharacterInventoryItem _item, int _index)
 {
     SessionManager.PlayerSession.SpawnedCharacter.Inventory.AddItem(_item, new Action <bool>(async(canPickup) =>
     {
         Utils.WriteLine($"Can Pickup: {canPickup}");
         if (canPickup)
         {
             await Game.Player.Character.Task.PlayAnimation("pickup_object", "pickup_low", 8f, -8f, -1, AnimationFlags.None, -8f);
             Main.TriggerServerEvent("FiveZ:PlayerPickupItem", _index);
             Screen.ShowNotification($"~g~Picked up item: ~w~{_item.Name}");
         }
         else
         {
             Screen.ShowNotification($"~r~Can't pickup item: ~w~{_item.Name}");
         }
     }));
 }
Example #6
0
        // Draw Weapon
        private async Task DrawWeapon(string _animType, CharacterInventoryItem _weapon)
        {
            // Animation
            await Game.Player.Character.Task.PlayAnimation(WeaponDrawAnimations[_animType][0], WeaponDrawAnimations[_animType][1], 10f, 10f, 2750, AnimationFlags.None | AnimationFlags.AllowRotation | AnimationFlags.UpperBodyOnly, -10f);

            // Slots
            if (SessionManager.PlayerSession.SpawnedCharacter.Inventory.PrimaryWeaponOne == _weapon)
            {
                if (WeaponSlotOne != null)
                {
                    WeaponSlotOne.Delete();
                    WeaponSlotOne = null;
                }
            }
            else if (SessionManager.PlayerSession.SpawnedCharacter.Inventory.PrimaryWeaponTwo == _weapon)
            {
                if (WeaponSlotTwo != null)
                {
                    WeaponSlotTwo.Delete();
                    WeaponSlotTwo = null;
                }
            }

            // Weapon Mag
            CharacterInventoryItem Magazine = _weapon.Magazine;

            int ammoCount = 0;

            if (Magazine != null)
            {
                ammoCount = Convert.ToInt32(Magazine.Data["AmmoCount"]);
            }
            ammoCount = 1;


            // Weapon Hash
            WeaponHash givenWeapon = (WeaponHash)Game.GenerateHash(_weapon.Data["WeaponModel"].ToString());

            Game.Player.Character.Weapons.Give(givenWeapon, ammoCount, true, ammoCount == 0 ? false : true);
            // Attachments [ NONE ]

            EquippedWeapon = _weapon;
            Utils.WriteLine("WEAPON DRAWING");
            Utils.WriteLine($"Weapon Equipped: {EquippedWeapon.Name}");
        }
Example #7
0
        // Convert code into these methods instead of hardcode in the thread
        private void PickupWeapon(CharacterInventoryItem _item, int _index)
        {
            if (_item.Data["WeaponType"] != null)
            {
                switch (_item.Data["WeaponType"].ToString())
                {
                case "primary":
                    bool foundSlot = false;
                    SessionManager.PlayerSession.SpawnedCharacter.Inventory.SetPrimaryWeaponOne(_item, new Action <bool>(async(canPickup) =>
                    {
                        if (canPickup && !foundSlot)
                        {
                            foundSlot = true;
                            await Game.Player.Character.Task.PlayAnimation("pickup_object", "pickup_low", 8f, -8f, -1, AnimationFlags.None, -8f);
                            Main.TriggerServerEvent("FiveZ:PlayerPickupItem", _index);
                        }
                    }));

                    SessionManager.PlayerSession.SpawnedCharacter.Inventory.SetPrimaryWeaponTwo(_item, new Action <bool>(async(canPickup) =>
                    {
                        if (canPickup && !foundSlot)
                        {
                            foundSlot = true;
                            await Game.Player.Character.Task.PlayAnimation("pickup_object", "pickup_low", 8f, -8f, -1, AnimationFlags.None, -8f);
                            Main.TriggerServerEvent("FiveZ:PlayerPickupItem", _index);
                        }
                    }));

                    if (foundSlot)
                    {
                        Screen.ShowNotification($"~g~Picked up item: ~w~{_item.Name}");
                    }
                    else
                    {
                        Screen.ShowNotification($"~r~Can't pickup item: ~w~{_item.Name}");
                    }
                    break;

                case "secondary":
                    SessionManager.PlayerSession.SpawnedCharacter.Inventory.SetSecondaryWeapon(_item, new Action <bool>(async(canPickup) =>
                    {
                        if (canPickup)
                        {
                            await Game.Player.Character.Task.PlayAnimation("pickup_object", "pickup_low", 8f, -8f, -1, AnimationFlags.None, -8f);
                            Main.TriggerServerEvent("FiveZ:PlayerPickupItem", _index);
                            Screen.ShowNotification($"~g~Picked up item: ~w~{_item.Name}");
                        }
                        else
                        {
                            Screen.ShowNotification($"~r~Can't pickup item: ~w~{_item.Name}");
                        }
                    }));
                    break;

                case "melee":
                    SessionManager.PlayerSession.SpawnedCharacter.Inventory.SetMeleeWeapon(_item, new Action <bool>(async(canPickup) =>
                    {
                        if (canPickup)
                        {
                            await Game.Player.Character.Task.PlayAnimation("pickup_object", "pickup_low", 8f, -8f, -1, AnimationFlags.None, -8f);
                            Main.TriggerServerEvent("FiveZ:PlayerPickupItem", _index);
                            Screen.ShowNotification($"~g~Picked up item: ~w~{_item.Name}");
                        }
                        else
                        {
                            Screen.ShowNotification($"~r~Can't pickup item: ~w~{_item.Name}");
                        }
                    }));
                    break;

                default:
                    Utils.WriteLine($"Couldn't Find Slot For Weapon Type: {_item.Data["WeaponType"]}");
                    break;
                }
            }
        }
 public void SetDisplayValuesName(CharacterInventoryItem _item)
 {
     nameItem.text = _item.name;
     item          = _item;
 }
Example #9
0
        private async Task InventoryTask()
        {
            if (ConfigManager.ControlsConfig != null)
            {
                // Disable Controls
                Game.DisableControlThisFrame(1, (Control)ConfigManager.ControlsConfig["InventoryControl"]);

                // Inventory Open Control
                if (Game.IsDisabledControlJustPressed(1, (Control)ConfigManager.ControlsConfig["InventoryControl"]))
                {
                    OpenInventory();
                }

                // Weapon Selection Controls
                if (Game.IsControlJustPressed(1, Control.SelectWeaponUnarmed))
                {
                    bool weaponAvailable = SessionManager.PlayerSession.SpawnedCharacter.Inventory.PrimaryWeaponOne == null ? false : true;
                    if (EquippedWeapon != null)
                    {
                        // Holster
                        if (weaponAvailable)
                        {
                        }
                    }
                    else
                    {
                        // Draw
                        if (weaponAvailable)
                        {
                        }
                    }
                }
                else if (Game.IsControlJustPressed(1, Control.SelectWeaponMelee))
                {
                    bool weaponAvailable = SessionManager.PlayerSession.SpawnedCharacter.Inventory.PrimaryWeaponTwo == null ? false : true;
                    if (EquippedWeapon != null)
                    {
                        // Holster
                        if (weaponAvailable)
                        {
                        }
                    }
                    else
                    {
                        // Draw
                        if (weaponAvailable)
                        {
                        }
                    }
                }
                else if (Game.IsControlJustPressed(1, Control.SelectWeaponShotgun))
                {
                    bool weaponAvailable = SessionManager.PlayerSession.SpawnedCharacter.Inventory.SecondaryWeapon == null ? false : true;
                    if (EquippedWeapon != null)
                    {
                        await StoreWeapon(EquippedWeapon.Data["WeaponAnimType"].ToString(), EquippedWeapon);

                        if (weaponAvailable)
                        {
                            CharacterInventoryItem NewWeapon = SessionManager.PlayerSession.SpawnedCharacter.Inventory.SecondaryWeapon;
                            await DrawWeapon(NewWeapon.Data["WeaponAnimType"].ToString(), NewWeapon);
                        }
                    }
                    else
                    {
                        // Draw
                        if (weaponAvailable)
                        {
                            CharacterInventoryItem NewWeapon = SessionManager.PlayerSession.SpawnedCharacter.Inventory.SecondaryWeapon;
                            await DrawWeapon(NewWeapon.Data["WeaponAnimType"].ToString(), NewWeapon);
                        }
                    }
                }
                else if (Game.IsControlJustPressed(1, Control.SelectWeaponHeavy))
                {
                    bool weaponAvailable = SessionManager.PlayerSession.SpawnedCharacter.Inventory.MeleeWeapon == null ? false : true;
                    if (EquippedWeapon != null)
                    {
                        await StoreWeapon(EquippedWeapon.Data["WeaponAnimType"].ToString(), EquippedWeapon);

                        if (weaponAvailable)
                        {
                            CharacterInventoryItem NewWeapon = SessionManager.PlayerSession.SpawnedCharacter.Inventory.MeleeWeapon;
                            await DrawWeapon(NewWeapon.Data["WeaponAnimType"].ToString(), NewWeapon);
                        }
                    }
                    else
                    {
                        if (weaponAvailable)
                        {
                            CharacterInventoryItem NewWeapon = SessionManager.PlayerSession.SpawnedCharacter.Inventory.MeleeWeapon;
                            await DrawWeapon(NewWeapon.Data["WeaponAnimType"].ToString(), NewWeapon);
                        }
                    }
                }

                // ADD HOLSTER KEYBIND (maybe the H key?)
                // Code


                if (EquippedWeapon != null)
                {
                    WeaponHash CurrentHash  = Game.Player.Character.Weapons.Current.Hash;
                    WeaponHash EquippedHash = (WeaponHash)Game.GenerateHash(EquippedWeapon.Data["WeaponModel"].ToString());
                    if (CurrentHash != EquippedHash)
                    {
                        Game.Player.Character.Weapons.Select(EquippedHash, true);
                    }
                }
            }

            await Task.FromResult(0);
        }