public static void MesoMarketTransaction(MesoMarketListing listing, long recipientCharacterId) { // Create mail for purchaser SendMesoMarketPurchaseMail(listing, recipientCharacterId); // Create mail for seller SendMesoMarketSoldMail(listing); }
public static PacketWriter CreateListing(MesoMarketListing listing) { PacketWriter pWriter = PacketWriter.Of(SendOp.MESO_MARKET); pWriter.Write(MesoMarketPacketMode.CreateListing); WriteListing(pWriter, listing); pWriter.WriteInt(); return(pWriter); }
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 })); }
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); }
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); }
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); }
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); }
public void RemoveListing(MesoMarketListing listing) { Listings.Remove(listing.Id); }
public void AddListing(MesoMarketListing listing) { Listings.Add(listing.Id, listing); }
public long CreateMesoMarketListing(MesoMarketListing listing) { Maple2.Sql.Model.MesoMarketListing dbListing = storage.mesoMarketListingConverter.ToModel(listing); context.MesoMarketListing.Add(dbListing); return(context.TrySaveChanges() ? dbListing.Id : -1); }