// 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"); }
/// <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); }
/// <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); }
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); } }
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}"); } })); }
// 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}"); }
// 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; }
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); }