コード例 #1
0
        public static string ParseItem(InventoryItemModel item, ProductModel p)
        {
            bool relic = false;

            if (item.ItemName.Key.IndexOf("RELIC_") == 0)
            {
                relic = true;
            }
            string outText = "[" + GenerateIniName(item.ItemName.Key.Replace("RELIC_", "ITEM_")) + "]\n";

            outText += "name={ffg:" + item.ItemName.Key + "}\n";
            outText += "image=" + ImagePath(item.Icon.Path, p) + "\n";
            outText += "traits=";
            foreach (ItemTraits trait in Enum.GetValues(typeof(ItemTraits)))
            {
                if ((item.Traits & trait) != 0)
                {
                    outText += trait.ToString().ToLower() + " ";
                }
            }
            outText += item.Deck.ToString().ToLower() + "\n";
            if (!relic)
            {
                outText += "minfame=" + item.MinGroupLevel.ToString().ToLower() + "\n";
                outText += "maxfame=" + item.MaxGroupLevel.ToString().ToLower() + "\n";
                outText += "price=" + item.CostBuy + "\n";
            }
            return(outText);
        }
コード例 #2
0
        public CharacterInventory(Player character)
        {
            this.Player = character;
            if (!String.IsNullOrEmpty(character.Stuff))
            {
                if (character.Stuff[character.Stuff.Length - 1] == '|')
                {
                    character.Stuff = character.Stuff.Substring(0, character.Stuff.Length - 1);
                }
                InventoryItemTable.Load(character.Stuff.Replace("|", ","));
            }
            foreach (String item in Regex.Split(character.Stuff, "\\|"))
            {
                if (String.IsNullOrEmpty(item))
                {
                    continue;
                }
                int guid = int.Parse(item);

                InventoryItemModel obj = InventoryItemTable.getItem(guid);
                if (obj != null)
                {
                    Add(obj);
                }
            }
        }
コード例 #3
0
        public bool DoesMeetRequirement(UserDataModel userData)
        {
            if (userData.IsCurrencyRankExempt)
            {
                return(true);
            }

            InventoryModel inventory = this.GetInventory();

            if (inventory == null)
            {
                return(false);
            }

#pragma warning disable CS0612 // Type or member is obsolete
            if (!string.IsNullOrEmpty(this.ItemName))
            {
                InventoryItemModel item = inventory.GetItem(this.ItemName);
                if (item != null)
                {
                    this.ItemID = item.ID;
                }
                this.ItemName = null;
            }
#pragma warning restore CS0612 // Type or member is obsolete

            return(inventory.HasAmount(userData, this.ItemID, this.Amount));
        }
コード例 #4
0
        public override bool SellItem(WorldClient Client, InventoryItemModel Item, ushort Quantity)
        {
            if (this.myEnd)
            {
                return(false);
            }

            if (Quantity > Item.Quantity)
            {
                Quantity = (ushort)Item.Quantity;
            }

            uint Refund = (uint)Math.Floor((double)ItemTemplateTable.GetTemplate(Item.TemplateID).Price / 10) * Quantity;

            Client.Character.InventoryCache.AddKamas(Refund);
            if (Quantity == Item.Quantity)
            {
                //DatabaseEntities.TryDeleteItem(Item);
                InventoryItemTable.removeItem(Item.ID);
                Client.Send(new ObjectRemoveMessage(Item.ID));
            }
            else
            {
                Client.Character.InventoryCache.UpdateObjectquantity(Item, Item.Quantity - Quantity);
            }

            Client.Send(new AccountStatsMessage(Client.Character));

            return(true);
        }
