public virtual KitItem KitItemFromDataRow(DataRow dr)
        {
            if (dr == null)
            {
                return(null);
            }
            KitItem entity = new KitItem();

            entity.KitItemId              = (System.Int32)dr["KitItemID"];
            entity.KitItemGuid            = (System.Guid)dr["KitItemGUID"];
            entity.KitGroupId             = (System.Int32)dr["KitGroupID"];
            entity.Name                   = dr["Name"].ToString();
            entity.Description            = dr["Description"].ToString();
            entity.PriceDelta             = (System.Decimal)dr["PriceDelta"];
            entity.WeightDelta            = (System.Decimal)dr["WeightDelta"];
            entity.IsDefault              = (System.Byte)dr["IsDefault"];
            entity.DisplayOrder           = (System.Int32)dr["DisplayOrder"];
            entity.ExtensionData          = dr["ExtensionData"].ToString();
            entity.TextOptionMaxLength    = dr["TextOptionMaxLength"] == DBNull.Value?(System.Int32?)null : (System.Int32?)dr["TextOptionMaxLength"];
            entity.TextOptionWidth        = dr["TextOptionWidth"] == DBNull.Value?(System.Int32?)null     : (System.Int32?)dr["TextOptionWidth"];
            entity.TextOptionHeight       = dr["TextOptionHeight"] == DBNull.Value?(System.Int32?)null    : (System.Int32?)dr["TextOptionHeight"];
            entity.InventoryVariantId     = dr["InventoryVariantID"] == DBNull.Value?(System.Int32?)null  : (System.Int32?)dr["InventoryVariantID"];
            entity.InventoryQuantityDelta = (System.Int32)dr["InventoryQuantityDelta"];
            entity.InventoryVariantColor  = dr["InventoryVariantColor"].ToString();
            entity.InventoryVariantSize   = dr["InventoryVariantSize"].ToString();
            entity.CreatedOn              = (System.DateTime)dr["CreatedOn"];
            return(entity);
        }
Exemple #2
0
        private KitItem ProcessItem(Item playerItem)
        {
            KitItem item = new KitItem();

            item.Amount = playerItem.amount;
            item.Mods   = new List <string>();
            item.Name   = playerItem.info.shortname;
            item.Weapon = false;

            if (playerItem.info.category.ToString() == "Weapon")
            {
                BaseProjectile weapon = playerItem.GetHeldEntity() as BaseProjectile;

                if (weapon != null)
                {
                    if (weapon.primaryMagazine != null)
                    {
                        item.Weapon = true;

                        if (playerItem.contents != null)
                        {
                            foreach (var mod in playerItem.contents.itemList)
                            {
                                if (mod.info.itemid != 0)
                                {
                                    item.Mods.Add(mod.info.shortname);
                                }
                            }
                        }
                    }
                }
            }
            return(item);
        }
