using System; using System.Collections.Generic; using Ion.Net.Messages; using Ion.HabboHotel.Messenger; namespace Ion.HabboHotel.Client { public partial class ClientMessageHandler { /// /// 15 - "@O" /// private void FriendListUpdate() { } /// /// 33 - "@a" /// private void SendMsg() { uint buddyID = Request.PopWireduint(); string sText = Request.PopFixedString(); // Buddy in list? if (mSession.GetMessenger().GetBuddy(buddyID) != null) { // Buddy online? GameClient buddyClient = IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(buddyID); if (buddyClient == null) { Response.Initialize(ResponseOpcodes.InstantMessageError); // Opcode Response.AppendInt32(5); // Error code Response.AppendUInt32(mSession.GetHabbo().ID); SendResponse(); } else { ServerMessage notify = new ServerMessage(ResponseOpcodes.NewConsole); notify.AppendUInt32(mSession.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.PopWireduint(); if (mSession.GetMessenger().GetBuddy(buddyID) != null) { // User online? GameClient buddyClient = IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(buddyID); if (buddyClient != null) { receivers.Add(buddyClient); } } } // Parse text string sText = Request.PopFixedString(); // Notify the receivers ServerMessage notify = new ServerMessage(ResponseOpcodes.RoomInvite); //... 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.PopWireduint(); } } /// /// 38 - "@f" /// private void DeclineBuddy() { int amount = Request.PopWiredInt32(); for (int i = 0; i < amount; i++) { uint buddyID = Request.PopWireduint(); } } /// /// 39 - "@g" /// private void RequestBuddy() { } /// /// 40 - "@h" /// private void RemoveBuddy() { uint amount = Request.PopUInt32(); for (int i = 0; i < amount; i++) { uint buddyID = Request.PopWireduint(); if (mSession.GetMessenger().GetBuddy(buddyID) != null) { } } } /// /// 41 - "@i" /// private void HabboSearch() { GetCatalogIndex(); return; // Parse search criteria string sCriteria = Request.PopFixedString(); sCriteria = sCriteria.Replace("%", ""); // Query Habbos with names similar to criteria List matches = IonEnvironment.GetHabboHotel().GetMessenger().SearchHabbos(sCriteria); // Build response Response.Initialize(ResponseOpcodes.HabboSearchResult); Response.AppendInt32(matches.Count); foreach(MessengerBuddy match in matches) { //... } SendResponse(); } /// /// 233 - "Ci" /// private void GetBuddyRequests() { Response.Initialize(ResponseOpcodes.BuddyRequests); // "Dz" Response.AppendInt32(3); // Amount Response.AppendInt32(3); // Amount Response.AppendInt32(123456); // User ID Response.AppendString("HybridCore.NET"); Response.AppendString("5"); // Request ID Response.AppendInt32(123423); // User ID Response.AppendString("Jordan"); Response.AppendString("7"); // Request ID Response.AppendInt32(1234231337); // User ID Response.AppendString("Nillus"); Response.AppendString("12"); // Request ID 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); } } }