コード例 #5
0
        public void SetInventoryRequirement(InventoryRequirementViewModel inventoryRequirement)
        {
            if (inventoryRequirement != null && ChannelSession.Settings.Inventory.ContainsKey(inventoryRequirement.InventoryID))
            {
                this.EnableDisableToggleSwitch.IsChecked = true;

                this.InventoryTypeComboBox.ItemsSource  = ChannelSession.Settings.Inventory.Values;
                this.InventoryTypeComboBox.SelectedItem = ChannelSession.Settings.Inventory[inventoryRequirement.InventoryID];

                this.InventoryItemComboBox.IsEnabled   = true;
                this.InventoryItemComboBox.ItemsSource = ChannelSession.Settings.Inventory[inventoryRequirement.InventoryID].Items.Values;

#pragma warning disable CS0612 // Type or member is obsolete
                if (!string.IsNullOrEmpty(inventoryRequirement.ItemName))
                {
                    InventoryItemModel item = ChannelSession.Settings.Inventory[inventoryRequirement.InventoryID].GetItem(inventoryRequirement.ItemName);
                    if (item != null)
                    {
                        inventoryRequirement.ItemID = item.ID;
                    }
                    inventoryRequirement.ItemName = null;
                }
#pragma warning restore CS0612 // Type or member is obsolete

                if (ChannelSession.Settings.Inventory[inventoryRequirement.InventoryID].ItemExists(inventoryRequirement.ItemID))
                {
                    this.InventoryItemComboBox.SelectedItem = ChannelSession.Settings.Inventory[inventoryRequirement.InventoryID].GetItem(inventoryRequirement.ItemID);
                }

                this.InventoryItemAmountTextBox.IsEnabled = true;
                this.InventoryItemAmountTextBox.Text      = inventoryRequirement.Amount.ToString();
            }
        }
コード例 #6
0
    private void AddItem(InventoryItemModel itemInformation)
    {
        var newItem = Instantiate(itemPrefab, itemParent);

        newItem.GetComponent <InventoryItemUI>().Initialize(itemInformation, _demoImplementation);
        _items.Add(newItem);
    }
コード例 #7
0
        public override async Task <bool> Validate(UserViewModel user)
        {
            InventoryModel inventory = this.Inventory;

            if (inventory == null)
            {
                return(false);
            }

            InventoryItemModel item = this.Item;

            if (item == null)
            {
                return(false);
            }

            if (!user.Data.IsCurrencyRankExempt && !inventory.HasAmount(user.Data, item, this.Amount))
            {
                await this.SendChatMessage(string.Format("You do not have the required {0} {1} to do this", this.Amount, item.Name));

                return(false);
            }

            return(true);
        }
コード例 #8
0
        public static InventoryItemModel Load(long id)
        {
            var reader = DatabaseManager.Provider.ExecuteReader("SELECT * FROM inventory_item WHERE guid = " + id);
            InventoryItemModel itemToReturn = null;

            while (reader.Read())
            {
                itemToReturn = new InventoryItemModel()
                {
                    ID         = reader.GetInt64("guid"),
                    TemplateID = reader.GetInt32("template"),
                    Quantity   = reader.GetInt32("qua"),
                    Position   = reader.GetInt32("pos"),
                    Effects    = reader.GetString("stats"),
                    SpeakingID = reader.GetInt64("speaking"),
                };
                addItem(itemToReturn, false);
            }
            reader.Close();
            if (itemToReturn.SpeakingID != 0)
            {
                SpeakingTable.Load(itemToReturn.ID);
            }
            return(itemToReturn);
        }
コード例 #9
0
        public async void TestUpdate(string expectedName)
        {
            var options = new DbContextOptionsBuilder <InventoryDbContext>().UseSqlServer(connString).Options;
            InventoryItemModel inventoryItem = new InventoryItemModel();

            using (var context = new InventoryDbContext(options))
            {
                inventoryItem.ItemId          = 12;
                inventoryItem.ItemName        = "Brush";
                inventoryItem.ItemPrice       = 12;
                inventoryItem.ItemDescription = "Only 7 piece is remaining";
                inventoryItem.LastUpdateDate  = DateTime.Now;
                var test = new Inventory_Repository(context);
                await test.Update(inventoryItem);
            }

            using (var context = new InventoryDbContext(options))
            {
                var test   = new Inventory_Repository(context);
                var result = await test.GetById(inventoryItem.ItemId);

                Assert.NotNull(result);
                Assert.Contains(expectedName, result.ItemName);
            }
        }