Exemple #3
0
        static private KitItem ProcessItem(Item item, string container)
        {
            KitItem iItem = new KitItem();

            iItem.amount    = item.amount;
            iItem.mods      = new List <int>();
            iItem.container = container;
            iItem.skinid    = item.skin;
            iItem.itemid    = item.info.itemid;
            iItem.weapon    = false;

            if (item.info.category.ToString() == "Weapon")
            {
                BaseProjectile weapon = item.GetHeldEntity() as BaseProjectile;
                if (weapon != null)
                {
                    if (weapon.primaryMagazine != null)
                    {
                        iItem.weapon = true;
                        if (item.contents != null)
                        {
                            foreach (var mod in item.contents.itemList)
                            {
                                if (mod.info.itemid != 0)
                                {
                                    iItem.mods.Add(mod.info.itemid);
                                }
                            }
                        }
                    }
                }
            }
            return(iItem);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            KitItem KitItem = db.KitItems.Find(id);

            db.KitItems.Remove(KitItem);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit(KitItem KitItem)
 {
     if (ModelState.IsValid)
     {
         db.Entry(KitItem).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(KitItem));
 }
        //
        // GET: /SchoolKit/Delete/5

        public ActionResult Delete(int id = 0)
        {
            KitItem KitItem = db.KitItems.Find(id);

            if (KitItem == null)
            {
                return(HttpNotFound());
            }
            return(View(KitItem));
        }
        public virtual KitItem UpdateKitItem(KitItem entity)
        {
            if (entity.IsTransient())
            {
                return(entity);
            }
            KitItem other = GetKitItem(entity.KitItemId);

            if (entity.Equals(other))
            {
                return(entity);
            }
            string sql = @"Update KitItem set  [KitItemGUID]=@KitItemGUID
							, [KitGroupID]=@KitGroupID
							, [Name]=@Name
							, [Description]=@Description
							, [PriceDelta]=@PriceDelta
							, [WeightDelta]=@WeightDelta
							, [IsDefault]=@IsDefault
							, [DisplayOrder]=@DisplayOrder
							, [ExtensionData]=@ExtensionData
							, [TextOptionMaxLength]=@TextOptionMaxLength
							, [TextOptionWidth]=@TextOptionWidth
							, [TextOptionHeight]=@TextOptionHeight
							, [InventoryVariantID]=@InventoryVariantID
							, [InventoryQuantityDelta]=@InventoryQuantityDelta
							, [InventoryVariantColor]=@InventoryVariantColor
							, [InventoryVariantSize]=@InventoryVariantSize
							, [CreatedOn]=@CreatedOn 
							 where KitItemID=@KitItemID"                            ;

            SqlParameter[] parameterArray = new SqlParameter[] {
                new SqlParameter("@KitItemID", entity.KitItemId)
                , new SqlParameter("@KitItemGUID", entity.KitItemGuid)
                , new SqlParameter("@KitGroupID", entity.KitGroupId)
                , new SqlParameter("@Name", entity.Name)
                , new SqlParameter("@Description", entity.Description ?? (object)DBNull.Value)
                , new SqlParameter("@PriceDelta", entity.PriceDelta)
                , new SqlParameter("@WeightDelta", entity.WeightDelta)
                , new SqlParameter("@IsDefault", entity.IsDefault)
                , new SqlParameter("@DisplayOrder", entity.DisplayOrder)
                , new SqlParameter("@ExtensionData", entity.ExtensionData ?? (object)DBNull.Value)
                , new SqlParameter("@TextOptionMaxLength", entity.TextOptionMaxLength ?? (object)DBNull.Value)
                , new SqlParameter("@TextOptionWidth", entity.TextOptionWidth ?? (object)DBNull.Value)
                , new SqlParameter("@TextOptionHeight", entity.TextOptionHeight ?? (object)DBNull.Value)
                , new SqlParameter("@InventoryVariantID", entity.InventoryVariantId ?? (object)DBNull.Value)
                , new SqlParameter("@InventoryQuantityDelta", entity.InventoryQuantityDelta)
                , new SqlParameter("@InventoryVariantColor", entity.InventoryVariantColor ?? (object)DBNull.Value)
                , new SqlParameter("@InventoryVariantSize", entity.InventoryVariantSize ?? (object)DBNull.Value)
                , new SqlParameter("@CreatedOn", entity.CreatedOn)
            };
            SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.Text, sql, parameterArray);
            return(GetKitItem(entity.KitItemId));
        }
        public ActionResult Create(KitItem KitItem)
        {
            if (ModelState.IsValid)
            {
                db.KitItems.Add(KitItem);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(KitItem));
        }
Exemple #9
0
        static bool FindItem(KitData kit, string item, out KitItem itemdata)
        {
            if (kit.Items.Any(v => string.Equals(v.Name, item, StringComparison.CurrentCultureIgnoreCase)))
            {
                itemdata = kit.Items.Single(v => string.Equals(v.Name, item, StringComparison.CurrentCultureIgnoreCase));
                return(true);
            }

            itemdata = null;
            return(false);
        }
Exemple #10
0
        HashSet <KitItem> GetItemsByItemContainer(ItemContainer itemContainer)
        {
            HashSet <KitItem> items = new HashSet <KitItem>();

            foreach (Item item in itemContainer.itemList)
            {
                KitItem kitItem = new KitItem();
                kitItem.Name   = item.info.displayName.english;
                kitItem.Id     = item.info.itemid;
                kitItem.Amount = item.amount;
                items.Add(kitItem);
            }

            return(items);
        }
Exemple #11
0
        private void Kit(BasePlayer player, string kit)
        {
            if (player == null)
            {
                return;
            }

            PlayerInfo info = playerInfo[player.userID];

            // Check if the kit exists
            if (!kitItems.ContainsKey(kit))
            {
                player.ChatMessage("<color=#d00>ERROR</color> That kit does not exists.");
                return;
            }

            KitItem item = kitItems[kit];

            // Check for the permissions
            if (!info.HasSubscription($"kit_{kit}") && !AllowKit(player, kit))
            {
                player.ChatMessage("<color=#d00>ERROR</color> You dont have permissions for this kit, you can buy them in the shop.");
                return;
            }

            // Check for the cooldown
            int cooldown = info.HasCooldown($"kit_{kit}");

            if (cooldown > 0)
            {
                player.ChatMessage($"<color=#d00>ERROR</color> Wait {cooldown} seconds.");
                return;
            }

            // Add the cooldown
            info.AddCooldown($"kit_{kit}", item.cooldown);

            // Execute the command
            string[] commands = item.command.Split('|');
            foreach (string command in commands)
            {
                GameLimits.ExecuteCommand(player, command);
            }

            // Add logging
            MInsert(MBuild("INSERT INTO kits_history (user_id, kit_id) VALUES (@0, @1);", info.id, item.id));
        }
Exemple #12
0
        Item BuildWeapon(KitItem kItem)
        {
            Item item = ItemManager.CreateByName(kItem.Name, 1);

            var weapon = item.GetHeldEntity() as BaseProjectile;

            if (weapon != null)
            {
                (item.GetHeldEntity() as BaseProjectile).primaryMagazine.contents = (item.GetHeldEntity() as BaseProjectile).primaryMagazine.capacity;
            }

            if (kItem.Mods != null)
            {
                foreach (var mod in kItem.Mods)
                {
                    item.contents.AddItem(BuildItem(mod, 1).info, 1);
                }
            }

            return(item);
        }
