Hello!
Here, there is my MarketPlace.Cs
Go to Messages/Requests/Catalog.cs
Find in the void
This codeCode:private void MarketplacePurchase()
{
Under, addCode:Session.GetMessageHandler().GetResponse().Init(67);
Session.GetMessageHandler().GetResponse().AppendUInt(Item.ItemId);
Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Item.Name);
Session.GetMessageHandler().GetResponse().AppendInt32(0);
Session.GetMessageHandler().GetResponse().AppendInt32(0);
Replace MarketPlace.cs perCode:Session.GetMessageHandler().GetResponse().AppendInt32(0);
For prove, go to http://www.hobbouhotel.comCode:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Uber.HabboHotel.GameClients;
using Uber.HabboHotel.Items;
using Uber.Storage;
using Uber.Messages;
namespace Uber.HabboHotel.Catalogs
{
class Marketplace
{
public Boolean CanSellItem(UserItem Item)
{
if (!Item.GetBaseItem().AllowTrade || !Item.GetBaseItem().AllowMarketplaceSell)
{
return false;
}
return true;
}
public void SellItem(GameClient Session, uint ItemId, int SellingPrice)
{
UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId);
if (Item == null || SellingPrice > 10000 || !CanSellItem(Item))
{
Session.GetMessageHandler().GetResponse().Init(610);
Session.GetMessageHandler().GetResponse().AppendBoolean(false);
Session.GetMessageHandler().SendResponse();
return;
}
int Comission = CalculateComissionPrice(SellingPrice);
int TotalPrice = SellingPrice + Comission;
int ItemType = 1;
if (Item.GetBaseItem().Type == "i")
{
ItemType++;
}
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.AddParamWithValue("public_name", Item.GetBaseItem().PublicName);
dbClient.AddParamWithValue("extra_data", Item.ExtraData);
dbClient.ExecuteQuery("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 + "','" + TotalPrice + "',@public_name,'" + Item.GetBaseItem().SpriteId + "','" + ItemType + "','" + UberEnvironment.GetUnixTimestamp() + "',@extra_data)");
//dbClient.ExecuteQuery("UPDATE users set ticket_market = ticket_market -1 WHERE id = '" + Session.GetHabbo().Id + "'");
}
Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId);
Session.GetMessageHandler().GetResponse().Init(610);
Session.GetMessageHandler().GetResponse().AppendBoolean(true);
Session.GetMessageHandler().SendResponse();
}
public int CalculateComissionPrice(float SellingPrice)
{
return (int)Math.Ceiling((float)(SellingPrice / 100));
}
public Double FormatTimestamp()
{
return UberEnvironment.GetUnixTimestamp() - 172800;
}
public ServerMessage SerializeOffers(int MinCost, int MaxCost, String SearchQuery, int FilterMode)
{
// IgI`UJUIIY~JX]gXoAJISA
DataTable Data = null;
StringBuilder WhereClause = new StringBuilder();
string OrderMode = "";
WhereClause.Append("WHERE state = '1' AND timestamp >= '" + FormatTimestamp());
if (MinCost >= 0)
{
WhereClause.Append("' AND total_price >= '" + MinCost);
}
if (MaxCost >= 0)
{
WhereClause.Append("' AND total_price <= '" + MaxCost);
}
switch (FilterMode)
{
case 1:
default:
OrderMode = "' ORDER BY asking_price DESC";
break;
case 2:
OrderMode = "' ORDER BY asking_price ASC";
break;
}
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.AddParamWithValue("search_query", "%" + SearchQuery + "%");
if (SearchQuery.Length >= 1)
{
WhereClause.Append(" AND public_name LIKE @search_query");
}
Data = dbClient.ReadDataTable("SELECT * FROM catalog_marketplace_offers " + WhereClause.ToString() + " " + OrderMode + " LIMIT 100");
}
ServerMessage Message = new ServerMessage(615);
if (Data != null)
{
Message.AppendInt32(Data.Rows.Count);
foreach (DataRow Row in Data.Rows)
{
Message.AppendUInt((uint)Row["offer_id"]);
Message.AppendInt32(1);
Message.AppendInt32(int.Parse(Row["item_type"].ToString()));
Message.AppendInt32((int)Row["sprite_id"]); // Sprite ID
Message.AppendStringWithBreak(""); // Extra Chr (R52)
Message.AppendInt32((int)Row["total_price"]); // Price
Message.AppendInt32((int)Row["sprite_id"]); // ??
Message.AppendInt32((int)Row["total_price"]); // Avg
Message.AppendInt32(0); // Offers
}
}
else
{
Message.AppendInt32(0);
}
return Message;
}
public ServerMessage SerializeOwnOffers(uint HabboId)
{
DataTable Data = null;
int Profits = 0;
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
Data = dbClient.ReadDataTable("SELECT * FROM catalog_marketplace_offers WHERE user_id = '" + HabboId + "'");
String RawProfit = dbClient.ReadDataRow("SELECT SUM(asking_price) FROM catalog_marketplace_offers WHERE state = '2' AND user_id = '" + HabboId + "'")[0].ToString();
if (RawProfit.Length > 0)
{
Profits = int.Parse(RawProfit);
}
}
ServerMessage Message = new ServerMessage(616);
Message.AppendInt32(Profits);
if (Data != null)
{
Message.AppendInt32(Data.Rows.Count);
foreach (DataRow Row in Data.Rows)
{
// IhHI`n~^II[EFPN[OKPA
int MinutesLeft = (int)Math.Floor((((Double)Row["timestamp"] + 172800) - UberEnvironment.GetUnixTimestamp()) / 60);
int state = int.Parse(Row["state"].ToString());
if (MinutesLeft <= 0)
{
state = 3;
MinutesLeft = 0;
}
Message.AppendUInt((uint)Row["offer_id"]);
Message.AppendInt32(state); // 1 = active, 2 = sold, 3 = expired
Message.AppendInt32(int.Parse(Row["item_type"].ToString())); // always 1 (??)
Message.AppendInt32((int)Row["sprite_id"]);
Message.AppendInt32((int)Row["total_price"]); // ??
Message.AppendInt32(MinutesLeft);
Message.AppendInt32((int)Row["sprite_id"]);
}
}
else
{
Message.AppendInt32(0);
}
return Message;
}
}
}
