Esempio n. 1
0
    public static void MesoMarketTransaction(MesoMarketListing listing, long recipientCharacterId)
    {
        // Create mail for purchaser
        SendMesoMarketPurchaseMail(listing, recipientCharacterId);

        // Create mail for seller
        SendMesoMarketSoldMail(listing);
    }
Esempio n. 2
0
    public static PacketWriter CreateListing(MesoMarketListing listing)
    {
        PacketWriter pWriter = PacketWriter.Of(SendOp.MESO_MARKET);

        pWriter.Write(MesoMarketPacketMode.CreateListing);
        WriteListing(pWriter, listing);
        pWriter.WriteInt();
        return(pWriter);
    }
Esempio n. 3
0
 private static void WriteListing(PacketWriter pWriter, MesoMarketListing listing)
 {
     pWriter.WriteLong(listing.Id);
     pWriter.WriteLong(listing.Mesos);
     pWriter.WriteLong(listing.Price);
     pWriter.WriteLong(listing.ListedTimestamp);
     pWriter.WriteLong(listing.ExpiryTimestamp);
     pWriter.WriteByte();
 }
 public long Insert(MesoMarketListing listing)
 {
     return(QueryFactory.Query(TableName).InsertGetId <long>(new
     {
         listing_timestamp = listing.ListedTimestamp,
         expiry_timestamp = listing.ExpiryTimestamp,
         price = listing.Price,
         mesos = listing.Mesos,
         owner_account_id = listing.OwnerAccountId,
         owner_characteR_id = listing.OwnerCharacterId
     }));
 }
Esempio n. 5
0
    public static void SendMesoMarketCancellation(MesoMarketListing listing, long recipientCharacterId)
    {
        string senderName    = "<ms2><v key=\"s_mesoMarket_mail_to_sender\" /></ms2>";
        string title         = "<ms2><v key=\"s_mesoMarket_mail_to_cancel_title\" /></ms2>";
        string body          = "<ms2><v key=\"s_mesoMarket_mail_to_cancel_content\" /></ms2>";
        string addParameter2 = $"<ms2><v money=\"{listing.Mesos}\" ></v></ms2>";

        Mail mail = new(MailType.MesoMarket, recipientCharacterId, 0, senderName, title, body, "", addParameter2, new(), listing.Mesos, 0);

        GameServer.MailManager.AddMail(mail);
        SendNotification(mail);
    }
Esempio n. 6
0
    private static void SendMesoMarketSoldMail(MesoMarketListing listing)
    {
        string senderName    = "<ms2><v key=\"s_mesoMarket_mail_to_sender\" /></ms2>";
        string title         = "<ms2><v key=\"s_mesoMarket_mail_to_seller_title\" /></ms2>";
        string body          = "<ms2><v key=\"s_mesoMarket_mail_to_seller_content\" /></ms2>";
        string addParameter2 = $"<ms2><v money=\"{listing.Mesos}\" ></v><v money=\"{listing.Price}\" ></v><v money=\"0\" ></v><v money=\"0\" ></v><v money=\"{listing.Price}\" ></v></ms2>";

        Mail mail = new(MailType.MesoMarket, listing.OwnerCharacterId, 0, senderName, title, body, "", addParameter2, new(), 0, listing.Price);

        GameServer.MailManager.AddMail(mail);
        SendNotification(mail);
    }
Esempio n. 7
0
    private static void HandleCancelListing(GameSession session, PacketReader packet)
    {
        long listingId = packet.ReadLong();

        MesoMarketListing listing = GameServer.MesoMarketManager.GetListingById(listingId);

        if (listing is null)
        {
            session.Send(MesoMarketPacket.Error((int)MesoMarketError.TryAgain));
            return;
        }

        MailHelper.SendMesoMarketCancellation(listing, session.Player.CharacterId);
        session.Send(MesoMarketPacket.CancelListing(listing.Id));
        GameServer.MesoMarketManager.RemoveListing(listing);
        DatabaseManager.MesoMarketListings.Delete(listingId);
    }
Esempio n. 8
0
    private static void HandlePurchase(GameSession session, PacketReader packet)
    {
        long listingId = packet.ReadLong();

        if (session.Player.Account.MesoMarketMonthlyPurchases >= int.Parse(ConstantsMetadataStorage.GetConstant("MesoMarketMonthlyPurchaseLimit")))
        {
            return;
        }

        MesoMarketListing listing = GameServer.MesoMarketManager.GetListingById(listingId);

        if (listing is null)
        {
            session.Send(MesoMarketPacket.Error((int)MesoMarketError.ItemSoldOut));
            return;
        }

        if (!session.Player.Account.MesoToken.Modify(-listing.Price))
        {
            session.Send(MesoMarketPacket.Error((int)MesoMarketError.NotEnoughMesos));
            return;
        }

        if (listing.OwnerAccountId == session.Player.AccountId)
        {
            session.Send(MesoMarketPacket.Error((int)MesoMarketError.CantPurchaseOwnMeso));
            return;
        }

        session.Player.Account.MesoMarketMonthlyPurchases++;
        DatabaseManager.Accounts.Update(session.Player.Account);
        session.Send(MesoMarketPacket.Purchase(listingId));
        session.Send(MesoMarketPacket.AccountStats(session.Player.Account.MesoMarketDailyListings, session.Player.Account.MesoMarketMonthlyPurchases));

        MailHelper.MesoMarketTransaction(listing, session.Player.CharacterId);
        GameServer.MesoMarketManager.RemoveListing(listing);
        DatabaseManager.MesoMarketListings.Delete(listingId);
    }
Esempio n. 9
0
 public void RemoveListing(MesoMarketListing listing)
 {
     Listings.Remove(listing.Id);
 }
Esempio n. 10
0
 public void AddListing(MesoMarketListing listing)
 {
     Listings.Add(listing.Id, listing);
 }
Esempio n. 11
0
 public long CreateMesoMarketListing(MesoMarketListing listing)
 {
     Maple2.Sql.Model.MesoMarketListing dbListing = storage.mesoMarketListingConverter.ToModel(listing);
     context.MesoMarketListing.Add(dbListing);
     return(context.TrySaveChanges() ? dbListing.Id : -1);
 }