Exemple #13
0
        private KitItem ItemToKit(Item item, string container)
        {
            KitItem kitem = new KitItem();

            kitem.Amount    = item.amount;
            kitem.Container = container;
            kitem.SkinID    = item.skin;
            kitem.Blueprint = item.blueprintTarget;
            kitem.ShortName = item.info.shortname;
            kitem.Condition = item.condition;
            kitem.Weapon    = null;
            kitem.Content   = null;
            if (item.info.category == ItemCategory.Weapon)
            {
                BaseProjectile weapon = item.GetHeldEntity() as BaseProjectile;
                if (weapon != null)
                {
                    kitem.Weapon            = new Weapon();
                    kitem.Weapon.ammoType   = weapon.primaryMagazine.ammoType.shortname;
                    kitem.Weapon.ammoAmount = weapon.primaryMagazine.contents;
                }
            }
            if (item.contents != null)
            {
                kitem.Content = new List <ItemContent>();
                foreach (var cont in item.contents.itemList)
                {
                    kitem.Content.Add(new ItemContent()
                    {
                        Amount    = cont.amount,
                        Condition = cont.condition,
                        ShortName = cont.info.shortname
                    });
                }
            }
            return(kitem);
        }
        public static List <KitItem> ConvertToKitItems(this byte[]?block)
        {
            var output = new List <KitItem>();

            if (block == null)
            {
                return(output);
            }

            using var ms = new MemoryStream();
            using var br = new BinaryReader(ms);

            br.ReadByte(); // save version, for now ignored

            for (var i = 0; i < br.ReadInt32(); i++)
            {
                var kitItem = new KitItem();
                kitItem.Deserialize(br);

                output.Add(kitItem);
            }

            return(output);
        }
Exemple #15
0
        public override CommandResult OnExecute(ICommandSource src, ICommandArgs args)
        {
            var player = src.ToPlayer();

            if (args.Length < 1)
            {
                return(CommandResult.ShowUsage());
            }

            var  name                 = args[0].ToString();
            uint cooldown             = 0;
            var  resetCooldownWhenDie = false;
            var  cost                 = 0d;

            if (KitModule.Instance.KitManager.Contains(name))
            {
                return(CommandResult.Lang("KIT_ALREADY_EXIST", name));
            }

            if (args.Length > 1)
            {
                if (!args[1].IsInt)
                {
                    return(CommandResult.Lang("INVALID_NUMBER", args[1]));
                }

                if (args[1].ToInt < 0)
                {
                    return(CommandResult.Lang("MUST_POSITIVE"));
                }

                cooldown = args[1].ToUInt;
            }

            if (args.Length > 2)
            {
                if (!args[2].IsBool)
                {
                    return(CommandResult.Lang("INVALID_BOOLEAN", args[2]));
                }

                resetCooldownWhenDie = args[2].ToBool;
            }

            if (args.Length > 3)
            {
                if (!args[3].IsDouble)
                {
                    return(CommandResult.Lang("INVALID_NUMBER", args[3]));
                }

                if (args[3].ToDouble < 0)
                {
                    return(CommandResult.Lang("MUST_POSITIVE"));
                }

                cost = args[3].ToDouble;
            }

            var inventory = player.Inventory;
            var clothing  = player.Clothing;
            var items     = new List <AbstractKitItem>();

            Action <byte> addItemsFromPage = page => {
                var count = inventory.getItemCount(page);

                for (byte index = 0; index < count; index++)
                {
                    var item = inventory.getItem(page, index).item;

                    if (item == null)
                    {
                        continue;
                    }

                    var     asset = GetItem(item.id).Value;
                    KitItem kitItem;

                    if (asset is ItemWeaponAsset)
                    {
                        var ammo     = GetWeaponAmmo(item);
                        var firemode = GetWeaponFiremode(item).OrElse(EFiremode.SAFETY);

                        var kItem = new KitItemWeapon(item.id, item.durability, 1, ammo.OrElse(0), firemode)
                        {
                            Magazine = GetWeaponAttachment(item, AttachmentType.MAGAZINE).OrElse(null),
                            Barrel   = GetWeaponAttachment(item, AttachmentType.BARREL).OrElse(null),
                            Sight    = GetWeaponAttachment(item, AttachmentType.SIGHT).OrElse(null),
                            Grip     = GetWeaponAttachment(item, AttachmentType.GRIP).OrElse(null),
                            Tactical = GetWeaponAttachment(item, AttachmentType.TACTICAL).OrElse(null)
                        };

                        kitItem = kItem;
                    }
                    else if (asset is ItemMagazineAsset || asset is ItemSupplyAsset)
                    {
                        kitItem = new KitItemMagazine(item.id, item.durability, 1, item.amount);
                    }
                    else
                    {
                        kitItem = new KitItem(item.id, item.durability, 1);
                    }

                    kitItem.Metadata = item.metadata;

                    items.Add(kitItem);
                }
            };

            addItemsFromPage(0); // Primary slot
            addItemsFromPage(1); // Secondary slot
            addItemsFromPage(2); // Hands

            // Backpack

            if (clothing.backpack != 0)
            {
                items.Add(new KitItem(clothing.backpack, clothing.backpackQuality, 1)
                {
                    Metadata = clothing.backpackState
                });
            }

            addItemsFromPage(3);

            // End Backpack

            // Shirt

            if (clothing.shirt != 0)
            {
                items.Add(new KitItem(clothing.shirt, clothing.shirtQuality, 1)
                {
                    Metadata = clothing.shirtState
                });
            }

            addItemsFromPage(5);

            // End Shirt

            // Vest

            if (clothing.vest != 0)
            {
                items.Add(new KitItem(clothing.vest, clothing.vestQuality, 1)
                {
                    Metadata = clothing.vestState
                });
            }

            addItemsFromPage(4);

            // End Vest

            // Pants

            if (clothing.pants != 0)
            {
                items.Add(new KitItem(clothing.pants, clothing.pantsQuality, 1)
                {
                    Metadata = clothing.pantsState
                });
            }

            addItemsFromPage(6);

            // End Pants

            // Mask, Glasses & Hat

            if (clothing.mask != 0)
            {
                items.Add(new KitItem(clothing.mask, clothing.maskQuality, 1)
                {
                    Metadata = clothing.maskState
                });
            }

            if (clothing.hat != 0)
            {
                items.Add(new KitItem(clothing.hat, clothing.hatQuality, 1)
                {
                    Metadata = clothing.hatState
                });
            }

            if (clothing.glasses != 0)
            {
                items.Add(new KitItem(clothing.glasses, clothing.glassesQuality, 1)
                {
                    Metadata = clothing.glassesState
                });
            }

            // End Mask, Glasses & Hat

            var kit = new Kit(name, cooldown, (decimal)cost, resetCooldownWhenDie)
            {
                Items = items
            };

            KitModule.Instance.KitManager.Add(kit);
            EssLang.Send(src, "CREATED_KIT", name);

            return(CommandResult.Success());
        }
        static private KitItem ProcessItem(Item item, string container)
        {
            KitItem iItem = new KitItem();
            iItem.amount = item.amount;
            iItem.mods = new List<int>();
            iItem.container = container;
            iItem.bp = item.IsBlueprint();
            iItem.skinid = item.skin;
            iItem.itemid = item.info.itemid;
            iItem.weapon = false;

            if (item.info.category.ToString() == "Weapon")
            {
                BaseProjectile weapon = item.GetHeldEntity() as BaseProjectile;
                if (weapon != null)
                {
                    if (weapon.primaryMagazine != null)
                    {
                        iItem.weapon = true;
                        if (item.contents != null)
                            foreach (var mod in item.contents.itemList)
                            {
                                if (mod.info.itemid != 0)
                                    iItem.mods.Add(mod.info.itemid);
                            }
                    }
                }
            }
            return iItem;
        }
Exemple #17
0
        private AbstractKitItem ParseKitItem(Kit kit, JObject itemObj)
        {
            const StringComparison strCmp = StringComparison.InvariantCultureIgnoreCase;

            if (itemObj.TryGetValue("money", strCmp, out var moneyToken))
            {
                if (!UEssentials.EconomyProvider.IsPresent)
                {
                    UEssentials.Logger.LogWarning("Cannot add 'Money' item because there is no active economy system.");
                    return(null);
                }
                return(new KitItemMoney(moneyToken.Value <decimal>()));
            }

            if (itemObj.TryGetValue("xp", strCmp, out var expToken))
            {
                return(new KitItemExperience(expToken.Value <uint>()));
            }

            if (itemObj.TryGetValue("vehicle", strCmp, out var vehicleIdToken))
            {
                var vehicleId = vehicleIdToken.Value <ushort>();

                if (Assets.find(EAssetType.VEHICLE, vehicleId) == null)
                {
                    UEssentials.Logger.LogWarning($"Invalid vehicle id '{vehicleId}' in the item at {itemObj.Path} in the kit '{kit.Name}'");
                    return(null);
                }

                return(new KitItemVehicle(vehicleId));
            }

            var itemIdToken = itemObj.GetValue("id", strCmp);

            if (itemIdToken == null)
            {
                UEssentials.Logger.LogWarning($"Missing attribute 'Id' in the item at {itemObj.Path} in the kit '{kit.Name}'");
                return(null);
            }

            var itemId    = itemIdToken.Value <ushort>();
            var itemAsset = (ItemAsset)Assets.find(EAssetType.ITEM, itemId);

            var tokKitItemDurability = itemObj.GetValue("Durability", strCmp);
            var tokKitItemAmount     = itemObj.GetValue("Amount", strCmp);
            var tokAmmo = itemObj.GetValue("Ammo", strCmp);

            var kitItemAmount     = tokKitItemAmount?.Value <byte>() ?? 1;
            var kitItemDurability = tokKitItemDurability?.Value <byte>() ?? 100;

            // Parse weapon specific attributes
            if (itemAsset is ItemGunAsset)
            {
                var tokFireMode = itemObj.GetValue("FireMode", strCmp);

                EFiremode?fireMode = null;

                if (tokFireMode != null)
                {
                    try {
                        fireMode = (EFiremode)Enum.Parse(typeof(EFiremode), tokFireMode.Value <string>(), true);
                    } catch (ArgumentException) {
                        UEssentials.Logger.LogWarning($"Invalid firemode '{tokFireMode}' in the item at {itemObj.Path} in the kit '{kit.Name}'. " +
                                                      $"Valid Firemodes: ${string.Join(", ", Enum.GetNames(typeof(EFiremode)))}");
                    }
                }

                var weaponItem = new KitItemWeapon(itemId,
                                                   kitItemDurability,
                                                   kitItemAmount,
                                                   tokAmmo?.Value <byte>() ?? null,
                                                   fireMode
                                                   )
                {
                    Barrel   = itemObj.GetValue("Barrel", strCmp)?.ToObject <Attachment>(),
                    Sight    = itemObj.GetValue("Sight", strCmp)?.ToObject <Attachment>(),
                    Tactical = itemObj.GetValue("Tactical", strCmp)?.ToObject <Attachment>(),
                    Grip     = itemObj.GetValue("Grip", strCmp)?.ToObject <Attachment>(),
                    Magazine = itemObj.GetValue("Magazine", strCmp)?.ToObject <Attachment>()
                };
                return(weaponItem);
            }

            if (itemAsset is ItemMagazineAsset || itemAsset is ItemSupplyAsset)
            {
                var magazineAmmo = tokAmmo?.Value <byte>() ?? itemAsset.amount;
                return(new KitItemMagazine(itemId, kitItemDurability, kitItemAmount, magazineAmmo));
            }

            var kitItem = new KitItem(itemId, kitItemDurability, kitItemAmount);

            if (itemAsset is ItemFuelAsset)
            {
                var item           = kitItem;
                var fuelPercentage = itemObj.GetValue("FuelPercentage", strCmp)?.Value <float>() ?? 100;
                ItemUtil.Refuel(item.Metadata, item.Id, fuelPercentage);
            }
            return(kitItem);
        }