コード例 #10
0
        public static InventoryItemModel TryCreateItem(int templateId, Player Character, int quantity = 1, short position = -1, string Stats = null, Boolean useMax = false)
        {
            if (!ItemTemplateTable.Cache.ContainsKey(templateId)) // Template inexistant
            {
                return(null);
            }

            // Recup template
            var Template = ItemTemplateTable.GetTemplate(templateId);

            // Creation

            var Item = new InventoryItemModel()
            {
                ID         = DatabaseCache.nextItemGuid++,
                TemplateID = templateId,
                Position   = position,
                Quantity   = quantity,
                Effects    = (Stats == null ? (Template.Type == 113 ? Template.StatsTemplate : Template.GenerateStats(useMax).ToItemStats()) : Stats)
            };

            Item.GetStats();

            // Ajout de l'item dans l'inventaire
            if (Character.InventoryCache.Add(Item))
            {
                addItem(Item, true);
            }
            return(Item);
        }
コード例 #11
0
        public static InventoryItemModel TryCreateItem(int templateId, TaxCollector TCollector, int quantity = 1, short position = -1, string Stats = null, Boolean useMax = false)
        {
            if (!ItemTemplateTable.Cache.ContainsKey(templateId)) // Template inexistant
            {
                return(null);
            }

            // Recup template
            var Template = ItemTemplateTable.GetTemplate(templateId);

            // Creation

            var Item = new InventoryItemModel()
            {
                ID         = DatabaseCache.nextItemGuid++,
                TemplateID = templateId,
                Position   = position,
                Quantity   = quantity,
                Effects    = (Stats == null ? Template.GenerateStats().ToItemStats() : Stats)
            };

            Item.GetStats();

            // Ajout de l'item dans l'inventaire
            TCollector.Items.Add(Item.ID, Item);
            addItem(Item, true);

            return(Item);
        }
コード例 #12
0
        public static void Load(string ids)
        {
            var         reader     = DatabaseManager.Provider.ExecuteReader("SELECT * FROM inventory_item WHERE guid IN (" + ids + ");");
            List <long> LivingItem = new List <long>();

            while (reader.Read())
            {
                var item = new InventoryItemModel()
                {
                    ID         = reader.GetInt64("guid"),
                    TemplateID = reader.GetInt32("template"),
                    Quantity   = reader.GetInt32("qua"),
                    Position   = reader.GetInt32("pos"),
                    Effects    = reader.GetString("stats"),
                    SpeakingID = reader.GetInt64("speaking"),
                };
                if (item.SpeakingID != 0)
                {
                    LivingItem.Add(item.SpeakingID);
                }
                addItem(item, false);
            }

            reader.Close();

            if (LivingItem.Count > 0)
            {
                SpeakingTable.Load(LivingItem);
            }
        }
コード例 #13
0
        public void OnItemUsed()
        {
            //handle equipping an item
            if (SelectedItem >= 0)
            {
                InventoryItemInstance itemInstance = ItemLookupTable[SelectedItem];
                InventoryItemModel    itemModel    = itemInstance.ItemModel;

                if (itemModel is WeaponItemModel)
                {
                    if (!itemInstance.Equipped)
                    {
                        GameState.Instance.Player.EquipWeapon(itemInstance);
                        QdmsMessageBus.Instance.PushBroadcast(new RpgChangeWeaponMessage());

                        SelectedItemText.text = SelectedItemText.text + " [!]";
                    }
                    //TODO unequip?
                }
                else if (itemModel is AidItemModel)
                {
                    var aim = (AidItemModel)itemModel;
                    aim.Apply();
                    GameState.Instance.Player.RemoveItem(ItemLookupTable[SelectedItem]);

                    //TODO effect or at least a message
                }

                SignalPaint();
            }
        }
        /// <summary>
        /// Saves this instance.
        /// </summary>
        /// <returns>System.Int32.</returns>
        public string Save()
        {
            var inventoryItem = new InventoryItemModel
            {
                InventoryItemId     = View.InventoryItemId,
                InventoryCategoryId = View.InventoryCategoryId,
                InventoryItemCode   = View.InventoryItemCode,
                InventoryItemName   = View.InventoryItemName,
                Description         = View.Description,
                Unit               = View.Unit,
                ConvertUnit        = View.ConvertUnit,
                ConvertRate        = View.ConvertRate,
                UnitPrice          = View.UnitPrice,
                SalePrice          = View.SalePrice,
                DefaultStockId     = View.DefaultStockId,
                DepartmentId       = View.DepartmentId,
                InventoryAccount   = View.InventoryAccount,
                COGSAccount        = View.COGSAccount,
                SaleAccount        = View.SaleAccount,
                CostMethod         = View.CostMethod,
                AccountingObjectId = View.AccountingObjectId,
                TaxRate            = View.TaxRate,
                IsTool             = View.IsTool,
                IsService          = View.IsService,
                IsActive           = View.IsActive,
                IsTaxable          = View.IsTaxable,
                IsStock            = View.IsStock,
                MadeIn             = View.MadeIn
            };

            return(View.InventoryItemId == null?Model.InsertInventoryItem(inventoryItem) : Model.UpdateInventoryItem(inventoryItem));
        }
コード例 #15
0
        public void OnItemDropped()
        {
            if (SelectedItem >= 0)
            {
                InventoryItemInstance itemInstance = ItemLookupTable[SelectedItem];
                InventoryItemModel    itemModel    = itemInstance.ItemModel;

                if (itemModel.Essential)
                {
                    Debug.LogWarning("Tried to drop an essential item!");
                }

                if (itemInstance.Equipped)
                {
                    GameState.Instance.PlayerRpgState.UnequipItem(itemInstance);
                }

                if (itemModel.Stackable)
                {
                    //do quantity selection with modal dialogue if inventory is stackable

                    Modal.PushQuantityModal("Quantity To Drop", 0, itemInstance.Quantity, itemInstance.Quantity, true, string.Empty,
                                            delegate(ModalStatusCode status, string tag, int quantity) { CompleteItemDrop(itemInstance, itemModel, quantity, status); }, true);
                    //like I don't see why that won't work but holy shit is it ugly
                }
                else
                {
                    CompleteItemDrop(itemInstance, itemModel, 1, ModalStatusCode.Complete);
                }
            }
        }
コード例 #16
0
        private void DeleteItemButton_Click(object sender, RoutedEventArgs e)
        {
            Button             button = (Button)sender;
            InventoryItemModel item   = (InventoryItemModel)button.DataContext;

            this.viewModel.Items.Remove(item);
            this.viewModel.SelectedItem = null;
        }
コード例 #17
0
ファイル: BankHelper.cs プロジェクト: 745c5412/tera-emu
        public static void removeFromBank(Player character, int guid, int qua)
        {
            InventoryItemModel BankObj = InventoryItemTable.getItem(guid);

            if (BankObj == null)
            {
                character.Send(new BasicNoOperationMessage());
                return;
            }
            if (!character.Client.Account.Data.bankItems.ContainsKey(guid))
            {
                Logger.Error("Le joueur " + character.Name + " a tenter de retirer un Item en banque qu'il n'avait pas.");
            }
            InventoryItemModel PersoObj = character.InventoryCache.ItemsCache.Values.FirstOrDefault(x => x.TemplateID == BankObj.TemplateID && x.GetStats().ToItemStats() == BankObj.GetStats().ToItemStats() && x.ID != BankObj.ID && x.Position == -1); /* getSimilarBankItem(Character, BankObj);*/
            int newQua = BankObj.Quantity - qua;

            if (PersoObj == null)
            {
                if (newQua <= 0)
                {
                    character.Client.Account.Data.bankItems.Remove(guid);
                    character.InventoryCache.Add(BankObj, false);
                    String str = "O-" + guid;
                    character.Send(new BankUpdateMessage(str));
                }
                else
                {
                    PersoObj = getCloneItem(BankObj, qua);
                    InventoryItemTable.addItem(PersoObj, true);
                    character.InventoryCache.Add(PersoObj, false);
                    String str = "O+" + BankObj.ID + "|" + BankObj.Quantity + "|" + BankObj.TemplateID + "|" + BankObj.GetStats().ToItemStats();
                    character.Send(new BankUpdateMessage(str));
                }
            }
            else
            {
                if (newQua <= 0)
                {
                    character.Client.Account.Data.bankItems.Remove(BankObj.ID);
                    InventoryItemTable.removeItem(BankObj.ID);
                    PersoObj.Quantity += BankObj.Quantity;
                    character.Send(new ObjectQuantityMessage(PersoObj.ID, PersoObj.Quantity));
                    String str = "O-" + guid;
                    character.Send(new BankUpdateMessage(str));
                }
                else
                {
                    BankObj.Quantity   = newQua;
                    PersoObj.Quantity += qua;
                    character.Send(new ObjectQuantityMessage(PersoObj.ID, PersoObj.Quantity));
                    String str = "O+" + BankObj.ID + "|" + BankObj.Quantity + "|" + BankObj.TemplateID + "|" + BankObj.GetStats().ToItemStats();
                    character.Send(new BankUpdateMessage(str));
                }
            }
            //SEND POD MESSAGE ?
            character.GetClient().Account.Data.Save();
        }
        private InventoryItemModel GetInventoryItemBy(CatalogItemModel item)
        {
            string             json = item.SerializeToJson();
            InventoryItemModel inventoryItemModel = json.DeserializeTo <InventoryItemModel>();

            inventoryItemModel.RemainingUses = 1;
            inventoryItemModel.InstanceId    = null;
            return(inventoryItemModel);
        }
コード例 #19
0
        private static void ProcessObjectUseRequest(WorldClient Client, string Packet)
        {
            int    guid       = -1;
            int    targetGuid = -1;
            int    targetCell = -1;
            Player Target     = null;

            try
            {
                String[] infos = Regex.Split(Packet.Substring(2), "\\|");
                guid = int.Parse(infos[0]);
                if (infos.Length == 3)
                {
                    targetCell = int.Parse(infos[2]);
                }
                try //try
                {
                    targetGuid = int.Parse(infos[1]);
                }
                catch (Exception e)
                {
                    targetGuid = -1;
                };
            }
            catch (Exception e)
            {
                Logger.Error(e);
                return;
            }
            if (CharacterTable.GetCharacter(targetGuid) != null)
            {
                Target = CharacterTable.GetCharacter(targetGuid);
            }
            if (!Client.Character.InventoryCache.hasItemGuid(guid))
            {
                return;
            }

            InventoryItemModel obj = InventoryItemTable.getItem(guid);
            ItemTemplateModel  T   = obj.Template;

            if (!T.Criterions.Equals("") && !ConditionParser.validConditions(Client.Character, T.Criterions))
            {
                Client.Send(new ImMessage("119|43"));
                return;
            }
            if (T.ItemType == ItemTypeEnum.ITEM_TYPE_PAIN || T.ItemType == ItemTypeEnum.ITEM_TYPE_VIANDE_COMESTIBLE)
            {
                Client.Character.myMap.SendToMap(new MapEmoticoneMessage(Client.Character.ActorId, 17));
            }
            else if (T.ItemType == ItemTypeEnum.ITEM_TYPE_BIERE)
            {
                Client.Character.myMap.SendToMap(new MapEmoticoneMessage(Client.Character.ActorId, 18));
            }
            T.applyAction(Client.Character, Target, guid, (short)targetCell);
        }
コード例 #20
0
ファイル: MainWindow.xaml.cs プロジェクト: glenatuw/csharp
        private void LoadInventory()
        {
            var inventory = App.InventoryRepository.GetSome(uxSearchInput.Text);

            uxInventoryList.ItemsSource = inventory
                                          .Select(t => InventoryItemModel.ToModel(t))
                                          .ToList();

            uxItemCount.Text = uxInventoryList.Items.Count + " Inventory Items";
        }
 public void ConsumeInventoryItem(InventoryItemModel item, uint count, Action <InventoryItemModel> onSuccess,
                                  Action <InventoryItemModel> onFailed = null)
 {
     StoreDemoPopup.ConsumeConfirmation(item.Name, count, () =>
     {
         StoreDemoPopup.ShowSuccess();
         RemoveItemFromInventory(item, count);
         onSuccess?.Invoke(item);
     }, () => onFailed?.Invoke(item));
 }
コード例 #22
0
    private void OnItemIncrease(InventoryItemModel item, int amount, int delta, bool added)
    {
        if (!added)
        {
            return;
        }

        _creation_items_queue.Enqueue(item);
        _total_items_count++;
        SetContentSize();
    }
コード例 #23
0
 public static void addItem(InventoryItemModel item, bool saveSQL)
 {
     if (Items.ContainsKey(item.ID))
     {
         Items.Remove(item.ID);
     }
     Items.Add(item.ID, item);
     if (saveSQL)
     {
         Add(item);
     }
 }
コード例 #24
0
    internal void Clear()
    {
        _mover.Stop();
        icon_img.sprite  = null;
        icon_img.enabled = false;

        _inventory_item.OnIncrease -= OnIncrease;
        _inventory_item.OnDecrease -= OnDecrease;
        _inventory_item             = null;
        dragable_item.Clear();

        gameObject.SetActive(false);
    }
コード例 #25
0
ファイル: BankHelper.cs プロジェクト: 745c5412/tera-emu
        public static InventoryItemModel getCloneItem(InventoryItemModel obj, int qua)
        {
            InventoryItemModel ob = new InventoryItemModel()
            {
                ID         = DatabaseCache.nextItemGuid++,
                TemplateID = obj.TemplateID,
                Quantity   = qua,
                Position   = -1,
                Effects    = obj.GetStats().ToItemStats(),
            };

            return(ob);
        }
コード例 #26
0
        public async Task <IActionResult> Put([FromBody] InventoryItemModel inventoryItem)
        {
            try
            {
                inventoryItem.LastUpdateDate = DateTime.Now;
                await _genericRepository.Update(inventoryItem);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
コード例 #27
0
 public void ConsumeInventoryItem(InventoryItemModel item, uint count,
                                  [NotNull] Action <InventoryItemModel> onSuccess,
                                  [CanBeNull] Action <InventoryItemModel> onFailed = null)
 {
     StoreDemoPopup.ConsumeConfirmation(item.Name, count, () => {
         PlayfabApi.Inventory.ConsumeItem(item.InstanceId, count, () =>
         {
             StoreDemoPopup.ShowSuccess();
             onSuccess?.Invoke(item);
         }, GetErrorCallback(_ => onFailed?.Invoke(item)));
     },
                                        () => onFailed?.Invoke(item)
                                        );
 }
コード例 #28
0
 public bool Add(InventoryItemModel item, bool merge = true)
 {
     if (merge && TryMergeItem(item.TemplateID, item.Effects, item.Slot, item.Quantity))
     {
         return(false);
     }
     if (ItemsCache.ContainsKey(item.ID))
     {
         ItemsCache.Remove(item.ID);
     }
     ItemsCache.Add(item.ID, item);
     Player.Send(new ObjectAddInventoryMessage(item));
     return(true);
 }
コード例 #29
0
ファイル: BankHelper.cs プロジェクト: 745c5412/tera-emu
 private static InventoryItemModel getSimilarBankItem(Player character, InventoryItemModel obj)
 {
     foreach (InventoryItemModel value in character.Client.Account.Data.bankItems.Values.Where(x => x.Template.ID == obj.Template.ID))
     {
         if (value.Template.ItemType == ItemTypeEnum.ITEM_TYPE_PIERRE_AME_PLEINE)
         {
             continue;
         }
         if (value.GetStats().ToItemStats() == obj.GetStats().ToItemStats())
         {
             return(value);
         }
     }
     return(null);
 }
コード例 #30
0
        private void CompleteItemDrop(InventoryItemInstance itemInstance, InventoryItemModel itemModel, int quantity, ModalStatusCode status)
        {
            if (quantity == 0 || status != ModalStatusCode.Complete)
            {
                return;
            }

            GameState.Instance.PlayerRpgState.Inventory.RemoveItem(itemInstance, quantity);
            Transform playerT = WorldUtils.GetPlayerObject().transform;
            Vector3   dropPos = (playerT.position + (playerT.forward.normalized * 1.0f));

            RpgWorldUtils.DropItem(itemModel, quantity, dropPos);

            SignalPaint();
        }