Esempio n. 1
0
        public async Task PlayerSearchTakeItem(ClassicPlayer player, int givenTargetCharId, string itemName, string itemLocation, int itemAmount)
        {
            try
            {
                if (player == null || !player.Exists || givenTargetCharId <= 0 || itemName == "" || itemAmount <= 0 || itemLocation == "")
                {
                    return;
                }
                int charId = player.CharacterId;
                if (charId <= 0)
                {
                    return;
                }
                if (player.HasPlayerHandcuffs() || player.HasPlayerRopeCuffs())
                {
                    HUDHandler.SendNotification(player, 3, 5000, "Wie willst du das mit Handschellen/Fesseln machen?"); return;
                }
                var targetPlayer = Alt.Server.GetPlayers().ToList().FirstOrDefault(x => x.GetCharacterMetaId() == (ulong)givenTargetCharId);
                int targetCharId = (int)targetPlayer.GetCharacterMetaId();
                if (targetCharId != givenTargetCharId)
                {
                    return;
                }
                if (targetPlayer == null || !targetPlayer.Exists)
                {
                    return;
                }
                if (!player.Position.IsInRange(targetPlayer.Position, 3f))
                {
                    HUDHandler.SendNotification(player, 3, 5000, "Fehler: Du bist zuweit vom Spieler entfernt."); return;
                }
                if (!targetPlayer.HasPlayerHandcuffs() && !targetPlayer.HasPlayerRopeCuffs())
                {
                    HUDHandler.SendNotification(player, 3, 5000, "Der Spieler ist nicht gefesselt."); return;
                }
                if (!ServerItems.IsItemDroppable(itemName) || !ServerItems.IsItemGiveable(itemName))
                {
                    HUDHandler.SendNotification(player, 3, 5000, "Fehler: Diesen Gegenstand kannst du nicht entfernen."); return;
                }
                if (!CharactersInventory.ExistCharacterItem(targetCharId, itemName, itemLocation))
                {
                    HUDHandler.SendNotification(player, 4, 5000, "Fehler: Dieser Gegenstand existiert nicht mehr."); return;
                }
                if (CharactersInventory.IsItemActive(targetPlayer, itemName))
                {
                    HUDHandler.SendNotification(player, 3, 5000, "Ausgerüstete Gegenstände können nicht entwendet werden."); return;
                }
                if (CharactersInventory.GetCharacterItemAmount(targetCharId, itemName, itemLocation) < itemAmount)
                {
                    HUDHandler.SendNotification(player, 3, 5000, "Fehler: Soviele Gegenstände hat der Spieler davon nicht."); return;
                }
                float itemWeight     = ServerItems.GetItemWeight(itemName) * itemAmount;
                float invWeight      = CharactersInventory.GetCharacterItemWeight(charId, "inventory");
                float backpackWeight = CharactersInventory.GetCharacterItemWeight(charId, "backpack");
                if (invWeight + itemWeight > 15f && backpackWeight + itemWeight > Characters.GetCharacterBackpackSize(Characters.GetCharacterBackpack(charId)))
                {
                    HUDHandler.SendNotification(player, 3, 5000, $"Du hast nicht genug Platz in deinen Taschen."); return;
                }
                CharactersInventory.RemoveCharacterItemAmount(targetCharId, itemName, itemAmount, itemLocation);
                if (invWeight + itemWeight <= 15f || itemName == "Bargeld" || itemWeight == 0f)
                {
                    HUDHandler.SendNotification(player, 2, 5000, $"Du hast der Person {itemName} ({itemAmount}x) entwendet. (Lagerort: Inventar).");
                    HUDHandler.SendNotification(targetPlayer, 2, 5000, $"Dir wurde der Gegenstand {itemName} ({itemAmount}x) aus dem Inventar entwendet.");
                    CharactersInventory.AddCharacterItem(charId, itemName, itemAmount, "inventory");
                    return;
                }

                if (Characters.GetCharacterBackpack(charId) != "None" && backpackWeight + itemWeight <= Characters.GetCharacterBackpackSize(Characters.GetCharacterBackpack(charId)))
                {
                    HUDHandler.SendNotification(player, 2, 5000, $"Du hast der Person {itemName} ({itemAmount}x) entwendet. (Lagerort: Rucksack/Tasche).");
                    HUDHandler.SendNotification(targetPlayer, 2, 5000, $"Dir wurde der Gegenstand {itemName} ({itemAmount}x) aus dem Rucksack entwendet.");
                    CharactersInventory.AddCharacterItem(charId, itemName, itemAmount, "backpack");
                    return;
                }
            }
            catch (Exception e)
            {
                Alt.Log($"{e}");
            }
        }