Exemple #18
0
 public KitItem InsertKitItem(KitItem entity)
 {
     return(_iKitItemRepository.InsertKitItem(entity));
 }
Exemple #19
0
        void ModifyKitItems(Player player, KitData kit, string action, string[] args)
        {
            switch (action)
            {
            case "additem":
                if (args.Length == 0 || args.Length > 2)
                {
                    SendMessage(player, InvalidArgs);
                    return;
                }

                var itemname = args[0];
                int amount;
                if (args.Length == 2)
                {
                    if (!int.TryParse(args[1], out amount))
                    {
                        amount = 1;
                    }
                }
                else
                {
                    amount = 1;
                }

                var blueprintForName = InvDefinitions.Instance.Blueprints.GetBlueprintForName(itemname, true, true);
                if (blueprintForName == null)
                {
                    SendMessage(player, AKitItemDoesNotExist, itemname);
                    return;
                }

                SendMessage(player, AKitItemAdded, blueprintForName.Name, amount, kit.Name);

                KitItem newItem;
                if (FindItem(kit, blueprintForName.Name, out newItem))
                {
                    newItem.Amount += amount;
                    return;
                }

                newItem = new KitItem(blueprintForName.Name, amount);
                kit.Items.Add(newItem);

                break;

            case "removeitem":
                if (args.Length != 1)
                {
                    SendMessage(player, InvalidArgs);
                    return;
                }

                KitItem item;
                if (!FindItem(kit, args[0], out item))
                {
                    SendMessage(player, AKitItemNotFound, args[0]);
                    return;
                }

                kit.Items.Remove(item);
                SendMessage(player, AKitItemRemoved, item.Name, kit.Name);
                break;
            }
            UpdateKitStacks(kit);
        }
 public virtual KitItem DeleteKitItem(KitItem entity)
 {
     this.DeleteKitItem(entity.KitItemId);
     return(entity);
 }
