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); } }
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); } }
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); } }
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); } }
internal void NotifyCreated(Asda2ItemRecord record) { OnRecordCreated(record); var evt = Created; if (evt != null) { evt(record); } }
internal void NotifyCreated(Asda2ItemRecord record) { this.OnRecordCreated(record); Action <Asda2ItemRecord> created = this.Created; if (created == null) { return; } created(record); }
private void OnRecordCreated(Asda2ItemRecord record) { /*if (IsCharter) * { * if (!record.IsNew) * { * // this is executed in the IO-context * PetitionRecord.LoadRecord(record.OwnerId); * } * }*/ }
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(); } }
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(); } }
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); }
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); } }
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(); } }
private void OnRecordCreated(Asda2ItemRecord record) { }