Esempio n. 2
0
 public async Task DropItem(ClassicPlayer player, string itemname, int itemAmount, string fromContainer)
 {
     try
     {
         if (player == null || !player.Exists || itemname == "" || itemAmount <= 0 || fromContainer == "" || User.GetPlayerOnline(player) == 0)
         {
             return;
         }
         if (player.HasPlayerHandcuffs() || player.HasPlayerRopeCuffs())
         {
             HUDHandler.SendNotification(player, 3, 5000, "Wie willst du das mit Handschellen/Fesseln machen?"); return;
         }
         string normalItemName = ServerItems.ReturnNormalItemName(itemname);
         if (ServerItems.IsItemDroppable(itemname) == false)
         {
             HUDHandler.SendNotification(player, 4, 5000, $"Diesen Gegenstand kannst du nicht wegwerfen ({itemname})."); return;
         }
         int charId = player.CharacterId;
         if (charId <= 0 || CharactersInventory.ExistCharacterItem(charId, itemname, fromContainer) == false)
         {
             return;
         }
         if (CharactersInventory.GetCharacterItemAmount(charId, itemname, fromContainer) < itemAmount)
         {
             HUDHandler.SendNotification(player, 4, 5000, $"Die angegebene wegzuwerfende Anzahl ist nicht vorhanden ({itemname})."); return;
         }
         if (itemname == "Smartphone")
         {
             if (Characters.IsCharacterPhoneEquipped(charId))
             {
                 HUDHandler.SendNotification(player, 3, 2500, "Du musst dein Handy erst ausschalten / ablegen."); return;
             }
         }
         else if (itemname == "Rucksack")
         {
             if (Characters.GetCharacterBackpack(charId) == "Rucksack")
             {
                 if (CharactersInventory.GetCharacterItemAmount(charId, "Rucksack", "inventory") == itemAmount)
                 {
                     HUDHandler.SendNotification(player, 3, 5000, "Du musst deinen Rucksack erst ablegen, bevor du diesen wegwerfen kannst.");
                     return;
                 }
                 else
                 {
                     CharactersInventory.RemoveCharacterItemAmount(charId, itemname, itemAmount, fromContainer);
                     InventoryAnimation(player, "drop", 0);
                     HUDHandler.SendNotification(player, 2, 5000, $"Der Gegenstand {itemname} ({itemAmount}) wurde erfolgreich weggeworfen ({fromContainer}).");
                     return;
                 }
             }
             else
             {
                 CharactersInventory.RemoveCharacterItemAmount(charId, itemname, itemAmount, fromContainer);
                 InventoryAnimation(player, "drop", 0);
                 HUDHandler.SendNotification(player, 2, 5000, $"Der Gegenstand {itemname} ({itemAmount}) wurde erfolgreich weggeworfen ({fromContainer}).");
                 return;
             }
         }
         else if (itemname == "Tasche")
         {
             if (Characters.GetCharacterBackpack(charId) == "Tasche")
             {
                 if (CharactersInventory.GetCharacterItemAmount(charId, "Tasche", "inventory") == itemAmount)
                 {
                     HUDHandler.SendNotification(player, 3, 5000, "Du musst zuerst deine Tasche ablegen, bevor du diese wegwerfen kannst.");
                     return;
                 }
                 else
                 {
                     CharactersInventory.RemoveCharacterItemAmount(charId, itemname, itemAmount, fromContainer);
                     InventoryAnimation(player, "drop", 0);
                     HUDHandler.SendNotification(player, 2, 5000, $"Der Gegenstand {itemname} ({itemAmount}) wurde erfolgreich weggeworfen ({fromContainer}).");
                     RequestInventoryItems(player);
                     return;
                 }
             }
             else
             {
                 CharactersInventory.RemoveCharacterItemAmount(charId, itemname, itemAmount, fromContainer);
                 InventoryAnimation(player, "drop", 0);
                 HUDHandler.SendNotification(player, 2, 5000, $"Der Gegenstand {itemname} ({itemAmount}) wurde erfolgreich weggeworfen ({fromContainer}).");
                 RequestInventoryItems(player);
                 return;
             }
         }
         else if (ServerItems.GetItemType(itemname) == "weapon")
         {
             if ((string)Characters.GetCharacterWeapon(player, "PrimaryWeapon") == normalItemName || (string)Characters.GetCharacterWeapon(player, "SecondaryWeapon") == normalItemName || (string)Characters.GetCharacterWeapon(player, "SecondaryWeapon2") == normalItemName || (string)Characters.GetCharacterWeapon(player, "FistWeapon") == normalItemName)
             {
                 if (CharactersInventory.GetCharacterItemAmount(charId, normalItemName, fromContainer) == itemAmount)
                 {
                     HUDHandler.SendNotification(player, 3, 5000, "Du musst zuerst deine Waffe ablegen."); return;
                 }
             }
         }
         CharactersInventory.RemoveCharacterItemAmount(charId, itemname, itemAmount, fromContainer);
         InventoryAnimation(player, "drop", 0);
         HUDHandler.SendNotification(player, 2, 5000, $"Der Gegenstand {itemname} ({itemAmount}) wurde erfolgreich weggeworfen ({fromContainer}).");
         RequestInventoryItems(player);
     }
     catch (Exception e)
     {
         Alt.Log($"{e}");
     }
 }