Advertisement
Guest User

Marketplace.cs - BcStorm

a guest
Aug 3rd, 2014
394
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.65 KB | None | 0 0
  1. namespace Butterfly.HabboHotel.Catalogs
  2. {
  3.     using Butterfly;
  4.     using Butterfly.HabboHotel.GameClients;
  5.     using Butterfly.HabboHotel.Items;
  6.     using Butterfly.Messages;
  7.     using Database_Manager.Database.Session_Details.Interfaces;
  8.     using HabboEvents;
  9.     using System;
  10.     using System.Collections.Generic;
  11.     using System.Data;
  12.     using System.Text;
  13.  
  14.     internal class Marketplace
  15.     {
  16.         internal static int CalculateComissionPrice(float SellingPrice)
  17.         {
  18.             return (int) Math.Ceiling((double) (SellingPrice / 100f));
  19.         }
  20.  
  21.         internal static bool CanSellItem(UserItem Item)
  22.         {
  23.             if (!(Item.GetBaseItem().AllowTrade && Item.GetBaseItem().AllowMarketplaceSell))
  24.             {
  25.                 return false;
  26.             }
  27.             return true;
  28.         }
  29.  
  30.         internal static double FormatTimestamp()
  31.         {
  32.             return (double) (ButterflyEnvironment.GetUnixTimestamp() - 0x2a300);
  33.         }
  34.  
  35.         internal static string FormatTimestampString()
  36.         {
  37.             return TextHandling.GetFirstSiffer(FormatTimestamp()).ToString();
  38.         }
  39.  
  40.         internal static int[] GetAvarage(int FurniId)
  41.         {
  42.             using (IQueryAdapter adapter = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
  43.             {
  44.                 adapter.setQuery(string.Concat(new object[] { "SELECT * FROM catalog_marketplace_offers WHERE sprite_id = '", FurniId, "' AND state = '1' AND timestamp >= '", FormatTimestampString(), "'" }));
  45.                 DataTable table = adapter.getTable();
  46.                 int count = table.Rows.Count;
  47.                 int num2 = 0;
  48.                 foreach (DataRow row in table.Rows)
  49.                 {
  50.                     num2 += (int) row["total_price"];
  51.                 }
  52.                 return new int[] { (num2 / count), count };
  53.             }
  54.         }
  55.  
  56.         internal static void SellItem(GameClient Session, int ItemId, int SellingPrice)
  57.         {
  58.             UserItem item = Session.GetHabbo().GetInventoryComponent().GetItem((uint) ItemId);
  59.             if (!((item != null) && CanSellItem(item)))
  60.             {
  61.                 ServerMessage message = new ServerMessage(Outgoing.AddMarket);
  62.                 message.AppendInt32(0);
  63.                 Session.SendMessage(message);
  64.             }
  65.             else
  66.             {
  67.                 if (SellingPrice > 0x2710)
  68.                 {
  69.                     SellingPrice = 0x2710;
  70.                 }
  71.                 int num = CalculateComissionPrice((float) SellingPrice);
  72.                 int num2 = SellingPrice + num;
  73.                 int num3 = 1;
  74.                 if (item.GetBaseItem().Type == 'i')
  75.                 {
  76.                     num3++;
  77.                 }
  78.                 using (IQueryAdapter adapter = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
  79.                 {
  80.                     adapter.runFastQuery(string.Concat(new object[] {
  81.                         "INSERT INTO catalog_marketplace_offers (item_id,user_id,asking_price,total_price,public_name,sprite_id,item_type,timestamp,extra_data) VALUES ('", item.BaseItem, "','", Session.GetHabbo().Id, "','", SellingPrice, "','", num2, "','", item.GetBaseItem().Name, "','", item.GetBaseItem().SpriteId, "','", num3, "','", ButterflyEnvironment.GetUnixTimestamp(),
  82.                         "','", item.ExtraData, "')"
  83.                      }));
  84.                 }
  85.                 Session.GetHabbo().GetInventoryComponent().RemoveItem((uint) ItemId, false);
  86.                 Session.GetHabbo().GetInventoryComponent().RunDBUpdate();
  87.                 ServerMessage message2 = new ServerMessage(Outgoing.AddMarket);
  88.                 message2.AppendInt32(1);
  89.                 Session.SendMessage(message2);
  90.             }
  91.         }
  92.  
  93.         internal static ServerMessage SerializeOffers(int MinCost, int MaxCost, string SearchQuery, int FilterMode)
  94.         {
  95.             StringBuilder builder = new StringBuilder();
  96.             builder.Append("WHERE state = '1' AND timestamp >= " + FormatTimestampString());
  97.             if (MinCost >= 0)
  98.             {
  99.                 builder.Append(" AND total_price > " + MinCost);
  100.             }
  101.             if (MaxCost >= 0)
  102.             {
  103.                 builder.Append(" AND total_price < " + MaxCost);
  104.             }
  105.             if (SearchQuery.Length >= 1)
  106.             {
  107.                 builder.Append(" AND public_name LIKE '%" + SearchQuery + "%'");
  108.             }
  109.             switch (FilterMode)
  110.             {
  111.                 case 1:
  112.                     builder.Append(" ORDER BY asking_price DESC");
  113.                     break;
  114.  
  115.                 case 2:
  116.                     builder.Append(" ORDER BY asking_price ASC");
  117.                     break;
  118.             }
  119.             using (IQueryAdapter adapter = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
  120.             {
  121.                 adapter.setQuery("SELECT * FROM catalog_marketplace_offers " + builder.ToString());
  122.                 DataTable table = adapter.getTable();
  123.                 adapter.setQuery("SELECT COUNT(DISTINCT sprite_id) FROM catalog_marketplace_offers " + builder.ToString() + " LIMIT 250");
  124.                 int i = adapter.getInteger();
  125.                 int num2 = 0;
  126.                 List<int> list = new List<int>();
  127.                 ServerMessage message = new ServerMessage(Outgoing.GetOffers);
  128.                 message.AppendInt32(i);
  129.                 foreach (DataRow row in table.Rows)
  130.                 {
  131.                     if (!list.Contains((int) row["sprite_id"]))
  132.                     {
  133.                         list.Add((int) row["sprite_id"]);
  134.                         int[] avarage = GetAvarage((int) row["sprite_id"]);
  135.                         message.AppendInt32(int.Parse(row["offer_id"].ToString()));
  136.                         message.AppendInt32(1);
  137.                         message.AppendInt32(1);
  138.                         message.AppendInt32((int) row["sprite_id"]);
  139.                         message.AppendInt32(0);
  140.                         message.AppendString("");
  141.                         message.AppendInt32((int) row["total_price"]);
  142.                         message.AppendInt32(0);
  143.                         message.AppendInt32(avarage[0]);
  144.                         message.AppendInt32(avarage[1]);
  145.                         num2 += avarage[1];
  146.                     }
  147.                 }
  148.                 message.AppendInt32(num2);
  149.                 return message;
  150.             }
  151.         }
  152.  
  153.         internal static ServerMessage SerializeOwnOffers(int HabboId)
  154.         {
  155.             int i = 0;
  156.             using (IQueryAdapter adapter = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
  157.             {
  158.                 adapter.setQuery("SELECT timestamp, state, offer_id, item_type, sprite_id, total_price FROM catalog_marketplace_offers WHERE user_id = " + HabboId);
  159.                 DataTable table = adapter.getTable();
  160.                 adapter.setQuery("SELECT SUM(asking_price) FROM catalog_marketplace_offers WHERE state = '2' AND user_id = " + HabboId);
  161.                 string s = adapter.getString();
  162.                 if (s.Length > 0)
  163.                 {
  164.                     i = int.Parse(s);
  165.                 }
  166.                 ServerMessage message = new ServerMessage(Outgoing.MySells);
  167.                 message.AppendInt32(i);
  168.                 if (table != null)
  169.                 {
  170.                     message.AppendInt32(table.Rows.Count);
  171.                     foreach (DataRow row in table.Rows)
  172.                     {
  173.                         int num2 = (int) Math.Floor((double) (((((double) row["timestamp"]) + 172800.0) - ButterflyEnvironment.GetUnixTimestamp()) / 60.0));
  174.                         int num3 = int.Parse(row["state"].ToString());
  175.                         if (num2 <= 0)
  176.                         {
  177.                             num3 = 3;
  178.                             num2 = 0;
  179.                         }
  180.                         message.AppendInt32(Convert.ToUInt32(row["offer_id"]));
  181.                         message.AppendInt32(num3);
  182.                         message.AppendInt32(int.Parse(row["item_type"].ToString()));
  183.                         message.AppendInt32((int) row["sprite_id"]);
  184.                         message.AppendInt32(0);
  185.                         message.AppendString("");
  186.                         message.AppendInt32((int) row["total_price"]);
  187.                         message.AppendInt32(num2);
  188.                         message.AppendInt32((int) row["sprite_id"]);
  189.                     }
  190.                 }
  191.                 else
  192.                 {
  193.                     message.AppendInt32(0);
  194.                 }
  195.                 return message;
  196.             }
  197.         }
  198.     }
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement