Ejemplo n.º 1
0
 public static void RegisterItem(Asda2ItemRecord item)
 {
     item.IsAuctioned    = true;
     item.AuctionEndTime = DateTime.Now + TimeSpan.FromDays(7.0);
     AllAuctionItems.Add((int)item.Guid, item);
     CategorizedItemsById[item.Template.AuctionCategory][item.Template.AuctionLevelCriterion]
     .Add(item);
     CategorizedItemsById[item.Template.AuctionCategory][AuctionLevelCriterion.All].Add(item);
     if (!ItemsByOwner.ContainsKey(item.OwnerId))
     {
         ItemsByOwner.Add(item.OwnerId, new Dictionary <int, Asda2ItemRecord>());
     }
     ItemsByOwner[item.OwnerId].Add(item.AuctionId, item);
     if (item.Template.IsShopInventoryItem)
     {
         if (!ShopItemsByOwner.ContainsKey(item.OwnerId))
         {
             ShopItemsByOwner.Add(item.OwnerId, new List <Asda2ItemRecord>());
         }
         ShopItemsByOwner[item.OwnerId].Add(item);
     }
     else
     {
         if (!RegularItemsByOwner.ContainsKey(item.OwnerId))
         {
             RegularItemsByOwner.Add(item.OwnerId, new List <Asda2ItemRecord>());
         }
         RegularItemsByOwner[item.OwnerId].Add(item);
     }
 }
Ejemplo n.º 2
0
        public static void Init()
        {
            foreach (Asda2ItemAuctionCategory key1 in Enum.GetValues(typeof(Asda2ItemAuctionCategory))
                     .Cast <Asda2ItemAuctionCategory>())
            {
                Dictionary <AuctionLevelCriterion, SortedSet <Asda2ItemRecord> > dictionary =
                    new Dictionary <AuctionLevelCriterion, SortedSet <Asda2ItemRecord> >();
                foreach (AuctionLevelCriterion key2 in Enum.GetValues(typeof(AuctionLevelCriterion))
                         .Cast <AuctionLevelCriterion>())
                {
                    dictionary.Add(key2,
                                   new SortedSet <Asda2ItemRecord>((IComparer <Asda2ItemRecord>)Asda2AuctionMgr.ItemsComparer));
                }
                Asda2AuctionMgr.CategorizedItemsById.Add(key1, dictionary);
            }

            foreach (Asda2ItemRecord loadAuctionedItem in Asda2ItemRecord.LoadAuctionedItems())
            {
                Asda2AuctionMgr.RegisterItem(loadAuctionedItem);
            }
            foreach (AuctionSelledRecord auctionSelledRecord in ActiveRecordBase <AuctionSelledRecord> .FindAll())
            {
                if (!Asda2AuctionMgr.SelledRecords.ContainsKey(auctionSelledRecord.ReciverCharacterId))
                {
                    Asda2AuctionMgr.SelledRecords.Add(auctionSelledRecord.ReciverCharacterId,
                                                      new List <AuctionSelledRecord>());
                }
                Asda2AuctionMgr.SelledRecords[auctionSelledRecord.ReciverCharacterId].Add(auctionSelledRecord);
            }
        }
Ejemplo n.º 3
0
 public static void UnRegisterItem(Asda2ItemRecord item)
 {
     item.IsAuctioned    = false;
     item.AuctionEndTime = DateTime.MinValue;
     Asda2AuctionMgr.AllAuctionItems.Remove((int)item.Guid);
     Asda2AuctionMgr.CategorizedItemsById[item.Template.AuctionCategory][item.Template.AuctionLevelCriterion]
     .Remove(item);
     Asda2AuctionMgr.CategorizedItemsById[item.Template.AuctionCategory][AuctionLevelCriterion.All].Remove(item);
     if (!Asda2AuctionMgr.ItemsByOwner.ContainsKey(item.OwnerId))
     {
         Asda2AuctionMgr.ItemsByOwner.Add(item.OwnerId, new Dictionary <int, Asda2ItemRecord>());
     }
     Asda2AuctionMgr.ItemsByOwner[item.OwnerId].Remove(item.AuctionId);
     if (item.Template.IsShopInventoryItem)
     {
         if (!Asda2AuctionMgr.ShopItemsByOwner.ContainsKey(item.OwnerId))
         {
             Asda2AuctionMgr.ShopItemsByOwner.Add(item.OwnerId, new List <Asda2ItemRecord>());
         }
         Asda2AuctionMgr.ShopItemsByOwner[item.OwnerId].Remove(item);
     }
     else
     {
         if (!Asda2AuctionMgr.RegularItemsByOwner.ContainsKey(item.OwnerId))
         {
             Asda2AuctionMgr.RegularItemsByOwner.Add(item.OwnerId, new List <Asda2ItemRecord>());
         }
         Asda2AuctionMgr.RegularItemsByOwner[item.OwnerId].Remove(item);
     }
 }
Ejemplo n.º 4
0
        public static void Init()
        {
            foreach (var cat in Enum.GetValues(typeof(Asda2ItemAuctionCategory)).Cast <Asda2ItemAuctionCategory>())
            {
                var byLevelItems = new Dictionary <AuctionLevelCriterion, SortedSet <Asda2ItemRecord> >();
                foreach (
                    var levelCriterion in Enum.GetValues(typeof(AuctionLevelCriterion)).Cast <AuctionLevelCriterion>())
                {
                    byLevelItems.Add(levelCriterion, new SortedSet <Asda2ItemRecord>(ItemsComparer));
                }
                CategorizedItemsById.Add(cat, byLevelItems);
            }
            var items = Asda2ItemRecord.LoadAuctionedItems();

            foreach (var item in items)
            {
                RegisterItem(item);
            }
            var sr = AuctionSelledRecord.FindAll();

            foreach (var rec in sr)
            {
                if (!SelledRecords.ContainsKey(rec.ReciverCharacterId))
                {
                    SelledRecords.Add(rec.ReciverCharacterId, new List <AuctionSelledRecord>());
                }
                SelledRecords[rec.ReciverCharacterId].Add(rec);
            }
        }
Ejemplo n.º 5
0
        internal void NotifyCreated(Asda2ItemRecord record)
        {
            OnRecordCreated(record);
            var evt = Created;

            if (evt != null)
            {
                evt(record);
            }
        }
Ejemplo n.º 6
0
        internal void NotifyCreated(Asda2ItemRecord record)
        {
            this.OnRecordCreated(record);
            Action <Asda2ItemRecord> created = this.Created;

            if (created == null)
            {
                return;
            }
            created(record);
        }
Ejemplo n.º 7
0
 private void OnRecordCreated(Asda2ItemRecord record)
 {
     /*if (IsCharter)
      * {
      *  if (!record.IsNew)
      *  {
      *      // this is executed in the IO-context
      *      PetitionRecord.LoadRecord(record.OwnerId);
      *  }
      * }*/
 }
Ejemplo n.º 8
0
        private static void SendMoneyToSeller(Asda2ItemRecord item)
        {
            Character character = World.GetCharacter(item.OwnerId);

            if (character != null)
            {
                Asda2AuctionMgr.SendMoneyToSeller(item.Template.Name, item.AuctionPrice, item.Amount, character);
            }
            else
            {
                new AuctionSelledRecord(item.OwnerId, item.AuctionPrice, item.Amount, item.ItemId).Create();
            }
        }
Ejemplo n.º 9
0
        private static void SendMoneyToSeller(Asda2ItemRecord item)
        {
            var chr = World.GetCharacter(item.OwnerId);

            if (chr != null)
            {
                SendMoneyToSeller(item.Template.Name, item.AuctionPrice, item.Amount, chr);
            }
            else
            {
                var newRec = new AuctionSelledRecord(item.OwnerId, item.AuctionPrice, item.Amount, item.ItemId);
                newRec.Create();
            }
        }
