private void GetTrainerPanel()
{
uint PetID = Request.PopWiredUInt();
Pet PetData = Session.GetHabbo().GetInventoryComponent().GetPet(PetID);
GetResponse().Init(605);
GetResponse().AppendUInt(PetID);
GetResponse().AppendString("PBHIJKPAQARASA");
SendResponse();
}
public bool CheckPetName(string PetName)
{
if (PetName.Length < 1 || PetName.Length > 16)
{
return false;
}
if (!UberEnvironment.IsValidAlphaNumeric(PetName))
{
return false;
}
return true;
}
RequestHandlers[3004] = new RequestHandler(GetTrainerPanel)
RequestHandlers[3003] = new RequestHandler(PickUpPet);
I think i have seen this on another forum, maybe Kekomundo?
Anyways nice release.
Nice release if it works (Y)
It needs definitions for a few things :S
//New Code
public bool CheckPetName(string PetName)
{
if (PetName.Length < 1 || PetName.Length > 16)
{
return false;
}
if (!UberEnvironment.IsValidAlphaNumeric(PetName))
{
return false;
}
return true;
}
private void GetTrainerPanel()
{
uint PetID = Request.PopWiredUInt();
Pet PetData = Session.GetHabbo().GetInventoryComponent().GetPet(PetID);
GetResponse().Init(605);
GetResponse().AppendUInt(PetID);
GetResponse().AppendString("PBHIJKPAQARASA");
SendResponse();
}
//End new code
RequestHandlers[3003] = new RequestHandler(CheckPetName);
RequestHandlers[3004] = new RequestHandler(GetTrainerPanel);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Uber.HabboHotel.Pets;
using Uber.HabboHotel.Navigators;
using Uber.HabboHotel.Items;
using Uber.HabboHotel.GameClients;
using Uber.HabboHotel.Users.Badges;
using Uber.HabboHotel.Misc;
using Uber.HabboHotel.Pathfinding;
using Uber.HabboHotel.Advertisements;
using Uber.HabboHotel.Users.Messenger;
using Uber.HabboHotel.Rooms;
using Uber.HabboHotel.Catalogs;
using Uber.Storage;
namespace Uber.Messages
{
partial class GameClientMessageHandler
{
private void GetAdvertisement()
{
RoomAdvertisement Ad = UberEnvironment.GetGame().GetAdvertisementManager().GetRandomRoomAdvertisement();
GetResponse().Init(258);
if (Ad == null)
{
GetResponse().AppendStringWithBreak("");
GetResponse().AppendStringWithBreak("");
}
else
{
GetResponse().AppendStringWithBreak(Ad.AdImage);
GetResponse().AppendStringWithBreak(Ad.AdLink);
Ad.OnView();
}
SendResponse();
}
private void GetTrainerPanel()
{
uint PetID = Request.PopWiredUInt();
Pet PetData = Session.GetHabbo().GetInventoryComponent().GetPet(PetID);
GetResponse().Init(605);
GetResponse().AppendUInt(PetID);
/* Estoy probando, porque este paquete aún no lo tenia "explicado"*/
GetResponse().AppendString("PBHIJKPAQARASA");
SendResponse();
}
private void GetPub()
{
uint Id = Request.PopWiredUInt();
RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id);
if (Data == null || Data.Type != "public")
{
return;
}
GetResponse().Init(453);
GetResponse().AppendUInt(Data.Id);
GetResponse().AppendStringWithBreak(Data.CCTs);
GetResponse().AppendUInt(Data.Id);
SendResponse();
}
private void OpenFlat()
{
uint Id = Request.PopWiredUInt();
string Password = Request.PopFixedString();
int Junk = Request.PopWiredInt32();
RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id);
if (Data == null || Data.Type != "private")
{
return;
}
PrepareRoomForUser(Id, Password);
}
private void OpenPub()
{
int Junk = Request.PopWiredInt32();
uint Id = Request.PopWiredUInt();
int Junk2 = Request.PopWiredInt32();
RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id);
if (Data == null || Data.Type != "public")
{
return;
}
PrepareRoomForUser(Data.Id, "");
}
private void GetGroupBadges()
{
GetResponse().Init(309);
GetResponse().AppendStringWithBreak("IcIrDs43103s19014d5a1dc291574a508bc80a64663e61a00");
SendResponse();
}
private void GetInventory()
{
Session.SendMessage(Session.GetHabbo().GetInventoryComponent().SerializeItemInventory());
}
private void GetRoomData1()
{
if (Session.GetHabbo().LoadingRoom <= 0)
{
return;
}
GetResponse().Init(297);
GetResponse().AppendInt32(0);
SendResponse();
}
private void GetRoomData2()
{
if (Session.GetHabbo().LoadingRoom <= 0)
{
return;
}
RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Session.GetHabbo().LoadingRoom);
if (Data == null)
{
return;
}
if (Data.Model == null)
{
Session.SendNotif("Sorry, model data is missing from this room and therefore cannot be loaded.");
Session.SendMessage(new ServerMessage(18));
ClearRoomLoading();
return;
}
Session.SendMessage(Data.Model.SerializeHeightmap());
Session.SendMessage(Data.Model.SerializeRelativeHeightmap());
}
private void GetRoomData3()
{
if (Session.GetHabbo().LoadingRoom <= 0 || !Session.GetHabbo().LoadingChecksPassed)
{
return;
}
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().LoadingRoom);
if (Room == null)
{
return;
}
ClearRoomLoading();
GetResponse().Init(30);
if (Room.Model.StaticFurniMap != "")
{
GetResponse().AppendStringWithBreak(Room.Model.StaticFurniMap);
}
else
{
GetResponse().AppendInt32(0);
}
SendResponse();
if (Room.Type == "private")
{
List<RoomItem> FloorItems = Room.FloorItems;
List<RoomItem> WallItems = Room.WallItems;
GetResponse().Init(32);
GetResponse().AppendInt32(FloorItems.Count);
foreach (RoomItem Item in FloorItems)
{
Item.Serialize(GetResponse());
}
SendResponse();
GetResponse().Init(45);
GetResponse().AppendInt32(WallItems.Count);
foreach (RoomItem Item in WallItems)
{
Item.Serialize(GetResponse());
}
SendResponse();
}
Room.AddUserToRoom(Session, Session.GetHabbo().SpectatorMode);
List<RoomUser> UsersToDisplay = new List<RoomUser>();
lock (Room.UserList)
{
foreach (RoomUser User in Room.UserList)
{
if (User.IsSpectator)
{
continue;
}
UsersToDisplay.Add(User);
}
}
GetResponse().Init(28);
GetResponse().AppendInt32(UsersToDisplay.Count);
foreach (RoomUser User in UsersToDisplay)
{
User.Serialize(GetResponse());
}
SendResponse();
if (Room.Type == "public")
{
GetResponse().Init(471);
GetResponse().AppendBoolean(false);
GetResponse().AppendStringWithBreak(Room.ModelName);
GetResponse().AppendBoolean(false);
SendResponse();
}
else if (Room.Type == "private")
{
GetResponse().Init(471);
GetResponse().AppendBoolean(true);
GetResponse().AppendUInt(Room.RoomId);
if (Room.CheckRights(Session, true))
{
GetResponse().AppendBoolean(true);
}
else
{
GetResponse().AppendBoolean(false);
}
SendResponse();
// GQhntX]uberEmu PacketloggingDescriptionHQMSCQFJtag1tag2Ika^SMqurbIHH
GetResponse().Init(454);
GetResponse().AppendInt32(1);
GetResponse().AppendUInt(Room.RoomId);
GetResponse().AppendInt32(0);
GetResponse().AppendStringWithBreak(Room.Name);
GetResponse().AppendStringWithBreak(Room.Owner);
GetResponse().AppendInt32(Room.State);
GetResponse().AppendInt32(0);
GetResponse().AppendInt32(25);
GetResponse().AppendStringWithBreak(Room.Description);
GetResponse().AppendInt32(0);
GetResponse().AppendInt32(1);
GetResponse().AppendInt32(8228);
GetResponse().AppendInt32(Room.Category);
GetResponse().AppendStringWithBreak("");
GetResponse().AppendInt32(Room.TagCount);
foreach (string Tag in Room.Tags)
{
GetResponse().AppendStringWithBreak(Tag);
}
Room.Icon.Serialize(GetResponse());
GetResponse().AppendBoolean(false);
SendResponse();
}
ServerMessage Updates = Room.SerializeStatusUpdates(true);
if (Updates != null)
{
Session.SendMessage(Updates);
}
lock (Room.UserList)
{
foreach (RoomUser User in Room.UserList)
{
if (User.IsSpectator)
{
continue;
}
if (User.IsDancing)
{
GetResponse().Init(480);
GetResponse().AppendInt32(User.VirtualId);
GetResponse().AppendInt32(User.DanceId);
SendResponse();
}
if (User.IsAsleep)
{
GetResponse().Init(486);
GetResponse().AppendInt32(User.VirtualId);
GetResponse().AppendBoolean(true);
SendResponse();
}
if (User.CarryItemID > 0 && User.CarryTimer > 0)
{
GetResponse().Init(482);
GetResponse().AppendInt32(User.VirtualId);
GetResponse().AppendInt32(User.CarryTimer);
SendResponse();
}
if (!User.IsBot)
{
if (User.GetClient().GetHabbo() != null && User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent() != null && User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect >= 1)
{
GetResponse().Init(485);
GetResponse().AppendInt32(User.VirtualId);
GetResponse().AppendInt32(User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect);
SendResponse();
}
}
}
}
}
public void PrepareRoomForUser(uint Id, string Password)
{
ClearRoomLoading();
if (UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id) == null)
{
return;
}
if (Session.GetHabbo().InRoom)
{
Room OldRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (OldRoom != null)
{
OldRoom.RemoveUserFromRoom(Session, false, false);
}
}
if (!UberEnvironment.GetGame().GetRoomManager().IsRoomLoaded(Id))
{
UberEnvironment.GetGame().GetRoomManager().LoadRoom(Id);
}
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Id);
if (Room == null)
{
return;
}
Session.GetHabbo().LoadingRoom = Id;
if (Room.UserIsBanned(Session.GetHabbo().Id))
{
if (Room.HasBanExpired(Session.GetHabbo().Id))
{
Room.RemoveBan(Session.GetHabbo().Id);
}
else
{
// C`PA
GetResponse().Init(224);
GetResponse().AppendInt32(4);
SendResponse();
GetResponse().Init(18);
SendResponse();
return;
}
}
if (Room.UsersNow >= Room.UsersMax)
{
if (!UberEnvironment.GetGame().GetRoleManager().RankHasRight(Session.GetHabbo().Rank, "fuse_enter_full_rooms"))
{
GetResponse().Init(224);
GetResponse().AppendInt32(1);
SendResponse();
GetResponse().Init(18);
SendResponse();
return;
}
}
if (Room.Type == "public")
{
if (Room.State > 0 && !Session.GetHabbo().HasFuse("fuse_mod"))
{
Session.SendNotif("Esta sala pública es solamente accesible a la administracion del hotel.");
GetResponse().Init(18);
SendResponse();
return;
}
GetResponse().Init(166);
GetResponse().AppendStringWithBreak("/client/public/" + Room.ModelName + "/0");
SendResponse();
}
else if (Room.Type == "private")
{
GetResponse().Init(19);
SendResponse();
if (!Session.GetHabbo().HasFuse("fuse_enter_any_room") && !Room.CheckRights(Session, true) && !Session.GetHabbo().IsTeleporting)
{
if (Room.State == 1)
{
if (Room.UserCount == 0)
{
GetResponse().Init(131);
SendResponse();
}
else
{
GetResponse().Init(91);
GetResponse().AppendStringWithBreak("");
SendResponse();
ServerMessage RingMessage = new ServerMessage(91);
RingMessage.AppendStringWithBreak(Session.GetHabbo().Username);
Room.SendMessageToUsersWithRights(RingMessage);
}
return;
}
else if (Room.State == 2)
{
if (Password.ToLower() != Room.Password.ToLower())
{
GetResponse().Init(33);
GetResponse().AppendInt32(-100002);
SendResponse();
GetResponse().Init(18);
SendResponse();
return;
}
}
}
GetResponse().Init(166);
GetResponse().AppendStringWithBreak("/client/private/" + Room.RoomId + "/id");
SendResponse();
}
Session.GetHabbo().LoadingChecksPassed = true;
LoadRoomForUser();
}
private void ReqLoadRoomForUser()
{
LoadRoomForUser();
}
public void LoadRoomForUser()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().LoadingRoom);
if (Room == null || !Session.GetHabbo().LoadingChecksPassed)
{
return;
}
// todo: Room.SerializeGroupBadges()
GetResponse().Init(309);
GetResponse().AppendStringWithBreak("IcIrDs43103s19014d5a1dc291574a508bc80a64663e61a00");
SendResponse();
GetResponse().Init(69);
GetResponse().AppendStringWithBreak(Room.ModelName);
GetResponse().AppendUInt(Room.RoomId);
SendResponse();
if (Session.GetHabbo().SpectatorMode)
{
GetResponse().Init(254);
SendResponse();
}
if (Room.Type == "private")
{
if (Room.Wallpaper != "0.0")
{
GetResponse().Init(46);
GetResponse().AppendStringWithBreak("wallpaper");
GetResponse().AppendStringWithBreak(Room.Wallpaper);
SendResponse();
}
if (Room.Floor != "0.0")
{
GetResponse().Init(46);
GetResponse().AppendStringWithBreak("floor");
GetResponse().AppendStringWithBreak(Room.Floor);
SendResponse();
}
GetResponse().Init(46);
GetResponse().AppendStringWithBreak("landscape");
GetResponse().AppendStringWithBreak(Room.Landscape);
SendResponse();
if (Room.CheckRights(Session, true))
{
GetResponse().Init(42);
SendResponse();
GetResponse().Init(47);
SendResponse();
}
else if (Room.CheckRights(Session))
{
GetResponse().Init(42);
SendResponse();
}
GetResponse().Init(345);
if (Session.GetHabbo().RatedRooms.Contains(Room.RoomId) || Room.CheckRights(Session, true))
{
GetResponse().AppendInt32(Room.Score);
}
else
{
GetResponse().AppendInt32(-1);
}
SendResponse();
if (Room.HasOngoingEvent)
{
Session.SendMessage(Room.Event.Serialize(Session));
}
else
{
GetResponse().Init(370);
GetResponse().AppendStringWithBreak("-1");
SendResponse();
}
}
}
public void ClearRoomLoading()
{
Session.GetHabbo().LoadingRoom = 0;
Session.GetHabbo().LoadingChecksPassed = false;
}
private void Talk()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
User.Chat(Session, UberEnvironment.FilterInjectionChars(Request.PopFixedString()), false);
}
private void Shout()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
User.Chat(Session, UberEnvironment.FilterInjectionChars(Request.PopFixedString()), true);
}
private void Whisper()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
if (Session.GetHabbo().Muted)
{
Session.SendNotif("Usted esta asilenciado.");
return;
}
string Params = UberEnvironment.FilterInjectionChars(Request.PopFixedString());
string ToUser = Params.Split(' ')[0];
string Message = Params.Substring(ToUser.Length + 1);
RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id);
RoomUser User2 = Room.GetRoomUserByHabbo(ToUser);
ServerMessage TellMsg = new ServerMessage();
TellMsg.Init(25);
TellMsg.AppendInt32(User.VirtualId);
TellMsg.AppendStringWithBreak(Message);
TellMsg.AppendBoolean(false);
if (User != null && !User.IsBot)
{
User.GetClient().SendMessage(TellMsg);
}
User.Unidle();
if (User2 != null && !User2.IsBot)
{
if (!User2.GetClient().GetHabbo().MutedUsers.Contains(Session.GetHabbo().Id))
{
User2.GetClient().SendMessage(TellMsg);
}
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.AddParamWithValue("message", "<Whisper to " + User2.GetClient().GetHabbo().Username + ">: " + Message);
dbClient.ExecuteQuery("INSERT INTO chatlogs (user_id,room_id,hour,minute,timestamp,message,user_name,full_date) VALUES ('" + Session.GetHabbo().Id + "','" + Room.RoomId + "','" + DateTime.Now.Hour + "','" + DateTime.Now.Minute + "','1273133831.41423',@message,'" + Session.GetHabbo().Username + "','" + DateTime.Now.ToLongDateString() + "')");
}
}
}
private void Move()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null || !User.CanWalk)
{
return;
}
int MoveX = Request.PopWiredInt32();
int MoveY = Request.PopWiredInt32();
if (MoveX == User.X && MoveY == User.Y)
{
return;
}
User.MoveTo(MoveX, MoveY);
}
private void CanCreateRoom()
{
GetResponse().Init(512);
GetResponse().AppendBoolean(false); // true = show error with number below
GetResponse().AppendInt32(99999);
SendResponse();
// todo: room limit
}
private void CreateRoom()
{
string RoomName = UberEnvironment.FilterInjectionChars(Request.PopFixedString());
string ModelName = Request.PopFixedString();
string RoomState = Request.PopFixedString(); // unused, room open by default on creation. may be added in later build of Habbo?
RoomData NewRoom = UberEnvironment.GetGame().GetRoomManager().CreateRoom(Session, RoomName, ModelName);
if (NewRoom != null)
{
GetResponse().Init(59);
GetResponse().AppendUInt(NewRoom.Id);
GetResponse().AppendStringWithBreak(NewRoom.Name);
SendResponse();
}
}
private void GetRoomEditData()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
GetResponse().Init(465);
GetResponse().AppendUInt(Room.RoomId);
GetResponse().AppendStringWithBreak(Room.Name);
GetResponse().AppendStringWithBreak(Room.Description);
GetResponse().AppendInt32(Room.State);
GetResponse().AppendInt32(Room.Category);
GetResponse().AppendInt32(Room.UsersMax);
GetResponse().AppendInt32(25);
GetResponse().AppendInt32(Room.TagCount);
foreach (string Tag in Room.Tags)
{
GetResponse().AppendStringWithBreak(Tag);
}
GetResponse().AppendInt32(Room.UsersWithRights.Count); // users /w rights count
foreach (uint UserId in Room.UsersWithRights)
{
GetResponse().AppendUInt(UserId);
GetResponse().AppendStringWithBreak(UberEnvironment.GetGame().GetClientManager().GetNameById(UserId));
}
GetResponse().AppendInt32(Room.UsersWithRights.Count); // users /w rights count
GetResponse().AppendBoolean(Room.AllowPets); // allows pets in room - pet system lacking, so always off
GetResponse().AppendBoolean(Room.AllowPetsEating); // allows pets to eat your food - pet system lacking, so always off
GetResponse().AppendBoolean(Room.AllowWalkthrough);
SendResponse();
}
private void SaveRoomIcon()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
int Junk = Request.PopWiredInt32(); // always 3
Dictionary<int, int> Items = new Dictionary<int, int>();
int Background = Request.PopWiredInt32();
int TopLayer = Request.PopWiredInt32();
int AmountOfItems = Request.PopWiredInt32();
for (int i = 0; i < AmountOfItems; i++)
{
int Pos = Request.PopWiredInt32();
int Item = Request.PopWiredInt32();
if (Pos < 0 || Pos > 10)
{
return;
}
if (Item < 1 || Item > 27)
{
return;
}
if (Items.ContainsKey(Pos))
{
return;
}
Items.Add(Pos, Item);
}
if (Background < 1 || Background > 24)
{
return;
}
if (TopLayer < 0 || TopLayer > 11)
{
return;
}
StringBuilder FormattedItems = new StringBuilder();
int j = 0;
foreach (KeyValuePair<int, int> Item in Items)
{
if (j > 0)
{
FormattedItems.Append("|");
}
FormattedItems.Append(Item.Key + "," + Item.Value);
j++;
}
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("UPDATE rooms SET icon_bg = '" + Background + "', icon_fg = '" + TopLayer + "', icon_items = '" + FormattedItems.ToString() + "' WHERE id = '" + Room.RoomId + "' LIMIT 1");
}
Room.Icon = new RoomIcon(Background, TopLayer, Items);
GetResponse().Init(457);
GetResponse().AppendUInt(Room.RoomId);
GetResponse().AppendBoolean(true);
SendResponse();
GetResponse().Init(456);
GetResponse().AppendUInt(Room.RoomId);
SendResponse();
RoomData Data = new RoomData();
Data.Fill(Room);
GetResponse().Init(454);
GetResponse().AppendBoolean(false);
Data.Serialize(GetResponse(), false);
SendResponse();
}
private void SaveRoomData()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
int Id = Request.PopWiredInt32();
string Name = UberEnvironment.FilterInjectionChars(Request.PopFixedString());
string Description = UberEnvironment.FilterInjectionChars(Request.PopFixedString());
int State = Request.PopWiredInt32();
string Password = UberEnvironment.FilterInjectionChars(Request.PopFixedString());
int MaxUsers = Request.PopWiredInt32();
int CategoryId = Request.PopWiredInt32();
int TagCount = Request.PopWiredInt32();
List<string> Tags = new List<string>();
StringBuilder formattedTags = new StringBuilder();
for (int i = 0; i < TagCount; i++)
{
if (i > 0)
{
formattedTags.Append(",");
}
string tag = UberEnvironment.FilterInjectionChars(Request.PopFixedString().ToLower());
Tags.Add(tag);
formattedTags.Append(tag);
}
int AllowPets = 0;
int AllowPetsEat = 0;
int AllowWalkthrough = 0;
string _AllowPets = Request.PlainReadBytes(1)[0].ToString();
Request.AdvancePointer(1);
string _AllowPetsEat = Request.PlainReadBytes(1)[0].ToString();
Request.AdvancePointer(1);
string _AllowWalkthrough = Request.PlainReadBytes(1)[0].ToString();
Request.AdvancePointer(1);
if (Name.Length < 1)
{
return;
}
if (State < 0 || State > 2)
{
return;
}
if (MaxUsers != 10 && MaxUsers != 15 && MaxUsers != 20 && MaxUsers != 25)
{
return;
}
FlatCat FlatCat = UberEnvironment.GetGame().GetNavigator().GetFlatCat(CategoryId);
if (FlatCat == null)
{
return;
}
if (FlatCat.MinRank > Session.GetHabbo().Rank)
{
Session.SendNotif("You are not allowed to use this category. Your room has been moved to no category instead.");
CategoryId = 0;
}
if (TagCount > 2)
{
return;
}
if (State < 0 || State > 2)
{
return;
}
if (_AllowPets == "65")
{
AllowPets = 1;
Room.AllowPets = true;
}
else
{
Room.AllowPets = false;
}
if (_AllowPetsEat == "65")
{
AllowPetsEat = 1;
Room.AllowPetsEating = true;
}
else
{
Room.AllowPetsEating = false;
}
if (_AllowWalkthrough == "65")
{
AllowWalkthrough = 1;
Room.AllowWalkthrough = true;
}
else
{
Room.AllowWalkthrough = false;
}
Room.Name = Name;
Room.State = State;
Room.Description = Description;
Room.Category = CategoryId;
Room.Password = Password;
Room.Tags = Tags;
Room.UsersMax = MaxUsers;
string formattedState = "open";
if (Room.State == 1)
{
formattedState = "locked";
}
else if (Room.State > 1)
{
formattedState = "password";
}
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.AddParamWithValue("caption", Room.Name);
dbClient.AddParamWithValue("description", Room.Description);
dbClient.AddParamWithValue("password", Room.Password);
dbClient.AddParamWithValue("tags", formattedTags.ToString());
dbClient.ExecuteQuery("UPDATE rooms SET caption = @caption, description = @description, password = @password, category = '" + CategoryId + "', state = '" + formattedState + "', tags = @tags, users_max = '" + MaxUsers + "', allow_pets = '" + AllowPets + "', allow_pets_eat = '" + AllowPetsEat + "', allow_walkthrough = '" + AllowWalkthrough + "' WHERE id = '" + Room.RoomId + "' LIMIT 1");
}
GetResponse().Init(467);
GetResponse().AppendUInt(Room.RoomId);
SendResponse();
GetResponse().Init(456);
GetResponse().AppendUInt(Room.RoomId);
SendResponse();
RoomData Data = new RoomData();
Data.Fill(Room);
GetResponse().Init(454);
GetResponse().AppendBoolean(false);
Data.Serialize(GetResponse(), false);
SendResponse();
}
private void GiveRights()
{
uint UserId = Request.PopWiredUInt();
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
RoomUser RoomUser = Room.GetRoomUserByHabbo(UserId);
if (Room == null || !Room.CheckRights(Session, true) || RoomUser == null || RoomUser.IsBot)
{
return;
}
if (Room.UsersWithRights.Contains(UserId))
{
// todo: fix silly bug
Session.SendNotif("Este usuario ya tiene permisos.");
return;
}
Room.UsersWithRights.Add(UserId);
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("INSERT INTO room_rights (room_id,user_id) VALUES ('" + Room.RoomId + "','" + UserId + "')");
}
GetResponse().Init(510);
GetResponse().AppendUInt(Room.RoomId);
GetResponse().AppendUInt(UserId);
GetResponse().AppendStringWithBreak(RoomUser.GetClient().GetHabbo().Username);
SendResponse();
RoomUser.AddStatus("flatcrtl", "");
RoomUser.UpdateNeeded = true;
RoomUser.GetClient().SendMessage(new ServerMessage(42));
// G~hntX]h_u@UMeth0d9
}
private void TakeRights()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
StringBuilder DeleteParams = new StringBuilder();
int Amount = Request.PopWiredInt32();
for (int i = 0; i < Amount; i++)
{
if (i > 0)
{
DeleteParams.Append(" OR ");
}
uint UserId = Request.PopWiredUInt();
Room.UsersWithRights.Remove(UserId);
DeleteParams.Append("room_id = '" + Room.RoomId + "' AND user_id = '" + UserId + "'");
RoomUser User = Room.GetRoomUserByHabbo(UserId);
if (User != null && !User.IsBot)
{
User.GetClient().SendMessage(new ServerMessage(43));
}
// GhntX]hqu@U
GetResponse().Init(511);
GetResponse().AppendUInt(Room.RoomId);
GetResponse().AppendUInt(UserId);
SendResponse();
}
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("DELETE FROM room_rights WHERE " + DeleteParams.ToString());
}
}
private void TakeAllRights()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
foreach (uint UserId in Room.UsersWithRights)
{
RoomUser User = Room.GetRoomUserByHabbo(UserId);
if (User != null && !User.IsBot)
{
User.GetClient().SendMessage(new ServerMessage(43));
}
GetResponse().Init(511);
GetResponse().AppendUInt(Room.RoomId);
GetResponse().AppendUInt(UserId);
SendResponse();
}
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("DELETE FROM room_rights WHERE room_id = '" + Room.RoomId + "'");
}
Room.UsersWithRights.Clear();
}
private void KickUser()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
if (!Room.CheckRights(Session))
{
return; // insufficient permissions
}
uint UserId = Request.PopWiredUInt();
RoomUser User = Room.GetRoomUserByHabbo(UserId);
if (User == null || User.IsBot)
{
return;
}
if (Room.CheckRights(User.GetClient(), true) || User.GetClient().GetHabbo().HasFuse("fuse_mod"))
{
return; // can't kick room owner or mods!
}
Room.RemoveUserFromRoom(User.GetClient(), true, true);
}
private void BanUser()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return; // insufficient permissions
}
uint UserId = Request.PopWiredUInt();
RoomUser User = Room.GetRoomUserByHabbo(UserId);
if (User == null || User.IsBot)
{
return;
}
if (User.GetClient().GetHabbo().HasFuse("fuse_mod"))
{
return;
}
Room.AddBan(UserId);
Room.RemoveUserFromRoom(User.GetClient(), true, true);
}
private void SetHomeRoom()
{
uint RoomId = Request.PopWiredUInt();
RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(RoomId);
if (RoomId != 0)
{
if (Data == null || Data.Owner.ToLower() != Session.GetHabbo().Username.ToLower())
{
return;
}
}
Session.GetHabbo().HomeRoom = RoomId;
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("UPDATE users SET home_room = '" + RoomId + "' WHERE id = '" + Session.GetHabbo().Id + "' LIMIT 1");
}
GetResponse().Init(455);
GetResponse().AppendUInt(RoomId);
SendResponse();
}
private void DeleteRoom()
{
uint RoomId = Request.PopWiredUInt();
RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(RoomId);
if (Data == null || Data.Owner.ToLower() != Session.GetHabbo().Username.ToLower())
{
return;
}
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("DELETE FROM rooms WHERE id = '" + Data.Id + "' LIMIT 1");
dbClient.ExecuteQuery("DELETE FROM user_favorites WHERE room_id = '" + Data.Id + "'");
dbClient.ExecuteQuery("DELETE FROM room_items WHERE room_id = '" + Data.Id + "'");
dbClient.ExecuteQuery("DELETE FROM room_rights WHERE room_id = '" + Data.Id + "'");
dbClient.ExecuteQuery("UPDATE users SET home_room = '0' WHERE home_room = '" + Data.Id + "'");
// todo: delete room stuff
}
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Data.Id);
if (Room != null)
{
lock (Room.UserList)
{
foreach (RoomUser User in Room.UserList)
{
if (User.IsBot)
{
continue;
}
User.GetClient().SendMessage(new ServerMessage(18));
User.GetClient().GetHabbo().OnLeaveRoom();
}
}
UberEnvironment.GetGame().GetRoomManager().UnloadRoom(Data.Id);
}
GetResponse().Init(101);
SendResponse();
Session.SendMessage(UberEnvironment.GetGame().GetNavigator().SerializeRoomListing(Session, -3));
}
private void LookAt()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
User.Unidle();
int X = Request.PopWiredInt32();
int Y = Request.PopWiredInt32();
if (X == User.X && Y == User.Y)
{
return;
}
int Rot = Rotation.Calculate(User.X, User.Y, X, Y);
User.SetRot(Rot);
}
private void StartTyping()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
ServerMessage Message = new ServerMessage(361);
Message.AppendInt32(User.VirtualId);
Message.AppendBoolean(true);
Room.SendMessage(Message);
}
private void StopTyping()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
ServerMessage Message = new ServerMessage(361);
Message.AppendInt32(User.VirtualId);
Message.AppendBoolean(false);
Room.SendMessage(Message);
}
private void IgnoreUser()
{
/*Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoom);
if (Room == null)
{
return;
}
uint Id = Request.PopWiredUInt();
if (Session.GetHabbo().MutedUsers.Contains(Id))
{
return;
}
Session.GetHabbo().MutedUsers.Add(Id);
GetResponse().Init(419);
GetResponse().AppendInt32(1);
SendResponse();*/
}
private void UnignoreUser()
{
/*Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoom);
if (Room == null)
{
return;
}
uint Id = Request.PopWiredUInt();
if (!Session.GetHabbo().MutedUsers.Contains(Id))
{
return;
}
Session.GetHabbo().MutedUsers.Remove(Id);
GetResponse().Init(419);
GetResponse().AppendInt32(3);
SendResponse();*/
}
private void CanCreateRoomEvent()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
Boolean Allow = true;
int ErrorCode = 0;
if (Room.State != 0)
{
Allow = false;
ErrorCode = 3;
}
GetResponse().Init(367);
GetResponse().AppendBoolean(Allow);
GetResponse().AppendInt32(ErrorCode);
SendResponse();
}
private void StartEvent()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true) || Room.Event != null || Room.State != 0)
{
return;
}
int category = Request.PopWiredInt32();
string name = UberEnvironment.FilterInjectionChars(Request.PopFixedString());
string descr = UberEnvironment.FilterInjectionChars(Request.PopFixedString());
int tagCount = Request.PopWiredInt32();
Room.Event = new RoomEvent(Room.RoomId, name, descr, category, null);
Room.Event.Tags = new List<string>();
for (int i = 0; i < tagCount; i++)
{
Room.Event.Tags.Add(UberEnvironment.FilterInjectionChars(Request.PopFixedString()));
}
Room.SendMessage(Room.Event.Serialize(Session));
}
private void StopEvent()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true) || Room.Event == null)
{
return;
}
Room.Event = null;
ServerMessage Message = new ServerMessage(370);
Message.AppendStringWithBreak("-1");
Room.SendMessage(Message);
}
private void EditEvent()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true) || Room.Event == null)
{
return;
}
int category = Request.PopWiredInt32();
string name = UberEnvironment.FilterInjectionChars(Request.PopFixedString());
string descr = UberEnvironment.FilterInjectionChars(Request.PopFixedString());
int tagCount = Request.PopWiredInt32();
Room.Event.Category = category;
Room.Event.Name = name;
Room.Event.Description = descr;
Room.Event.Tags = new List<string>();
for (int i = 0; i < tagCount; i++)
{
Room.Event.Tags.Add(UberEnvironment.FilterInjectionChars(Request.PopFixedString()));
}
Room.SendMessage(Room.Event.Serialize(Session));
}
private void Wave()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
User.Unidle();
User.DanceId = 0;
ServerMessage Message = new ServerMessage(481);
Message.AppendInt32(User.VirtualId);
Room.SendMessage(Message);
}
private void GetUserTags()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserByHabbo(Request.PopWiredUInt());
if (User == null || User.IsBot)
{
return;
}
GetResponse().Init(350);
GetResponse().AppendUInt(User.GetClient().GetHabbo().Id);
GetResponse().AppendInt32(User.GetClient().GetHabbo().Tags.Count);
lock (User.GetClient().GetHabbo().Tags)
{
foreach (string Tag in User.GetClient().GetHabbo().Tags)
{
GetResponse().AppendStringWithBreak(Tag);
}
}
SendResponse();
}
private void GetUserBadges()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserByHabbo(Request.PopWiredUInt());
if (User == null || User.IsBot)
{
return;
}
// CdjUzYZJIACH_RespectEarned1JACH_EmailVerification1E^jUzYZH
GetResponse().Init(228);
GetResponse().AppendUInt(User.GetClient().GetHabbo().Id);
GetResponse().AppendInt32(User.GetClient().GetHabbo().GetBadgeComponent().EquippedCount);
lock (User.GetClient().GetHabbo().GetBadgeComponent().BadgeList)
{
foreach (Badge Badge in User.GetClient().GetHabbo().GetBadgeComponent().BadgeList)
{
if (Badge.Slot <= 0)
{
continue;
}
GetResponse().AppendInt32(Badge.Slot);
GetResponse().AppendStringWithBreak(Badge.Code);
}
}
SendResponse();
}
private void RateRoom()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || Session.GetHabbo().RatedRooms.Contains(Room.RoomId) || Room.CheckRights(Session, true))
{
return;
}
int Rating = Request.PopWiredInt32();
switch (Rating)
{
case -1:
Room.Score--;
break;
case 1:
Room.Score++;
break;
default:
return;
}
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("UPDATE rooms SET score = '" + Room.Score + "' WHERE id = '" + Room.RoomId + "' LIMIT 1");
}
Session.GetHabbo().RatedRooms.Add(Room.RoomId);
GetResponse().Init(345);
GetResponse().AppendInt32(Room.Score);
SendResponse();
}
private void Dance()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
User.Unidle();
int DanceId = Request.PopWiredInt32();
if (DanceId < 0 || DanceId > 4 || (!Session.GetHabbo().HasFuse("fuse_use_club_dance") && DanceId > 1))
{
DanceId = 0;
}
if (DanceId > 0 && User.CarryItemID > 0)
{
User.CarryItem(0);
}
User.DanceId = DanceId;
ServerMessage DanceMessage = new ServerMessage(480);
DanceMessage.AppendInt32(User.VirtualId);
DanceMessage.AppendInt32(DanceId);
Room.SendMessage(DanceMessage);
}
private void AnswerDoorbell()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session))
{
return;
}
string Name = Request.PopFixedString();
byte[] Result = Request.ReadBytes(1);
GameClient Client = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(Name);
if (Client == null)
{
return;
}
if (Result[0] == Convert.ToByte(65))
{
Client.GetHabbo().LoadingChecksPassed = true;
Client.GetMessageHandler().GetResponse().Init(41);
Client.GetMessageHandler().SendResponse();
}
else
{
Client.GetMessageHandler().GetResponse().Init(131);
Client.GetMessageHandler().SendResponse();
}
}
private void ApplyRoomEffect()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(Request.PopWiredUInt());
if (Item == null)
{
return;
}
string type = "floor";
if (Item.GetBaseItem().Name.ToLower().Contains("wallpaper"))
{
type = "wallpaper";
}
else if (Item.GetBaseItem().Name.ToLower().Contains("landscape"))
{
type = "landscape";
}
switch (type)
{
case "floor":
Room.Floor = Item.ExtraData;
break;
case "wallpaper":
Room.Wallpaper = Item.ExtraData;
break;
case "landscape":
Room.Landscape = Item.ExtraData;
break;
}
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("UPDATE rooms SET " + type + " = '" + Item.ExtraData + "' WHERE id = '" + Room.RoomId + "' LIMIT 1");
}
Session.GetHabbo().GetInventoryComponent().RemoveItem(Item.Id);
ServerMessage Message = new ServerMessage(46);
Message.AppendStringWithBreak(type);
Message.AppendStringWithBreak(Item.ExtraData);
Room.SendMessage(Message);
}
private void PlaceItem()
{
// AZ@J16 10 10 0
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session))
{
return;
}
string PlacementData = Request.PopFixedString();
string[] DataBits = PlacementData.Split(' ');
uint ItemId = uint.Parse(DataBits[0]);
UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId);
if (Item == null)
{
return;
}
switch (Item.GetBaseItem().InteractionType.ToLower())
{
case "dimmer":
if (Room.ItemCountByType("dimmer") >= 1)
{
Session.SendNotif("Solo puede tener un regulador de luces por habitación");
return;
}
break;
}
// Wall Item
if (DataBits[1].StartsWith(":"))
{
string WallPos = Room.WallPositionCheck(":" + PlacementData.Split(':')[1]);
if (WallPos == null)
{
GetResponse().Init(516);
GetResponse().AppendInt32(11);
SendResponse();
return;
}
RoomItem RoomItem = new RoomItem(Item.Id, Room.RoomId, Item.BaseItem, Item.ExtraData, 0, 0, 0.0, 0, WallPos);
if (Room.SetWallItem(Session, RoomItem))
{
Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId);
}
}
// Floor Item
else
{
int X = int.Parse(DataBits[1]);
int Y = int.Parse(DataBits[2]);
int Rot = int.Parse(DataBits[3]);
RoomItem RoomItem = new RoomItem(Item.Id, Room.RoomId, Item.BaseItem, Item.ExtraData, 0, 0, 0, 0, "");
if (Room.SetFloorItem(Session, RoomItem, X, Y, Rot, true))
{
Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId);
}
}
}
private void TakeItem()
{
int junk = Request.PopWiredInt32();
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
RoomItem Item = Room.GetItem(Request.PopWiredUInt());
if (Item == null)
{
return;
}
switch (Item.GetBaseItem().InteractionType.ToLower())
{
case "postit":
return; // not allowed to pick up post.its
}
Room.RemoveFurniture(Session, Item.Id);
Session.GetHabbo().GetInventoryComponent().AddItem(Item.Id, Item.BaseItem, Item.ExtraData);
Session.GetHabbo().GetInventoryComponent().UpdateItems(false);
}
private void MoveItem()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session))
{
return;
}
RoomItem Item = Room.GetItem(Request.PopWiredUInt());
if (Item == null)
{
return;
}
int x = Request.PopWiredInt32();
int y = Request.PopWiredInt32();
int Rotation = Request.PopWiredInt32();
int Junk = Request.PopWiredInt32();
Room.SetFloorItem(Session, Item, x, y, Rotation, false);
}
private void TriggerItem()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomItem Item = Room.GetItem(Request.PopWiredUInt());
if (Item == null)
{
return;
}
Boolean hasRights = false;
if (Room.CheckRights(Session))
{
hasRights = true;
}
Item.Interactor.OnTrigger(Session, Item, Request.PopWiredInt32(), hasRights);
}
private void TriggerItemDiceSpecial()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomItem Item = Room.GetItem(Request.PopWiredUInt());
if (Item == null)
{
return;
}
Boolean hasRights = false;
if (Room.CheckRights(Session))
{
hasRights = true;
}
Item.Interactor.OnTrigger(Session, Item, -1, hasRights);
}
private void OpenPostit()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomItem Item = Room.GetItem(Request.PopWiredUInt());
if (Item == null || Item.GetBaseItem().InteractionType.ToLower() != "postit")
{
return;
}
// @p181855059CFF9C stickynotemsg
GetResponse().Init(48);
GetResponse().AppendStringWithBreak(Item.Id.ToString());
GetResponse().AppendStringWithBreak(Item.ExtraData);
SendResponse();
}
private void SavePostit()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomItem Item = Room.GetItem(Request.PopWiredUInt());
if (Item == null || Item.GetBaseItem().InteractionType.ToLower() != "postit")
{
return;
}
String Data = Request.PopFixedString();
String Color = Data.Split(' ')[0];
String Text = UberEnvironment.FilterInjectionChars(Data.Substring(Color.Length + 1), true);
if (!Room.CheckRights(Session))
{
if (!Data.StartsWith(Item.ExtraData))
{
return; // we can only ADD stuff! older stuff changed, this is not allowed
}
}
switch (Color)
{
case "FFFF33":
case "FF9CFF":
case "9CCEFF":
case "9CFF9C":
break;
default:
return; // invalid color
}
Item.ExtraData = Color + " " + Text;
Item.UpdateState(true, true);
}
private void DeletePostit()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
RoomItem Item = Room.GetItem(Request.PopWiredUInt());
if (Item == null || Item.GetBaseItem().InteractionType.ToLower() != "postit")
{
return;
}
Room.RemoveFurniture(Session, Item.Id);
}
private void OpenPresent()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
RoomItem Present = Room.GetItem(Request.PopWiredUInt());
if (Present == null)
{
return;
}
DataRow Data = null;
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
Data = dbClient.ReadDataRow("SELECT base_id,amount,extra_data FROM user_presents WHERE item_id = '" + Present.Id + "' LIMIT 1");
}
if (Data == null)
{
return;
}
Item BaseItem = UberEnvironment.GetGame().GetItemManager().GetItem((uint)Data["base_id"]);
if (BaseItem == null)
{
return;
}
Room.RemoveFurniture(Session, Present.Id);
GetResponse().Init(219);
GetResponse().AppendUInt(Present.Id);
SendResponse();
GetResponse().Init(129);
GetResponse().AppendStringWithBreak(BaseItem.Type);
GetResponse().AppendInt32(BaseItem.SpriteId);
GetResponse().AppendStringWithBreak(BaseItem.Name);
SendResponse();
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("DELETE FROM user_presents WHERE item_id = '" + Present.Id + "' LIMIT 1");
}
UberEnvironment.GetGame().GetCatalog().DeliverItems(Session, BaseItem, (int)Data["amount"], (String)Data["extra_data"]);
}
private void GetMoodlight()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true) || Room.MoodlightData == null)
{
return;
}
GetResponse().Init(365);
GetResponse().AppendInt32(Room.MoodlightData.Presets.Count);
GetResponse().AppendInt32(Room.MoodlightData.CurrentPreset);
lock (Room.MoodlightData.Presets)
{
int i = 0;
foreach (MoodlightPreset Preset in Room.MoodlightData.Presets)
{
i++;
GetResponse().AppendInt32(i);
GetResponse().AppendInt32(int.Parse(UberEnvironment.BoolToEnum(Preset.BackgroundOnly)) + 1);
GetResponse().AppendStringWithBreak(Preset.ColorCode);
GetResponse().AppendInt32(Preset.ColorIntensity);
}
}
SendResponse();
}
private void UpdateMoodlight()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true) || Room.MoodlightData == null)
{
return;
}
RoomItem Item = null;
lock (Room.Items)
{
foreach (RoomItem I in Room.Items)
{
if (I.GetBaseItem().InteractionType.ToLower() == "dimmer")
{
Item = I;
break;
}
}
}
if (Item == null)
{
return;
}
// EVIH@G#EA4532RbI
int Preset = Request.PopWiredInt32();
int BackgroundMode = Request.PopWiredInt32();
string ColorCode = Request.PopFixedString();
int Intensity = Request.PopWiredInt32();
bool BackgroundOnly = false;
if (BackgroundMode >= 2)
{
BackgroundOnly = true;
}
Room.MoodlightData.Enabled = true;
Room.MoodlightData.CurrentPreset = Preset;
Room.MoodlightData.UpdatePreset(Preset, ColorCode, Intensity, BackgroundOnly);
Item.ExtraData = Room.MoodlightData.GenerateExtraData();
Item.UpdateState();
}
private void SwitchMoodlightStatus()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true) || Room.MoodlightData == null)
{
return;
}
RoomItem Item = null;
lock (Room.Items)
{
foreach (RoomItem I in Room.Items)
{
if (I.GetBaseItem().InteractionType.ToLower() == "dimmer")
{
Item = I;
break;
}
}
}
if (Item == null)
{
return;
}
if (Room.MoodlightData.Enabled)
{
Room.MoodlightData.Disable();
}
else
{
Room.MoodlightData.Enable();
}
Item.ExtraData = Room.MoodlightData.GenerateExtraData();
Item.UpdateState();
}
private void InitTrade()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CanTradeInRoom)
{
return;
}
RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id);
RoomUser User2 = Room.GetRoomUserByVirtualId(Request.PopWiredInt32());
Room.TryStartTrade(User, User2);
}
private void OfferTradeItem()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CanTradeInRoom)
{
return;
}
Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id);
UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(Request.PopWiredUInt());
if (Trade == null || Item == null)
{
return;
}
Trade.OfferItem(Session.GetHabbo().Id, Item);
}
private void TakeBackTradeItem()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CanTradeInRoom)
{
return;
}
Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id);
UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(Request.PopWiredUInt());
if (Trade == null || Item == null)
{
return;
}
Trade.TakeBackItem(Session.GetHabbo().Id, Item);
}
private void StopTrade()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CanTradeInRoom)
{
return;
}
Room.TryStopTrade(Session.GetHabbo().Id);
}
private void AcceptTrade()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CanTradeInRoom)
{
return;
}
Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id);
if (Trade == null)
{
return;
}
Trade.Accept(Session.GetHabbo().Id);
}
private void UnacceptTrade()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CanTradeInRoom)
{
return;
}
Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id);
if (Trade == null)
{
return;
}
Trade.Unaccept(Session.GetHabbo().Id);
}
private void CompleteTrade()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CanTradeInRoom)
{
return;
}
Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id);
if (Trade == null)
{
return;
}
Trade.CompleteTrade(Session.GetHabbo().Id);
}
private void GiveRespect()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || Session.GetHabbo().DailyRespectPoints <= 0)
{
return;
}
RoomUser User = Room.GetRoomUserByHabbo(Request.PopWiredUInt());
if (User == null || User.GetClient().GetHabbo().Id == Session.GetHabbo().Id || User.IsBot)
{
return;
}
Session.GetHabbo().DailyRespectPoints--;
User.GetClient().GetHabbo().Respect++;
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("UPDATE users SET respect = respect + 1 WHERE id = '" + User.GetClient().GetHabbo().Id + "' LIMIT 1");
dbClient.ExecuteQuery("UPDATE users SET daily_respect_points = daily_respect_points - 1 WHERE id = '" + Session.GetHabbo().Id + "' LIMIT 1");
}
// FxkqUzYP_
ServerMessage Message = new ServerMessage(440);
Message.AppendUInt(User.GetClient().GetHabbo().Id);
Message.AppendInt32(User.GetClient().GetHabbo().Respect);
Room.SendMessage(Message);
}
private void ApplyEffect()
{
Session.GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(Request.PopWiredInt32());
}
private void EnableEffect()
{
Session.GetHabbo().GetAvatarEffectsInventoryComponent().EnableEffect(Request.PopWiredInt32());
}
private void RecycleItems()
{
if (!Session.GetHabbo().InRoom)
{
return;
}
int itemCount = Request.PopWiredInt32();
if (itemCount != 5)
{
return;
}
for (int i = 0; i < itemCount; i++)
{
UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(Request.PopWiredUInt());
if (Item != null && Item.GetBaseItem().AllowRecycle)
{
Session.GetHabbo().GetInventoryComponent().RemoveItem(Item.Id);
}
else
{
return;
}
}
uint newItemId = UberEnvironment.GetGame().GetCatalog().GenerateItemId();
EcotronReward Reward = UberEnvironment.GetGame().GetCatalog().GetRandomEcotronReward();
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.ExecuteQuery("INSERT INTO user_items (id,user_id,base_item,extra_data) VALUES ('" + newItemId + "','" + Session.GetHabbo().Id + "','1478','" + DateTime.Now.ToLongDateString() + "')");
dbClient.ExecuteQuery("INSERT INTO user_presents (item_id,base_id,amount,extra_data) VALUES ('" + newItemId + "','" + Reward.BaseId + "','1','')");
}
Session.GetHabbo().GetInventoryComponent().UpdateItems(true);
GetResponse().Init(508);
GetResponse().AppendBoolean(true);
GetResponse().AppendUInt(newItemId);
SendResponse();
}
private void RedeemExchangeFurni()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
RoomItem Exchange = Room.GetItem(Request.PopWiredUInt());
if (Exchange == null)
{
return;
}
if (!Exchange.GetBaseItem().Name.StartsWith("CF_") && !Exchange.GetBaseItem().Name.StartsWith("CFC_"))
{
return;
}
string[] Split = Exchange.GetBaseItem().Name.Split('_');
int Value = int.Parse(Split[1]);
if (Value > 0)
{
Session.GetHabbo().Credits += Value;
Session.GetHabbo().UpdateCreditsBalance(true);
}
Room.RemoveFurniture(null, Exchange.Id);
GetResponse().Init(219);
SendResponse();
}
private void EnterInfobus()
{
// AQThe Infobus is currently closed.
GetResponse().Init(81);
GetResponse().AppendStringWithBreak("El InfoBus aún no esta en uso.");
SendResponse();
}
private void KickBot()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
RoomUser Bot = Room.GetRoomUserByVirtualId(Request.PopWiredInt32());
if (Bot == null || !Bot.IsBot)
{
return;
}
Room.RemoveBot(Bot.VirtualId, true);
}
private void PlacePet()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || (!Room.AllowPets && !Room.CheckRights(Session, true)))
{
return;
}
uint PetId = Request.PopWiredUInt();
Pet Pet = Session.GetHabbo().GetInventoryComponent().GetPet(PetId);
if (Pet == null || Pet.PlacedInRoom)
{
return;
}
int X = Request.PopWiredInt32();
int Y = Request.PopWiredInt32();
if (!Room.CanWalk(X, Y, 0, true))
{
return;
}
if (Room.PetCount >= UberEnvironment.GetGame().GetRoomManager().MAX_PETS_PER_ROOM)
{
Session.SendNotif("Hay demasiadas mascotas en esta sala, solo puedes tener " + UberEnvironment.GetGame().GetRoomManager().MAX_PETS_PER_ROOM + " mascotas.");
return;
}
Pet.PlacedInRoom = true;
Pet.RoomId = Room.RoomId;
RoomUser PetUser = Room.DeployBot(new HabboHotel.RoomBots.RoomBot(Pet.PetId, Pet.RoomId, "pet", "freeroam", Pet.Name, "", Pet.Look, X, Y, 0, 0, 0, 0, 0, 0), Pet);
if (Room.CheckRights(Session, true))
{
Session.GetHabbo().GetInventoryComponent().MovePetToRoom(Pet.PetId, Room.RoomId);
}
}
private void GetPetInfo()
{
uint PetId = Request.PopWiredUInt();
DataRow Row = null;
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.AddParamWithValue("petid", PetId);
Row = dbClient.ReadDataRow("SELECT * FROM user_pets WHERE id = @petid LIMIT 1");
}
if (Row == null)
{
return;
}
Session.SendMessage(UberEnvironment.GetGame().GetCatalog().GeneratePetFromRow(Row).SerializeInfo());
}
private void PickUpPet()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || Room.IsPublic || (!Room.AllowPets && !Room.CheckRights(Session, true)))
{
return;
}
uint PetId = Request.PopWiredUInt();
RoomUser PetUser = Room.GetPet(PetId);
if (PetUser == null || PetUser.PetData == null || PetUser.PetData.OwnerId != Session.GetHabbo().Id)
{
return;
}
Session.GetHabbo().GetInventoryComponent().AddPet(PetUser.PetData);
Room.RemoveBot(PetUser.VirtualId, false);
}
private void RespectPet()
{
Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || Room.IsPublic || (!Room.AllowPets && !Room.CheckRights(Session, true)))
{
return;
}
uint PetId = Request.PopWiredUInt();
RoomUser PetUser = Room.GetPet(PetId);
if (PetUser == null || PetUser.PetData == null || PetUser.PetData.OwnerId != Session.GetHabbo().Id)
{
return;
}
PetUser.PetData.OnRespect();
Session.GetHabbo().DailyPetRespectPoints--;
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.AddParamWithValue("userid", Session.GetHabbo().Id);
dbClient.ExecuteQuery("UPDATE users SET daily_pet_respect_points = daily_pet_respect_points - 1 WHERE id = @userid LIMIT 1");
}
}
public void RegisterRooms()
{
RequestHandlers[391] = new RequestHandler(OpenFlat);
RequestHandlers[182] = new RequestHandler(GetAdvertisement);
RequestHandlers[388] = new RequestHandler(GetPub);
RequestHandlers[2] = new RequestHandler(OpenPub);
RequestHandlers[230] = new RequestHandler(GetGroupBadges);
RequestHandlers[215] = new RequestHandler(GetRoomData1);
RequestHandlers[390] = new RequestHandler(GetRoomData2);
RequestHandlers[126] = new RequestHandler(GetRoomData3);
RequestHandlers[52] = new RequestHandler(Talk);
RequestHandlers[55] = new RequestHandler(Shout);
RequestHandlers[56] = new RequestHandler(Whisper);
RequestHandlers[75] = new RequestHandler(Move);
RequestHandlers[387] = new RequestHandler(CanCreateRoom);
RequestHandlers[29] = new RequestHandler(CreateRoom);
RequestHandlers[400] = new RequestHandler(GetRoomEditData);
RequestHandlers[386] = new RequestHandler(SaveRoomIcon);
RequestHandlers[401] = new RequestHandler(SaveRoomData);
RequestHandlers[96] = new RequestHandler(GiveRights);
RequestHandlers[97] = new RequestHandler(TakeRights);
RequestHandlers[155] = new RequestHandler(TakeAllRights);
RequestHandlers[95] = new RequestHandler(KickUser);
RequestHandlers[320] = new RequestHandler(BanUser);
RequestHandlers[71] = new RequestHandler(InitTrade);
RequestHandlers[384] = new RequestHandler(SetHomeRoom);
RequestHandlers[23] = new RequestHandler(DeleteRoom);
RequestHandlers[79] = new RequestHandler(LookAt);
RequestHandlers[317] = new RequestHandler(StartTyping);
RequestHandlers[318] = new RequestHandler(StopTyping);
RequestHandlers[319] = new RequestHandler(IgnoreUser);
RequestHandlers[322] = new RequestHandler(UnignoreUser);
RequestHandlers[345] = new RequestHandler(CanCreateRoomEvent);
RequestHandlers[346] = new RequestHandler(StartEvent);
RequestHandlers[347] = new RequestHandler(StopEvent);
RequestHandlers[348] = new RequestHandler(EditEvent);
RequestHandlers[94] = new RequestHandler(Wave);
RequestHandlers[263] = new RequestHandler(GetUserTags);
RequestHandlers[159] = new RequestHandler(GetUserBadges);
RequestHandlers[261] = new RequestHandler(RateRoom);
RequestHandlers[93] = new RequestHandler(Dance);
RequestHandlers[98] = new RequestHandler(AnswerDoorbell);
RequestHandlers[59] = new RequestHandler(ReqLoadRoomForUser);
RequestHandlers[66] = new RequestHandler(ApplyRoomEffect);
RequestHandlers[90] = new RequestHandler(PlaceItem);
RequestHandlers[67] = new RequestHandler(TakeItem);
RequestHandlers[73] = new RequestHandler(MoveItem);
RequestHandlers[392] = new RequestHandler(TriggerItem); // Generic trigger item
RequestHandlers[393] = new RequestHandler(TriggerItem); // Generic trigger item
RequestHandlers[83] = new RequestHandler(OpenPostit);
RequestHandlers[84] = new RequestHandler(SavePostit);
RequestHandlers[85] = new RequestHandler(DeletePostit);
RequestHandlers[78] = new RequestHandler(OpenPresent);
RequestHandlers[341] = new RequestHandler(GetMoodlight);
RequestHandlers[342] = new RequestHandler(UpdateMoodlight);
RequestHandlers[343] = new RequestHandler(SwitchMoodlightStatus);
RequestHandlers[72] = new RequestHandler(OfferTradeItem);
RequestHandlers[405] = new RequestHandler(TakeBackTradeItem);
RequestHandlers[70] = new RequestHandler(StopTrade);
RequestHandlers[403] = new RequestHandler(StopTrade);
RequestHandlers[69] = new RequestHandler(AcceptTrade);
RequestHandlers[68] = new RequestHandler(UnacceptTrade);
RequestHandlers[402] = new RequestHandler(CompleteTrade);
RequestHandlers[371] = new RequestHandler(GiveRespect);
RequestHandlers[372] = new RequestHandler(ApplyEffect);
RequestHandlers[373] = new RequestHandler(EnableEffect);
RequestHandlers[3004] = new RequestHandler(GetTrainerPanel); // Mas rápdio xD
RequestHandlers[232] = new RequestHandler(TriggerItem); // One way gates
RequestHandlers[314] = new RequestHandler(TriggerItem); // Love Shuffler
RequestHandlers[247] = new RequestHandler(TriggerItem); // Habbo Wheel
RequestHandlers[76] = new RequestHandler(TriggerItem); // Dice
RequestHandlers[77] = new RequestHandler(TriggerItemDiceSpecial); // Dice (special)
RequestHandlers[414] = new RequestHandler(RecycleItems);
RequestHandlers[183] = new RequestHandler(RedeemExchangeFurni);
RequestHandlers[113] = new RequestHandler(EnterInfobus);
RequestHandlers[441] = new RequestHandler(KickBot);
RequestHandlers[3002] = new RequestHandler(PlacePet);
RequestHandlers[3001] = new RequestHandler(GetPetInfo);
RequestHandlers[3003] = new RequestHandler(PickUpPet);
RequestHandlers[3005] = new RequestHandler(RespectPet);
}
}
}
Code complet.
Messages > Requests > Rooms.cs
Test with it.Code:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Uber.HabboHotel.Pets; using Uber.HabboHotel.Navigators; using Uber.HabboHotel.Items; using Uber.HabboHotel.GameClients; using Uber.HabboHotel.Users.Badges; using Uber.HabboHotel.Misc; using Uber.HabboHotel.Pathfinding; using Uber.HabboHotel.Advertisements; using Uber.HabboHotel.Users.Messenger; using Uber.HabboHotel.Rooms; using Uber.HabboHotel.Catalogs; using Uber.Storage; namespace Uber.Messages { partial class GameClientMessageHandler { private void GetAdvertisement() { RoomAdvertisement Ad = UberEnvironment.GetGame().GetAdvertisementManager().GetRandomRoomAdvertisement(); GetResponse().Init(258); if (Ad == null) { GetResponse().AppendStringWithBreak(""); GetResponse().AppendStringWithBreak(""); } else { GetResponse().AppendStringWithBreak(Ad.AdImage); GetResponse().AppendStringWithBreak(Ad.AdLink); Ad.OnView(); } SendResponse(); } private void GetTrainerPanel() { uint PetID = Request.PopWiredUInt(); Pet PetData = Session.GetHabbo().GetInventoryComponent().GetPet(PetID); GetResponse().Init(605); GetResponse().AppendUInt(PetID); /* Estoy probando, porque este paquete aún no lo tenia "explicado"*/ GetResponse().AppendString("PBHIJKPAQARASA"); SendResponse(); } private void GetPub() { uint Id = Request.PopWiredUInt(); RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id); if (Data == null || Data.Type != "public") { return; } GetResponse().Init(453); GetResponse().AppendUInt(Data.Id); GetResponse().AppendStringWithBreak(Data.CCTs); GetResponse().AppendUInt(Data.Id); SendResponse(); } private void OpenFlat() { uint Id = Request.PopWiredUInt(); string Password = Request.PopFixedString(); int Junk = Request.PopWiredInt32(); RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id); if (Data == null || Data.Type != "private") { return; } PrepareRoomForUser(Id, Password); } private void OpenPub() { int Junk = Request.PopWiredInt32(); uint Id = Request.PopWiredUInt(); int Junk2 = Request.PopWiredInt32(); RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id); if (Data == null || Data.Type != "public") { return; } PrepareRoomForUser(Data.Id, ""); } private void GetGroupBadges() { GetResponse().Init(309); GetResponse().AppendStringWithBreak("IcIrDs43103s19014d5a1dc291574a508bc80a64663e61a00"); SendResponse(); } private void GetInventory() { Session.SendMessage(Session.GetHabbo().GetInventoryComponent().SerializeItemInventory()); } private void GetRoomData1() { if (Session.GetHabbo().LoadingRoom <= 0) { return; } GetResponse().Init(297); GetResponse().AppendInt32(0); SendResponse(); } private void GetRoomData2() { if (Session.GetHabbo().LoadingRoom <= 0) { return; } RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Session.GetHabbo().LoadingRoom); if (Data == null) { return; } if (Data.Model == null) { Session.SendNotif("Sorry, model data is missing from this room and therefore cannot be loaded."); Session.SendMessage(new ServerMessage(18)); ClearRoomLoading(); return; } Session.SendMessage(Data.Model.SerializeHeightmap()); Session.SendMessage(Data.Model.SerializeRelativeHeightmap()); } private void GetRoomData3() { if (Session.GetHabbo().LoadingRoom <= 0 || !Session.GetHabbo().LoadingChecksPassed) { return; } Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().LoadingRoom); if (Room == null) { return; } ClearRoomLoading(); GetResponse().Init(30); if (Room.Model.StaticFurniMap != "") { GetResponse().AppendStringWithBreak(Room.Model.StaticFurniMap); } else { GetResponse().AppendInt32(0); } SendResponse(); if (Room.Type == "private") { List<RoomItem> FloorItems = Room.FloorItems; List<RoomItem> WallItems = Room.WallItems; GetResponse().Init(32); GetResponse().AppendInt32(FloorItems.Count); foreach (RoomItem Item in FloorItems) { Item.Serialize(GetResponse()); } SendResponse(); GetResponse().Init(45); GetResponse().AppendInt32(WallItems.Count); foreach (RoomItem Item in WallItems) { Item.Serialize(GetResponse()); } SendResponse(); } Room.AddUserToRoom(Session, Session.GetHabbo().SpectatorMode); List<RoomUser> UsersToDisplay = new List<RoomUser>(); lock (Room.UserList) { foreach (RoomUser User in Room.UserList) { if (User.IsSpectator) { continue; } UsersToDisplay.Add(User); } } GetResponse().Init(28); GetResponse().AppendInt32(UsersToDisplay.Count); foreach (RoomUser User in UsersToDisplay) { User.Serialize(GetResponse()); } SendResponse(); if (Room.Type == "public") { GetResponse().Init(471); GetResponse().AppendBoolean(false); GetResponse().AppendStringWithBreak(Room.ModelName); GetResponse().AppendBoolean(false); SendResponse(); } else if (Room.Type == "private") { GetResponse().Init(471); GetResponse().AppendBoolean(true); GetResponse().AppendUInt(Room.RoomId); if (Room.CheckRights(Session, true)) { GetResponse().AppendBoolean(true); } else { GetResponse().AppendBoolean(false); } SendResponse(); // GQhntX]uberEmu PacketloggingDescriptionHQMSCQFJtag1tag2Ika^SMqurbIHH GetResponse().Init(454); GetResponse().AppendInt32(1); GetResponse().AppendUInt(Room.RoomId); GetResponse().AppendInt32(0); GetResponse().AppendStringWithBreak(Room.Name); GetResponse().AppendStringWithBreak(Room.Owner); GetResponse().AppendInt32(Room.State); GetResponse().AppendInt32(0); GetResponse().AppendInt32(25); GetResponse().AppendStringWithBreak(Room.Description); GetResponse().AppendInt32(0); GetResponse().AppendInt32(1); GetResponse().AppendInt32(8228); GetResponse().AppendInt32(Room.Category); GetResponse().AppendStringWithBreak(""); GetResponse().AppendInt32(Room.TagCount); foreach (string Tag in Room.Tags) { GetResponse().AppendStringWithBreak(Tag); } Room.Icon.Serialize(GetResponse()); GetResponse().AppendBoolean(false); SendResponse(); } ServerMessage Updates = Room.SerializeStatusUpdates(true); if (Updates != null) { Session.SendMessage(Updates); } lock (Room.UserList) { foreach (RoomUser User in Room.UserList) { if (User.IsSpectator) { continue; } if (User.IsDancing) { GetResponse().Init(480); GetResponse().AppendInt32(User.VirtualId); GetResponse().AppendInt32(User.DanceId); SendResponse(); } if (User.IsAsleep) { GetResponse().Init(486); GetResponse().AppendInt32(User.VirtualId); GetResponse().AppendBoolean(true); SendResponse(); } if (User.CarryItemID > 0 && User.CarryTimer > 0) { GetResponse().Init(482); GetResponse().AppendInt32(User.VirtualId); GetResponse().AppendInt32(User.CarryTimer); SendResponse(); } if (!User.IsBot) { if (User.GetClient().GetHabbo() != null && User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent() != null && User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect >= 1) { GetResponse().Init(485); GetResponse().AppendInt32(User.VirtualId); GetResponse().AppendInt32(User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect); SendResponse(); } } } } } public void PrepareRoomForUser(uint Id, string Password) { ClearRoomLoading(); if (UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id) == null) { return; } if (Session.GetHabbo().InRoom) { Room OldRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (OldRoom != null) { OldRoom.RemoveUserFromRoom(Session, false, false); } } if (!UberEnvironment.GetGame().GetRoomManager().IsRoomLoaded(Id)) { UberEnvironment.GetGame().GetRoomManager().LoadRoom(Id); } Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Id); if (Room == null) { return; } Session.GetHabbo().LoadingRoom = Id; if (Room.UserIsBanned(Session.GetHabbo().Id)) { if (Room.HasBanExpired(Session.GetHabbo().Id)) { Room.RemoveBan(Session.GetHabbo().Id); } else { // C`PA GetResponse().Init(224); GetResponse().AppendInt32(4); SendResponse(); GetResponse().Init(18); SendResponse(); return; } } if (Room.UsersNow >= Room.UsersMax) { if (!UberEnvironment.GetGame().GetRoleManager().RankHasRight(Session.GetHabbo().Rank, "fuse_enter_full_rooms")) { GetResponse().Init(224); GetResponse().AppendInt32(1); SendResponse(); GetResponse().Init(18); SendResponse(); return; } } if (Room.Type == "public") { if (Room.State > 0 && !Session.GetHabbo().HasFuse("fuse_mod")) { Session.SendNotif("Esta sala pública es solamente accesible a la administracion del hotel."); GetResponse().Init(18); SendResponse(); return; } GetResponse().Init(166); GetResponse().AppendStringWithBreak("/client/public/" + Room.ModelName + "/0"); SendResponse(); } else if (Room.Type == "private") { GetResponse().Init(19); SendResponse(); if (!Session.GetHabbo().HasFuse("fuse_enter_any_room") && !Room.CheckRights(Session, true) && !Session.GetHabbo().IsTeleporting) { if (Room.State == 1) { if (Room.UserCount == 0) { GetResponse().Init(131); SendResponse(); } else { GetResponse().Init(91); GetResponse().AppendStringWithBreak(""); SendResponse(); ServerMessage RingMessage = new ServerMessage(91); RingMessage.AppendStringWithBreak(Session.GetHabbo().Username); Room.SendMessageToUsersWithRights(RingMessage); } return; } else if (Room.State == 2) { if (Password.ToLower() != Room.Password.ToLower()) { GetResponse().Init(33); GetResponse().AppendInt32(-100002); SendResponse(); GetResponse().Init(18); SendResponse(); return; } } } GetResponse().Init(166); GetResponse().AppendStringWithBreak("/client/private/" + Room.RoomId + "/id"); SendResponse(); } Session.GetHabbo().LoadingChecksPassed = true; LoadRoomForUser(); } private void ReqLoadRoomForUser() { LoadRoomForUser(); } public void LoadRoomForUser() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().LoadingRoom); if (Room == null || !Session.GetHabbo().LoadingChecksPassed) { return; } // todo: Room.SerializeGroupBadges() GetResponse().Init(309); GetResponse().AppendStringWithBreak("IcIrDs43103s19014d5a1dc291574a508bc80a64663e61a00"); SendResponse(); GetResponse().Init(69); GetResponse().AppendStringWithBreak(Room.ModelName); GetResponse().AppendUInt(Room.RoomId); SendResponse(); if (Session.GetHabbo().SpectatorMode) { GetResponse().Init(254); SendResponse(); } if (Room.Type == "private") { if (Room.Wallpaper != "0.0") { GetResponse().Init(46); GetResponse().AppendStringWithBreak("wallpaper"); GetResponse().AppendStringWithBreak(Room.Wallpaper); SendResponse(); } if (Room.Floor != "0.0") { GetResponse().Init(46); GetResponse().AppendStringWithBreak("floor"); GetResponse().AppendStringWithBreak(Room.Floor); SendResponse(); } GetResponse().Init(46); GetResponse().AppendStringWithBreak("landscape"); GetResponse().AppendStringWithBreak(Room.Landscape); SendResponse(); if (Room.CheckRights(Session, true)) { GetResponse().Init(42); SendResponse(); GetResponse().Init(47); SendResponse(); } else if (Room.CheckRights(Session)) { GetResponse().Init(42); SendResponse(); } GetResponse().Init(345); if (Session.GetHabbo().RatedRooms.Contains(Room.RoomId) || Room.CheckRights(Session, true)) { GetResponse().AppendInt32(Room.Score); } else { GetResponse().AppendInt32(-1); } SendResponse(); if (Room.HasOngoingEvent) { Session.SendMessage(Room.Event.Serialize(Session)); } else { GetResponse().Init(370); GetResponse().AppendStringWithBreak("-1"); SendResponse(); } } } public void ClearRoomLoading() { Session.GetHabbo().LoadingRoom = 0; Session.GetHabbo().LoadingChecksPassed = false; } private void Talk() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } User.Chat(Session, UberEnvironment.FilterInjectionChars(Request.PopFixedString()), false); } private void Shout() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } User.Chat(Session, UberEnvironment.FilterInjectionChars(Request.PopFixedString()), true); } private void Whisper() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } if (Session.GetHabbo().Muted) { Session.SendNotif("Usted esta asilenciado."); return; } string Params = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); string ToUser = Params.Split(' ')[0]; string Message = Params.Substring(ToUser.Length + 1); RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); RoomUser User2 = Room.GetRoomUserByHabbo(ToUser); ServerMessage TellMsg = new ServerMessage(); TellMsg.Init(25); TellMsg.AppendInt32(User.VirtualId); TellMsg.AppendStringWithBreak(Message); TellMsg.AppendBoolean(false); if (User != null && !User.IsBot) { User.GetClient().SendMessage(TellMsg); } User.Unidle(); if (User2 != null && !User2.IsBot) { if (!User2.GetClient().GetHabbo().MutedUsers.Contains(Session.GetHabbo().Id)) { User2.GetClient().SendMessage(TellMsg); } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.AddParamWithValue("message", "<Whisper to " + User2.GetClient().GetHabbo().Username + ">: " + Message); dbClient.ExecuteQuery("INSERT INTO chatlogs (user_id,room_id,hour,minute,timestamp,message,user_name,full_date) VALUES ('" + Session.GetHabbo().Id + "','" + Room.RoomId + "','" + DateTime.Now.Hour + "','" + DateTime.Now.Minute + "','1273133831.41423',@message,'" + Session.GetHabbo().Username + "','" + DateTime.Now.ToLongDateString() + "')"); } } } private void Move() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null || !User.CanWalk) { return; } int MoveX = Request.PopWiredInt32(); int MoveY = Request.PopWiredInt32(); if (MoveX == User.X && MoveY == User.Y) { return; } User.MoveTo(MoveX, MoveY); } private void CanCreateRoom() { GetResponse().Init(512); GetResponse().AppendBoolean(false); // true = show error with number below GetResponse().AppendInt32(99999); SendResponse(); // todo: room limit } private void CreateRoom() { string RoomName = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); string ModelName = Request.PopFixedString(); string RoomState = Request.PopFixedString(); // unused, room open by default on creation. may be added in later build of Habbo? RoomData NewRoom = UberEnvironment.GetGame().GetRoomManager().CreateRoom(Session, RoomName, ModelName); if (NewRoom != null) { GetResponse().Init(59); GetResponse().AppendUInt(NewRoom.Id); GetResponse().AppendStringWithBreak(NewRoom.Name); SendResponse(); } } private void GetRoomEditData() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } GetResponse().Init(465); GetResponse().AppendUInt(Room.RoomId); GetResponse().AppendStringWithBreak(Room.Name); GetResponse().AppendStringWithBreak(Room.Description); GetResponse().AppendInt32(Room.State); GetResponse().AppendInt32(Room.Category); GetResponse().AppendInt32(Room.UsersMax); GetResponse().AppendInt32(25); GetResponse().AppendInt32(Room.TagCount); foreach (string Tag in Room.Tags) { GetResponse().AppendStringWithBreak(Tag); } GetResponse().AppendInt32(Room.UsersWithRights.Count); // users /w rights count foreach (uint UserId in Room.UsersWithRights) { GetResponse().AppendUInt(UserId); GetResponse().AppendStringWithBreak(UberEnvironment.GetGame().GetClientManager().GetNameById(UserId)); } GetResponse().AppendInt32(Room.UsersWithRights.Count); // users /w rights count GetResponse().AppendBoolean(Room.AllowPets); // allows pets in room - pet system lacking, so always off GetResponse().AppendBoolean(Room.AllowPetsEating); // allows pets to eat your food - pet system lacking, so always off GetResponse().AppendBoolean(Room.AllowWalkthrough); SendResponse(); } private void SaveRoomIcon() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } int Junk = Request.PopWiredInt32(); // always 3 Dictionary<int, int> Items = new Dictionary<int, int>(); int Background = Request.PopWiredInt32(); int TopLayer = Request.PopWiredInt32(); int AmountOfItems = Request.PopWiredInt32(); for (int i = 0; i < AmountOfItems; i++) { int Pos = Request.PopWiredInt32(); int Item = Request.PopWiredInt32(); if (Pos < 0 || Pos > 10) { return; } if (Item < 1 || Item > 27) { return; } if (Items.ContainsKey(Pos)) { return; } Items.Add(Pos, Item); } if (Background < 1 || Background > 24) { return; } if (TopLayer < 0 || TopLayer > 11) { return; } StringBuilder FormattedItems = new StringBuilder(); int j = 0; foreach (KeyValuePair<int, int> Item in Items) { if (j > 0) { FormattedItems.Append("|"); } FormattedItems.Append(Item.Key + "," + Item.Value); j++; } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE rooms SET icon_bg = '" + Background + "', icon_fg = '" + TopLayer + "', icon_items = '" + FormattedItems.ToString() + "' WHERE id = '" + Room.RoomId + "' LIMIT 1"); } Room.Icon = new RoomIcon(Background, TopLayer, Items); GetResponse().Init(457); GetResponse().AppendUInt(Room.RoomId); GetResponse().AppendBoolean(true); SendResponse(); GetResponse().Init(456); GetResponse().AppendUInt(Room.RoomId); SendResponse(); RoomData Data = new RoomData(); Data.Fill(Room); GetResponse().Init(454); GetResponse().AppendBoolean(false); Data.Serialize(GetResponse(), false); SendResponse(); } private void SaveRoomData() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } int Id = Request.PopWiredInt32(); string Name = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); string Description = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); int State = Request.PopWiredInt32(); string Password = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); int MaxUsers = Request.PopWiredInt32(); int CategoryId = Request.PopWiredInt32(); int TagCount = Request.PopWiredInt32(); List<string> Tags = new List<string>(); StringBuilder formattedTags = new StringBuilder(); for (int i = 0; i < TagCount; i++) { if (i > 0) { formattedTags.Append(","); } string tag = UberEnvironment.FilterInjectionChars(Request.PopFixedString().ToLower()); Tags.Add(tag); formattedTags.Append(tag); } int AllowPets = 0; int AllowPetsEat = 0; int AllowWalkthrough = 0; string _AllowPets = Request.PlainReadBytes(1)[0].ToString(); Request.AdvancePointer(1); string _AllowPetsEat = Request.PlainReadBytes(1)[0].ToString(); Request.AdvancePointer(1); string _AllowWalkthrough = Request.PlainReadBytes(1)[0].ToString(); Request.AdvancePointer(1); if (Name.Length < 1) { return; } if (State < 0 || State > 2) { return; } if (MaxUsers != 10 && MaxUsers != 15 && MaxUsers != 20 && MaxUsers != 25) { return; } FlatCat FlatCat = UberEnvironment.GetGame().GetNavigator().GetFlatCat(CategoryId); if (FlatCat == null) { return; } if (FlatCat.MinRank > Session.GetHabbo().Rank) { Session.SendNotif("You are not allowed to use this category. Your room has been moved to no category instead."); CategoryId = 0; } if (TagCount > 2) { return; } if (State < 0 || State > 2) { return; } if (_AllowPets == "65") { AllowPets = 1; Room.AllowPets = true; } else { Room.AllowPets = false; } if (_AllowPetsEat == "65") { AllowPetsEat = 1; Room.AllowPetsEating = true; } else { Room.AllowPetsEating = false; } if (_AllowWalkthrough == "65") { AllowWalkthrough = 1; Room.AllowWalkthrough = true; } else { Room.AllowWalkthrough = false; } Room.Name = Name; Room.State = State; Room.Description = Description; Room.Category = CategoryId; Room.Password = Password; Room.Tags = Tags; Room.UsersMax = MaxUsers; string formattedState = "open"; if (Room.State == 1) { formattedState = "locked"; } else if (Room.State > 1) { formattedState = "password"; } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.AddParamWithValue("caption", Room.Name); dbClient.AddParamWithValue("description", Room.Description); dbClient.AddParamWithValue("password", Room.Password); dbClient.AddParamWithValue("tags", formattedTags.ToString()); dbClient.ExecuteQuery("UPDATE rooms SET caption = @caption, description = @description, password = @password, category = '" + CategoryId + "', state = '" + formattedState + "', tags = @tags, users_max = '" + MaxUsers + "', allow_pets = '" + AllowPets + "', allow_pets_eat = '" + AllowPetsEat + "', allow_walkthrough = '" + AllowWalkthrough + "' WHERE id = '" + Room.RoomId + "' LIMIT 1"); } GetResponse().Init(467); GetResponse().AppendUInt(Room.RoomId); SendResponse(); GetResponse().Init(456); GetResponse().AppendUInt(Room.RoomId); SendResponse(); RoomData Data = new RoomData(); Data.Fill(Room); GetResponse().Init(454); GetResponse().AppendBoolean(false); Data.Serialize(GetResponse(), false); SendResponse(); } private void GiveRights() { uint UserId = Request.PopWiredUInt(); Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); RoomUser RoomUser = Room.GetRoomUserByHabbo(UserId); if (Room == null || !Room.CheckRights(Session, true) || RoomUser == null || RoomUser.IsBot) { return; } if (Room.UsersWithRights.Contains(UserId)) { // todo: fix silly bug Session.SendNotif("Este usuario ya tiene permisos."); return; } Room.UsersWithRights.Add(UserId); using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("INSERT INTO room_rights (room_id,user_id) VALUES ('" + Room.RoomId + "','" + UserId + "')"); } GetResponse().Init(510); GetResponse().AppendUInt(Room.RoomId); GetResponse().AppendUInt(UserId); GetResponse().AppendStringWithBreak(RoomUser.GetClient().GetHabbo().Username); SendResponse(); RoomUser.AddStatus("flatcrtl", ""); RoomUser.UpdateNeeded = true; RoomUser.GetClient().SendMessage(new ServerMessage(42)); // G~hntX]h_u@UMeth0d9 } private void TakeRights() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } StringBuilder DeleteParams = new StringBuilder(); int Amount = Request.PopWiredInt32(); for (int i = 0; i < Amount; i++) { if (i > 0) { DeleteParams.Append(" OR "); } uint UserId = Request.PopWiredUInt(); Room.UsersWithRights.Remove(UserId); DeleteParams.Append("room_id = '" + Room.RoomId + "' AND user_id = '" + UserId + "'"); RoomUser User = Room.GetRoomUserByHabbo(UserId); if (User != null && !User.IsBot) { User.GetClient().SendMessage(new ServerMessage(43)); } // GhntX]hqu@U GetResponse().Init(511); GetResponse().AppendUInt(Room.RoomId); GetResponse().AppendUInt(UserId); SendResponse(); } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("DELETE FROM room_rights WHERE " + DeleteParams.ToString()); } } private void TakeAllRights() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } foreach (uint UserId in Room.UsersWithRights) { RoomUser User = Room.GetRoomUserByHabbo(UserId); if (User != null && !User.IsBot) { User.GetClient().SendMessage(new ServerMessage(43)); } GetResponse().Init(511); GetResponse().AppendUInt(Room.RoomId); GetResponse().AppendUInt(UserId); SendResponse(); } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("DELETE FROM room_rights WHERE room_id = '" + Room.RoomId + "'"); } Room.UsersWithRights.Clear(); } private void KickUser() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } if (!Room.CheckRights(Session)) { return; // insufficient permissions } uint UserId = Request.PopWiredUInt(); RoomUser User = Room.GetRoomUserByHabbo(UserId); if (User == null || User.IsBot) { return; } if (Room.CheckRights(User.GetClient(), true) || User.GetClient().GetHabbo().HasFuse("fuse_mod")) { return; // can't kick room owner or mods! } Room.RemoveUserFromRoom(User.GetClient(), true, true); } private void BanUser() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; // insufficient permissions } uint UserId = Request.PopWiredUInt(); RoomUser User = Room.GetRoomUserByHabbo(UserId); if (User == null || User.IsBot) { return; } if (User.GetClient().GetHabbo().HasFuse("fuse_mod")) { return; } Room.AddBan(UserId); Room.RemoveUserFromRoom(User.GetClient(), true, true); } private void SetHomeRoom() { uint RoomId = Request.PopWiredUInt(); RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(RoomId); if (RoomId != 0) { if (Data == null || Data.Owner.ToLower() != Session.GetHabbo().Username.ToLower()) { return; } } Session.GetHabbo().HomeRoom = RoomId; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE users SET home_room = '" + RoomId + "' WHERE id = '" + Session.GetHabbo().Id + "' LIMIT 1"); } GetResponse().Init(455); GetResponse().AppendUInt(RoomId); SendResponse(); } private void DeleteRoom() { uint RoomId = Request.PopWiredUInt(); RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(RoomId); if (Data == null || Data.Owner.ToLower() != Session.GetHabbo().Username.ToLower()) { return; } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("DELETE FROM rooms WHERE id = '" + Data.Id + "' LIMIT 1"); dbClient.ExecuteQuery("DELETE FROM user_favorites WHERE room_id = '" + Data.Id + "'"); dbClient.ExecuteQuery("DELETE FROM room_items WHERE room_id = '" + Data.Id + "'"); dbClient.ExecuteQuery("DELETE FROM room_rights WHERE room_id = '" + Data.Id + "'"); dbClient.ExecuteQuery("UPDATE users SET home_room = '0' WHERE home_room = '" + Data.Id + "'"); // todo: delete room stuff } Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Data.Id); if (Room != null) { lock (Room.UserList) { foreach (RoomUser User in Room.UserList) { if (User.IsBot) { continue; } User.GetClient().SendMessage(new ServerMessage(18)); User.GetClient().GetHabbo().OnLeaveRoom(); } } UberEnvironment.GetGame().GetRoomManager().UnloadRoom(Data.Id); } GetResponse().Init(101); SendResponse(); Session.SendMessage(UberEnvironment.GetGame().GetNavigator().SerializeRoomListing(Session, -3)); } private void LookAt() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } User.Unidle(); int X = Request.PopWiredInt32(); int Y = Request.PopWiredInt32(); if (X == User.X && Y == User.Y) { return; } int Rot = Rotation.Calculate(User.X, User.Y, X, Y); User.SetRot(Rot); } private void StartTyping() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } ServerMessage Message = new ServerMessage(361); Message.AppendInt32(User.VirtualId); Message.AppendBoolean(true); Room.SendMessage(Message); } private void StopTyping() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } ServerMessage Message = new ServerMessage(361); Message.AppendInt32(User.VirtualId); Message.AppendBoolean(false); Room.SendMessage(Message); } private void IgnoreUser() { /*Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoom); if (Room == null) { return; } uint Id = Request.PopWiredUInt(); if (Session.GetHabbo().MutedUsers.Contains(Id)) { return; } Session.GetHabbo().MutedUsers.Add(Id); GetResponse().Init(419); GetResponse().AppendInt32(1); SendResponse();*/ } private void UnignoreUser() { /*Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoom); if (Room == null) { return; } uint Id = Request.PopWiredUInt(); if (!Session.GetHabbo().MutedUsers.Contains(Id)) { return; } Session.GetHabbo().MutedUsers.Remove(Id); GetResponse().Init(419); GetResponse().AppendInt32(3); SendResponse();*/ } private void CanCreateRoomEvent() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } Boolean Allow = true; int ErrorCode = 0; if (Room.State != 0) { Allow = false; ErrorCode = 3; } GetResponse().Init(367); GetResponse().AppendBoolean(Allow); GetResponse().AppendInt32(ErrorCode); SendResponse(); } private void StartEvent() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true) || Room.Event != null || Room.State != 0) { return; } int category = Request.PopWiredInt32(); string name = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); string descr = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); int tagCount = Request.PopWiredInt32(); Room.Event = new RoomEvent(Room.RoomId, name, descr, category, null); Room.Event.Tags = new List<string>(); for (int i = 0; i < tagCount; i++) { Room.Event.Tags.Add(UberEnvironment.FilterInjectionChars(Request.PopFixedString())); } Room.SendMessage(Room.Event.Serialize(Session)); } private void StopEvent() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true) || Room.Event == null) { return; } Room.Event = null; ServerMessage Message = new ServerMessage(370); Message.AppendStringWithBreak("-1"); Room.SendMessage(Message); } private void EditEvent() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true) || Room.Event == null) { return; } int category = Request.PopWiredInt32(); string name = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); string descr = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); int tagCount = Request.PopWiredInt32(); Room.Event.Category = category; Room.Event.Name = name; Room.Event.Description = descr; Room.Event.Tags = new List<string>(); for (int i = 0; i < tagCount; i++) { Room.Event.Tags.Add(UberEnvironment.FilterInjectionChars(Request.PopFixedString())); } Room.SendMessage(Room.Event.Serialize(Session)); } private void Wave() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } User.Unidle(); User.DanceId = 0; ServerMessage Message = new ServerMessage(481); Message.AppendInt32(User.VirtualId); Room.SendMessage(Message); } private void GetUserTags() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Request.PopWiredUInt()); if (User == null || User.IsBot) { return; } GetResponse().Init(350); GetResponse().AppendUInt(User.GetClient().GetHabbo().Id); GetResponse().AppendInt32(User.GetClient().GetHabbo().Tags.Count); lock (User.GetClient().GetHabbo().Tags) { foreach (string Tag in User.GetClient().GetHabbo().Tags) { GetResponse().AppendStringWithBreak(Tag); } } SendResponse(); } private void GetUserBadges() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Request.PopWiredUInt()); if (User == null || User.IsBot) { return; } // CdjUzYZJIACH_RespectEarned1JACH_EmailVerification1E^jUzYZH GetResponse().Init(228); GetResponse().AppendUInt(User.GetClient().GetHabbo().Id); GetResponse().AppendInt32(User.GetClient().GetHabbo().GetBadgeComponent().EquippedCount); lock (User.GetClient().GetHabbo().GetBadgeComponent().BadgeList) { foreach (Badge Badge in User.GetClient().GetHabbo().GetBadgeComponent().BadgeList) { if (Badge.Slot <= 0) { continue; } GetResponse().AppendInt32(Badge.Slot); GetResponse().AppendStringWithBreak(Badge.Code); } } SendResponse(); } private void RateRoom() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || Session.GetHabbo().RatedRooms.Contains(Room.RoomId) || Room.CheckRights(Session, true)) { return; } int Rating = Request.PopWiredInt32(); switch (Rating) { case -1: Room.Score--; break; case 1: Room.Score++; break; default: return; } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE rooms SET score = '" + Room.Score + "' WHERE id = '" + Room.RoomId + "' LIMIT 1"); } Session.GetHabbo().RatedRooms.Add(Room.RoomId); GetResponse().Init(345); GetResponse().AppendInt32(Room.Score); SendResponse(); } private void Dance() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } User.Unidle(); int DanceId = Request.PopWiredInt32(); if (DanceId < 0 || DanceId > 4 || (!Session.GetHabbo().HasFuse("fuse_use_club_dance") && DanceId > 1)) { DanceId = 0; } if (DanceId > 0 && User.CarryItemID > 0) { User.CarryItem(0); } User.DanceId = DanceId; ServerMessage DanceMessage = new ServerMessage(480); DanceMessage.AppendInt32(User.VirtualId); DanceMessage.AppendInt32(DanceId); Room.SendMessage(DanceMessage); } private void AnswerDoorbell() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session)) { return; } string Name = Request.PopFixedString(); byte[] Result = Request.ReadBytes(1); GameClient Client = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(Name); if (Client == null) { return; } if (Result[0] == Convert.ToByte(65)) { Client.GetHabbo().LoadingChecksPassed = true; Client.GetMessageHandler().GetResponse().Init(41); Client.GetMessageHandler().SendResponse(); } else { Client.GetMessageHandler().GetResponse().Init(131); Client.GetMessageHandler().SendResponse(); } } private void ApplyRoomEffect() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(Request.PopWiredUInt()); if (Item == null) { return; } string type = "floor"; if (Item.GetBaseItem().Name.ToLower().Contains("wallpaper")) { type = "wallpaper"; } else if (Item.GetBaseItem().Name.ToLower().Contains("landscape")) { type = "landscape"; } switch (type) { case "floor": Room.Floor = Item.ExtraData; break; case "wallpaper": Room.Wallpaper = Item.ExtraData; break; case "landscape": Room.Landscape = Item.ExtraData; break; } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE rooms SET " + type + " = '" + Item.ExtraData + "' WHERE id = '" + Room.RoomId + "' LIMIT 1"); } Session.GetHabbo().GetInventoryComponent().RemoveItem(Item.Id); ServerMessage Message = new ServerMessage(46); Message.AppendStringWithBreak(type); Message.AppendStringWithBreak(Item.ExtraData); Room.SendMessage(Message); } private void PlaceItem() { // AZ@J16 10 10 0 Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session)) { return; } string PlacementData = Request.PopFixedString(); string[] DataBits = PlacementData.Split(' '); uint ItemId = uint.Parse(DataBits[0]); UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId); if (Item == null) { return; } switch (Item.GetBaseItem().InteractionType.ToLower()) { case "dimmer": if (Room.ItemCountByType("dimmer") >= 1) { Session.SendNotif("Solo puede tener un regulador de luces por habitación"); return; } break; } // Wall Item if (DataBits[1].StartsWith(":")) { string WallPos = Room.WallPositionCheck(":" + PlacementData.Split(':')[1]); if (WallPos == null) { GetResponse().Init(516); GetResponse().AppendInt32(11); SendResponse(); return; } RoomItem RoomItem = new RoomItem(Item.Id, Room.RoomId, Item.BaseItem, Item.ExtraData, 0, 0, 0.0, 0, WallPos); if (Room.SetWallItem(Session, RoomItem)) { Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId); } } // Floor Item else { int X = int.Parse(DataBits[1]); int Y = int.Parse(DataBits[2]); int Rot = int.Parse(DataBits[3]); RoomItem RoomItem = new RoomItem(Item.Id, Room.RoomId, Item.BaseItem, Item.ExtraData, 0, 0, 0, 0, ""); if (Room.SetFloorItem(Session, RoomItem, X, Y, Rot, true)) { Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId); } } } private void TakeItem() { int junk = Request.PopWiredInt32(); Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null) { return; } switch (Item.GetBaseItem().InteractionType.ToLower()) { case "postit": return; // not allowed to pick up post.its } Room.RemoveFurniture(Session, Item.Id); Session.GetHabbo().GetInventoryComponent().AddItem(Item.Id, Item.BaseItem, Item.ExtraData); Session.GetHabbo().GetInventoryComponent().UpdateItems(false); } private void MoveItem() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session)) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null) { return; } int x = Request.PopWiredInt32(); int y = Request.PopWiredInt32(); int Rotation = Request.PopWiredInt32(); int Junk = Request.PopWiredInt32(); Room.SetFloorItem(Session, Item, x, y, Rotation, false); } private void TriggerItem() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null) { return; } Boolean hasRights = false; if (Room.CheckRights(Session)) { hasRights = true; } Item.Interactor.OnTrigger(Session, Item, Request.PopWiredInt32(), hasRights); } private void TriggerItemDiceSpecial() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null) { return; } Boolean hasRights = false; if (Room.CheckRights(Session)) { hasRights = true; } Item.Interactor.OnTrigger(Session, Item, -1, hasRights); } private void OpenPostit() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null || Item.GetBaseItem().InteractionType.ToLower() != "postit") { return; } // @p181855059CFF9C stickynotemsg GetResponse().Init(48); GetResponse().AppendStringWithBreak(Item.Id.ToString()); GetResponse().AppendStringWithBreak(Item.ExtraData); SendResponse(); } private void SavePostit() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null || Item.GetBaseItem().InteractionType.ToLower() != "postit") { return; } String Data = Request.PopFixedString(); String Color = Data.Split(' ')[0]; String Text = UberEnvironment.FilterInjectionChars(Data.Substring(Color.Length + 1), true); if (!Room.CheckRights(Session)) { if (!Data.StartsWith(Item.ExtraData)) { return; // we can only ADD stuff! older stuff changed, this is not allowed } } switch (Color) { case "FFFF33": case "FF9CFF": case "9CCEFF": case "9CFF9C": break; default: return; // invalid color } Item.ExtraData = Color + " " + Text; Item.UpdateState(true, true); } private void DeletePostit() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null || Item.GetBaseItem().InteractionType.ToLower() != "postit") { return; } Room.RemoveFurniture(Session, Item.Id); } private void OpenPresent() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } RoomItem Present = Room.GetItem(Request.PopWiredUInt()); if (Present == null) { return; } DataRow Data = null; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { Data = dbClient.ReadDataRow("SELECT base_id,amount,extra_data FROM user_presents WHERE item_id = '" + Present.Id + "' LIMIT 1"); } if (Data == null) { return; } Item BaseItem = UberEnvironment.GetGame().GetItemManager().GetItem((uint)Data["base_id"]); if (BaseItem == null) { return; } Room.RemoveFurniture(Session, Present.Id); GetResponse().Init(219); GetResponse().AppendUInt(Present.Id); SendResponse(); GetResponse().Init(129); GetResponse().AppendStringWithBreak(BaseItem.Type); GetResponse().AppendInt32(BaseItem.SpriteId); GetResponse().AppendStringWithBreak(BaseItem.Name); SendResponse(); using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("DELETE FROM user_presents WHERE item_id = '" + Present.Id + "' LIMIT 1"); } UberEnvironment.GetGame().GetCatalog().DeliverItems(Session, BaseItem, (int)Data["amount"], (String)Data["extra_data"]); } private void GetMoodlight() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true) || Room.MoodlightData == null) { return; } GetResponse().Init(365); GetResponse().AppendInt32(Room.MoodlightData.Presets.Count); GetResponse().AppendInt32(Room.MoodlightData.CurrentPreset); lock (Room.MoodlightData.Presets) { int i = 0; foreach (MoodlightPreset Preset in Room.MoodlightData.Presets) { i++; GetResponse().AppendInt32(i); GetResponse().AppendInt32(int.Parse(UberEnvironment.BoolToEnum(Preset.BackgroundOnly)) + 1); GetResponse().AppendStringWithBreak(Preset.ColorCode); GetResponse().AppendInt32(Preset.ColorIntensity); } } SendResponse(); } private void UpdateMoodlight() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true) || Room.MoodlightData == null) { return; } RoomItem Item = null; lock (Room.Items) { foreach (RoomItem I in Room.Items) { if (I.GetBaseItem().InteractionType.ToLower() == "dimmer") { Item = I; break; } } } if (Item == null) { return; } // EVIH@G#EA4532RbI int Preset = Request.PopWiredInt32(); int BackgroundMode = Request.PopWiredInt32(); string ColorCode = Request.PopFixedString(); int Intensity = Request.PopWiredInt32(); bool BackgroundOnly = false; if (BackgroundMode >= 2) { BackgroundOnly = true; } Room.MoodlightData.Enabled = true; Room.MoodlightData.CurrentPreset = Preset; Room.MoodlightData.UpdatePreset(Preset, ColorCode, Intensity, BackgroundOnly); Item.ExtraData = Room.MoodlightData.GenerateExtraData(); Item.UpdateState(); } private void SwitchMoodlightStatus() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true) || Room.MoodlightData == null) { return; } RoomItem Item = null; lock (Room.Items) { foreach (RoomItem I in Room.Items) { if (I.GetBaseItem().InteractionType.ToLower() == "dimmer") { Item = I; break; } } } if (Item == null) { return; } if (Room.MoodlightData.Enabled) { Room.MoodlightData.Disable(); } else { Room.MoodlightData.Enable(); } Item.ExtraData = Room.MoodlightData.GenerateExtraData(); Item.UpdateState(); } private void InitTrade() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); RoomUser User2 = Room.GetRoomUserByVirtualId(Request.PopWiredInt32()); Room.TryStartTrade(User, User2); } private void OfferTradeItem() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id); UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(Request.PopWiredUInt()); if (Trade == null || Item == null) { return; } Trade.OfferItem(Session.GetHabbo().Id, Item); } private void TakeBackTradeItem() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id); UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(Request.PopWiredUInt()); if (Trade == null || Item == null) { return; } Trade.TakeBackItem(Session.GetHabbo().Id, Item); } private void StopTrade() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } Room.TryStopTrade(Session.GetHabbo().Id); } private void AcceptTrade() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id); if (Trade == null) { return; } Trade.Accept(Session.GetHabbo().Id); } private void UnacceptTrade() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id); if (Trade == null) { return; } Trade.Unaccept(Session.GetHabbo().Id); } private void CompleteTrade() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id); if (Trade == null) { return; } Trade.CompleteTrade(Session.GetHabbo().Id); } private void GiveRespect() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || Session.GetHabbo().DailyRespectPoints <= 0) { return; } RoomUser User = Room.GetRoomUserByHabbo(Request.PopWiredUInt()); if (User == null || User.GetClient().GetHabbo().Id == Session.GetHabbo().Id || User.IsBot) { return; } Session.GetHabbo().DailyRespectPoints--; User.GetClient().GetHabbo().Respect++; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE users SET respect = respect + 1 WHERE id = '" + User.GetClient().GetHabbo().Id + "' LIMIT 1"); dbClient.ExecuteQuery("UPDATE users SET daily_respect_points = daily_respect_points - 1 WHERE id = '" + Session.GetHabbo().Id + "' LIMIT 1"); } // FxkqUzYP_ ServerMessage Message = new ServerMessage(440); Message.AppendUInt(User.GetClient().GetHabbo().Id); Message.AppendInt32(User.GetClient().GetHabbo().Respect); Room.SendMessage(Message); } private void ApplyEffect() { Session.GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(Request.PopWiredInt32()); } private void EnableEffect() { Session.GetHabbo().GetAvatarEffectsInventoryComponent().EnableEffect(Request.PopWiredInt32()); } private void RecycleItems() { if (!Session.GetHabbo().InRoom) { return; } int itemCount = Request.PopWiredInt32(); if (itemCount != 5) { return; } for (int i = 0; i < itemCount; i++) { UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(Request.PopWiredUInt()); if (Item != null && Item.GetBaseItem().AllowRecycle) { Session.GetHabbo().GetInventoryComponent().RemoveItem(Item.Id); } else { return; } } uint newItemId = UberEnvironment.GetGame().GetCatalog().GenerateItemId(); EcotronReward Reward = UberEnvironment.GetGame().GetCatalog().GetRandomEcotronReward(); using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("INSERT INTO user_items (id,user_id,base_item,extra_data) VALUES ('" + newItemId + "','" + Session.GetHabbo().Id + "','1478','" + DateTime.Now.ToLongDateString() + "')"); dbClient.ExecuteQuery("INSERT INTO user_presents (item_id,base_id,amount,extra_data) VALUES ('" + newItemId + "','" + Reward.BaseId + "','1','')"); } Session.GetHabbo().GetInventoryComponent().UpdateItems(true); GetResponse().Init(508); GetResponse().AppendBoolean(true); GetResponse().AppendUInt(newItemId); SendResponse(); } private void RedeemExchangeFurni() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } RoomItem Exchange = Room.GetItem(Request.PopWiredUInt()); if (Exchange == null) { return; } if (!Exchange.GetBaseItem().Name.StartsWith("CF_") && !Exchange.GetBaseItem().Name.StartsWith("CFC_")) { return; } string[] Split = Exchange.GetBaseItem().Name.Split('_'); int Value = int.Parse(Split[1]); if (Value > 0) { Session.GetHabbo().Credits += Value; Session.GetHabbo().UpdateCreditsBalance(true); } Room.RemoveFurniture(null, Exchange.Id); GetResponse().Init(219); SendResponse(); } private void EnterInfobus() { // AQThe Infobus is currently closed. GetResponse().Init(81); GetResponse().AppendStringWithBreak("El InfoBus aún no esta en uso."); SendResponse(); } private void KickBot() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } RoomUser Bot = Room.GetRoomUserByVirtualId(Request.PopWiredInt32()); if (Bot == null || !Bot.IsBot) { return; } Room.RemoveBot(Bot.VirtualId, true); } private void PlacePet() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || (!Room.AllowPets && !Room.CheckRights(Session, true))) { return; } uint PetId = Request.PopWiredUInt(); Pet Pet = Session.GetHabbo().GetInventoryComponent().GetPet(PetId); if (Pet == null || Pet.PlacedInRoom) { return; } int X = Request.PopWiredInt32(); int Y = Request.PopWiredInt32(); if (!Room.CanWalk(X, Y, 0, true)) { return; } if (Room.PetCount >= UberEnvironment.GetGame().GetRoomManager().MAX_PETS_PER_ROOM) { Session.SendNotif("Hay demasiadas mascotas en esta sala, solo puedes tener " + UberEnvironment.GetGame().GetRoomManager().MAX_PETS_PER_ROOM + " mascotas."); return; } Pet.PlacedInRoom = true; Pet.RoomId = Room.RoomId; RoomUser PetUser = Room.DeployBot(new HabboHotel.RoomBots.RoomBot(Pet.PetId, Pet.RoomId, "pet", "freeroam", Pet.Name, "", Pet.Look, X, Y, 0, 0, 0, 0, 0, 0), Pet); if (Room.CheckRights(Session, true)) { Session.GetHabbo().GetInventoryComponent().MovePetToRoom(Pet.PetId, Room.RoomId); } } private void GetPetInfo() { uint PetId = Request.PopWiredUInt(); DataRow Row = null; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.AddParamWithValue("petid", PetId); Row = dbClient.ReadDataRow("SELECT * FROM user_pets WHERE id = @petid LIMIT 1"); } if (Row == null) { return; } Session.SendMessage(UberEnvironment.GetGame().GetCatalog().GeneratePetFromRow(Row).SerializeInfo()); } private void PickUpPet() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || Room.IsPublic || (!Room.AllowPets && !Room.CheckRights(Session, true))) { return; } uint PetId = Request.PopWiredUInt(); RoomUser PetUser = Room.GetPet(PetId); if (PetUser == null || PetUser.PetData == null || PetUser.PetData.OwnerId != Session.GetHabbo().Id) { return; } Session.GetHabbo().GetInventoryComponent().AddPet(PetUser.PetData); Room.RemoveBot(PetUser.VirtualId, false); } private void RespectPet() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || Room.IsPublic || (!Room.AllowPets && !Room.CheckRights(Session, true))) { return; } uint PetId = Request.PopWiredUInt(); RoomUser PetUser = Room.GetPet(PetId); if (PetUser == null || PetUser.PetData == null || PetUser.PetData.OwnerId != Session.GetHabbo().Id) { return; } PetUser.PetData.OnRespect(); Session.GetHabbo().DailyPetRespectPoints--; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.AddParamWithValue("userid", Session.GetHabbo().Id); dbClient.ExecuteQuery("UPDATE users SET daily_pet_respect_points = daily_pet_respect_points - 1 WHERE id = @userid LIMIT 1"); } } public void RegisterRooms() { RequestHandlers[391] = new RequestHandler(OpenFlat); RequestHandlers[182] = new RequestHandler(GetAdvertisement); RequestHandlers[388] = new RequestHandler(GetPub); RequestHandlers[2] = new RequestHandler(OpenPub); RequestHandlers[230] = new RequestHandler(GetGroupBadges); RequestHandlers[215] = new RequestHandler(GetRoomData1); RequestHandlers[390] = new RequestHandler(GetRoomData2); RequestHandlers[126] = new RequestHandler(GetRoomData3); RequestHandlers[52] = new RequestHandler(Talk); RequestHandlers[55] = new RequestHandler(Shout); RequestHandlers[56] = new RequestHandler(Whisper); RequestHandlers[75] = new RequestHandler(Move); RequestHandlers[387] = new RequestHandler(CanCreateRoom); RequestHandlers[29] = new RequestHandler(CreateRoom); RequestHandlers[400] = new RequestHandler(GetRoomEditData); RequestHandlers[386] = new RequestHandler(SaveRoomIcon); RequestHandlers[401] = new RequestHandler(SaveRoomData); RequestHandlers[96] = new RequestHandler(GiveRights); RequestHandlers[97] = new RequestHandler(TakeRights); RequestHandlers[155] = new RequestHandler(TakeAllRights); RequestHandlers[95] = new RequestHandler(KickUser); RequestHandlers[320] = new RequestHandler(BanUser); RequestHandlers[71] = new RequestHandler(InitTrade); RequestHandlers[384] = new RequestHandler(SetHomeRoom); RequestHandlers[23] = new RequestHandler(DeleteRoom); RequestHandlers[79] = new RequestHandler(LookAt); RequestHandlers[317] = new RequestHandler(StartTyping); RequestHandlers[318] = new RequestHandler(StopTyping); RequestHandlers[319] = new RequestHandler(IgnoreUser); RequestHandlers[322] = new RequestHandler(UnignoreUser); RequestHandlers[345] = new RequestHandler(CanCreateRoomEvent); RequestHandlers[346] = new RequestHandler(StartEvent); RequestHandlers[347] = new RequestHandler(StopEvent); RequestHandlers[348] = new RequestHandler(EditEvent); RequestHandlers[94] = new RequestHandler(Wave); RequestHandlers[263] = new RequestHandler(GetUserTags); RequestHandlers[159] = new RequestHandler(GetUserBadges); RequestHandlers[261] = new RequestHandler(RateRoom); RequestHandlers[93] = new RequestHandler(Dance); RequestHandlers[98] = new RequestHandler(AnswerDoorbell); RequestHandlers[59] = new RequestHandler(ReqLoadRoomForUser); RequestHandlers[66] = new RequestHandler(ApplyRoomEffect); RequestHandlers[90] = new RequestHandler(PlaceItem); RequestHandlers[67] = new RequestHandler(TakeItem); RequestHandlers[73] = new RequestHandler(MoveItem); RequestHandlers[392] = new RequestHandler(TriggerItem); // Generic trigger item RequestHandlers[393] = new RequestHandler(TriggerItem); // Generic trigger item RequestHandlers[83] = new RequestHandler(OpenPostit); RequestHandlers[84] = new RequestHandler(SavePostit); RequestHandlers[85] = new RequestHandler(DeletePostit); RequestHandlers[78] = new RequestHandler(OpenPresent); RequestHandlers[341] = new RequestHandler(GetMoodlight); RequestHandlers[342] = new RequestHandler(UpdateMoodlight); RequestHandlers[343] = new RequestHandler(SwitchMoodlightStatus); RequestHandlers[72] = new RequestHandler(OfferTradeItem); RequestHandlers[405] = new RequestHandler(TakeBackTradeItem); RequestHandlers[70] = new RequestHandler(StopTrade); RequestHandlers[403] = new RequestHandler(StopTrade); RequestHandlers[69] = new RequestHandler(AcceptTrade); RequestHandlers[68] = new RequestHandler(UnacceptTrade); RequestHandlers[402] = new RequestHandler(CompleteTrade); RequestHandlers[371] = new RequestHandler(GiveRespect); RequestHandlers[372] = new RequestHandler(ApplyEffect); RequestHandlers[373] = new RequestHandler(EnableEffect); RequestHandlers[3004] = new RequestHandler(GetTrainerPanel); // Mas rápdio xD RequestHandlers[232] = new RequestHandler(TriggerItem); // One way gates RequestHandlers[314] = new RequestHandler(TriggerItem); // Love Shuffler RequestHandlers[247] = new RequestHandler(TriggerItem); // Habbo Wheel RequestHandlers[76] = new RequestHandler(TriggerItem); // Dice RequestHandlers[77] = new RequestHandler(TriggerItemDiceSpecial); // Dice (special) RequestHandlers[414] = new RequestHandler(RecycleItems); RequestHandlers[183] = new RequestHandler(RedeemExchangeFurni); RequestHandlers[113] = new RequestHandler(EnterInfobus); RequestHandlers[441] = new RequestHandler(KickBot); RequestHandlers[3002] = new RequestHandler(PlacePet); RequestHandlers[3001] = new RequestHandler(GetPetInfo); RequestHandlers[3003] = new RequestHandler(PickUpPet); RequestHandlers[3005] = new RequestHandler(RespectPet); } } }
Sorry for my english, I am spanish.
Code complet.
Messages > Requests > Rooms.cs
Test with it.Code:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Uber.HabboHotel.Pets; using Uber.HabboHotel.Navigators; using Uber.HabboHotel.Items; using Uber.HabboHotel.GameClients; using Uber.HabboHotel.Users.Badges; using Uber.HabboHotel.Misc; using Uber.HabboHotel.Pathfinding; using Uber.HabboHotel.Advertisements; using Uber.HabboHotel.Users.Messenger; using Uber.HabboHotel.Rooms; using Uber.HabboHotel.Catalogs; using Uber.Storage; namespace Uber.Messages { partial class GameClientMessageHandler { private void GetAdvertisement() { RoomAdvertisement Ad = UberEnvironment.GetGame().GetAdvertisementManager().GetRandomRoomAdvertisement(); GetResponse().Init(258); if (Ad == null) { GetResponse().AppendStringWithBreak(""); GetResponse().AppendStringWithBreak(""); } else { GetResponse().AppendStringWithBreak(Ad.AdImage); GetResponse().AppendStringWithBreak(Ad.AdLink); Ad.OnView(); } SendResponse(); } private void GetTrainerPanel() { uint PetID = Request.PopWiredUInt(); Pet PetData = Session.GetHabbo().GetInventoryComponent().GetPet(PetID); GetResponse().Init(605); GetResponse().AppendUInt(PetID); /* Estoy probando, porque este paquete aún no lo tenia "explicado"*/ GetResponse().AppendString("PBHIJKPAQARASA"); SendResponse(); } private void GetPub() { uint Id = Request.PopWiredUInt(); RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id); if (Data == null || Data.Type != "public") { return; } GetResponse().Init(453); GetResponse().AppendUInt(Data.Id); GetResponse().AppendStringWithBreak(Data.CCTs); GetResponse().AppendUInt(Data.Id); SendResponse(); } private void OpenFlat() { uint Id = Request.PopWiredUInt(); string Password = Request.PopFixedString(); int Junk = Request.PopWiredInt32(); RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id); if (Data == null || Data.Type != "private") { return; } PrepareRoomForUser(Id, Password); } private void OpenPub() { int Junk = Request.PopWiredInt32(); uint Id = Request.PopWiredUInt(); int Junk2 = Request.PopWiredInt32(); RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id); if (Data == null || Data.Type != "public") { return; } PrepareRoomForUser(Data.Id, ""); } private void GetGroupBadges() { GetResponse().Init(309); GetResponse().AppendStringWithBreak("IcIrDs43103s19014d5a1dc291574a508bc80a64663e61a00"); SendResponse(); } private void GetInventory() { Session.SendMessage(Session.GetHabbo().GetInventoryComponent().SerializeItemInventory()); } private void GetRoomData1() { if (Session.GetHabbo().LoadingRoom <= 0) { return; } GetResponse().Init(297); GetResponse().AppendInt32(0); SendResponse(); } private void GetRoomData2() { if (Session.GetHabbo().LoadingRoom <= 0) { return; } RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Session.GetHabbo().LoadingRoom); if (Data == null) { return; } if (Data.Model == null) { Session.SendNotif("Sorry, model data is missing from this room and therefore cannot be loaded."); Session.SendMessage(new ServerMessage(18)); ClearRoomLoading(); return; } Session.SendMessage(Data.Model.SerializeHeightmap()); Session.SendMessage(Data.Model.SerializeRelativeHeightmap()); } private void GetRoomData3() { if (Session.GetHabbo().LoadingRoom <= 0 || !Session.GetHabbo().LoadingChecksPassed) { return; } Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().LoadingRoom); if (Room == null) { return; } ClearRoomLoading(); GetResponse().Init(30); if (Room.Model.StaticFurniMap != "") { GetResponse().AppendStringWithBreak(Room.Model.StaticFurniMap); } else { GetResponse().AppendInt32(0); } SendResponse(); if (Room.Type == "private") { List<RoomItem> FloorItems = Room.FloorItems; List<RoomItem> WallItems = Room.WallItems; GetResponse().Init(32); GetResponse().AppendInt32(FloorItems.Count); foreach (RoomItem Item in FloorItems) { Item.Serialize(GetResponse()); } SendResponse(); GetResponse().Init(45); GetResponse().AppendInt32(WallItems.Count); foreach (RoomItem Item in WallItems) { Item.Serialize(GetResponse()); } SendResponse(); } Room.AddUserToRoom(Session, Session.GetHabbo().SpectatorMode); List<RoomUser> UsersToDisplay = new List<RoomUser>(); lock (Room.UserList) { foreach (RoomUser User in Room.UserList) { if (User.IsSpectator) { continue; } UsersToDisplay.Add(User); } } GetResponse().Init(28); GetResponse().AppendInt32(UsersToDisplay.Count); foreach (RoomUser User in UsersToDisplay) { User.Serialize(GetResponse()); } SendResponse(); if (Room.Type == "public") { GetResponse().Init(471); GetResponse().AppendBoolean(false); GetResponse().AppendStringWithBreak(Room.ModelName); GetResponse().AppendBoolean(false); SendResponse(); } else if (Room.Type == "private") { GetResponse().Init(471); GetResponse().AppendBoolean(true); GetResponse().AppendUInt(Room.RoomId); if (Room.CheckRights(Session, true)) { GetResponse().AppendBoolean(true); } else { GetResponse().AppendBoolean(false); } SendResponse(); // GQhntX]uberEmu PacketloggingDescriptionHQMSCQFJtag1tag2Ika^SMqurbIHH GetResponse().Init(454); GetResponse().AppendInt32(1); GetResponse().AppendUInt(Room.RoomId); GetResponse().AppendInt32(0); GetResponse().AppendStringWithBreak(Room.Name); GetResponse().AppendStringWithBreak(Room.Owner); GetResponse().AppendInt32(Room.State); GetResponse().AppendInt32(0); GetResponse().AppendInt32(25); GetResponse().AppendStringWithBreak(Room.Description); GetResponse().AppendInt32(0); GetResponse().AppendInt32(1); GetResponse().AppendInt32(8228); GetResponse().AppendInt32(Room.Category); GetResponse().AppendStringWithBreak(""); GetResponse().AppendInt32(Room.TagCount); foreach (string Tag in Room.Tags) { GetResponse().AppendStringWithBreak(Tag); } Room.Icon.Serialize(GetResponse()); GetResponse().AppendBoolean(false); SendResponse(); } ServerMessage Updates = Room.SerializeStatusUpdates(true); if (Updates != null) { Session.SendMessage(Updates); } lock (Room.UserList) { foreach (RoomUser User in Room.UserList) { if (User.IsSpectator) { continue; } if (User.IsDancing) { GetResponse().Init(480); GetResponse().AppendInt32(User.VirtualId); GetResponse().AppendInt32(User.DanceId); SendResponse(); } if (User.IsAsleep) { GetResponse().Init(486); GetResponse().AppendInt32(User.VirtualId); GetResponse().AppendBoolean(true); SendResponse(); } if (User.CarryItemID > 0 && User.CarryTimer > 0) { GetResponse().Init(482); GetResponse().AppendInt32(User.VirtualId); GetResponse().AppendInt32(User.CarryTimer); SendResponse(); } if (!User.IsBot) { if (User.GetClient().GetHabbo() != null && User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent() != null && User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect >= 1) { GetResponse().Init(485); GetResponse().AppendInt32(User.VirtualId); GetResponse().AppendInt32(User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect); SendResponse(); } } } } } public void PrepareRoomForUser(uint Id, string Password) { ClearRoomLoading(); if (UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id) == null) { return; } if (Session.GetHabbo().InRoom) { Room OldRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (OldRoom != null) { OldRoom.RemoveUserFromRoom(Session, false, false); } } if (!UberEnvironment.GetGame().GetRoomManager().IsRoomLoaded(Id)) { UberEnvironment.GetGame().GetRoomManager().LoadRoom(Id); } Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Id); if (Room == null) { return; } Session.GetHabbo().LoadingRoom = Id; if (Room.UserIsBanned(Session.GetHabbo().Id)) { if (Room.HasBanExpired(Session.GetHabbo().Id)) { Room.RemoveBan(Session.GetHabbo().Id); } else { // C`PA GetResponse().Init(224); GetResponse().AppendInt32(4); SendResponse(); GetResponse().Init(18); SendResponse(); return; } } if (Room.UsersNow >= Room.UsersMax) { if (!UberEnvironment.GetGame().GetRoleManager().RankHasRight(Session.GetHabbo().Rank, "fuse_enter_full_rooms")) { GetResponse().Init(224); GetResponse().AppendInt32(1); SendResponse(); GetResponse().Init(18); SendResponse(); return; } } if (Room.Type == "public") { if (Room.State > 0 && !Session.GetHabbo().HasFuse("fuse_mod")) { Session.SendNotif("Esta sala pública es solamente accesible a la administracion del hotel."); GetResponse().Init(18); SendResponse(); return; } GetResponse().Init(166); GetResponse().AppendStringWithBreak("/client/public/" + Room.ModelName + "/0"); SendResponse(); } else if (Room.Type == "private") { GetResponse().Init(19); SendResponse(); if (!Session.GetHabbo().HasFuse("fuse_enter_any_room") && !Room.CheckRights(Session, true) && !Session.GetHabbo().IsTeleporting) { if (Room.State == 1) { if (Room.UserCount == 0) { GetResponse().Init(131); SendResponse(); } else { GetResponse().Init(91); GetResponse().AppendStringWithBreak(""); SendResponse(); ServerMessage RingMessage = new ServerMessage(91); RingMessage.AppendStringWithBreak(Session.GetHabbo().Username); Room.SendMessageToUsersWithRights(RingMessage); } return; } else if (Room.State == 2) { if (Password.ToLower() != Room.Password.ToLower()) { GetResponse().Init(33); GetResponse().AppendInt32(-100002); SendResponse(); GetResponse().Init(18); SendResponse(); return; } } } GetResponse().Init(166); GetResponse().AppendStringWithBreak("/client/private/" + Room.RoomId + "/id"); SendResponse(); } Session.GetHabbo().LoadingChecksPassed = true; LoadRoomForUser(); } private void ReqLoadRoomForUser() { LoadRoomForUser(); } public void LoadRoomForUser() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().LoadingRoom); if (Room == null || !Session.GetHabbo().LoadingChecksPassed) { return; } // todo: Room.SerializeGroupBadges() GetResponse().Init(309); GetResponse().AppendStringWithBreak("IcIrDs43103s19014d5a1dc291574a508bc80a64663e61a00"); SendResponse(); GetResponse().Init(69); GetResponse().AppendStringWithBreak(Room.ModelName); GetResponse().AppendUInt(Room.RoomId); SendResponse(); if (Session.GetHabbo().SpectatorMode) { GetResponse().Init(254); SendResponse(); } if (Room.Type == "private") { if (Room.Wallpaper != "0.0") { GetResponse().Init(46); GetResponse().AppendStringWithBreak("wallpaper"); GetResponse().AppendStringWithBreak(Room.Wallpaper); SendResponse(); } if (Room.Floor != "0.0") { GetResponse().Init(46); GetResponse().AppendStringWithBreak("floor"); GetResponse().AppendStringWithBreak(Room.Floor); SendResponse(); } GetResponse().Init(46); GetResponse().AppendStringWithBreak("landscape"); GetResponse().AppendStringWithBreak(Room.Landscape); SendResponse(); if (Room.CheckRights(Session, true)) { GetResponse().Init(42); SendResponse(); GetResponse().Init(47); SendResponse(); } else if (Room.CheckRights(Session)) { GetResponse().Init(42); SendResponse(); } GetResponse().Init(345); if (Session.GetHabbo().RatedRooms.Contains(Room.RoomId) || Room.CheckRights(Session, true)) { GetResponse().AppendInt32(Room.Score); } else { GetResponse().AppendInt32(-1); } SendResponse(); if (Room.HasOngoingEvent) { Session.SendMessage(Room.Event.Serialize(Session)); } else { GetResponse().Init(370); GetResponse().AppendStringWithBreak("-1"); SendResponse(); } } } public void ClearRoomLoading() { Session.GetHabbo().LoadingRoom = 0; Session.GetHabbo().LoadingChecksPassed = false; } private void Talk() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } User.Chat(Session, UberEnvironment.FilterInjectionChars(Request.PopFixedString()), false); } private void Shout() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } User.Chat(Session, UberEnvironment.FilterInjectionChars(Request.PopFixedString()), true); } private void Whisper() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } if (Session.GetHabbo().Muted) { Session.SendNotif("Usted esta asilenciado."); return; } string Params = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); string ToUser = Params.Split(' ')[0]; string Message = Params.Substring(ToUser.Length + 1); RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); RoomUser User2 = Room.GetRoomUserByHabbo(ToUser); ServerMessage TellMsg = new ServerMessage(); TellMsg.Init(25); TellMsg.AppendInt32(User.VirtualId); TellMsg.AppendStringWithBreak(Message); TellMsg.AppendBoolean(false); if (User != null && !User.IsBot) { User.GetClient().SendMessage(TellMsg); } User.Unidle(); if (User2 != null && !User2.IsBot) { if (!User2.GetClient().GetHabbo().MutedUsers.Contains(Session.GetHabbo().Id)) { User2.GetClient().SendMessage(TellMsg); } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.AddParamWithValue("message", "<Whisper to " + User2.GetClient().GetHabbo().Username + ">: " + Message); dbClient.ExecuteQuery("INSERT INTO chatlogs (user_id,room_id,hour,minute,timestamp,message,user_name,full_date) VALUES ('" + Session.GetHabbo().Id + "','" + Room.RoomId + "','" + DateTime.Now.Hour + "','" + DateTime.Now.Minute + "','1273133831.41423',@message,'" + Session.GetHabbo().Username + "','" + DateTime.Now.ToLongDateString() + "')"); } } } private void Move() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null || !User.CanWalk) { return; } int MoveX = Request.PopWiredInt32(); int MoveY = Request.PopWiredInt32(); if (MoveX == User.X && MoveY == User.Y) { return; } User.MoveTo(MoveX, MoveY); } private void CanCreateRoom() { GetResponse().Init(512); GetResponse().AppendBoolean(false); // true = show error with number below GetResponse().AppendInt32(99999); SendResponse(); // todo: room limit } private void CreateRoom() { string RoomName = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); string ModelName = Request.PopFixedString(); string RoomState = Request.PopFixedString(); // unused, room open by default on creation. may be added in later build of Habbo? RoomData NewRoom = UberEnvironment.GetGame().GetRoomManager().CreateRoom(Session, RoomName, ModelName); if (NewRoom != null) { GetResponse().Init(59); GetResponse().AppendUInt(NewRoom.Id); GetResponse().AppendStringWithBreak(NewRoom.Name); SendResponse(); } } private void GetRoomEditData() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } GetResponse().Init(465); GetResponse().AppendUInt(Room.RoomId); GetResponse().AppendStringWithBreak(Room.Name); GetResponse().AppendStringWithBreak(Room.Description); GetResponse().AppendInt32(Room.State); GetResponse().AppendInt32(Room.Category); GetResponse().AppendInt32(Room.UsersMax); GetResponse().AppendInt32(25); GetResponse().AppendInt32(Room.TagCount); foreach (string Tag in Room.Tags) { GetResponse().AppendStringWithBreak(Tag); } GetResponse().AppendInt32(Room.UsersWithRights.Count); // users /w rights count foreach (uint UserId in Room.UsersWithRights) { GetResponse().AppendUInt(UserId); GetResponse().AppendStringWithBreak(UberEnvironment.GetGame().GetClientManager().GetNameById(UserId)); } GetResponse().AppendInt32(Room.UsersWithRights.Count); // users /w rights count GetResponse().AppendBoolean(Room.AllowPets); // allows pets in room - pet system lacking, so always off GetResponse().AppendBoolean(Room.AllowPetsEating); // allows pets to eat your food - pet system lacking, so always off GetResponse().AppendBoolean(Room.AllowWalkthrough); SendResponse(); } private void SaveRoomIcon() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } int Junk = Request.PopWiredInt32(); // always 3 Dictionary<int, int> Items = new Dictionary<int, int>(); int Background = Request.PopWiredInt32(); int TopLayer = Request.PopWiredInt32(); int AmountOfItems = Request.PopWiredInt32(); for (int i = 0; i < AmountOfItems; i++) { int Pos = Request.PopWiredInt32(); int Item = Request.PopWiredInt32(); if (Pos < 0 || Pos > 10) { return; } if (Item < 1 || Item > 27) { return; } if (Items.ContainsKey(Pos)) { return; } Items.Add(Pos, Item); } if (Background < 1 || Background > 24) { return; } if (TopLayer < 0 || TopLayer > 11) { return; } StringBuilder FormattedItems = new StringBuilder(); int j = 0; foreach (KeyValuePair<int, int> Item in Items) { if (j > 0) { FormattedItems.Append("|"); } FormattedItems.Append(Item.Key + "," + Item.Value); j++; } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE rooms SET icon_bg = '" + Background + "', icon_fg = '" + TopLayer + "', icon_items = '" + FormattedItems.ToString() + "' WHERE id = '" + Room.RoomId + "' LIMIT 1"); } Room.Icon = new RoomIcon(Background, TopLayer, Items); GetResponse().Init(457); GetResponse().AppendUInt(Room.RoomId); GetResponse().AppendBoolean(true); SendResponse(); GetResponse().Init(456); GetResponse().AppendUInt(Room.RoomId); SendResponse(); RoomData Data = new RoomData(); Data.Fill(Room); GetResponse().Init(454); GetResponse().AppendBoolean(false); Data.Serialize(GetResponse(), false); SendResponse(); } private void SaveRoomData() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } int Id = Request.PopWiredInt32(); string Name = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); string Description = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); int State = Request.PopWiredInt32(); string Password = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); int MaxUsers = Request.PopWiredInt32(); int CategoryId = Request.PopWiredInt32(); int TagCount = Request.PopWiredInt32(); List<string> Tags = new List<string>(); StringBuilder formattedTags = new StringBuilder(); for (int i = 0; i < TagCount; i++) { if (i > 0) { formattedTags.Append(","); } string tag = UberEnvironment.FilterInjectionChars(Request.PopFixedString().ToLower()); Tags.Add(tag); formattedTags.Append(tag); } int AllowPets = 0; int AllowPetsEat = 0; int AllowWalkthrough = 0; string _AllowPets = Request.PlainReadBytes(1)[0].ToString(); Request.AdvancePointer(1); string _AllowPetsEat = Request.PlainReadBytes(1)[0].ToString(); Request.AdvancePointer(1); string _AllowWalkthrough = Request.PlainReadBytes(1)[0].ToString(); Request.AdvancePointer(1); if (Name.Length < 1) { return; } if (State < 0 || State > 2) { return; } if (MaxUsers != 10 && MaxUsers != 15 && MaxUsers != 20 && MaxUsers != 25) { return; } FlatCat FlatCat = UberEnvironment.GetGame().GetNavigator().GetFlatCat(CategoryId); if (FlatCat == null) { return; } if (FlatCat.MinRank > Session.GetHabbo().Rank) { Session.SendNotif("You are not allowed to use this category. Your room has been moved to no category instead."); CategoryId = 0; } if (TagCount > 2) { return; } if (State < 0 || State > 2) { return; } if (_AllowPets == "65") { AllowPets = 1; Room.AllowPets = true; } else { Room.AllowPets = false; } if (_AllowPetsEat == "65") { AllowPetsEat = 1; Room.AllowPetsEating = true; } else { Room.AllowPetsEating = false; } if (_AllowWalkthrough == "65") { AllowWalkthrough = 1; Room.AllowWalkthrough = true; } else { Room.AllowWalkthrough = false; } Room.Name = Name; Room.State = State; Room.Description = Description; Room.Category = CategoryId; Room.Password = Password; Room.Tags = Tags; Room.UsersMax = MaxUsers; string formattedState = "open"; if (Room.State == 1) { formattedState = "locked"; } else if (Room.State > 1) { formattedState = "password"; } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.AddParamWithValue("caption", Room.Name); dbClient.AddParamWithValue("description", Room.Description); dbClient.AddParamWithValue("password", Room.Password); dbClient.AddParamWithValue("tags", formattedTags.ToString()); dbClient.ExecuteQuery("UPDATE rooms SET caption = @caption, description = @description, password = @password, category = '" + CategoryId + "', state = '" + formattedState + "', tags = @tags, users_max = '" + MaxUsers + "', allow_pets = '" + AllowPets + "', allow_pets_eat = '" + AllowPetsEat + "', allow_walkthrough = '" + AllowWalkthrough + "' WHERE id = '" + Room.RoomId + "' LIMIT 1"); } GetResponse().Init(467); GetResponse().AppendUInt(Room.RoomId); SendResponse(); GetResponse().Init(456); GetResponse().AppendUInt(Room.RoomId); SendResponse(); RoomData Data = new RoomData(); Data.Fill(Room); GetResponse().Init(454); GetResponse().AppendBoolean(false); Data.Serialize(GetResponse(), false); SendResponse(); } private void GiveRights() { uint UserId = Request.PopWiredUInt(); Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); RoomUser RoomUser = Room.GetRoomUserByHabbo(UserId); if (Room == null || !Room.CheckRights(Session, true) || RoomUser == null || RoomUser.IsBot) { return; } if (Room.UsersWithRights.Contains(UserId)) { // todo: fix silly bug Session.SendNotif("Este usuario ya tiene permisos."); return; } Room.UsersWithRights.Add(UserId); using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("INSERT INTO room_rights (room_id,user_id) VALUES ('" + Room.RoomId + "','" + UserId + "')"); } GetResponse().Init(510); GetResponse().AppendUInt(Room.RoomId); GetResponse().AppendUInt(UserId); GetResponse().AppendStringWithBreak(RoomUser.GetClient().GetHabbo().Username); SendResponse(); RoomUser.AddStatus("flatcrtl", ""); RoomUser.UpdateNeeded = true; RoomUser.GetClient().SendMessage(new ServerMessage(42)); // G~hntX]h_u@UMeth0d9 } private void TakeRights() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } StringBuilder DeleteParams = new StringBuilder(); int Amount = Request.PopWiredInt32(); for (int i = 0; i < Amount; i++) { if (i > 0) { DeleteParams.Append(" OR "); } uint UserId = Request.PopWiredUInt(); Room.UsersWithRights.Remove(UserId); DeleteParams.Append("room_id = '" + Room.RoomId + "' AND user_id = '" + UserId + "'"); RoomUser User = Room.GetRoomUserByHabbo(UserId); if (User != null && !User.IsBot) { User.GetClient().SendMessage(new ServerMessage(43)); } // GhntX]hqu@U GetResponse().Init(511); GetResponse().AppendUInt(Room.RoomId); GetResponse().AppendUInt(UserId); SendResponse(); } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("DELETE FROM room_rights WHERE " + DeleteParams.ToString()); } } private void TakeAllRights() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } foreach (uint UserId in Room.UsersWithRights) { RoomUser User = Room.GetRoomUserByHabbo(UserId); if (User != null && !User.IsBot) { User.GetClient().SendMessage(new ServerMessage(43)); } GetResponse().Init(511); GetResponse().AppendUInt(Room.RoomId); GetResponse().AppendUInt(UserId); SendResponse(); } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("DELETE FROM room_rights WHERE room_id = '" + Room.RoomId + "'"); } Room.UsersWithRights.Clear(); } private void KickUser() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } if (!Room.CheckRights(Session)) { return; // insufficient permissions } uint UserId = Request.PopWiredUInt(); RoomUser User = Room.GetRoomUserByHabbo(UserId); if (User == null || User.IsBot) { return; } if (Room.CheckRights(User.GetClient(), true) || User.GetClient().GetHabbo().HasFuse("fuse_mod")) { return; // can't kick room owner or mods! } Room.RemoveUserFromRoom(User.GetClient(), true, true); } private void BanUser() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; // insufficient permissions } uint UserId = Request.PopWiredUInt(); RoomUser User = Room.GetRoomUserByHabbo(UserId); if (User == null || User.IsBot) { return; } if (User.GetClient().GetHabbo().HasFuse("fuse_mod")) { return; } Room.AddBan(UserId); Room.RemoveUserFromRoom(User.GetClient(), true, true); } private void SetHomeRoom() { uint RoomId = Request.PopWiredUInt(); RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(RoomId); if (RoomId != 0) { if (Data == null || Data.Owner.ToLower() != Session.GetHabbo().Username.ToLower()) { return; } } Session.GetHabbo().HomeRoom = RoomId; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE users SET home_room = '" + RoomId + "' WHERE id = '" + Session.GetHabbo().Id + "' LIMIT 1"); } GetResponse().Init(455); GetResponse().AppendUInt(RoomId); SendResponse(); } private void DeleteRoom() { uint RoomId = Request.PopWiredUInt(); RoomData Data = UberEnvironment.GetGame().GetRoomManager().GenerateRoomData(RoomId); if (Data == null || Data.Owner.ToLower() != Session.GetHabbo().Username.ToLower()) { return; } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("DELETE FROM rooms WHERE id = '" + Data.Id + "' LIMIT 1"); dbClient.ExecuteQuery("DELETE FROM user_favorites WHERE room_id = '" + Data.Id + "'"); dbClient.ExecuteQuery("DELETE FROM room_items WHERE room_id = '" + Data.Id + "'"); dbClient.ExecuteQuery("DELETE FROM room_rights WHERE room_id = '" + Data.Id + "'"); dbClient.ExecuteQuery("UPDATE users SET home_room = '0' WHERE home_room = '" + Data.Id + "'"); // todo: delete room stuff } Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Data.Id); if (Room != null) { lock (Room.UserList) { foreach (RoomUser User in Room.UserList) { if (User.IsBot) { continue; } User.GetClient().SendMessage(new ServerMessage(18)); User.GetClient().GetHabbo().OnLeaveRoom(); } } UberEnvironment.GetGame().GetRoomManager().UnloadRoom(Data.Id); } GetResponse().Init(101); SendResponse(); Session.SendMessage(UberEnvironment.GetGame().GetNavigator().SerializeRoomListing(Session, -3)); } private void LookAt() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } User.Unidle(); int X = Request.PopWiredInt32(); int Y = Request.PopWiredInt32(); if (X == User.X && Y == User.Y) { return; } int Rot = Rotation.Calculate(User.X, User.Y, X, Y); User.SetRot(Rot); } private void StartTyping() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } ServerMessage Message = new ServerMessage(361); Message.AppendInt32(User.VirtualId); Message.AppendBoolean(true); Room.SendMessage(Message); } private void StopTyping() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } ServerMessage Message = new ServerMessage(361); Message.AppendInt32(User.VirtualId); Message.AppendBoolean(false); Room.SendMessage(Message); } private void IgnoreUser() { /*Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoom); if (Room == null) { return; } uint Id = Request.PopWiredUInt(); if (Session.GetHabbo().MutedUsers.Contains(Id)) { return; } Session.GetHabbo().MutedUsers.Add(Id); GetResponse().Init(419); GetResponse().AppendInt32(1); SendResponse();*/ } private void UnignoreUser() { /*Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoom); if (Room == null) { return; } uint Id = Request.PopWiredUInt(); if (!Session.GetHabbo().MutedUsers.Contains(Id)) { return; } Session.GetHabbo().MutedUsers.Remove(Id); GetResponse().Init(419); GetResponse().AppendInt32(3); SendResponse();*/ } private void CanCreateRoomEvent() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } Boolean Allow = true; int ErrorCode = 0; if (Room.State != 0) { Allow = false; ErrorCode = 3; } GetResponse().Init(367); GetResponse().AppendBoolean(Allow); GetResponse().AppendInt32(ErrorCode); SendResponse(); } private void StartEvent() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true) || Room.Event != null || Room.State != 0) { return; } int category = Request.PopWiredInt32(); string name = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); string descr = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); int tagCount = Request.PopWiredInt32(); Room.Event = new RoomEvent(Room.RoomId, name, descr, category, null); Room.Event.Tags = new List<string>(); for (int i = 0; i < tagCount; i++) { Room.Event.Tags.Add(UberEnvironment.FilterInjectionChars(Request.PopFixedString())); } Room.SendMessage(Room.Event.Serialize(Session)); } private void StopEvent() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true) || Room.Event == null) { return; } Room.Event = null; ServerMessage Message = new ServerMessage(370); Message.AppendStringWithBreak("-1"); Room.SendMessage(Message); } private void EditEvent() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true) || Room.Event == null) { return; } int category = Request.PopWiredInt32(); string name = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); string descr = UberEnvironment.FilterInjectionChars(Request.PopFixedString()); int tagCount = Request.PopWiredInt32(); Room.Event.Category = category; Room.Event.Name = name; Room.Event.Description = descr; Room.Event.Tags = new List<string>(); for (int i = 0; i < tagCount; i++) { Room.Event.Tags.Add(UberEnvironment.FilterInjectionChars(Request.PopFixedString())); } Room.SendMessage(Room.Event.Serialize(Session)); } private void Wave() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } User.Unidle(); User.DanceId = 0; ServerMessage Message = new ServerMessage(481); Message.AppendInt32(User.VirtualId); Room.SendMessage(Message); } private void GetUserTags() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Request.PopWiredUInt()); if (User == null || User.IsBot) { return; } GetResponse().Init(350); GetResponse().AppendUInt(User.GetClient().GetHabbo().Id); GetResponse().AppendInt32(User.GetClient().GetHabbo().Tags.Count); lock (User.GetClient().GetHabbo().Tags) { foreach (string Tag in User.GetClient().GetHabbo().Tags) { GetResponse().AppendStringWithBreak(Tag); } } SendResponse(); } private void GetUserBadges() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Request.PopWiredUInt()); if (User == null || User.IsBot) { return; } // CdjUzYZJIACH_RespectEarned1JACH_EmailVerification1E^jUzYZH GetResponse().Init(228); GetResponse().AppendUInt(User.GetClient().GetHabbo().Id); GetResponse().AppendInt32(User.GetClient().GetHabbo().GetBadgeComponent().EquippedCount); lock (User.GetClient().GetHabbo().GetBadgeComponent().BadgeList) { foreach (Badge Badge in User.GetClient().GetHabbo().GetBadgeComponent().BadgeList) { if (Badge.Slot <= 0) { continue; } GetResponse().AppendInt32(Badge.Slot); GetResponse().AppendStringWithBreak(Badge.Code); } } SendResponse(); } private void RateRoom() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || Session.GetHabbo().RatedRooms.Contains(Room.RoomId) || Room.CheckRights(Session, true)) { return; } int Rating = Request.PopWiredInt32(); switch (Rating) { case -1: Room.Score--; break; case 1: Room.Score++; break; default: return; } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE rooms SET score = '" + Room.Score + "' WHERE id = '" + Room.RoomId + "' LIMIT 1"); } Session.GetHabbo().RatedRooms.Add(Room.RoomId); GetResponse().Init(345); GetResponse().AppendInt32(Room.Score); SendResponse(); } private void Dance() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } User.Unidle(); int DanceId = Request.PopWiredInt32(); if (DanceId < 0 || DanceId > 4 || (!Session.GetHabbo().HasFuse("fuse_use_club_dance") && DanceId > 1)) { DanceId = 0; } if (DanceId > 0 && User.CarryItemID > 0) { User.CarryItem(0); } User.DanceId = DanceId; ServerMessage DanceMessage = new ServerMessage(480); DanceMessage.AppendInt32(User.VirtualId); DanceMessage.AppendInt32(DanceId); Room.SendMessage(DanceMessage); } private void AnswerDoorbell() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session)) { return; } string Name = Request.PopFixedString(); byte[] Result = Request.ReadBytes(1); GameClient Client = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(Name); if (Client == null) { return; } if (Result[0] == Convert.ToByte(65)) { Client.GetHabbo().LoadingChecksPassed = true; Client.GetMessageHandler().GetResponse().Init(41); Client.GetMessageHandler().SendResponse(); } else { Client.GetMessageHandler().GetResponse().Init(131); Client.GetMessageHandler().SendResponse(); } } private void ApplyRoomEffect() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(Request.PopWiredUInt()); if (Item == null) { return; } string type = "floor"; if (Item.GetBaseItem().Name.ToLower().Contains("wallpaper")) { type = "wallpaper"; } else if (Item.GetBaseItem().Name.ToLower().Contains("landscape")) { type = "landscape"; } switch (type) { case "floor": Room.Floor = Item.ExtraData; break; case "wallpaper": Room.Wallpaper = Item.ExtraData; break; case "landscape": Room.Landscape = Item.ExtraData; break; } using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE rooms SET " + type + " = '" + Item.ExtraData + "' WHERE id = '" + Room.RoomId + "' LIMIT 1"); } Session.GetHabbo().GetInventoryComponent().RemoveItem(Item.Id); ServerMessage Message = new ServerMessage(46); Message.AppendStringWithBreak(type); Message.AppendStringWithBreak(Item.ExtraData); Room.SendMessage(Message); } private void PlaceItem() { // AZ@J16 10 10 0 Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session)) { return; } string PlacementData = Request.PopFixedString(); string[] DataBits = PlacementData.Split(' '); uint ItemId = uint.Parse(DataBits[0]); UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId); if (Item == null) { return; } switch (Item.GetBaseItem().InteractionType.ToLower()) { case "dimmer": if (Room.ItemCountByType("dimmer") >= 1) { Session.SendNotif("Solo puede tener un regulador de luces por habitación"); return; } break; } // Wall Item if (DataBits[1].StartsWith(":")) { string WallPos = Room.WallPositionCheck(":" + PlacementData.Split(':')[1]); if (WallPos == null) { GetResponse().Init(516); GetResponse().AppendInt32(11); SendResponse(); return; } RoomItem RoomItem = new RoomItem(Item.Id, Room.RoomId, Item.BaseItem, Item.ExtraData, 0, 0, 0.0, 0, WallPos); if (Room.SetWallItem(Session, RoomItem)) { Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId); } } // Floor Item else { int X = int.Parse(DataBits[1]); int Y = int.Parse(DataBits[2]); int Rot = int.Parse(DataBits[3]); RoomItem RoomItem = new RoomItem(Item.Id, Room.RoomId, Item.BaseItem, Item.ExtraData, 0, 0, 0, 0, ""); if (Room.SetFloorItem(Session, RoomItem, X, Y, Rot, true)) { Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId); } } } private void TakeItem() { int junk = Request.PopWiredInt32(); Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null) { return; } switch (Item.GetBaseItem().InteractionType.ToLower()) { case "postit": return; // not allowed to pick up post.its } Room.RemoveFurniture(Session, Item.Id); Session.GetHabbo().GetInventoryComponent().AddItem(Item.Id, Item.BaseItem, Item.ExtraData); Session.GetHabbo().GetInventoryComponent().UpdateItems(false); } private void MoveItem() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session)) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null) { return; } int x = Request.PopWiredInt32(); int y = Request.PopWiredInt32(); int Rotation = Request.PopWiredInt32(); int Junk = Request.PopWiredInt32(); Room.SetFloorItem(Session, Item, x, y, Rotation, false); } private void TriggerItem() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null) { return; } Boolean hasRights = false; if (Room.CheckRights(Session)) { hasRights = true; } Item.Interactor.OnTrigger(Session, Item, Request.PopWiredInt32(), hasRights); } private void TriggerItemDiceSpecial() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null) { return; } Boolean hasRights = false; if (Room.CheckRights(Session)) { hasRights = true; } Item.Interactor.OnTrigger(Session, Item, -1, hasRights); } private void OpenPostit() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null || Item.GetBaseItem().InteractionType.ToLower() != "postit") { return; } // @p181855059CFF9C stickynotemsg GetResponse().Init(48); GetResponse().AppendStringWithBreak(Item.Id.ToString()); GetResponse().AppendStringWithBreak(Item.ExtraData); SendResponse(); } private void SavePostit() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null || Item.GetBaseItem().InteractionType.ToLower() != "postit") { return; } String Data = Request.PopFixedString(); String Color = Data.Split(' ')[0]; String Text = UberEnvironment.FilterInjectionChars(Data.Substring(Color.Length + 1), true); if (!Room.CheckRights(Session)) { if (!Data.StartsWith(Item.ExtraData)) { return; // we can only ADD stuff! older stuff changed, this is not allowed } } switch (Color) { case "FFFF33": case "FF9CFF": case "9CCEFF": case "9CFF9C": break; default: return; // invalid color } Item.ExtraData = Color + " " + Text; Item.UpdateState(true, true); } private void DeletePostit() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } RoomItem Item = Room.GetItem(Request.PopWiredUInt()); if (Item == null || Item.GetBaseItem().InteractionType.ToLower() != "postit") { return; } Room.RemoveFurniture(Session, Item.Id); } private void OpenPresent() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } RoomItem Present = Room.GetItem(Request.PopWiredUInt()); if (Present == null) { return; } DataRow Data = null; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { Data = dbClient.ReadDataRow("SELECT base_id,amount,extra_data FROM user_presents WHERE item_id = '" + Present.Id + "' LIMIT 1"); } if (Data == null) { return; } Item BaseItem = UberEnvironment.GetGame().GetItemManager().GetItem((uint)Data["base_id"]); if (BaseItem == null) { return; } Room.RemoveFurniture(Session, Present.Id); GetResponse().Init(219); GetResponse().AppendUInt(Present.Id); SendResponse(); GetResponse().Init(129); GetResponse().AppendStringWithBreak(BaseItem.Type); GetResponse().AppendInt32(BaseItem.SpriteId); GetResponse().AppendStringWithBreak(BaseItem.Name); SendResponse(); using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("DELETE FROM user_presents WHERE item_id = '" + Present.Id + "' LIMIT 1"); } UberEnvironment.GetGame().GetCatalog().DeliverItems(Session, BaseItem, (int)Data["amount"], (String)Data["extra_data"]); } private void GetMoodlight() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true) || Room.MoodlightData == null) { return; } GetResponse().Init(365); GetResponse().AppendInt32(Room.MoodlightData.Presets.Count); GetResponse().AppendInt32(Room.MoodlightData.CurrentPreset); lock (Room.MoodlightData.Presets) { int i = 0; foreach (MoodlightPreset Preset in Room.MoodlightData.Presets) { i++; GetResponse().AppendInt32(i); GetResponse().AppendInt32(int.Parse(UberEnvironment.BoolToEnum(Preset.BackgroundOnly)) + 1); GetResponse().AppendStringWithBreak(Preset.ColorCode); GetResponse().AppendInt32(Preset.ColorIntensity); } } SendResponse(); } private void UpdateMoodlight() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true) || Room.MoodlightData == null) { return; } RoomItem Item = null; lock (Room.Items) { foreach (RoomItem I in Room.Items) { if (I.GetBaseItem().InteractionType.ToLower() == "dimmer") { Item = I; break; } } } if (Item == null) { return; } // EVIH@G#EA4532RbI int Preset = Request.PopWiredInt32(); int BackgroundMode = Request.PopWiredInt32(); string ColorCode = Request.PopFixedString(); int Intensity = Request.PopWiredInt32(); bool BackgroundOnly = false; if (BackgroundMode >= 2) { BackgroundOnly = true; } Room.MoodlightData.Enabled = true; Room.MoodlightData.CurrentPreset = Preset; Room.MoodlightData.UpdatePreset(Preset, ColorCode, Intensity, BackgroundOnly); Item.ExtraData = Room.MoodlightData.GenerateExtraData(); Item.UpdateState(); } private void SwitchMoodlightStatus() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true) || Room.MoodlightData == null) { return; } RoomItem Item = null; lock (Room.Items) { foreach (RoomItem I in Room.Items) { if (I.GetBaseItem().InteractionType.ToLower() == "dimmer") { Item = I; break; } } } if (Item == null) { return; } if (Room.MoodlightData.Enabled) { Room.MoodlightData.Disable(); } else { Room.MoodlightData.Enable(); } Item.ExtraData = Room.MoodlightData.GenerateExtraData(); Item.UpdateState(); } private void InitTrade() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } RoomUser User = Room.GetRoomUserByHabbo(Session.GetHabbo().Id); RoomUser User2 = Room.GetRoomUserByVirtualId(Request.PopWiredInt32()); Room.TryStartTrade(User, User2); } private void OfferTradeItem() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id); UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(Request.PopWiredUInt()); if (Trade == null || Item == null) { return; } Trade.OfferItem(Session.GetHabbo().Id, Item); } private void TakeBackTradeItem() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id); UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(Request.PopWiredUInt()); if (Trade == null || Item == null) { return; } Trade.TakeBackItem(Session.GetHabbo().Id, Item); } private void StopTrade() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } Room.TryStopTrade(Session.GetHabbo().Id); } private void AcceptTrade() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id); if (Trade == null) { return; } Trade.Accept(Session.GetHabbo().Id); } private void UnacceptTrade() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id); if (Trade == null) { return; } Trade.Unaccept(Session.GetHabbo().Id); } private void CompleteTrade() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CanTradeInRoom) { return; } Trade Trade = Room.GetUserTrade(Session.GetHabbo().Id); if (Trade == null) { return; } Trade.CompleteTrade(Session.GetHabbo().Id); } private void GiveRespect() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || Session.GetHabbo().DailyRespectPoints <= 0) { return; } RoomUser User = Room.GetRoomUserByHabbo(Request.PopWiredUInt()); if (User == null || User.GetClient().GetHabbo().Id == Session.GetHabbo().Id || User.IsBot) { return; } Session.GetHabbo().DailyRespectPoints--; User.GetClient().GetHabbo().Respect++; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE users SET respect = respect + 1 WHERE id = '" + User.GetClient().GetHabbo().Id + "' LIMIT 1"); dbClient.ExecuteQuery("UPDATE users SET daily_respect_points = daily_respect_points - 1 WHERE id = '" + Session.GetHabbo().Id + "' LIMIT 1"); } // FxkqUzYP_ ServerMessage Message = new ServerMessage(440); Message.AppendUInt(User.GetClient().GetHabbo().Id); Message.AppendInt32(User.GetClient().GetHabbo().Respect); Room.SendMessage(Message); } private void ApplyEffect() { Session.GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(Request.PopWiredInt32()); } private void EnableEffect() { Session.GetHabbo().GetAvatarEffectsInventoryComponent().EnableEffect(Request.PopWiredInt32()); } private void RecycleItems() { if (!Session.GetHabbo().InRoom) { return; } int itemCount = Request.PopWiredInt32(); if (itemCount != 5) { return; } for (int i = 0; i < itemCount; i++) { UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(Request.PopWiredUInt()); if (Item != null && Item.GetBaseItem().AllowRecycle) { Session.GetHabbo().GetInventoryComponent().RemoveItem(Item.Id); } else { return; } } uint newItemId = UberEnvironment.GetGame().GetCatalog().GenerateItemId(); EcotronReward Reward = UberEnvironment.GetGame().GetCatalog().GetRandomEcotronReward(); using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("INSERT INTO user_items (id,user_id,base_item,extra_data) VALUES ('" + newItemId + "','" + Session.GetHabbo().Id + "','1478','" + DateTime.Now.ToLongDateString() + "')"); dbClient.ExecuteQuery("INSERT INTO user_presents (item_id,base_id,amount,extra_data) VALUES ('" + newItemId + "','" + Reward.BaseId + "','1','')"); } Session.GetHabbo().GetInventoryComponent().UpdateItems(true); GetResponse().Init(508); GetResponse().AppendBoolean(true); GetResponse().AppendUInt(newItemId); SendResponse(); } private void RedeemExchangeFurni() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } RoomItem Exchange = Room.GetItem(Request.PopWiredUInt()); if (Exchange == null) { return; } if (!Exchange.GetBaseItem().Name.StartsWith("CF_") && !Exchange.GetBaseItem().Name.StartsWith("CFC_")) { return; } string[] Split = Exchange.GetBaseItem().Name.Split('_'); int Value = int.Parse(Split[1]); if (Value > 0) { Session.GetHabbo().Credits += Value; Session.GetHabbo().UpdateCreditsBalance(true); } Room.RemoveFurniture(null, Exchange.Id); GetResponse().Init(219); SendResponse(); } private void EnterInfobus() { // AQThe Infobus is currently closed. GetResponse().Init(81); GetResponse().AppendStringWithBreak("El InfoBus aún no esta en uso."); SendResponse(); } private void KickBot() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session, true)) { return; } RoomUser Bot = Room.GetRoomUserByVirtualId(Request.PopWiredInt32()); if (Bot == null || !Bot.IsBot) { return; } Room.RemoveBot(Bot.VirtualId, true); } private void PlacePet() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || (!Room.AllowPets && !Room.CheckRights(Session, true))) { return; } uint PetId = Request.PopWiredUInt(); Pet Pet = Session.GetHabbo().GetInventoryComponent().GetPet(PetId); if (Pet == null || Pet.PlacedInRoom) { return; } int X = Request.PopWiredInt32(); int Y = Request.PopWiredInt32(); if (!Room.CanWalk(X, Y, 0, true)) { return; } if (Room.PetCount >= UberEnvironment.GetGame().GetRoomManager().MAX_PETS_PER_ROOM) { Session.SendNotif("Hay demasiadas mascotas en esta sala, solo puedes tener " + UberEnvironment.GetGame().GetRoomManager().MAX_PETS_PER_ROOM + " mascotas."); return; } Pet.PlacedInRoom = true; Pet.RoomId = Room.RoomId; RoomUser PetUser = Room.DeployBot(new HabboHotel.RoomBots.RoomBot(Pet.PetId, Pet.RoomId, "pet", "freeroam", Pet.Name, "", Pet.Look, X, Y, 0, 0, 0, 0, 0, 0), Pet); if (Room.CheckRights(Session, true)) { Session.GetHabbo().GetInventoryComponent().MovePetToRoom(Pet.PetId, Room.RoomId); } } private void GetPetInfo() { uint PetId = Request.PopWiredUInt(); DataRow Row = null; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.AddParamWithValue("petid", PetId); Row = dbClient.ReadDataRow("SELECT * FROM user_pets WHERE id = @petid LIMIT 1"); } if (Row == null) { return; } Session.SendMessage(UberEnvironment.GetGame().GetCatalog().GeneratePetFromRow(Row).SerializeInfo()); } private void PickUpPet() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || Room.IsPublic || (!Room.AllowPets && !Room.CheckRights(Session, true))) { return; } uint PetId = Request.PopWiredUInt(); RoomUser PetUser = Room.GetPet(PetId); if (PetUser == null || PetUser.PetData == null || PetUser.PetData.OwnerId != Session.GetHabbo().Id) { return; } Session.GetHabbo().GetInventoryComponent().AddPet(PetUser.PetData); Room.RemoveBot(PetUser.VirtualId, false); } private void RespectPet() { Room Room = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || Room.IsPublic || (!Room.AllowPets && !Room.CheckRights(Session, true))) { return; } uint PetId = Request.PopWiredUInt(); RoomUser PetUser = Room.GetPet(PetId); if (PetUser == null || PetUser.PetData == null || PetUser.PetData.OwnerId != Session.GetHabbo().Id) { return; } PetUser.PetData.OnRespect(); Session.GetHabbo().DailyPetRespectPoints--; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.AddParamWithValue("userid", Session.GetHabbo().Id); dbClient.ExecuteQuery("UPDATE users SET daily_pet_respect_points = daily_pet_respect_points - 1 WHERE id = @userid LIMIT 1"); } } public void RegisterRooms() { RequestHandlers[391] = new RequestHandler(OpenFlat); RequestHandlers[182] = new RequestHandler(GetAdvertisement); RequestHandlers[388] = new RequestHandler(GetPub); RequestHandlers[2] = new RequestHandler(OpenPub); RequestHandlers[230] = new RequestHandler(GetGroupBadges); RequestHandlers[215] = new RequestHandler(GetRoomData1); RequestHandlers[390] = new RequestHandler(GetRoomData2); RequestHandlers[126] = new RequestHandler(GetRoomData3); RequestHandlers[52] = new RequestHandler(Talk); RequestHandlers[55] = new RequestHandler(Shout); RequestHandlers[56] = new RequestHandler(Whisper); RequestHandlers[75] = new RequestHandler(Move); RequestHandlers[387] = new RequestHandler(CanCreateRoom); RequestHandlers[29] = new RequestHandler(CreateRoom); RequestHandlers[400] = new RequestHandler(GetRoomEditData); RequestHandlers[386] = new RequestHandler(SaveRoomIcon); RequestHandlers[401] = new RequestHandler(SaveRoomData); RequestHandlers[96] = new RequestHandler(GiveRights); RequestHandlers[97] = new RequestHandler(TakeRights); RequestHandlers[155] = new RequestHandler(TakeAllRights); RequestHandlers[95] = new RequestHandler(KickUser); RequestHandlers[320] = new RequestHandler(BanUser); RequestHandlers[71] = new RequestHandler(InitTrade); RequestHandlers[384] = new RequestHandler(SetHomeRoom); RequestHandlers[23] = new RequestHandler(DeleteRoom); RequestHandlers[79] = new RequestHandler(LookAt); RequestHandlers[317] = new RequestHandler(StartTyping); RequestHandlers[318] = new RequestHandler(StopTyping); RequestHandlers[319] = new RequestHandler(IgnoreUser); RequestHandlers[322] = new RequestHandler(UnignoreUser); RequestHandlers[345] = new RequestHandler(CanCreateRoomEvent); RequestHandlers[346] = new RequestHandler(StartEvent); RequestHandlers[347] = new RequestHandler(StopEvent); RequestHandlers[348] = new RequestHandler(EditEvent); RequestHandlers[94] = new RequestHandler(Wave); RequestHandlers[263] = new RequestHandler(GetUserTags); RequestHandlers[159] = new RequestHandler(GetUserBadges); RequestHandlers[261] = new RequestHandler(RateRoom); RequestHandlers[93] = new RequestHandler(Dance); RequestHandlers[98] = new RequestHandler(AnswerDoorbell); RequestHandlers[59] = new RequestHandler(ReqLoadRoomForUser); RequestHandlers[66] = new RequestHandler(ApplyRoomEffect); RequestHandlers[90] = new RequestHandler(PlaceItem); RequestHandlers[67] = new RequestHandler(TakeItem); RequestHandlers[73] = new RequestHandler(MoveItem); RequestHandlers[392] = new RequestHandler(TriggerItem); // Generic trigger item RequestHandlers[393] = new RequestHandler(TriggerItem); // Generic trigger item RequestHandlers[83] = new RequestHandler(OpenPostit); RequestHandlers[84] = new RequestHandler(SavePostit); RequestHandlers[85] = new RequestHandler(DeletePostit); RequestHandlers[78] = new RequestHandler(OpenPresent); RequestHandlers[341] = new RequestHandler(GetMoodlight); RequestHandlers[342] = new RequestHandler(UpdateMoodlight); RequestHandlers[343] = new RequestHandler(SwitchMoodlightStatus); RequestHandlers[72] = new RequestHandler(OfferTradeItem); RequestHandlers[405] = new RequestHandler(TakeBackTradeItem); RequestHandlers[70] = new RequestHandler(StopTrade); RequestHandlers[403] = new RequestHandler(StopTrade); RequestHandlers[69] = new RequestHandler(AcceptTrade); RequestHandlers[68] = new RequestHandler(UnacceptTrade); RequestHandlers[402] = new RequestHandler(CompleteTrade); RequestHandlers[371] = new RequestHandler(GiveRespect); RequestHandlers[372] = new RequestHandler(ApplyEffect); RequestHandlers[373] = new RequestHandler(EnableEffect); RequestHandlers[3004] = new RequestHandler(GetTrainerPanel); // Mas rápdio xD RequestHandlers[232] = new RequestHandler(TriggerItem); // One way gates RequestHandlers[314] = new RequestHandler(TriggerItem); // Love Shuffler RequestHandlers[247] = new RequestHandler(TriggerItem); // Habbo Wheel RequestHandlers[76] = new RequestHandler(TriggerItem); // Dice RequestHandlers[77] = new RequestHandler(TriggerItemDiceSpecial); // Dice (special) RequestHandlers[414] = new RequestHandler(RecycleItems); RequestHandlers[183] = new RequestHandler(RedeemExchangeFurni); RequestHandlers[113] = new RequestHandler(EnterInfobus); RequestHandlers[441] = new RequestHandler(KickBot); RequestHandlers[3002] = new RequestHandler(PlacePet); RequestHandlers[3001] = new RequestHandler(GetPetInfo); RequestHandlers[3003] = new RequestHandler(PickUpPet); RequestHandlers[3005] = new RequestHandler(RespectPet); } } }
Sorry for my english, I am spanish.