using System;
using System.Collections.Generic;
using System.Data;
using Aleeda.Core;
using Aleeda.HabboHotel.Messenger;
using Aleeda.Net.Messages;
using Aleeda.Storage;
namespace Aleeda.HabboHotel.Client
{
public partial class ClientMessageHandler
{
///
/// 15 - "@O"
///
private void FriendListUpdate()
{
}
///
/// 33 - "@a"
///
private void SendMsg()
{
uint buddyID = Request.PopWiredUInt32();
string sText = Request.PopFixedString();
// Buddy in list?
if (Client.GetMessenger().GetBuddy(buddyID) != null)
{
// Buddy online?
GameClient buddyClient = AleedaEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(buddyID);
if (buddyClient == null)
{
Response.Initialize(261); // "DE"
Response.AppendInt32(5); // Error code
Response.AppendUInt32(Client.GetHabbo().ID);
SendResponse();
}
else
{
ServerMessage notify = new ServerMessage(134); // "BF"
notify.AppendUInt32(Client.GetHabbo().ID);
notify.AppendString(sText);
buddyClient.GetConnection().SendMessage(notify);
}
}
}
///
/// 34 - "@b"
///
private void SendRoomInvite()
{
// TODO: check if this session is in room
// Determine how many receivers
int amount = Request.PopWiredInt32();
List receivers = new List(amount);
// Get receivers
for (int i = 0; i < amount; i++)
{
// User in buddy list?
uint buddyID = Request.PopWiredUInt32();
if (Client.GetMessenger().GetBuddy(buddyID) != null)
{
// User online?
GameClient buddyClient = AleedaEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(buddyID);
if (buddyClient != null)
{
receivers.Add(buddyClient);
}
}
}
// Parse text
string sText = Request.PopFixedString();
// Notify the receivers
ServerMessage notify = new ServerMessage(135); // "BG"
//...
foreach (GameClient receiver in receivers)
{
receiver.GetConnection().SendMessage(notify);
}
}
///
/// 37 - "@e"
///
private void AcceptBuddy()
{
int amount = Request.PopWiredInt32();
for (int i = 0; i < amount; i++)
{
uint buddyID = Request.PopWiredUInt32();
using (DatabaseClient dbClient = AleedaEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("INSERT INTO messenger_buddylist (`userid`, `fromid`, `accepted`) VALUES ('" + Client.GetHabbo().ID + "','" + buddyID + "', '1')");
}
}
}
///
/// 38 - "@f"
///
private void DeclineBuddy()
{
int amount = Request.PopWiredInt32();
for (int i = 0; i < amount; i++)
{
uint buddyID = Request.PopWiredUInt32();
using (DatabaseClient dbClient = AleedaEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("DELETE * FROM messenger_request WHERE fromid = '" + Client.GetHabbo().ID + "' AND toid = '" + buddyID + "'");
}
}
}
///
/// 39 - "@g"
///
private void RequestBuddy()
{
using (DatabaseClient dbClient = AleedaEnvironment.GetDatabase().GetClient())
{
dbClient.AddParamWithValue("user", Request.PopFixedString());
DataRow row = dbClient.ReadDataRow("SELECT * FROM users WHERE username = @user;");
dbClient.ExecuteQuery("INSERT INTO messenger_request (`fromid`, `toid`) VALUES ('" + Client.GetHabbo().ID + "','" + (uint)row["id"] + "')");
ServerMessage Response = new ServerMessage(132); // "BD"
Response.AppendUInt32(Client.GetHabbo().ID);
Response.AppendString(Client.GetHabbo().Username);
Response.AppendString(Client.GetHabbo().Figure);
if (AleedaEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo((string)row["username"]) != null)
{
AleedaEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo((string)row["username"]).GetConnection().SendMessage(Response);
}
}
}
///
/// 40 - "@h"
///
private void RemoveBuddy()
{
uint amount = Request.PopUInt32();
for (int i = 0; i < amount; i++)
{
uint buddyID = Request.PopWiredUInt32();
if (Client.GetMessenger().GetBuddy(buddyID) != null)
{
}
}
}
///
/// 41 - "@i"
///
private void HabboSearch()
{
// Parse search criteria
string sCriteria = Request.PopFixedString();
// Query Habbos with names similar to criteria
List matches = AleedaEnvironment.GetHabboHotel().GetMessenger().SearchHabbos(sCriteria);
// Build response
Response.Initialize(435); // "Fs"
Response.AppendInt32(0);
Response.AppendInt32(matches.Count);
foreach (MessengerBuddy match in matches)
{
if (Client.GetHabbo().Username == match.Username)
{
Response.AppendInt32((int)match.ID);
Response.AppendString((string)match.Username);
Response.AppendChar(2);
Response.AppendInt32(1);
Response.AppendInt32(1);
Response.AppendChar(2);
Response.AppendInt32(1);
Response.AppendString((string)match.Figure);
Response.AppendChar(2);
Response.AppendChar(2);
}
else if (mBoolean.FindExistingFriend(match.ID, Client.GetHabbo().Username) == true)
{
Response.AppendInt32((int)match.ID);
Response.AppendString((string)match.Username);
Response.AppendChar(2);
Response.AppendInt32(1);
Response.AppendInt32(1);
Response.AppendChar(2);
Response.AppendInt32(1);
Response.AppendString((string)match.Figure);
Response.AppendChar(2);
Response.AppendChar(2);
}
else
{
Response.AppendInt32((int)match.ID);
Response.AppendString((string)match.Username);
Response.AppendString("cake");
Response.AppendInt32(0);
Response.AppendInt32(0);
Response.AppendChar(2);
Response.AppendInt32(1);
Response.AppendChar(2);
Response.AppendChar(2);
Response.AppendChar(2);
}
}
SendResponse();
}
///
/// 233 - "Ci"
///
private void GetBuddyRequests()
{
using (DatabaseClient dbClient = AleedaEnvironment.GetDatabase().GetClient())
{
dbClient.AddParamWithValue("owner", Client.GetHabbo().ID);
DataTable DataQuery = dbClient.ReadDataTable("SELECT * FROM messenger_request WHERE toid = @owner LIMIT 1");
Response.Initialize(314); // "Dz"
Response.AppendInt32(DataQuery.Rows.Count); // Amount
Response.AppendInt32(DataQuery.Rows.Count); // Amount
foreach (DataRow Row in DataQuery.Rows)
{
dbClient.AddParamWithValue("from", Convert.ToUInt32(Row["fromid"]));
DataRow FromName = dbClient.ReadDataRow("SELECT * FROM users WHERE id = @from");
Response.AppendUInt32((uint)FromName["id"]);// User ID
Response.AppendString((string)FromName["username"]);
Response.AppendString(Convert.ToString((int)Row["id"])); // Request
}
SendResponse();
}
}
///
/// 262 - "DF"
///
private void FollowFriend()
{
}
///
/// Registers the request handlers for the in-game messenger. ('Console')
///
public void RegisterMessenger()
{
/*mRequestHandlers[15] = new RequestHandler(FriendListUpdate);
mRequestHandlers[33] = new RequestHandler(SendMsg);
mRequestHandlers[34] = new RequestHandler(SendRoomInvite);
mRequestHandlers[37] = new RequestHandler(AcceptBuddy);
mRequestHandlers[38] = new RequestHandler(DeclineBuddy);
mRequestHandlers[39] = new RequestHandler(RequestBuddy);
mRequestHandlers[40] = new RequestHandler(RemoveBuddy);
mRequestHandlers[41] = new RequestHandler(HabboSearch);
mRequestHandlers[233] = new RequestHandler(GetBuddyRequests);
mRequestHandlers[262] = new RequestHandler(FollowFriend);*/
}
}
}