Beispiel #1
0
    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));
    }
Beispiel #2
0
    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);
    }
Beispiel #3
0
 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);
 }