private static void PurchaseUgcItem(GameSession session, long ugcMarketItemId) { UgcMarketItem marketItem = GameServer.UgcMarketManager.FindItemById(ugcMarketItemId); if (marketItem is null || marketItem.ListingExpirationTimestamp < TimeInfo.Now()) { return; } if (!HandleMarketItemPay(session, marketItem.Price, MeretMarketCurrencyType.Meret)) { return; } marketItem.SalesCount++; DatabaseManager.UgcMarketItems.Update(marketItem); _ = new UgcMarketSale(marketItem.Price, marketItem.Item.Ugc.Name, marketItem.SellerCharacterId); Item item = new(marketItem.Item) { CreationTime = TimeInfo.Now() }; item.Uid = DatabaseManager.Items.Insert(item); session.Player.Inventory.AddItem(session, item, true); session.Send(MeretMarketPacket.Purchase(0, marketItem.MarketId, marketItem.Price, 1)); }
public static PacketWriter CollectProfit(UgcMarketSale sale) { PacketWriter pWriter = PacketWriter.Of(SendOp.MeretMarket); pWriter.Write(MeretMarketMode.CollectProfit); pWriter.WriteLong(sale.Id); pWriter.WriteInt(); pWriter.WriteLong(sale.Id); return(pWriter); }
public long Insert(UgcMarketSale sale) { return(QueryFactory.Query(TableName).InsertGetId <long>(new { price = sale.Price, profit = sale.Profit, item_name = sale.ItemName, sold_time = sale.SoldTimestamp, seller_character_id = sale.SellerCharacterId })); }
public void RemoveSale(UgcMarketSale sale) { Sales.Remove(sale.Id); }
public void AddSale(UgcMarketSale sale) { Sales.Add(sale.Id, sale); }