Exemple #21
0
        public virtual Dictionary <string, Kit> Load()
        {
            var loadedKits = new Dictionary <string, Kit>();

            if (!File.Exists(DataFilePath))
            {
                File.Create(DataFilePath).Close();
                LoadDefault();
            }

            JArray kitArr;

            try {
                kitArr = JArray.Parse(File.ReadAllText(DataFilePath));
            } catch (JsonReaderException ex) {
                UEssentials.Logger.LogError($"Invalid kit configuration ({DataFilePath})");
                UEssentials.Logger.LogError(ex.ToString());
                kitArr = new JArray();
            }

            const StringComparison strCmp = StringComparison.InvariantCultureIgnoreCase;

            foreach (var kitObj in kitArr.Children <JObject>())
            {
                var name = GetNotNullValue <string>(kitObj, "Name");

                if (loadedKits.ContainsKey(name.ToLowerInvariant()))
                {
                    UEssentials.Logger.LogWarning($"Duplicated kit name ({name})");
                    continue;
                }

                var kit = new Kit(
                    name,
                    GetValueOrDefault(kitObj, "Cooldown", 0u),
                    GetValueOrDefault(kitObj, "Cost", 0m),
                    GetValueOrDefault(kitObj, "ResetCooldownWhenDie", false)
                    );

                var itemIndex   = 0;
                var economyHook = UEssentials.EconomyProvider;

                foreach (var itemObj in kitObj.GetValue("Items", strCmp).Children <JObject>())
                {
                    AbstractKitItem kitItem;
                    JToken          val;

                    if ((val = itemObj.GetValue("money", strCmp)) != null)
                    {
                        if (!economyHook.IsPresent)
                        {
                            UEssentials.Logger.LogWarning("Cannot add 'Money' item because there is no active economy system.");
                            continue;
                        }
                        kitItem = new KitItemMoney(val.Value <decimal>());
                        goto add;
                    }

                    if ((val = itemObj.GetValue("xp", strCmp)) != null)
                    {
                        kitItem = new KitItemExperience(val.Value <uint>());
                        goto add;
                    }

                    if ((val = itemObj.GetValue("vehicle", strCmp)) != null)
                    {
                        var vehicleId = val.Value <ushort>();

                        if (Assets.find(EAssetType.VEHICLE, vehicleId) == null)
                        {
                            UEssentials.Logger.LogWarning(
                                $"Invalid vehicle id '{vehicleId}' in kit '{kit.Name}' at index {++itemIndex}");
                            continue;
                        }

                        kitItem = new KitItemVehicle(vehicleId);
                        goto add;
                    }

                    var kitItemIdToken = itemObj.GetValue("id", strCmp);

                    if (kitItemIdToken == null)
                    {
                        UEssentials.Logger.LogWarning($"Missing attribute 'Id' in kit '{kit.Name}' at index {++itemIndex}");
                        continue;
                    }

                    var kitItemId = kitItemIdToken.Value <ushort>();
                    var itemAsset = (ItemAsset)Assets.find(EAssetType.ITEM, kitItemId);

                    if (itemAsset == null)
                    {
                        UEssentials.Logger.LogWarning($"Invalid item id '{kitItemId}' in kit '{kit.Name}' at index {++itemIndex}");
                        continue;
                    }

                    var tokKitItemDurability = itemObj.GetValue("Durability", strCmp);
                    var tokKitItemAmount     = itemObj.GetValue("Amount", strCmp);
                    var tokAmmo = itemObj.GetValue("Ammo", strCmp);

                    var kitItemAmount     = tokKitItemAmount?.Value <byte>() ?? 1;
                    var kitItemDurability = tokKitItemDurability?.Value <byte>() ?? 100;

                    if (itemAsset is ItemGunAsset)   // TODO: check
                    {
                        goto parseWeaponItem;
                    }

                    if (itemAsset is ItemMagazineAsset || itemAsset is ItemSupplyAsset)
                    {
                        var magazineAmmo = tokAmmo?.Value <byte>() ?? itemAsset.amount;
                        kitItem = new KitItemMagazine(kitItemId, kitItemDurability, kitItemAmount, magazineAmmo);
                    }
                    else
                    {
                        kitItem = new KitItem(kitItemId, kitItemDurability, kitItemAmount);

                        if (itemAsset is ItemFuelAsset)
                        {
                            var item = (KitItem)kitItem;
                            ItemUtil.Refuel(item.Metadata, item.Id);
                        }
                    }
                    goto add;

parseWeaponItem:
                    var tokFireMode = itemObj.GetValue("FireMode", strCmp);
                    var tokBarrel   = itemObj.GetValue("Barrel", strCmp);
                    var tokSight    = itemObj.GetValue("Sight", strCmp);
                    var tokGrip     = itemObj.GetValue("Grip", strCmp);
                    var tokMagazine = itemObj.GetValue("Magazine", strCmp);
                    var tokTactical = itemObj.GetValue("Tatical", strCmp) ?? itemObj.GetValue("Tactical", strCmp);

                    EFiremode?fireMode = null;
                    var       ammo     = tokAmmo?.Value <byte>() ?? null;

                    if (tokFireMode != null)
                    {
                        try {
                            fireMode = (EFiremode)Enum.Parse(typeof(EFiremode),
                                                             tokFireMode.Value <string>(), true);
                        } catch (ArgumentException) {
                            UEssentials.Logger.LogWarning($"Invalid firemode '{tokFireMode.Value<string>()}' " +
                                                          $"in kit '{kit.Name}', item '{itemIndex + 1}'!");
                        }
                    }

                    var weaponItem = new KitItemWeapon(kitItemId,
                                                       kitItemDurability,
                                                       kitItemAmount,
                                                       ammo,
                                                       fireMode
                                                       );

                    Func <JToken, Attachment> deserializeAttach = json => {
                        return(json == null ? null : JsonConvert.DeserializeObject <Attachment>(json.ToString()));
                    };

                    weaponItem.Barrel   = deserializeAttach(tokBarrel);
                    weaponItem.Sight    = deserializeAttach(tokSight);
                    weaponItem.Tactical = deserializeAttach(tokTactical);
                    weaponItem.Grip     = deserializeAttach(tokGrip);
                    weaponItem.Magazine = deserializeAttach(tokMagazine);

                    kitItem = weaponItem;

add:
                    kit.Items.Add(kitItem);
                }
                loadedKits.Add(kit.Name.ToLowerInvariant(), kit);
            }

            return(loadedKits);
        }
Exemple #22
0
 public InvalidItem(KitData kit, KitItem item)
 {
     Kit  = kit;
     Item = item;
 }
Exemple #23
0
 public KitItem UpdateKitItem(KitItem entity)
 {
     return(_iKitItemRepository.UpdateKitItem(entity));
 }
Exemple #24
0
        public virtual Dictionary <string, Kit> Load()
        {
            var loadedKits = new Dictionary <string, Kit>();

            if (!File.Exists(DataFilePath))
            {
                File.Create(DataFilePath).Close();
                LoadDefault();
            }

            JArray kitArr;

            try
            {
                kitArr = JArray.Parse(File.ReadAllText(DataFilePath));
            }
            catch (JsonReaderException ex)
            {
                UEssentials.Logger.LogError($"Invalid kit configuration ({DataFilePath})");
                UEssentials.Logger.LogError(ex.Message);
                kitArr = JArray.Parse("[]");
            }

            const StringComparison strCmp = StringComparison.InvariantCultureIgnoreCase;

            foreach (var kitObj in kitArr.Children <JObject>())
            {
                var kit = new Kit(
                    kitObj.GetValue("Name", strCmp).Value <string>(),
                    kitObj.GetValue("Cooldown", strCmp).Value <uint>(),
                    kitObj.GetValue("ResetCooldownWhenDie", strCmp).Value <bool>()
                    );

                var rawCost = kitObj.GetValue("Cost", strCmp);

                if (rawCost != null)
                {
                    kit.Cost = rawCost.Value <decimal>();
                }

                var itemIndex   = 0;
                var economyHook = EssCore.Instance.HookManager.GetActiveByType <UconomyHook>();

                foreach (var itemObj in kitObj.GetValue("items", strCmp).Children <JObject>())
                {
                    AbstractKitItem kitItem;

                    if (itemObj.GetValue("money", strCmp) != null && economyHook.IsPresent)
                    {
                        kitItem = new KitItemMoney(itemObj.GetValue("money", strCmp).Value <decimal>());
                        goto add;
                    }

                    if (itemObj.GetValue("xp", strCmp) != null)
                    {
                        kitItem = new KitItemExperience(itemObj.GetValue("xp", strCmp).Value <uint>());
                        goto add;
                    }

                    if (itemObj.GetValue("vehicle", strCmp) != null)
                    {
                        var vehicleId = itemObj.GetValue("vehicle", strCmp).Value <ushort>();

                        if (Assets.find(EAssetType.VEHICLE, vehicleId) == null)
                        {
                            UEssentials.Logger.LogWarning($"Invalid vehicle id. Kit: {kit.Name} item Index: {itemIndex++}");
                            continue;
                        }

                        kitItem = new KitItemVehicle(vehicleId);
                        goto add;
                    }

                    var tokKitItemId         = itemObj.GetValue("id", strCmp);
                    var tokKitItemDurability = itemObj.GetValue("Durability", strCmp);
                    var tokKitItemAmount     = itemObj.GetValue("Amount", strCmp);
                    var tokAmmo = itemObj.GetValue("Ammo", strCmp);

                    var itemAsset = (ItemAsset)Assets.find(EAssetType.ITEM,
                                                           tokKitItemId?.Value <ushort>() ?? 0);

                    if (tokKitItemId == null || itemAsset == null)
                    {
                        UEssentials.Logger.LogWarning($"Invalid item id. Kit: {kit.Name} item Index: {itemIndex++}");
                        continue;
                    }

                    var kitItemId         = tokKitItemId.Value <ushort>();
                    var kitItemAmount     = tokKitItemAmount?.Value <byte>() ?? 1;
                    var kitItemDurability = tokKitItemDurability?.Value <byte>() ?? 100;

                    if (itemAsset.UseableType == EUseableType.GUN)
                    {
                        goto weaponItem;
                    }

                    if (itemAsset is ItemMagazineAsset || itemAsset is ItemSupplyAsset)
                    {
                        kitItem = new KitItemMagazine(kitItemId, kitItemDurability, kitItemAmount, tokAmmo?.Value <byte>() ?? 1);
                    }
                    else
                    {
                        kitItem = new KitItem(kitItemId, kitItemDurability, kitItemAmount);

                        if (itemAsset is ItemFuelAsset)
                        {
                            ((KitItem)kitItem).Metadata[0] = 1;
                        }
                    }
                    goto add;

weaponItem:
                    var tokFireMode = itemObj.GetValue("FireMode", strCmp);
                    var tokBarrel   = itemObj.GetValue("Barrel", strCmp);
                    var tokSight    = itemObj.GetValue("Sight", strCmp);
                    var tokGrip     = itemObj.GetValue("Grip", strCmp);
                    var tokMagazine = itemObj.GetValue("Magazine", strCmp);
                    var tokTactical = itemObj.GetValue("Tatical", strCmp) ?? itemObj.GetValue("Tactical", strCmp);

                    EFiremode?fireMode = null;
                    var       ammo     = tokAmmo?.Value <byte>() ?? null;

                    if (tokFireMode != null)
                    {
                        try
                        {
                            fireMode = (EFiremode)Enum.Parse(typeof(EFiremode),
                                                             tokFireMode.Value <string>(), true);
                        }
                        catch (ArgumentException)
                        {
                            UEssentials.Logger.LogWarning($"Invalid firemode '{tokFireMode.Value<string>()}' " +
                                                          $"in kit '{kit.Name}', item '{itemIndex + 1}'!");
                        }
                    }

                    kitItem = new KitItemWeapon(kitItemId,
                                                kitItemDurability,
                                                kitItemAmount,
                                                ammo,
                                                fireMode);

                    var weaponItem = (KitItemWeapon)kitItem;

                    Func <JToken, Attachment> deserializeAttach = json => {
                        return(json == null ? null : JsonConvert.DeserializeObject <Attachment>(json.ToString()));
                    };

                    weaponItem.Barrel   = deserializeAttach(tokBarrel);
                    weaponItem.Sight    = deserializeAttach(tokSight);
                    weaponItem.Tactical = deserializeAttach(tokTactical);
                    weaponItem.Grip     = deserializeAttach(tokGrip);
                    weaponItem.Magazine = deserializeAttach(tokMagazine);

add:
                    kit.Items.Add(kitItem);
                }
                loadedKits.Add(kit.Name.ToLowerInvariant(), kit);
            }

            return(loadedKits);
        }
        public virtual KitItem InsertKitItem(KitItem entity)
        {
            KitItem other = new KitItem();

            other = entity;
            if (entity.IsTransient())
            {
                string         sql            = @"Insert into KitItem ( [KitItemGUID]
				,[KitGroupID]
				,[Name]
				,[Description]
				,[PriceDelta]
				,[WeightDelta]
				,[IsDefault]
				,[DisplayOrder]
				,[ExtensionData]
				,[TextOptionMaxLength]
				,[TextOptionWidth]
				,[TextOptionHeight]
				,[InventoryVariantID]
				,[InventoryQuantityDelta]
				,[InventoryVariantColor]
				,[InventoryVariantSize]
				,[CreatedOn] )
				Values
				( @KitItemGUID
				, @KitGroupID
				, @Name
				, @Description
				, @PriceDelta
				, @WeightDelta
				, @IsDefault
				, @DisplayOrder
				, @ExtensionData
				, @TextOptionMaxLength
				, @TextOptionWidth
				, @TextOptionHeight
				, @InventoryVariantID
				, @InventoryQuantityDelta
				, @InventoryVariantColor
				, @InventoryVariantSize
				, @CreatedOn );
				Select scope_identity()"                ;
                SqlParameter[] parameterArray = new SqlParameter[] {
                    new SqlParameter("@KitItemID", entity.KitItemId)
                    , new SqlParameter("@KitItemGUID", entity.KitItemGuid)
                    , new SqlParameter("@KitGroupID", entity.KitGroupId)
                    , new SqlParameter("@Name", entity.Name)
                    , new SqlParameter("@Description", entity.Description ?? (object)DBNull.Value)
                    , new SqlParameter("@PriceDelta", entity.PriceDelta)
                    , new SqlParameter("@WeightDelta", entity.WeightDelta)
                    , new SqlParameter("@IsDefault", entity.IsDefault)
                    , new SqlParameter("@DisplayOrder", entity.DisplayOrder)
                    , new SqlParameter("@ExtensionData", entity.ExtensionData ?? (object)DBNull.Value)
                    , new SqlParameter("@TextOptionMaxLength", entity.TextOptionMaxLength ?? (object)DBNull.Value)
                    , new SqlParameter("@TextOptionWidth", entity.TextOptionWidth ?? (object)DBNull.Value)
                    , new SqlParameter("@TextOptionHeight", entity.TextOptionHeight ?? (object)DBNull.Value)
                    , new SqlParameter("@InventoryVariantID", entity.InventoryVariantId ?? (object)DBNull.Value)
                    , new SqlParameter("@InventoryQuantityDelta", entity.InventoryQuantityDelta)
                    , new SqlParameter("@InventoryVariantColor", entity.InventoryVariantColor ?? (object)DBNull.Value)
                    , new SqlParameter("@InventoryVariantSize", entity.InventoryVariantSize ?? (object)DBNull.Value)
                    , new SqlParameter("@CreatedOn", entity.CreatedOn)
                };
                var identity = SqlHelper.ExecuteScalar(this.ConnectionString, CommandType.Text, sql, parameterArray);
                if (identity == DBNull.Value)
                {
                    throw new DataException("Identity column was null as a result of the insert operation.");
                }
                return(GetKitItem(Convert.ToInt32(identity)));
            }
            return(entity);
        }