Ejemplo n.º 10
0
        private void Init()
        {
            if (ItemGuid <= 0)
            {
                return;
            }
            Asda2ItemRecord itemRec;

            try
            {
                itemRec = Asda2ItemRecord.Find(ItemGuid);
            }
            catch (NotFoundException)
            {
                LogUtil.WarnException(string.Format("Mail message {0} failed to load cause item {1} not founded. Mail message deleted.", Guid, ItemGuid));
                ItemGuid = -1;
                this.SaveLater();
                return;
            }
            Item = Asda2Item.CreateItem(itemRec, (Character)null);
        }
Ejemplo n.º 11
0
        public static void TryRemoveItems(Character activeCharacter, List <int> itemIds)
        {
            uint entityLowId = activeCharacter.Record.EntityLowId;

            if (!Asda2AuctionMgr.ItemsByOwner.ContainsKey(entityLowId))
            {
                activeCharacter.SendAuctionMsg("Failed to remove items from auction. Items not founded.");
            }
            else
            {
                bool?nullable1 = new bool?();
                List <Asda2ItemRecord> asda2ItemRecordList = new List <Asda2ItemRecord>();
                foreach (int itemId in itemIds)
                {
                    if (!Asda2AuctionMgr.ItemsByOwner[entityLowId].ContainsKey(itemId))
                    {
                        asda2ItemRecordList.Clear();
                        activeCharacter.SendAuctionMsg("Failed to remove items from auction. Item not founded.");
                        return;
                    }

                    Asda2ItemRecord asda2ItemRecord = Asda2AuctionMgr.ItemsByOwner[entityLowId][itemId];
                    if (!nullable1.HasValue)
                    {
                        nullable1 = new bool?(asda2ItemRecord.Template.IsShopInventoryItem);
                    }
                    bool?nullable2         = nullable1;
                    bool shopInventoryItem = asda2ItemRecord.Template.IsShopInventoryItem;
                    if ((nullable2.GetValueOrDefault() != shopInventoryItem ? 1 : (!nullable2.HasValue ? 1 : 0)) != 0)
                    {
                        activeCharacter.YouAreFuckingCheater(
                            "Trying to remove shop\not shop item in one auction buy request.", 1);
                        activeCharacter.SendAuctionMsg(
                            "Removing from auction failed cause founded shop\not shop items in one request.");
                    }

                    asda2ItemRecordList.Add(asda2ItemRecord);
                }

                if (nullable1.Value)
                {
                    if (activeCharacter.Asda2Inventory.FreeShopSlotsCount < asda2ItemRecordList.Count)
                    {
                        activeCharacter.SendAuctionMsg("Failed to delete items. Not enoght invntory space.");
                        return;
                    }
                }
                else if (activeCharacter.Asda2Inventory.FreeRegularSlotsCount < asda2ItemRecordList.Count)
                {
                    activeCharacter.SendAuctionMsg("Failed to delete items. Not enoght invntory space.");
                    return;
                }

                List <Asda2ItemTradeRef> asda2Items = new List <Asda2ItemTradeRef>();
                foreach (Asda2ItemRecord record in asda2ItemRecordList)
                {
                    Asda2AuctionMgr.UnRegisterItem(record);
                    int       amount          = record.Amount;
                    int       auctionId       = record.AuctionId;
                    Asda2Item asda2Item       = (Asda2Item)null;
                    Asda2Item itemToCopyStats = Asda2Item.CreateItem(record, (Character)null);
                    int       num             = (int)activeCharacter.Asda2Inventory.TryAdd(record.ItemId, record.Amount, true,
                                                                                           ref asda2Item, new Asda2InventoryType?(), itemToCopyStats);
                    record.DeleteLater();
                    asda2Items.Add(new Asda2ItemTradeRef()
                    {
                        Amount = amount,
                        Item   = asda2Item,
                        Price  = auctionId
                    });
                    Log.Create(Log.Types.ItemOperations, LogSourceType.Character, activeCharacter.EntryId)
                    .AddAttribute("source", 0.0, "removed_from_auction").AddItemAttributes(asda2Item, "").Write();
                }

                Asda2AuctionHandler.SendItemFromAukRemovedResponse(activeCharacter.Client, asda2Items);
            }
        }
Ejemplo n.º 12
0
        public static void TryBuy(List <int> aucIds, Character chr)
        {
            if (aucIds.Count == 0)
            {
                return;
            }
            List <Asda2ItemRecord> asda2ItemRecordList = new List <Asda2ItemRecord>();
            uint amount1   = 0;
            bool?nullable1 = new bool?();

            foreach (int aucId in aucIds)
            {
                if (!Asda2AuctionMgr.AllAuctionItems.ContainsKey(aucId))
                {
                    chr.SendAuctionMsg("Can't found item you want to buy, may be some one already buy it.");
                    return;
                }

                Asda2ItemRecord allAuctionItem = Asda2AuctionMgr.AllAuctionItems[aucId];
                if (!nullable1.HasValue)
                {
                    nullable1 = new bool?(allAuctionItem.Template.IsShopInventoryItem);
                }
                bool?nullable2         = nullable1;
                bool shopInventoryItem = allAuctionItem.Template.IsShopInventoryItem;
                if ((nullable2.GetValueOrDefault() != shopInventoryItem ? 1 : (!nullable2.HasValue ? 1 : 0)) != 0)
                {
                    chr.YouAreFuckingCheater("Trying to buy shop\not shop item in one auction buy request.", 1);
                    chr.SendAuctionMsg("Buying from auction failed cause founded shop\not shop items in one request.");
                }

                asda2ItemRecordList.Add(allAuctionItem);
                amount1 += (uint)allAuctionItem.AuctionPrice;
            }

            if (chr.Money <= amount1)
            {
                chr.SendAuctionMsg("Failed to buy items. Not enoght money.");
            }
            else
            {
                if (nullable1.HasValue && nullable1.Value)
                {
                    if (chr.Asda2Inventory.FreeShopSlotsCount < asda2ItemRecordList.Count)
                    {
                        chr.SendAuctionMsg("Failed to buy items. Not enoght invntory space.");
                        return;
                    }
                }
                else if (chr.Asda2Inventory.FreeRegularSlotsCount < asda2ItemRecordList.Count)
                {
                    chr.SendAuctionMsg("Failed to buy items. Not enoght invntory space.");
                    return;
                }

                chr.SubtractMoney(amount1);
                List <Asda2ItemTradeRef> items = new List <Asda2ItemTradeRef>();
                foreach (Asda2ItemRecord record in asda2ItemRecordList)
                {
                    Asda2AuctionMgr.SendMoneyToSeller(record);
                    Asda2AuctionMgr.UnRegisterItem(record);
                    int       amount2         = record.Amount;
                    int       auctionId       = record.AuctionId;
                    Asda2Item asda2Item       = (Asda2Item)null;
                    Asda2Item itemToCopyStats = Asda2Item.CreateItem(record, (Character)null);
                    int       num             = (int)chr.Asda2Inventory.TryAdd(record.ItemId, record.Amount, true, ref asda2Item,
                                                                               new Asda2InventoryType?(), itemToCopyStats);
                    items.Add(new Asda2ItemTradeRef()
                    {
                        Amount = amount2,
                        Item   = asda2Item,
                        Price  = auctionId
                    });
                    record.DeleteLater();
                }

                Asda2AuctionHandler.SendItemsBuyedFromAukResponse(chr.Client, items);
                chr.SendMoneyUpdate();
            }
        }
Ejemplo n.º 13
0
 private void OnRecordCreated(Asda2ItemRecord record)
 {
 }