Already fixed that :) Now the bots speeches and mod tools...
Printable View
Already fixed that :) Now the bots speeches and mod tools...
So, here the fix for bots speeches:
Replace to whole Rooms.cs to this:
Code:using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using Silverwave.Core;
using Silverwave.HabboHotel.Catalogs;
using Silverwave.HabboHotel.GameClients;
using Silverwave.HabboHotel.Items;
using Silverwave.HabboHotel.Navigators;
using Silverwave.HabboHotel.Pathfinding;
using Silverwave.HabboHotel.Pets;
using Silverwave.HabboHotel.RoomBots;
using Silverwave.HabboHotel.Rooms;
using Silverwave.HabboHotel.Users;
using Silverwave.HabboHotel.Users.Badges;
using Silverwave.Collections;
using Database_Manager.Database.Session_Details.Interfaces;
using System.Collections;
using System.Drawing;
using Silverwave.Messages.Headers;
using System.Text.RegularExpressions;
using System.Threading;
using Silverwave.HabboHotel.Groups;
using Silverwave.HabboHotel.Rooms.Wired;
using Silverwave.Communication.Packets.Outgoing.Rooms.Avatar;
namespace Silverwave.Messages
{
partial class GameClientMessageHandler
{
internal void GetTrainerPanel()
{
uint PetId = Request.PopWiredUInt();
Pet PetData = null;
Room Room = Session.GetHabbo().CurrentRoom;
if (Room == null)
{
return;
}
if ((PetData = Room.GetRoomUserManager().GetPet(PetId).PetData) == null)
{
return;
}
else
{
int Level = PetData.Level;
Response.Init(Outgoing.SerializeTrainerPanel);
Response.AppendInt32(PetData.PetId);
Response.AppendInt32(4);
Response.AppendInt32(0);
Response.AppendInt32(1);
Response.AppendInt32(3);
Response.AppendInt32(4);
Response.AppendInt32(2);
Response.AppendInt32(0);
Response.AppendInt32(1);
SendResponse();
}
}
internal void InitRoomGroupBadges()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().LoadingRoom);
}
internal void GetPub()
{
uint Id = Request.PopWiredUInt();
RoomData Data = SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id);
if (Data == null)
{
return;
}
GetResponse().Init(453);
GetResponse().AppendInt32(Data.Id);
GetResponse().AppendString(Data.CCTs);
GetResponse().AppendInt32(Data.Id);
SendResponse();
}
internal void OpenPub()
{
int Junk = Request.PopWiredInt32();
uint Id = Request.PopWiredUInt();
int Junk2 = Request.PopWiredInt32();
RoomData Data = SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id);
if (Data == null)
{
return;
}
PrepareRoomForUser(Data.Id, "");
}
internal void GetInventory()
{
QueuedServerMessage response = new QueuedServerMessage(Session.GetConnection());
response.appendResponse(Session.GetHabbo().GetInventoryComponent().SerializeFloorItemInventory());
//response.appendResponse(Session.GetHabbo().GetInventoryComponent().SerializeWallItemInventory());
response.sendResponse();
}
internal void GetRoomData1()
{
if (Session.GetHabbo().LoadingRoom <= 0)
{
return;
}
Response.Init(297);
Response.AppendInt32(0);
SendResponse();
}
internal void GetRoomData2()
{
try
{
QueuedServerMessage message = new QueuedServerMessage(Session.GetConnection());
if (Session.GetHabbo().LoadingRoom <= 0 || CurrentLoadingRoom == null)
return;
RoomData Data = CurrentLoadingRoom.RoomData;//SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(Session.GetHabbo().LoadingRoom);
if (Data == null)
{
return;
}
if (Data.Model == null)
{
Session.SendNotif(LanguageLocale.GetValue("room.missingmodeldata"));
Session.SendMessage(new ServerMessage(Outgoing.OutOfRoom));
ClearRoomLoading();
return;
}
//CurrentLoadingRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().LoadingRoom);
message.appendResponse(CurrentLoadingRoom.GetGameMap().Model.SerializeRelativeHeightmap());
message.appendResponse(CurrentLoadingRoom.GetGameMap().Model.GetHeightmap());
message.sendResponse();
GetRoomData3();
}
catch (Exception e)
{
Logging.LogException("Unable to load room ID [" + Session.GetHabbo().LoadingRoom + "] " + e.ToString());
//Session.SendNotif(LanguageLocale.GetValue("room.roomdataloaderror"));
}
}
internal Room CurrentLoadingRoom;
public int FloodCount;
public DateTime FloodTime;
internal void GetRoomData3()
{
if (Session.GetHabbo().LoadingRoom <= 0 || !Session.GetHabbo().LoadingChecksPassed || CurrentLoadingRoom == null || Session == null)
{
return;
}
if (CurrentLoadingRoom.UsersNow + 1 > CurrentLoadingRoom.UsersMax && !Session.GetHabbo().HasFuse("fuse_enter_full_rooms"))
{
Session.SendNotif(LanguageLocale.GetValue("room.fullerror"));
return;
}
ClearRoomLoading();
QueuedServerMessage response = new QueuedServerMessage(Session.GetConnection());
RoomItem[] floorItems = CurrentLoadingRoom.GetRoomItemHandler().mFloorItems.Values.ToArray();
RoomItem[] wallItems = CurrentLoadingRoom.GetRoomItemHandler().mWallItems.Values.ToArray();
Response.Init(Outgoing.SerializeFloorItems);
if (CurrentLoadingRoom.Group != null)
{
if (CurrentLoadingRoom.Group.AdminOnlyDeco == 1)
{
Response.AppendInt32(CurrentLoadingRoom.Group.Admins.Count + 1); // count of owners
foreach (GroupUser User in CurrentLoadingRoom.Group.Admins.Values)
{
Response.AppendInt32(User.Id);
Response.AppendString(SilverwaveEnvironment.getHabboForId(User.Id).Username);
}
}
else
{
Response.AppendInt32(CurrentLoadingRoom.Group.Members.Count + 1); // count of owners
foreach (GroupUser User in CurrentLoadingRoom.Group.Members.Values)
{
Response.AppendInt32(User.Id);
Response.AppendString(SilverwaveEnvironment.getHabboForId(User.Id).Username);
}
}
Response.AppendInt32(CurrentLoadingRoom.OwnerId);
Response.AppendString(CurrentLoadingRoom.Owner);
}
else
{
Response.AppendInt32(1); // count of owners
// serialize all owners
Response.AppendInt32(CurrentLoadingRoom.OwnerId);
Response.AppendString(CurrentLoadingRoom.Owner);
}
Response.AppendInt32(floorItems.Length);
foreach (RoomItem Item in floorItems)
Item.Serialize(Response);
response.appendResponse(GetResponse());
Response.Init(Outgoing.SerializeWallItems);
if (CurrentLoadingRoom.Group != null)
{
if (CurrentLoadingRoom.Group.AdminOnlyDeco == 1)
{
Response.AppendInt32(CurrentLoadingRoom.Group.Admins.Count + 1); // count of owners
foreach (GroupUser User in CurrentLoadingRoom.Group.Admins.Values)
{
Response.AppendInt32(User.Id);
Response.AppendString(SilverwaveEnvironment.getHabboForId(User.Id).Username);
}
}
else
{
Response.AppendInt32(CurrentLoadingRoom.Group.Members.Count + 1); // count of owners
foreach (GroupUser User in CurrentLoadingRoom.Group.Members.Values)
{
Response.AppendInt32(User.Id);
Response.AppendString(SilverwaveEnvironment.getHabboForId(User.Id).Username);
}
}
Response.AppendInt32(CurrentLoadingRoom.OwnerId);
Response.AppendString(CurrentLoadingRoom.Owner);
}
else
{
Response.AppendInt32(1); // count of owners
// serialize all owners
Response.AppendInt32(CurrentLoadingRoom.OwnerId);
Response.AppendString(CurrentLoadingRoom.Owner);
}
// serialize items
Response.AppendInt32(wallItems.Length);
foreach (RoomItem Item in wallItems)
Item.Serialize(Response);
response.appendResponse(GetResponse());
Array.Clear(floorItems, 0, floorItems.Length);
Array.Clear(wallItems, 0, wallItems.Length);
floorItems = null;
wallItems = null;
CurrentLoadingRoom.GetRoomUserManager().AddUserToRoom(Session, false);
//this.SerializeRoomInformation(CurrentLoadingRoom);
response.sendResponse();
if (SilverwaveEnvironment.GetUnixTimestamp() < Session.GetHabbo().FloodTime && Session.GetHabbo().FloodTime != 0)
{
ServerMessage Packet = new ServerMessage(Outgoing.FloodFilter);
Packet.AppendInt32(Session.GetHabbo().FloodTime - SilverwaveEnvironment.GetUnixTimestamp());
Session.SendMessage(Packet);
}
}
internal void RequestFloorItems()
{
}
internal void RequestWallItems()
{
}
internal void SaveBranding()
{
uint ItemId = Request.PopWiredUInt();
uint Data = Request.PopWiredUInt();
string BrandData = "state" + Convert.ToChar(9) + "0";
for (int i = 1; i <= Data; i++)
{
BrandData = BrandData + Convert.ToChar(9) + Request.PopFixedString();
}
Room Room = Session.GetHabbo().CurrentRoom;
RoomItem Item = Room.GetRoomItemHandler().GetItem(ItemId);
Item.ExtraData = BrandData;
Room.GetRoomItemHandler().SetFloorItem(Session, Item, Item.GetX, Item.GetY, Item.Rot, false, false, true);
}
internal void OnRoomUserAdd()
{
if (Session == null || GetResponse() == null)
return;
QueuedServerMessage response = new QueuedServerMessage(Session.GetConnection());
List<RoomUser> UsersToDisplay = new List<RoomUser>();
if (CurrentLoadingRoom == null || CurrentLoadingRoom.GetRoomUserManager() == null || CurrentLoadingRoom.GetRoomUserManager().UserList == null)
return;
foreach (RoomUser User in CurrentLoadingRoom.GetRoomUserManager().UserList.Values)
{
if (User == null || User.IsSpectator)
continue;
UsersToDisplay.Add(User);
}
Response.Init(Outgoing.SetRoomUser);
Response.AppendInt32(UsersToDisplay.Count);
foreach (RoomUser User in UsersToDisplay)
{
User.Serialize(Response, CurrentLoadingRoom.GetGameMap().gotPublicPool);
}
response.appendResponse(GetResponse());
response.appendResponse(RoomFloorAndWallComposer(CurrentLoadingRoom));
response.appendResponse(GetResponse());
Response.Init(Outgoing.ValidRoom);
Response.AppendBoolean(true);
Response.AppendInt32(CurrentLoadingRoom.RoomId);
Response.AppendBoolean(CurrentLoadingRoom.CheckRights(Session, true));
response.appendResponse(GetResponse());
//DataTable Table;
//using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
//{
//dbClient.setQuery("SELECT user_id FROM room_rights WHERE room_id=" + CurrentLoadingRoom.RoomData.Id);
//Table = dbClient.getTable();
//}
/*GetResponse().Init(Outgoing.GetPowerList);
GetResponse().AppendUInt(CurrentLoadingRoom.RoomData.Id);
GetResponse().AppendInt32(Table.Rows.Count);
foreach (DataRow i in Table.Rows)
{
Habbo xUser = SilverwaveEnvironment.getHabboForId((uint)i[0]);
GetResponse().AppendUInt(xUser.Id);
GetResponse().AppendString(xUser.Username);
}
//response.appendResponse(GetResponse());*/
foreach (uint i in CurrentLoadingRoom.UsersWithRights)
{
Habbo xUser = SilverwaveEnvironment.getHabboForId(i);
if (xUser != null)
{
GetResponse().Init(Outgoing.GivePowers);
GetResponse().AppendInt32(CurrentLoadingRoom.RoomId);
GetResponse().AppendInt32(xUser.Id);
GetResponse().AppendString(xUser.Username);
response.appendResponse(GetResponse());
}
}
ServerMessage Updates = CurrentLoadingRoom.GetRoomUserManager().SerializeStatusUpdates(true);
if (Updates != null)
response.appendResponse(Updates);
if (CurrentLoadingRoom.Event != null)
{
SilverwaveEnvironment.GetGame().GetRoomEvents().SerializeEventInfo(CurrentLoadingRoom.RoomId);
}
foreach (RoomUser User in CurrentLoadingRoom.GetRoomUserManager().UserList.Values)
{
if (User == null || User.IsSpectator)
continue;
if (User.IsBot)
{
if (User.BotData.DanceId > 0)
{
Response.Init(Outgoing.Dance);
Response.AppendInt32(User.VirtualId);
Response.AppendInt32(User.BotData.DanceId);
response.appendResponse(GetResponse());
}
}
else
{
if (User.IsDancing)
{
Response.Init(Outgoing.Dance);
Response.AppendInt32(User.VirtualId);
Response.AppendInt32(User.DanceId);
response.appendResponse(GetResponse());
}
}
if (User.IsAsleep)
{
response.appendResponse(new SleepComposer(User, true));
}
if (User.CarryItemID > 0 && User.CarryTimer > 0)
{
Response.Init(Outgoing.ApplyCarryItem);
Response.AppendInt32(User.VirtualId);
Response.AppendInt32(User.CarryTimer);
response.appendResponse(GetResponse());
}
if (!User.IsBot)
{
try
{
if (User != null && User.GetClient() != null && User.GetClient().GetHabbo() != null)
{
if (User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent() != null && User.CurrentEffect >= 1)
{
Response.Init(Outgoing.ApplyEffects);
Response.AppendInt32(User.VirtualId);
Response.AppendInt32(User.CurrentEffect);
Response.AppendInt32(0);
response.appendResponse(GetResponse());
}
ServerMessage RoomUpdate = new ServerMessage(Outgoing.UpdateUserInformation);
RoomUpdate.AppendInt32(User.VirtualId);
RoomUpdate.AppendString(User.GetClient().GetHabbo().Look);
RoomUpdate.AppendString(User.GetClient().GetHabbo().Gender.ToLower());
RoomUpdate.AppendString(User.GetClient().GetHabbo().Motto);
RoomUpdate.AppendInt32(User.GetClient().GetHabbo().AchievementPoints);
if(CurrentLoadingRoom != null)
CurrentLoadingRoom.SendMessage(RoomUpdate);
}
}
catch (Exception e) { Logging.HandleException(e, "Rooms.SendRoomData3"); }
}
}
response.sendResponse();
CurrentLoadingRoom = null;
}
internal void enterOnRoom()
{
uint Id = Request.PopWiredUInt();
String Password = Request.PopFixedString();
this.PrepareRoomForUser(Id, Password);
}
internal void PrepareRoomForUser(uint Id, string Password)
{
ClearRoomLoading();
QueuedServerMessage response = new QueuedServerMessage(Session.GetConnection());
if (Session == null)
return;
if (SilverwaveEnvironment.ShutdownStarted)
{
Session.SendNotif(LanguageLocale.GetValue("shutdown.alert"));
return;
}
if (Session.GetHabbo().InRoom)
{
Room OldRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (OldRoom != null)
{
if(OldRoom.GetRoomUserManager() != null)
OldRoom.GetRoomUserManager().RemoveUserFromRoom(Session, false, false);
}
}
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().LoadRoom(Id);
if (Room == null)
return;
if (Room.UserCount >= Room.UsersMax && !Session.GetHabbo().HasFuse("fuse_enter_full_rooms"))
{
if (Session.GetHabbo().Id != Room.OwnerId)
{
// This rom is full!!
ServerMessage msg = new ServerMessage(Outgoing.RoomErrorToEnter);
msg.AppendInt32(1);
//Session.SendMessage(msg);
ServerMessage msg2 = new ServerMessage(Outgoing.OutOfRoom);
Session.SendMessage(msg2);
return;
}
}
if (Room == null || Session == null || Session.GetHabbo() == null)
return;
if (Session.GetHabbo().IsTeleporting && Session.GetHabbo().TeleportingRoomID != Id)
return;
Session.GetHabbo().LoadingRoom = Id;
CurrentLoadingRoom = Room;
if (!Session.GetHabbo().HasFuse("fuse_enter_any_room") && Room.UserIsBanned(Session.GetHabbo().Id))
{
if (Room.HasBanExpired(Session.GetHabbo().Id))
{
Room.RemoveBan(Session.GetHabbo().Id);
}
else
{
// You are banned of this room!
// C`PA
// Response.Init(Outgoing.RoomErrorToEnter);
//Response.AppendInt32(4);
//response.appendResponse(GetResponse());
Session.SendNotif("You are banned from this room");
Response.Init(Outgoing.OutOfRoom);
response.appendResponse(GetResponse());
response.sendResponse();
return;
}
}
Response.Init(Outgoing.PrepareRoomForUsers);
response.appendResponse(GetResponse());
if (!Session.GetHabbo().HasFuse("fuse_enter_any_room") && !Room.CheckRights(Session, true, true) && !Session.GetHabbo().IsTeleporting && !Session.GetHabbo().IsHopping)
{
if (Room.State == 1)
{
if (Room.UserCount == 0)
{
Response.Init(Outgoing.DoorBellNoPerson);
response.appendResponse(GetResponse());
}
else
{
Response.Init(Outgoing.Doorbell);
Response.AppendString("");
response.appendResponse(GetResponse());
ServerMessage RingMessage = new ServerMessage(Outgoing.Doorbell);
RingMessage.AppendString(Session.GetHabbo().Username);
Room.SendMessageToUsersWithRights(RingMessage);
}
response.sendResponse();
return;
}
else if (Room.State == 2)
{
if (Password.ToLower() != Room.Password.ToLower())
{
Response.Init(Outgoing.OutOfRoom);
response.appendResponse(GetResponse());
response.sendResponse();
return;
}
}
}
Session.GetHabbo().LoadingChecksPassed = true;
response.addBytes(LoadRoomForUser().getPacket);
//LoadRoomForUser();
response.sendResponse();
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
dbClient.runFastQuery("INSERT INTO user_roomvisits (user_id,room_id,entry_timestamp,exit_timestamp,hour,minute) VALUES ('" + Session.GetHabbo().Id + "','" + Id + "','" + SilverwaveEnvironment.GetUnixTimestamp() + "','0','" + DateTime.Now.Hour + "','" + DateTime.Now.Minute + "');" +
"UPDATE user_stats SET RoomVisits = RoomVisits + 1 WHERE id = " + Session.GetHabbo().Id);
}
internal void ReqLoadRoomForUser()
{
LoadRoomForUser().sendResponse();
}
internal QueuedServerMessage LoadRoomForUser()
{
Room Room = CurrentLoadingRoom;
QueuedServerMessage response = new QueuedServerMessage(Session.GetConnection());
if (Room == null || !Session.GetHabbo().LoadingChecksPassed)
return response;
if (Session.GetHabbo().FavouriteGroup > 0)
{
if (CurrentLoadingRoom.Group != null && !(CurrentLoadingRoom.LoadedGroups.ContainsKey(CurrentLoadingRoom.Group.Id)))
CurrentLoadingRoom.LoadedGroups.Add(CurrentLoadingRoom.Group.Id, CurrentLoadingRoom.Group.Badge);
if (!CurrentLoadingRoom.LoadedGroups.ContainsKey(Session.GetHabbo().FavouriteGroup))
{
if (SilverwaveEnvironment.GetGame().GetGroupManager().GetGroup(Session.GetHabbo().FavouriteGroup) != null)
CurrentLoadingRoom.LoadedGroups.Add(Session.GetHabbo().FavouriteGroup, SilverwaveEnvironment.GetGame().GetGroupManager().GetGroup(Session.GetHabbo().FavouriteGroup).Badge);
}
}
Response.Init(Outgoing.SerializeRoomBadges);
Response.AppendInt32(CurrentLoadingRoom.LoadedGroups.Count);
foreach (KeyValuePair<uint, string> Group in CurrentLoadingRoom.LoadedGroups)
{
Response.AppendInt32(Group.Key);
Response.AppendString(Group.Value);
}
response.appendResponse(GetResponse());
Response.Init(Outgoing.InitialRoomInformation);
Response.AppendString(Room.ModelName);
Response.AppendInt32(Room.RoomId);
response.appendResponse(GetResponse());
if (Session.GetHabbo().SpectatorMode)
{
Response.Init(Outgoing.SpectatorMode);
response.appendResponse(GetResponse());
}
if (Room.Wallpaper != "0.0")
{
Response.Init(Outgoing.RoomDecoration);
Response.AppendString("wallpaper");
Response.AppendString(Room.Wallpaper);
response.appendResponse(GetResponse());
}
if (Room.Floor != "0.0")
{
Response.Init(Outgoing.RoomDecoration);
Response.AppendString("floor");
Response.AppendString(Room.Floor);
response.appendResponse(GetResponse());
}
Response.Init(Outgoing.RoomDecoration);
Response.AppendString("landscape");
Response.AppendString(Room.Landscape);
response.appendResponse(GetResponse());
if (Room.CheckRights(Session, true))
{
Response.Init(Outgoing.RoomRightsLevel);
Response.AppendInt32(4);
response.appendResponse(GetResponse());
Response.Init(Outgoing.HasOwnerRights);
response.appendResponse(GetResponse());
}
else if (Room.CheckRights(Session))
{
Response.Init(Outgoing.RoomRightsLevel);
Response.AppendInt32(1);
response.appendResponse(GetResponse());
}
else
{
Response.Init(Outgoing.RoomRightsLevel);
Response.AppendInt32(0);
response.appendResponse(GetResponse());
}
Response.Init(Outgoing.RateRoom);
Response.AppendInt32(Room.Score);
Response.AppendBoolean(!(Session.GetHabbo().RatedRooms.Contains(Room.RoomId) || Room.CheckRights(Session, true)));
response.appendResponse(GetResponse());
return response;
}
internal void ClearRoomLoading()
{
Session.GetHabbo().LoadingRoom = 0;
Session.GetHabbo().LoadingChecksPassed = false;
}
internal void Talk()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
int color = Request.PopWiredInt32();
User.Chat(Session, Request.PopFixedString(), false, color, Request.PopWiredInt32());
}
internal void Shout()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
int color = Request.PopWiredInt32();
User.Chat(Session, Request.PopFixedString(), true, Request.PopWiredInt32());
}
internal void Whisper()
{
if (Session == null || Session.GetHabbo() == null)
return;
Room Room = Session.GetHabbo().CurrentRoom;
if (Room == null)
{
return;
}
if (Room.MutedUsers.ContainsKey(Session.GetHabbo().Id))
{
if (Room.MutedUsers[Session.GetHabbo().Id] > SilverwaveEnvironment.GetUnixTimestamp())
{
Session.SendNotif("You are muted. You cannot whisper.");
return;
}
else
{
Room.MutedUsers.Remove(Session.GetHabbo().Id);
}
}
if (Session.GetHabbo().Muted)
{
Session.SendNotif(LanguageLocale.GetValue("user.ismuted"));
return;
}
if (Room.RoomMuted)
return;
string Params = Request.PopFixedString();
string ToUser = Params.Split(' ')[0];
string Message = Params.Substring(ToUser.Length + 1);
int Bubble = Request.PopWiredInt32();
Message = LanguageLocale.FilterSwearwords(Message);
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
RoomUser User2 = Room.GetRoomUserManager().GetRoomUserByHabbo(ToUser);
ServerMessage TellMsg = new ServerMessage();
//TellMsg.Init(Outgoing.Whisp);
TellMsg.AppendInt32(User.VirtualId);
TellMsg.AppendString(Message);
TellMsg.AppendInt32(0);
//if (Bubble > 0 && !Session.GetHabbo().GetSubscriptionManager().HasSubscription && Session.GetHabbo().Rank < 4)
if (Bubble > 0 && Session.GetHabbo().Rank < 2 && !Session.GetHabbo().VIP)
{
Session.SendNotif("To use coloured chat you must have VIP");
TellMsg.AppendInt32(0);
}
else
{
if (new[] { 21, 22, 20, 19, 18, 17, 16, 10, 9 }.Contains(Bubble) && Session.GetHabbo().Rank < 8)
TellMsg.AppendInt32(0);
else
TellMsg.AppendInt32(Bubble);
}
TellMsg.AppendInt32(0);
TellMsg.AppendInt32(-1);
if (User != null && !User.IsBot)
{
User.GetClient().SendMessage(TellMsg);
if (User2 != null && !User2.IsBot && User2.GetClient() != null && User2.GetClient().GetHabbo() !=null)
{
if(Room.IsWorkingChat)
Room.Added.Add(new Chatlog(User.HabboId, "<Whisper to " + User2.GetClient().GetHabbo().Username + ">: " + Message, SilverwaveEnvironment.GetUnixTimestamp()));
else
Room.RoomChat.Add(new Chatlog(User.HabboId, "<Whisper to " + User2.GetClient().GetHabbo().Username + ">: " + Message, SilverwaveEnvironment.GetUnixTimestamp()));
}
}
User.UnIdle();
if (User2 != null && !User2.IsBot && User2.userID != User.userID)
{
if (User2.GetClient().GetHabbo().DisableWhisper)
{
User.GetClient().SendWhisper("This user does not allow whispers");
return;
}
else
{
if (!User2.GetClient().GetHabbo().MutedUsers.Contains(Session.GetHabbo().Id))
User2.GetClient().SendMessage(TellMsg);
}
}
TimeSpan SinceLastMessage = DateTime.Now - FloodTime;
if (SinceLastMessage.Seconds > 4)
FloodCount = 0;
if (SinceLastMessage.Seconds < 4 && FloodCount > 5 && Session.GetHabbo().Rank < 5)
{
Session.GetHabbo().FloodTime = SilverwaveEnvironment.GetUnixTimestamp() + 30;
ServerMessage Packet = new ServerMessage(Outgoing.FloodFilter);
Packet.AppendInt32(30); //Blocked for 30sec
User.GetClient().SendMessage(Packet);
return;
}
FloodTime = DateTime.Now;
FloodCount++;
List<RoomUser> ToNotify = Room.GetRoomUserManager().GetRoomUserByRank(4);
if (ToNotify.Count > 0)
{
TellMsg = new ServerMessage();
foreach (RoomUser user in ToNotify)
{
if (user != null)
{
if (user.HabboId != User2.HabboId && user.HabboId != User.HabboId && user.GetClient() != null)
{
user.GetClient().SendMessage(TellMsg);
}
}
}
}
}
internal void Move()
{
Room Room = Session.GetHabbo().CurrentRoom;
RoomUser User;
if (Room == null)
{
return;
}
User = Room.GetRoomUserManager().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);
}
internal void CanCreateRoom()
{
Response.Init(Outgoing.CanCreateRoom);
Response.AppendInt32((Session.GetHabbo().UsersRooms.Count >= 150) ? 1 : 0);
Response.AppendInt32(150); // Limit
SendResponse();
}
internal void CreateRoom()
{
string RoomName = 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 = SilverwaveEnvironment.GetGame().GetRoomManager().CreateRoom(Session, RoomName, ModelName);
if (NewRoom != null)
{
Response.Init(Outgoing.OnCreateRoomInfo);
Response.AppendInt32(NewRoom.Id);
Response.AppendString(NewRoom.Name);
SendResponse();
}
}
internal void GetRoomEditData()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Convert.ToUInt32(Request.PopWiredInt32()));
GetResponse().Init(Outgoing.GetRoomDataForEdit);
GetResponse().AppendInt32(Room.RoomId);
GetResponse().AppendString(Room.Name);
GetResponse().AppendString(Room.Description);
GetResponse().AppendInt32(Room.State);
GetResponse().AppendInt32(Room.Category);
GetResponse().AppendInt32(Room.UsersMax);
GetResponse().AppendInt32(((Room.RoomData.Model.MapSizeX * Room.RoomData.Model.MapSizeY) > 100) ? 50 : 25); // Max can be elected
GetResponse().AppendInt32(Room.TagCount);
foreach (string Tag in Room.Tags.ToArray())
{
GetResponse().AppendString(Tag);
}
GetResponse().AppendInt32(Room.CanTradeInRoom ? 2 : 0); // trade
GetResponse().AppendInt32(Room.AllowPets); // allows pets in room - pet system lacking, so always off
GetResponse().AppendInt32(Room.AllowPetsEating); // allows pets to eat your food - pet system lacking, so always off
GetResponse().AppendInt32(Room.AllowWalkthrough);
GetResponse().AppendInt32(Room.Hidewall);
GetResponse().AppendInt32(Room.WallThickness);
GetResponse().AppendInt32(Room.FloorThickness);
GetResponse().AppendInt32(Room.ChatType);
GetResponse().AppendInt32(Room.ChatBalloon);
GetResponse().AppendInt32(Room.ChatSpeed);
GetResponse().AppendInt32(Room.ChatMaxDistance);
GetResponse().AppendInt32(Room.ChatFloodProtection);
GetResponse().AppendInt32(Room.WhoCanMute);
GetResponse().AppendInt32(Room.WhoCanKick);
GetResponse().AppendInt32(Room.WhoCanBan); // who can ban
SendResponse();
}
internal void RoomSettingsOkComposer(uint roomId)
{
GetResponse().Init(Outgoing.RoomSettingsOkComposer);
GetResponse().AppendInt32(roomId);
SendResponse();
}
internal void RoomUpdatedOkComposer(uint roomId)
{
GetResponse().Init(Outgoing.RoomUpdatedOkComposer);
GetResponse().AppendInt32(roomId);
SendResponse();
}
internal ServerMessage RoomFloorAndWallComposer(Room room)
{
//Habbo owner = SilverwaveEnvironment.getHabboForId((uint)room.OwnerId);
//if (owner.GetSubscriptionManager().HasSubscription)
{
ServerMessage m = new ServerMessage(Outgoing.RoomFloorAndWallComposer);
m.AppendBoolean(room.Hidewall == 1);
m.AppendInt32(room.WallThickness);
m.AppendInt32(room.FloorThickness);
return m;
}
}
internal ServerMessage SerializeRoomChatOption(Room room)
{
ServerMessage m = new ServerMessage(Outgoing.RoomChatOptionsComposer);
m.AppendInt32(room.ChatType); //ChatMode, ChatSize, ChatSpeed, HearingDistance, ExtraFlood is the order.
m.AppendInt32(room.ChatBalloon);
m.AppendInt32(room.ChatSpeed);
m.AppendInt32(room.ChatMaxDistance);
m.AppendInt32(room.ChatFloodProtection);
return m;
}
internal void ParseRoomDataInformation()
{
uint roomId = Request.PopWiredUInt();
int backward = Request.PopWiredInt32();
int forward = Request.PopWiredInt32();
Room r = SilverwaveEnvironment.GetGame().GetRoomManager().LoadRoom(roomId);
if ((backward == 0) && (forward == 1))
{
SerializeRoomInformation(r, false);
//this.Session.GetHabbo().RoomFowards.Add(roomId);
}
else if ((backward == 1) && (forward == 0))
{
SerializeRoomInformation(r, true);
//this.Session.GetHabbo().RoomFowards.Remove(roomId);
}
else
SerializeRoomInformation(r,true);
}
internal void SerializeRoomInformation(Room Room, bool show)//ill debug it, second,
{
GetResponse().Init(Outgoing.RoomData);
GetResponse().AppendBoolean(show);
GetResponse().AppendInt32(Room.RoomId);
GetResponse().AppendString(Room.Name);
GetResponse().AppendBoolean(Room.Type == "private");
GetResponse().AppendInt32(Room.OwnerId);
GetResponse().AppendString(Room.Owner);
GetResponse().AppendInt32(Room.State);
GetResponse().AppendInt32(Room.UsersNow);
GetResponse().AppendInt32(Room.UsersMax);
GetResponse().AppendString(Room.Description);
GetResponse().AppendInt32(0); //unused, let be 0
GetResponse().AppendInt32(Room.CanTradeInRoom ? 2 : 0);
GetResponse().AppendInt32(Room.Score);
GetResponse().AppendInt32(0); // visible for rank > x
GetResponse().AppendInt32(Room.Category);
if(Room.GroupId > 0)
{
GetResponse().AppendInt32(Room.Group.Id);
GetResponse().AppendString(Room.Group.Name);
GetResponse().AppendString(Room.Group.Badge);
Response.AppendString("");
}
else
{
GetResponse().AppendInt32(0);
GetResponse().AppendString("");
GetResponse().AppendString("");
GetResponse().AppendString("");
}
GetResponse().AppendInt32(Room.TagCount);
foreach (string Tag in Room.Tags.ToArray())
{
GetResponse().AppendString(Tag);
}
//GUESTROOM THUMBNAIL^? disabled
GetResponse().AppendInt32(0); //
GetResponse().AppendInt32(0); //
GetResponse().AppendInt32(0);
//GetResponse().AppendInt32(0); loop
//GUESROOM THUBNAILS ^
GetResponse().AppendBoolean(Room.AllowPets==1);
GetResponse().AppendBoolean(Room.AllowPetsEating==1);
GetResponse().AppendString(""); // EVENT related stuff
GetResponse().AppendString(""); // EVENT related stuff
GetResponse().AppendInt32(0); // EVENT Time Left, in minutes
GetResponse().AppendBoolean(!(Room.RoomId==this.Session.GetHabbo().CurrentRoomId)); //forwarding
GetResponse().AppendBoolean(false);
GetResponse().AppendBoolean(false);
GetResponse().AppendBoolean(false);
GetResponse().AppendInt32(Room.WhoCanMute); // who can mute
GetResponse().AppendInt32(Room.WhoCanKick); // who can kick
GetResponse().AppendInt32(Room.WhoCanBan); // who can ban
GetResponse().AppendBoolean(Room.CheckRights(Session, true));
GetResponse().AppendInt32(Room.ChatType); //ChatMode, ChatSize, ChatSpeed, HearingDistance, ExtraFlood is the order.
GetResponse().AppendInt32(Room.ChatBalloon);
GetResponse().AppendInt32(Room.ChatSpeed);
GetResponse().AppendInt32(Room.ChatMaxDistance);
GetResponse().AppendInt32(Room.ChatFloodProtection);
SendResponse();
if (Room.Group == null)
{
DataTable Table;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("SELECT user_id FROM room_rights WHERE room_id=" + Room.RoomId);
Table = dbClient.getTable();
}
Response.Init(Outgoing.LoadRoomRightsList);
GetResponse().AppendInt32(Room.RoomData.Id);
GetResponse().AppendInt32(Table.Rows.Count);
foreach (DataRow i in Table.Rows)
{
Habbo xUser = SilverwaveEnvironment.getHabboForId((uint)i[0]);
if (xUser != null)
{
GetResponse().AppendInt32(xUser.Id);
GetResponse().AppendString(xUser.Username);
}
}
SendResponse();
}
}
internal void SaveRoomData()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
RoomData oldRoomData = Room.RoomData;
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
int Id = Request.PopWiredInt32();
string Name = Request.PopFixedString();
string Description = Request.PopFixedString();
int State = Request.PopWiredInt32();
string Password = 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 = Request.PopFixedString().ToLower();
Tags.Add(tag);
formattedTags.Append(tag);
}
int undef = Request.PopWiredInt32(); //roommoderation ?
int AllowPets = Convert.ToInt32(SilverwaveEnvironment.BoolToEnum(Request.PopWiredBoolean()));
int AllowPetsEat = Convert.ToInt32(SilverwaveEnvironment.BoolToEnum(Request.PopWiredBoolean()));
int AllowWalkthrough = Convert.ToInt32(SilverwaveEnvironment.BoolToEnum(Request.PopWiredBoolean()));
int Hidewall = Convert.ToInt32(SilverwaveEnvironment.BoolToEnum(Request.PopWiredBoolean()));
int WallThickness = Request.PopWiredInt32();
int FloorThickness = Request.PopWiredInt32();
int WhoMute = Request.PopWiredInt32();
int WhoKick = Request.PopWiredInt32();
int WhoBan = Request.PopWiredInt32();
int ChatType = Request.PopWiredInt32();
int ChatBalloon = Request.PopWiredInt32();
int ChatSpeed = Request.PopWiredInt32();
int ChatMaxDistance = Request.PopWiredInt32();
int ChatFloodProtection = Request.PopWiredInt32();
if (WallThickness < -2 || WallThickness > 1)
WallThickness = 0;
if (FloorThickness < -2 || FloorThickness > 1)
FloorThickness = 0;
if (Name.Length < 1)
return;
if (State < 0 || State > 2)
return;
if (MaxUsers < 0)
{
return;
}
if (ChatMaxDistance > 99)
ChatMaxDistance = 99;
FlatCat FlatCat = SilverwaveEnvironment.GetGame().GetNavigator().GetFlatCat(CategoryId);
if (FlatCat == null)
{
return;
}
if (FlatCat.MinRank > Session.GetHabbo().Rank)
{
Session.SendNotif(LanguageLocale.GetValue("user.roomdata.rightserror"));
CategoryId = 0;
}
if (TagCount > 2)
{
return;
}
Room.AllowPets = AllowPets;
Room.AllowPetsEating = AllowPetsEat;
Room.AllowWalkthrough = AllowWalkthrough;
Room.Hidewall = Hidewall;
Room.RoomData.AllowPets = AllowPets;
Room.RoomData.AllowPetsEating = AllowPetsEat;
Room.RoomData.AllowWalkthrough = AllowWalkthrough;
Room.RoomData.Hidewall = Hidewall;
Room.Name = Name;
Room.State = State;
Room.Description = Description;
Room.Category = CategoryId;
Room.Password = Password;
Room.RoomData.Name = Name;
Room.RoomData.State = State;
Room.RoomData.Description = Description;
Room.RoomData.Category = CategoryId;
Room.RoomData.Password = Password;
Room.WhoCanBan = WhoBan;
Room.WhoCanKick = WhoKick;
Room.WhoCanMute = WhoMute;
Room.RoomData.WhoCanBan = WhoBan;
Room.RoomData.WhoCanKick = WhoKick;
Room.RoomData.WhoCanMute = WhoMute;
Room.ClearTags();
Room.AddTagRange(Tags);
Room.UsersMax = MaxUsers;
Room.RoomData.Tags.Clear();
Room.RoomData.Tags.AddRange(Tags);
Room.RoomData.UsersMax = MaxUsers;
Room.WallThickness = WallThickness;
Room.FloorThickness = FloorThickness;
Room.RoomData.WallThickness = WallThickness;
Room.RoomData.FloorThickness = FloorThickness;
Room.ChatType = ChatType;
Room.ChatBalloon = ChatBalloon;
Room.ChatSpeed = ChatSpeed;
Room.ChatMaxDistance = ChatMaxDistance;
Room.ChatFloodProtection = ChatFloodProtection;
Room.RoomData.ChatType = ChatType;
Room.RoomData.ChatBalloon = ChatBalloon;
Room.RoomData.ChatSpeed = ChatSpeed;
Room.RoomData.ChatMaxDistance = ChatMaxDistance;
Room.RoomData.ChatFloodProtection = ChatFloodProtection;
this.RoomSettingsOkComposer(Room.RoomId);
this.RoomUpdatedOkComposer(Room.RoomId);
Session.GetHabbo().CurrentRoom.SendMessage(RoomFloorAndWallComposer(Room));
Session.GetHabbo().CurrentRoom.SendMessage(SerializeRoomChatOption(Room));
Room.RoomData.SerializeRoomData(Response, false, Session, true);
}
internal void GetBannedUsers()
{
uint RoomId = Request.PopWiredUInt();
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(RoomId);
if (Room == null)
return;
List<uint> Bans = Room.BannedUsers();
Response.Init(Outgoing.GetRoomBannedUsers);
Response.AppendInt32(RoomId);
Response.AppendInt32(Bans.Count); // Count
foreach (uint Ban in Bans)
{
Response.AppendInt32(Ban); // Id
if (SilverwaveEnvironment.getHabboForId(Ban) != null)
Response.AppendString(SilverwaveEnvironment.getHabboForId(Ban).Username); // Name
else
Response.AppendString("Undefined");
}
SendResponse();
}
internal void UsersWithRights()
{
Response.Init(Outgoing.LoadRoomRightsList);
Response.AppendInt32(Session.GetHabbo().CurrentRoom.RoomId);
Response.AppendInt32(Session.GetHabbo().CurrentRoom.UsersWithRights.Count);
foreach (uint User in Session.GetHabbo().CurrentRoom.UsersWithRights)
{
Habbo Hab = SilverwaveEnvironment.getHabboForId(User);
Response.AppendInt32(User);
Response.AppendString((Hab == null) ? "Undefined" : Hab.Username);
}
SendResponse();
}
internal void UnbanUser()
{
uint UserId = Request.PopWiredUInt();
uint RoomId = Request.PopWiredUInt();
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(RoomId);
if (Room == null)
return;
Room.Unban(UserId);
Response.Init(Outgoing.UnbanUser);
Response.AppendInt32(RoomId);
Response.AppendInt32(UserId);
SendResponse();
}
internal void GiveRights()
{
uint UserId = Request.PopWiredUInt();
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
return;
RoomUser RoomUser = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
if (Room.UsersWithRights.Contains(UserId))
{
Session.SendNotif(LanguageLocale.GetValue("user.giverights.error"));
return;
}
Room.UsersWithRights.Add(UserId);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("INSERT INTO room_rights (room_id,user_id) VALUES (" + Room.RoomId + "," + UserId + ")");
}
if (RoomUser != null && !RoomUser.IsBot)
{
Response.Init(Outgoing.GivePowers);
Response.AppendInt32(Room.RoomId);
Response.AppendInt32(RoomUser.GetClient().GetHabbo().Id);
Response.AppendString(RoomUser.GetClient().GetHabbo().Username);
SendResponse();
//RoomUser.AddStatus("flatctrl", "");
RoomUser.UpdateNeeded = true;
if (RoomUser != null && !RoomUser.IsBot)
{
RoomUser.AddStatus("flatctrl 1", "");
Response.Init(Outgoing.RoomRightsLevel);
Response.AppendInt32(1);
RoomUser.GetClient().SendMessage(GetResponse());
}
}
UsersWithRights();
}
internal void TakeRights()
{
Room Room = SilverwaveEnvironment.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();
if (Room.UsersWithRights.Contains(UserId))
Room.UsersWithRights.Remove(UserId);
DeleteParams.Append("room_id = '" + Room.RoomId + "' AND user_id = '" + UserId + "'");
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId);
if (User != null && !User.IsBot)
{
Response.Init(Outgoing.RoomRightsLevel);
Response.AppendInt32(0);
User.GetClient().SendMessage(GetResponse());
User.RemoveStatus("flatctrl 1");
User.UpdateNeeded = true;
}
// GhntX]hqu@U
Response.Init(Outgoing.RemovePowers);
Response.AppendInt32(Room.RoomId);
Response.AppendInt32(UserId);
SendResponse();
}
UsersWithRights();
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("DELETE FROM room_rights WHERE " + DeleteParams.ToString());
}
}
internal void TakeAllRights()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
DataTable Ta;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("SELECT user_id FROM room_rights WHERE room_id=" + Room.RoomId);
Ta = dbClient.getTable();
}
foreach (DataRow Row in Ta.Rows)
{
uint UserId = (uint)Row[0];
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId);
Response.Init(Outgoing.RemovePowers);
Response.AppendInt32(Room.RoomId);
Response.AppendInt32(UserId);
SendResponse();
if (User != null && !User.IsBot)
{
Response.Init(Outgoing.RoomRightsLevel);
Response.AppendInt32(0);
User.GetClient().SendMessage(GetResponse());
User.RemoveStatus("flatctrl 1");
User.UpdateNeeded = true;
}
}
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("DELETE FROM room_rights WHERE room_id = " + Room.RoomId);
}
Room.UsersWithRights.Clear();
UsersWithRights();
}
internal void KickUser()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
if (!Room.CheckRights(Session) && Room.WhoCanKick != 2)
{
return; // insufficient permissions
}
uint UserId = Request.PopWiredUInt();
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId);
if (User == null || User.IsBot)
{
return;
}
if (Room.CheckRights(User.GetClient(), true) || User.GetClient().GetHabbo().HasFuse("fuse_mod") || User.GetClient().GetHabbo().HasFuse("fuse_no_kick"))
{
return; // can't kick room owner or mods!
}
Room.GetRoomUserManager().RemoveUserFromRoom(User.GetClient(), true, true);
User.GetClient().CurrentRoomUserID = -1;
}
internal void BanUser()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || ((Room.WhoCanBan == 0 && !Room.CheckRights(Session, true)) || (Room.WhoCanBan == 1 && !Room.CheckRights(Session))))
{
return; // insufficient permissions
}
int UserId = Request.PopWiredInt32();
uint RoomId = Request.PopWiredUInt();
string R = Request.PopFixedString();
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Convert.ToUInt32(UserId));
if (User == null || User.IsBot)
{
return;
}
if (User.GetClient().GetHabbo().HasFuse("fuse_mod") || User.GetClient().GetHabbo().HasFuse("fuse_no_kick"))
{
return;
}
long Time = 0;
if (R.ToLower().Contains("hour"))
Time = 3600;
else if (R.ToLower().Contains("day"))
Time = 86400;
else if (R.ToLower().Contains("perm"))
Time = 788922000;
Room.AddBan(UserId, Time);
Room.GetRoomUserManager().RemoveUserFromRoom(User.GetClient(), true, true);
Session.CurrentRoomUserID = -1;
}
internal void SetHomeRoom()
{
uint RoomId = Request.PopWiredUInt();
RoomData Data = SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(RoomId);
if (RoomId != 0)
{
if (Data == null)
{
return;
}
}
Session.GetHabbo().HomeRoom = RoomId;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("UPDATE users SET home_room = " + RoomId + " WHERE id = " + Session.GetHabbo().Id);
}
Response.Init(Outgoing.HomeRoom);
Response.AppendInt32(RoomId);
Response.AppendInt32(RoomId);
SendResponse();
}
internal void DeleteRoom()
{
uint RoomId = Request.PopWiredUInt();
if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().UsersRooms == null)
return;
//TargetRoom = Session.GetHabbo().CurrentRoom; ;
Room TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(RoomId);
if (TargetRoom == null)
return;
if (TargetRoom.Owner == Session.GetHabbo().Username || Session.GetHabbo().Rank > 6)
{
if (this.Session.GetHabbo().GetInventoryComponent() != null)
{
this.Session.GetHabbo().GetInventoryComponent().AddItemArray(TargetRoom.GetRoomItemHandler().RemoveAllFurniture(Session));
}
RoomData data = TargetRoom.RoomData;
SilverwaveEnvironment.GetGame().GetRoomManager().UnloadRoom(TargetRoom);
SilverwaveEnvironment.GetGame().GetRoomManager().QueueVoteRemove(data);
if (data == null || Session == null)
{
return;
}
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("DELETE FROM rooms WHERE id = " + RoomId);
dbClient.runFastQuery("DELETE FROM user_favorites WHERE room_id = " + RoomId);
dbClient.runFastQuery("DELETE FROM items WHERE room_id = " + RoomId);
dbClient.runFastQuery("DELETE FROM room_rights WHERE room_id = " + RoomId);
dbClient.runFastQuery("UPDATE users SET home_room = '0' WHERE home_room = " + RoomId);
}
if (Session.GetHabbo().Rank > 5 && Session.GetHabbo().Username != data.Owner)
{
SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, data.Name, "Room deletion", string.Format("Deleted room ID {0}", data.Id));
}
RoomData removedRoom = (from p in Session.GetHabbo().UsersRooms
where p.Id == RoomId
select p).SingleOrDefault();
if (removedRoom != null)
Session.GetHabbo().UsersRooms.Remove(removedRoom);
}
}
internal void LookAt()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserManager().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, false);
User.UpdateNeeded = true;
if (User.RidingHorse)
{
//RoomBot Horse = SilverwaveEnvironment.GetGame().GetBotManager().GetBot(User.HorseID);
RoomUser Horse = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByVirtualId(Convert.ToInt32(User.HorseID));
Horse.SetRot(Rot, false);
Horse.UpdateNeeded = true;
}
}
internal void StartTyping()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
ServerMessage Message = new ServerMessage(Outgoing.TypingStatus);
Message.AppendInt32(User.VirtualId);
Message.AppendInt32(1);
Room.SendMessage(Message);
}
internal void StopTyping()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
ServerMessage Message = new ServerMessage(Outgoing.TypingStatus);
Message.AppendInt32(User.VirtualId);
Message.AppendInt32(0);
Room.SendMessage(Message);
}
internal void IgnoreUser()
{
Room Room = Session.GetHabbo().CurrentRoom;
if (Room == null)
return;
String username = Request.PopFixedString();
Habbo user = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(username).GetHabbo();
if (user == null)
return;
if (Session.GetHabbo().MutedUsers.Contains(user.Id) || user.Rank > 4)
return;
Session.GetHabbo().MutedUsers.Add(user.Id);
Response.Init(Outgoing.UpdateIgnoreStatus);
Response.AppendInt32(1);
Response.AppendString(username);
SendResponse();
}
internal void UnignoreUser()
{
Room Room = Session.GetHabbo().CurrentRoom;
if (Room == null)
return;
String username = Request.PopFixedString();
Habbo user = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(username).GetHabbo();
if (user == null)
return;
if (!Session.GetHabbo().MutedUsers.Contains(user.Id))
return;
Session.GetHabbo().MutedUsers.Remove(user.Id);
Response.Init(Outgoing.UpdateIgnoreStatus);
Response.AppendInt32(3);
Response.AppendString(username);
SendResponse();
}
internal void CanCreateRoomEvent()
{
Room Room = SilverwaveEnvironment.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;
}
//Response.Init(Outgoing.CanCreateEvent);
Response.AppendBoolean(Allow);
Response.AppendInt32(ErrorCode);
//SendResponse();
}
internal void Sign()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
User.UnIdle();
int SignId = Request.PopWiredInt32();
User.AddStatus("sign", Convert.ToString(SignId));
User.UpdateNeeded = true;
User.SignTime = SilverwaveEnvironment.GetUnixTimestamp() + 5;
}
internal void GetUserTags()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Request.PopWiredUInt());
if (User == null || User.IsBot)
{
return;
}
Response.Init(Outgoing.GetUserTags);
Response.AppendInt32(User.GetClient().GetHabbo().Id);
Response.AppendInt32(User.GetClient().GetHabbo().Tags.Count);
foreach (string Tag in User.GetClient().GetHabbo().Tags)
{
Response.AppendString(Tag);
}
SendResponse();
}
internal void GetUserBadges()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Request.PopWiredUInt());
if (User == null || User.IsBot)
return;
if (User.GetClient() == null)
return;
Response.Init(Outgoing.GetUserBadges);
Response.AppendInt32(User.GetClient().GetHabbo().Id);
Response.AppendInt32(User.GetClient().GetHabbo().GetBadgeComponent().EquippedCount);
foreach (Badge Badge in User.GetClient().GetHabbo().GetBadgeComponent().BadgeList.Values)
{
if (Badge.Slot <= 0)
{
continue;
}
Response.AppendInt32(Badge.Slot);
Response.AppendString(Badge.Code);
}
SendResponse();
}
internal void RateRoom()
{
Room Room = SilverwaveEnvironment.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--;
Room.RoomData.Score--;
break;
case 1:
Room.Score++;
Room.RoomData.Score++;
break;
default:
return;
}
SilverwaveEnvironment.GetGame().GetRoomManager().QueueVoteAdd(Room.RoomData);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("UPDATE rooms SET score = " + Room.Score + " WHERE id = " + Room.RoomId);
}
Session.GetHabbo().RatedRooms.Add(Room.RoomId);
Response.Init(Outgoing.RateRoom);
Response.AppendInt32(Room.Score);
Response.AppendBoolean(Room.CheckRights(Session, true));
SendResponse();
}
internal void Dance()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
{
return;
}
User.UnIdle();
int DanceId = Request.PopWiredInt32();
if (DanceId < 0 || DanceId > 4)
{
DanceId = 0;
}
if (DanceId > 0 && User.CarryItemID > 0)
{
User.CarryItem(0);
}
User.DanceId = DanceId;
ServerMessage DanceMessage = new ServerMessage(Outgoing.Dance);
DanceMessage.AppendInt32(User.VirtualId);
DanceMessage.AppendInt32(DanceId);
Room.SendMessage(DanceMessage);
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.SOCIAL_DANCE);
if (Room.GetRoomUserManager().GetRoomUsers().Count > 19)
{
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.MASS_DANCE);
}
}
internal void AnswerDoorbell()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session))
{
return;
}
string Name = Request.PopFixedString();
bool Result = Request.PopWiredBoolean();
GameClient Client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Name);
if (Client == null)
{
return;
}
if (Result)
{
Client.GetHabbo().LoadingChecksPassed = true;
Client.GetMessageHandler().Response.Init(Outgoing.ValidDoorBell);
Client.GetMessageHandler().Response.AppendString("");
Client.GetMessageHandler().SendResponse();
}
else
{
if (Client.GetHabbo().CurrentRoomId != Session.GetHabbo().CurrentRoomId)
{
Client.GetMessageHandler().Response.Init(Outgoing.DoorBellNoPerson);
Client.GetMessageHandler().Response.AppendString("");
Client.GetMessageHandler().SendResponse();
}
}
}
internal void ApplyRoomEffect()
{
Room Room = SilverwaveEnvironment.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;
Room.RoomData.Floor = Item.ExtraData;
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.FURNI_DECORATION_FLOOR);
break;
case "wallpaper":
Room.Wallpaper = Item.ExtraData;
Room.RoomData.Wallpaper = Item.ExtraData;
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.FURNI_DECORATION_WALL);
break;
case "landscape":
Room.Landscape = Item.ExtraData;
Room.RoomData.Landscape = Item.ExtraData;
break;
}
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("UPDATE rooms SET " + type + " = @eXtradata WHERE id = " + Room.RoomId);
dbClient.addParameter("extradata", Item.ExtraData);
dbClient.runQuery();
dbClient.runFastQuery("DELETE FROM items WHERE id=" + Item.Id + " LIMIT 1");
}
Session.GetHabbo().GetInventoryComponent().RemoveItem(Item.Id, false);
ServerMessage Message = new ServerMessage(Outgoing.RoomDecoration);
Message.AppendString(type);
Message.AppendString(Item.ExtraData);
Room.SendMessage(Message);
}
internal void PlacePostIt()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session))
{
return;
}
uint itemId = Request.PopWiredUInt();
string locationData = Request.PopFixedString();
UserItem item = Session.GetHabbo().GetInventoryComponent().GetItem(itemId);
if (item == null || Room == null)
return;
try
{
//WallCoordinate coordinate = new WallCoordinate(":" + locationData.Split(':')[1]);
string WallPossition = WallPositionCheck(":" + locationData.Split(':')[1]);
RoomItem RoomItem = new RoomItem(item.Id, Room.RoomId, item.BaseItem, item.ExtraData, WallPossition, Room, Session.GetHabbo().Id, item.GroupId, item.GetBaseItem().FlatId);
if (Room.GetRoomItemHandler().SetWallItem(Session, RoomItem))
{
Session.GetHabbo().GetInventoryComponent().RemoveItem(itemId, true);
}
}
catch
{
Response.Init(516);
Response.AppendInt32(11);
SendResponse();
return;
}
}
internal void PlaceItem()
{
// AZ@J16 10 10 0
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
if (SilverwaveEnvironment.GetDBConfig().DBData["placing_enabled"] != "1")
{
Session.SendNotif("The hotel managers have disabled placing of furniture.");
return;
}
string PlacementData = Request.PopFixedString();
string[] DataBits = PlacementData.Split(' ');
uint ItemId = uint.Parse(DataBits[0].Replace("-", ""));
UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId);
if (Item == null)
{
return;
}
//bool UpdateNeeded = false;
if (Room.GetRoomItemHandler().mFloorItems.Values.Count + Room.GetRoomItemHandler().mWallItems.Values.Count > 3000)
{
Session.SendNotif("You cannot have more than 3000 items in a room!");
return;
}
else if (Item.GetBaseItem().Name.ToLower().Contains("cf") && Room.OwnerId != Session.GetHabbo().Id && Session.GetHabbo().Rank < 4)
{
Session.SendNotif("You cannot place exchange items in other people's rooms!");
return;
}
switch (Item.GetBaseItem().InteractionType)
{
case Silverwave.HabboHotel.Items.InteractionType.dimmer:
{
MoodlightData moodData = Room.MoodlightData;
if (moodData != null && Room.GetRoomItemHandler().GetItem(moodData.ItemId) != null)
{
Session.SendNotif(LanguageLocale.GetValue("user.maxmoodlightsreached"));
return;
}
break;
}
case Silverwave.HabboHotel.Items.InteractionType.roombg:
{
TonerData tonerData = Room.TonerData;
if (tonerData != null && Room.GetRoomItemHandler().GetItem(tonerData.ItemId) != null)
{
Session.SendNotif("You can only have one background toner per room!");
return;
}
break;
}
case Silverwave.HabboHotel.Items.InteractionType.hopper:
{
if (Room.GetRoomItemHandler().HopperCount > 0)
{
Session.SendNotif("You can only have one hopper per room!");
return;
}
break;
}
case Silverwave.HabboHotel.Items.InteractionType.freezetileblock:
{
List<RoomItem> Itms = Room.GetGameMap().GetRoomItemForSquare(int.Parse(DataBits[1]), int.Parse(DataBits[2]));
bool hases = false;
foreach (RoomItem item in Itms)
{
if (item.GetBaseItem().InteractionType == InteractionType.freezetile)
hases = true;
else
continue;
}
if (!hases)
return;
break;
}
case Silverwave.HabboHotel.Items.InteractionType.onewaygate:
case Silverwave.HabboHotel.Items.InteractionType.teleport:
{
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("REPLACE INTO item_tolls(item_id, toll_price) VALUES (" + Item.Id + ", 0)");
}
break;
}
}
if (Room.CheckRights(Session))
{
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("UPDATE items SET user_id=" + Room.OwnerId + " WHERE id=" + Item.Id + " LIMIT 1");
}
if (DataBits[1].StartsWith(":"))
{
try
{
//WallCoordinate coordinate = new WallCoordinate(":" + PlacementData.Split(':')[1]);
string WallPos = WallPositionCheck(":" + PlacementData.Split(':')[1]);
RoomItem RoomItem = new RoomItem(Item.Id, Room.RoomId, Item.BaseItem, Item.ExtraData, WallPos, Room, Convert.ToUInt32(Room.OwnerId),Item.GroupId, Item.GetBaseItem().FlatId);
if (Room.GetRoomItemHandler().SetWallItem(Session, RoomItem))
{
Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId, true);
}
}
catch
{
// Invalid wallitem
/*
Response.Init(516);
Response.AppendInt32(11);
SendResponse();*/
return;
}
}
// 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, X, Y, 0, Rot, Room, Convert.ToUInt32(Room.OwnerId), Item.GroupId, Item.GetBaseItem().FlatId);
if (Room.GetRoomItemHandler().SetFloorItem(Session, RoomItem, X, Y, Rot, true, false, true))
{
Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId, true);
if (RoomItem.IsWired)
{
WiredItem WItem = Room.GetWiredHandler().GenerateNewItem(RoomItem);
Room.GetWiredHandler().SaveWired(WItem);
Room.GetWiredHandler().AddWired(WItem);
}
}
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.FURNI_PLACE);
}
}
else if (Room.CheckRights(Session, true, true))
{
// Wall Item
if (DataBits[1].StartsWith(":"))
{
try
{
//WallCoordinate coordinate = new WallCoordinate(":" + PlacementData.Split(':')[1]);
string WallPos = WallPositionCheck(":" + PlacementData.Split(':')[1]);
RoomItem RoomItem = new RoomItem(Item.Id, Room.RoomId, Item.BaseItem, Item.ExtraData, WallPos, Room, Session.GetHabbo().Id, Item.GroupId, Item.GetBaseItem().FlatId);
if (Room.GetRoomItemHandler().SetWallItem(Session, RoomItem))
{
Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId, true);
}
}
catch
{
// Invalid wallitem
/*
Response.Init(516);
Response.AppendInt32(11);
SendResponse();*/
return;
}
}
// 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, X, Y, 0, Rot, Room, Session.GetHabbo().Id, Item.GroupId,Item.GetBaseItem().FlatId);
if (Room.GetRoomItemHandler().SetFloorItem(Session, RoomItem, X, Y, Rot, true, false, true))
{
Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId, true);
if (RoomItem.IsWired)
{
WiredItem WItem = Room.GetWiredHandler().GenerateNewItem(RoomItem);
Room.GetWiredHandler().AddWired(WItem);
Room.GetWiredHandler().SaveWired(WItem);
}
}
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.FURNI_PLACE);
}
//if (UpdateNeeded)
// Room.SaveFurniture();
}
}
internal void TakeItem()
{
int junk = Request.PopWiredInt32();
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
return;
RoomItem Item = Room.GetRoomItemHandler().GetItem(Request.PopWiredUInt());
if (Item == null)
{
return;
}
if (Item.UserID != Session.GetHabbo().Id)
{
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
}
if (Room.ForSale)
{
Session.SendWhisper("You cannot edit the room whilst it's for sale.");
Session.SendWhisper("Cancel the sale of this room by doing ':sellroom 0' (without '')");
return;
}
if (Item.GetBaseItem().InteractionType == Silverwave.HabboHotel.Items.InteractionType.postit)
return;
Room.GetRoomItemHandler().RemoveFurniture(Session, Item.Id);
Session.GetHabbo().GetInventoryComponent().AddNewItem(Item.Id, Item.BaseItem, Item.ExtraData, Item.GroupId, true, true, 0,0,0);
Session.GetHabbo().GetInventoryComponent().UpdateItems(true);
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.FURNI_PICK);
}
internal void MoveItem()
{
RoomItem Item;
uint ItemId = Request.PopWiredUInt();
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
return;
if (Room.Group != null)
{
if (Room == null)
{
return;
}
else if (!Room.CheckRights(Session, false, true))
{
Item = Room.GetRoomItemHandler().GetItem(ItemId);
if (Item == null)
{
return;
}
ServerMessage Message = new ServerMessage(Outgoing.UpdateItemOnRoom);
Item.Serialize(Message);
Session.SendMessage(Message);
return;
}
}
else
{
if (Room == null || !Room.CheckRights(Session))
{
return;
}
}
Item = Room.GetRoomItemHandler().GetItem(ItemId);
if (Item == null)
{
return;
}
if (Room.ForSale)
{
Session.SendWhisper("You cannot edit the room whilst it's for sale.");
Session.SendWhisper("Cancel the sale of this room by doing ':sellroom 0' (without '')");
ServerMessage Message = new ServerMessage(Outgoing.UpdateItemOnRoom);
Item.Serialize(Message);
Room.SendMessage(Message);
return;
}
int x = Request.PopWiredInt32();
int y = Request.PopWiredInt32();
int Rotation = Request.PopWiredInt32();
int Junk = Request.PopWiredInt32();
bool UpdateNeeded = false;
if (Item.GetBaseItem().InteractionType == Silverwave.HabboHotel.Items.InteractionType.teleport || Item.GetBaseItem().InteractionType == Silverwave.HabboHotel.Items.InteractionType.hopper)
UpdateNeeded = true;
if (x != Item.GetX || y != Item.GetY)
{
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.FURNI_MOVE);
}
if (Rotation != Item.Rot)
{
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.FURNI_ROTATE);
}
if (!Room.GetRoomItemHandler().SetFloorItem(Session, Item, x, y, Rotation, false, false, true))
{
ServerMessage Message = new ServerMessage(Outgoing.UpdateItemOnRoom);
Item.Serialize(Message);
Room.SendMessage(Message);
return;
}
if (Item.GetZ >= 0.1)
{
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.FURNI_STACK);
}
if (UpdateNeeded)
{
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
Room.GetRoomItemHandler().SaveFurniture(dbClient);
}
}
}
public string WallPositionCheck(string wallPosition)
{
//:w=3,2 l=9,63 l
try
{
if (wallPosition.Contains(Convert.ToChar(13)))
{ return null; }
if (wallPosition.Contains(Convert.ToChar(9)))
{ return null; }
string[] posD = wallPosition.Split(' ');
if (posD[2] != "l" && posD[2] != "r")
return null;
string[] widD = posD[0].Substring(3).Split(',');
int widthX = int.Parse(widD[0]);
int widthY = int.Parse(widD[1]);
if (widthX < 0 || widthY < 0 || widthX > 200 || widthY > 200)
return null;
string[] lenD = posD[1].Substring(2).Split(',');
int lengthX = int.Parse(lenD[0]);
int lengthY = int.Parse(lenD[1]);
if (lengthX < 0 || lengthY < 0 || lengthX > 200 || lengthY > 200)
return null;
return ":w=" + widthX + "," + widthY + " " + "l=" + lengthX + "," + lengthY + " " + posD[2];
}
catch
{
return null;
}
}
internal void MoveWallItem()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session))
{
return;
}
uint itemID = Request.PopWiredUInt();
string wallPositionData = Request.PopFixedString();
RoomItem Item = Room.GetRoomItemHandler().GetItem(itemID);
if (Item == null)
return;
try
{
string WallPos = WallPositionCheck(":" + wallPositionData.Split(':')[1]);
Item.wallCoord = WallPos;
}
catch
{
// invalid pos
/*
Response.Init(516);
Response.AppendInt32(11);
SendResponse();*/
return;
}
Room.GetRoomItemHandler().UpdateItem(Item);
/*ServerMessage LeaveMessage = new ServerMessage();
LeaveMessage.AppendRawUInt(Item.Id);
LeaveMessage.AppendString(string.Empty);
LeaveMessage.AppendBoolean(false);
Room.SendMessage(LeaveMessage);*/
ServerMessage Message = new ServerMessage(Outgoing.UpdateWallItemOnRoom);
Item.Serialize(Message);
Room.SendMessage(Message);
}
internal void TriggerItem()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
int itemID = Request.PopWiredInt32();
uint Items;
if (itemID < 0)
return;
else
Items = Convert.ToUInt32(itemID);
//uint itemID = Request.PopWiredUInt();
RoomItem Item = Room.GetRoomItemHandler().GetItem(Items);
if (Item == null)
{
return;
}
Boolean hasRights = false;
if (Room.CheckRights(Session, false, true))
{
hasRights = true;
}
if (Room.ForSale)
{
Session.SendWhisper("You cannot edit the room whilst it's for sale.");
Session.SendWhisper("Cancel the sale of this room by doing ':sellroom 0' (without '')");
return;
}
if (Item.GetBaseItem().InteractionType == InteractionType.roombg)
{
if(!Room.CheckRights(Session, true))
return;
if (Room.TonerData.Enabled == 0)
Room.TonerData.Enabled = 1;
else
Room.TonerData.Enabled = 0;
ServerMessage Message = new ServerMessage(Outgoing.UpdateItemOnRoom);
Item.Serialize(Message);
Room.SendMessage(Message);
Item.UpdateState();
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("UPDATE room_items_toner SET enabled = '" + Room.TonerData.Enabled + "' LIMIT 1");
}
return;
}
string oldData = Item.ExtraData;
int request = Request.PopWiredInt32();
Item.Interactor.OnTrigger(Session, Item, request, hasRights);
Item.OnTrigger(Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id));
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.EXPLORE_FIND_ITEM, Item.GetBaseItem().ItemId);
foreach (RoomUser User in Room.GetRoomUserManager().UserList.Values)
{
if(User == null)
continue;
Room.GetRoomUserManager().UpdateUserStatus(User, true);
}
}
internal void TriggerItemDiceSpecial()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomItem Item = Room.GetRoomItemHandler().GetItem(Request.PopWiredUInt());
if (Item == null)
{
return;
}
Boolean hasRights = false;
if (Room.CheckRights(Session))
{
hasRights = true;
}
Item.Interactor.OnTrigger(Session, Item, -1, hasRights);
Item.OnTrigger(Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id));
}
internal void OpenPostit()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
//TODO fix post it
if (Room == null)
{
return;
}
RoomItem Item = Room.GetRoomItemHandler().GetItem(Request.PopWiredUInt());
if (Item == null || Item.GetBaseItem().InteractionType != Silverwave.HabboHotel.Items.InteractionType.postit)
{
return;
}
// @p181855059CFF9C stickynotemsg
Response.Init(Outgoing.OpenPostIt);
Response.AppendString(Item.Id.ToString());
Response.AppendString(Item.ExtraData);
SendResponse();
}
internal void SavePostit()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomItem Item = Room.GetRoomItemHandler().GetItem(Request.PopWiredUInt());
if (Item == null || Item.GetBaseItem().InteractionType != Silverwave.HabboHotel.Items.InteractionType.postit)
{
return;
}
String Color = Request.PopFixedString();
String Text = Request.PopFixedString();
if (!Room.CheckRights(Session))
{
if (!Text.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);
}
internal void DeletePostit()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
RoomItem Item = Room.GetRoomItemHandler().GetItem(Request.PopWiredUInt());
if (Item == null || Item.GetBaseItem().InteractionType != Silverwave.HabboHotel.Items.InteractionType.postit)
{
return;
}
Room.GetRoomItemHandler().RemoveFurniture(Session, Item.Id);
}
internal void OpenPresent()
{
Room Room = Session.GetHabbo().CurrentRoom;
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
if (SilverwaveEnvironment.GetDBConfig().DBData["gifts_enabled"] != "1")
{
Session.SendNotif("The hotel managers have disabled gifting");
return;
}
uint ItemId = Request.PopWiredUInt();
RoomItem Present = Room.GetRoomItemHandler().GetItem(ItemId);
if (Present == null)
{
return;
}
DataRow Data = null;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("SELECT base_id,amount,extra_data FROM user_presents WHERE item_id = " + Present.Id + " LIMIT 1");
Data = dbClient.getRow();
}
if (Data == null)
{
Session.SendNotif("Oops! Appears there was a bug with this gift.\nWe'll just get rid of it for you.");
Room.GetRoomItemHandler().RemoveFurniture(null, Present.Id, false);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("DELETE FROM items WHERE id=" + Present.Id + " LIMIT 1;");
}
Session.GetHabbo().GetInventoryComponent().RemoveItem(Present.Id, false);
return;
}
uint PurchaserId = 0;
if (!uint.TryParse(Present.ExtraData.Split(';')[0], out PurchaserId))
{
Session.SendNotif("Oops! Appears there was a bug with this gift.\nWe'll just get rid of it for you.");
Room.GetRoomItemHandler().RemoveFurniture(null, Present.Id, false);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("DELETE FROM items WHERE id=" + Present.Id + " LIMIT 1;");
}
Session.GetHabbo().GetInventoryComponent().RemoveItem(Present.Id, false);
return;
}
Habbo Purchaser = SilverwaveEnvironment.getHabboForId(PurchaserId);
if (Purchaser == null)
{
Session.SendNotif("Oops! Appears there was a bug with this gift.\nWe'll just get rid of it for you.");
Room.GetRoomItemHandler().RemoveFurniture(null, Present.Id, false);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("DELETE FROM items WHERE id=" + Present.Id + " LIMIT 1;");
}
Session.GetHabbo().GetInventoryComponent().RemoveItem(Present.Id, false);
return;
}
string Message = Present.ExtraData.Split(';')[1].Split((char)5)[0].Remove(0, 1);
Response.Init(Outgoing.UpdateFloorItemExtraData);
Response.AppendString(ItemId.ToString());
Response.AppendInt32(1);
Response.AppendInt32(6);
Response.AppendString("EXTRA_PARAM");
Response.AppendString("");
Response.AppendString("MESSAGE");
Response.AppendString(Message);
Response.AppendString("PURCHASER_NAME");
Response.AppendString(Purchaser.Username);
Response.AppendString("PURCHASER_FIGURE");
Response.AppendString(Purchaser.Look);
Response.AppendString("PRODUCT_CODE");
Response.AppendString("A1 KUMIANKKA");
Response.AppendString("state");
Response.AppendString("1");
Room.SendMessage(Response);
Thread thread = new Thread(() => FinishOpenGift(SilverwaveEnvironment.GetGame().GetItemManager().GetItem(Convert.ToUInt32(Data["base_id"])), Present, Room, Data));
thread.Start();
}
/*
internal void OpenPresent()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
uint ItemId = Request.PopWiredUInt();
RoomItem Present = Room.GetRoomItemHandler().GetItem(ItemId);
if (Present == null)
{
return;
}
if (SilverwaveEnvironment.GetDBConfig().DBData["gifts_enabled"] != "1")
{
Session.SendNotif("The hotel managers have disabled gifting");
return;
}
DataRow Data = null;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("SELECT base_id,amount,extra_data FROM user_presents WHERE item_id = " + Present.Id + "");
Data = dbClient.getRow();
}
if (Data == null)
{
Room.GetRoomItemHandler().RemoveFurniture(Session, Present.Id);
return;
}
Item BaseItem = SilverwaveEnvironment.GetGame().GetItemManager().GetItem(Convert.ToUInt32(Data["base_id"]));
if (BaseItem == null)
{
Room.GetRoomItemHandler().RemoveFurniture(Session, Present.Id);
return;
}
uint PurchaserId = (uint)int.Parse(Present.ExtraData.Split(';')[0]);
Habbo Purchaser = SilverwaveEnvironment.getHabboForId(PurchaserId);
Response.Init(Outgoing.UpdateFloorItemExtraData);
Response.AppendString(ItemId.ToString());
Response.AppendInt32(1);
Response.AppendInt32(6);
Response.AppendString("EXTRA_PARAM");
Response.AppendString("");
Response.AppendString("MESSAGE");
Response.AppendString(Present.ExtraData.Split(';')[1].Split((char)5)[0]);
Response.AppendString("PURCHASER_NAME");
Response.AppendString(Purchaser.Username);
Response.AppendString("PURCHASER_FIGURE");
Response.AppendString(Purchaser.Look);
Response.AppendString("PRODUCT_CODE");
Response.AppendString("A1 KUMIANKKA");
Response.AppendString("state");
Response.AppendString("1");
Room.SendMessage(Response);
Present.ReqUpdate(5, true);
Thread thread = new Thread(() => FinishOpenGift(BaseItem, Present, Room, Data));
thread.Start();
}*/
private void FinishOpenGift(Item BaseItem, RoomItem Present, Room Room, DataRow Data)
{
Thread.Sleep(3000);
try
{
if (BaseItem == null || Present == null || Room == null || Data == null)
return;
if (BaseItem.Type.ToString().ToLower().Equals("s") && BaseItem.InteractionType != InteractionType.teleport)
{
Room.GetRoomItemHandler().RemoveFurniture(Session, Present.Id);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("DELETE FROM items WHERE id=" + Present.Id + " LIMIT 1;");
dbClient.setQuery("UPDATE items SET extra_data = @Edata WHERE id = " + Present.Id + " LIMIT 1");
dbClient.addParameter("edata", Data["extra_data"]);
dbClient.runQuery();
dbClient.runFastQuery("DELETE FROM user_presents WHERE item_id = " + Present.Id + " LIMIT 1");
}
string type = Present.GetBaseItem().Type.ToString().ToLower();
string ExtraData = Present.ExtraData;
Present.BaseItem = Convert.ToUInt32(Data["base_id"]);
Present.refreshItem();
Present.ExtraData = "";
if ((int)Data["amount"] == 1)
{
if (!Room.GetRoomItemHandler().SetFloorItem(Session, Present, Present.GetX, Present.GetY, Present.Rot, true, false, true))
{
SilverwaveEnvironment.GetGame().GetCatalog().DeliverItems(Session, BaseItem, (int)Data["amount"], (String)Data["extra_data"], 0, 0);
Session.GetHabbo().GetInventoryComponent().UpdateItems(true);
}
}
else
{
SilverwaveEnvironment.GetGame().GetCatalog().DeliverItems(Session, BaseItem, (int)Data["amount"], (String)Data["extra_data"], 0, 0);
Session.GetHabbo().GetInventoryComponent().UpdateItems(true);
}
Response.Init(Outgoing.OpenGift);
Response.AppendString(BaseItem.Type.ToString());
Response.AppendInt32(BaseItem.SpriteId);
Response.AppendString(BaseItem.Name);
Response.AppendInt32(Present.Id);
Response.AppendString(type);
Response.AppendBoolean(false);
Response.AppendString(ExtraData);
//SendResponse();
}
else
{
Room.GetRoomItemHandler().RemoveFurniture(Session, Present.Id);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("DELETE FROM items WHERE id=" + Present.Id + " LIMIT 1;");
dbClient.runFastQuery("DELETE FROM user_presents WHERE item_id = " + Present.Id);
}
Session.GetMessageHandler().GetResponse().Init(Outgoing.SendPurchaseAlert);
Session.GetMessageHandler().GetResponse().AppendInt32(1); // items
int Type = 2;
if (BaseItem.Type.ToString().ToLower().Equals("s"))
{
if (BaseItem.InteractionType == InteractionType.pet)
Type = 3;
else
Type = 1;
}
Session.GetMessageHandler().GetResponse().AppendInt32(Type);
List<UserItem> items = SilverwaveEnvironment.GetGame().GetCatalog().DeliverItems(Session, BaseItem, (int)Data["amount"], (String)Data["extra_data"], 0, 0);
Session.GetMessageHandler().GetResponse().AppendInt32(items.Count);
foreach (UserItem u in items)
Session.GetMessageHandler().GetResponse().AppendInt32(u.Id);
Session.GetMessageHandler().SendResponse();
Session.GetHabbo().GetInventoryComponent().UpdateItems(true);
}
}
catch { }
}
internal void GetMoodlight()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
//Console.WriteLine("error loading! " + (Room.MoodlightData == null));
return;
}
if (Room.MoodlightData == null)
{
foreach (RoomItem item in Room.GetRoomItemHandler().mWallItems.Values)
{
if (item.GetBaseItem().InteractionType == InteractionType.dimmer)
Room.MoodlightData = new MoodlightData(item.Id);
}
}
if (Room.MoodlightData == null)
return;
Response.Init(Outgoing.DimmerData);
Response.AppendInt32(Room.MoodlightData.Presets.Count);
Response.AppendInt32(Room.MoodlightData.CurrentPreset);
int i = 0;
foreach (MoodlightPreset Preset in Room.MoodlightData.Presets)
{
i++;
Response.AppendInt32(i);
Response.AppendInt32(int.Parse(SilverwaveEnvironment.BoolToEnum(Preset.BackgroundOnly)) + 1);
Response.AppendString(Preset.ColorCode);
Response.AppendInt32(Preset.ColorIntensity);
}
SendResponse();
}
internal void UpdateMoodlight()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true) || Room.MoodlightData == null)
{
return;
}
RoomItem Item = Room.GetRoomItemHandler().GetItem(Room.MoodlightData.ItemId);
if (Item == null || Item.GetBaseItem().InteractionType != InteractionType.dimmer)
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();
}
internal void SwitchMoodlightStatus()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true) || Room.MoodlightData == null)
{
return;
}
RoomItem Item = Room.GetRoomItemHandler().GetItem(Room.MoodlightData.ItemId);
if (Item == null || Item.GetBaseItem().InteractionType != InteractionType.dimmer)
return;
if (Room.MoodlightData.Enabled)
{
Room.MoodlightData.Disable();
}
else
{
Room.MoodlightData.Enable();
}
Item.ExtraData = Room.MoodlightData.GenerateExtraData();
Item.UpdateState();
}
internal void SaveRoomBg()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
RoomItem Item = Room.GetRoomItemHandler().GetItem(Room.TonerData.ItemId);
if (Item == null || Item.GetBaseItem().InteractionType != InteractionType.roombg)
return;
int lol = Request.PopWiredInt32();
int Int1 = Request.PopWiredInt32();
int Int2 = Request.PopWiredInt32();
int Int3 = Request.PopWiredInt32();
if (Int1 > 255 || Int2 > 255 || Int3 > 255)
return;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("UPDATE room_items_toner SET enabled = '1', data1=" + Int1 + " ,data2=" + Int2 + ",data3=" + Int3 + " WHERE id=" + Item.Id + " LIMIT 1");
}
Room.TonerData.Data1 = Int1;
Room.TonerData.Data2 = Int2;
Room.TonerData.Data3 = Int3;
Room.TonerData.Enabled = 1;
ServerMessage Message = new ServerMessage(Outgoing.UpdateItemOnRoom);
Item.Serialize(Message);
Room.SendMessage(Message);
Item.UpdateState();
}
internal void InitTrade()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CanTradeInRoom)
{
return;
}
if (SilverwaveEnvironment.GetDBConfig().DBData["trading_enabled"] != "1")
{
Session.SendNotif("The hotel managers have disabled trading");
return;
}
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
RoomUser User2 = Room.GetRoomUserManager().GetRoomUserByVirtualId(Request.PopWiredInt32());
if (User2 == null || User2.GetClient() == null || User2.GetClient().GetHabbo() == null)
return;
bool IsDisabled = false;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("SELECT accept_trading FROM users WHERE id = " + User2.GetClient().GetHabbo().Id);
IsDisabled = SilverwaveEnvironment.EnumToBool(dbClient.getString());
}
if (!IsDisabled)
{
Session.SendNotif(LanguageLocale.GetValue("user.tradedisabled"));
return;
}
else
Room.TryStartTrade(User, User2);
}
internal void OfferTradeItem()
{
Room Room = SilverwaveEnvironment.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);
}
internal void TakeBackTradeItem()
{
Room Room = SilverwaveEnvironment.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);
}
internal void StopTrade()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CanTradeInRoom)
{
return;
}
Room.TryStopTrade(Session.GetHabbo().Id);
}
internal void AcceptTrade()
{
Room Room = SilverwaveEnvironment.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);
}
internal void UnacceptTrade()
{
Room Room = SilverwaveEnvironment.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);
}
internal void CompleteTrade()
{
Room Room = SilverwaveEnvironment.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);
}
internal void GiveRespect()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || Session.GetHabbo().DailyRespectPoints <= 0)
{
return;
}
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Request.PopWiredUInt());
if (User == null || User.GetClient().GetHabbo().Id == Session.GetHabbo().Id || User.IsBot)
{
return;
}
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.SOCIAL_RESPECT);
SilverwaveEnvironment.GetGame().GetAchievementManager().ProgressUserAchievement(Session, "ACH_RespectGiven", 1);
SilverwaveEnvironment.GetGame().GetAchievementManager().ProgressUserAchievement(User.GetClient(), "ACH_RespectEarned", 1);
Session.GetHabbo().DailyRespectPoints--;
User.GetClient().GetHabbo().Respect++;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("UPDATE user_stats SET Respect = Respect + 1 WHERE id = " + User.GetClient().GetHabbo().Id + " LIMIT 1;" +
"UPDATE user_stats SET DailyRespectPoints = DailyRespectPoints - 1 WHERE id= " + Session.GetHabbo().Id + " LIMIT 1");
}
// FxkqUzYP_
ServerMessage Message = new ServerMessage(Outgoing.GiveRespect);
Message.AppendInt32(User.GetClient().GetHabbo().Id);
Message.AppendInt32(User.GetClient().GetHabbo().Respect);
Room.SendMessage(Message);
Room.SendMessage(new ActionComposer(Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username), 7));
}
internal void ApplyEffect()
{
int Effect = Request.PopWiredInt32();
Session.GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(Effect);
}
internal void EnableEffect()
{
RoomUser User = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId).GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username);
if (!User.RidingHorse)
Session.GetHabbo().GetAvatarEffectsInventoryComponent().EnableEffect(Request.PopWiredInt32());
}
internal void RecycleItems()
{
if (!Session.GetHabbo().InRoom)
{
return;
}
int itemCount = Request.PopWiredInt32();
if (itemCount != 3)
{
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, false);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
dbClient.runFastQuery("DELETE FROM items WHERE id=" + Item.Id + " LIMIT 1");
}
else
{
return;
}
}
uint newItemId;// = SilverwaveEnvironment.GetGame().GetCatalog().GenerateItemId();
EcotronReward Reward = SilverwaveEnvironment.GetGame().GetCatalog().GetRandomEcotronReward();
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("INSERT INTO items (user_id,base_item,extra_data) VALUES ( @userid ,1478, @timestamp)");
dbClient.addParameter("userid", (int)Session.GetHabbo().Id);
dbClient.addParameter("timestamp", DateTime.Now.ToLongDateString());
newItemId = (uint)dbClient.insertQuery();
dbClient.runFastQuery("INSERT INTO user_presents (item_id,base_id,amount,extra_data) VALUES (" + newItemId + "," + Reward.BaseId + ",1,'')");
}
Session.GetHabbo().GetInventoryComponent().UpdateItems(true);
Response.Init(Outgoing.RecycleState);
Response.AppendInt32(1);
Response.AppendInt32(newItemId);
SendResponse();
}
internal void RedeemExchangeFurni()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
if (SilverwaveEnvironment.GetDBConfig().DBData["exchange_enabled"] != "1")
{
Session.SendNotif("The hotel managers have temporarilly disabled exchanging!");
return;
}
RoomItem Exchange = Room.GetRoomItemHandler().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();
}
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
dbClient.runFastQuery("DELETE FROM items WHERE id=" + Exchange.Id + " LIMIT 1;");
//"UPDATE users SET credits='" + Session.GetHabbo().Credits + "' WHERE id='" + Session.GetHabbo().Id + "' LIMIT 1");
Room.GetRoomItemHandler().RemoveFurniture(null, Exchange.Id, false);
Session.GetHabbo().GetInventoryComponent().RemoveItem(Exchange.Id, false);
Response.Init(Outgoing.UpdateInventary);
SendResponse();
}
internal void KickBot()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session, true))
{
return;
}
RoomUser Bot = Room.GetRoomUserManager().GetRoomUserByVirtualId(Request.PopWiredInt32());
if (Bot == null || !Bot.IsBot)
{
return;
}
Room.GetRoomUserManager().RemoveBot(Bot.VirtualId, true);
}
internal void PlacePet()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || (Room.AllowPets == 0 && !Room.CheckRights(Session, true)) || !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.GetGameMap().CanWalk(X, Y, false))
{
return;
}
RoomUser oldPet = Room.GetRoomUserManager().GetPet(PetId);
if (oldPet != null)
Room.GetRoomUserManager().RemoveBot(oldPet.VirtualId, false);
Pet.PlacedInRoom = true;
Pet.RoomId = Room.RoomId;
List<RandomSpeech> RndSpeechList = new List<RandomSpeech>();
List<BotResponse> BotResponse = new List<Silverwave.HabboHotel.RoomBots.BotResponse>();
RoomUser PetUser = Room.GetRoomUserManager().DeployBot(new RoomBot(Pet.PetId, Convert.ToUInt32(Pet.OwnerId), Pet.RoomId, AIType.Pet, "freeroam", Pet.Name, "", Pet.Look, X, Y, 0, 0, 0, 0, 0, 0, ref RndSpeechList, ref BotResponse, "", 0), Pet);
Session.GetHabbo().GetInventoryComponent().MovePetToRoom(Pet.PetId);
if (Pet.DBState != DatabaseUpdateState.NeedsInsert)
Pet.DBState = DatabaseUpdateState.NeedsUpdate;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
Room.GetRoomUserManager().SavePets(dbClient);
Session.SendMessage(Session.GetHabbo().GetInventoryComponent().SerializePetInventory());
}
internal void GetPetInfo()
{
if (Session.GetHabbo() == null || Session.GetHabbo().CurrentRoom == null)
return;
uint PetId = Request.PopWiredUInt();
RoomUser pet = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetPet(PetId);
if (pet == null || pet.PetData == null)
{
return;
}
Session.SendMessage(pet.PetData.SerializeInfo());
}
internal void PickUpPet()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().GetInventoryComponent() == null)
return;
if (Room == null || (Room.AllowPets == 0 && !Room.CheckRights(Session, true)))
{
return;
}
uint PetId = Request.PopWiredUInt();
//Session.SendNotif(PetId + "");
RoomUser PetUser = Room.GetRoomUserManager().GetPet(PetId);
if (PetUser == null)
return;
if (PetUser.RidingHorse == true)
{
RoomUser usuarioVinculado = Room.GetRoomUserManager().GetRoomUserByVirtualId(Convert.ToInt32(PetUser.HorseID));
if (usuarioVinculado != null)
{
usuarioVinculado.RidingHorse = false;
usuarioVinculado.ApplyEffect(-1);
usuarioVinculado.MoveTo(new Point(usuarioVinculado.X + 1, usuarioVinculado.Y + 1));
}
}
if (PetUser.PetData.DBState != DatabaseUpdateState.NeedsInsert)
PetUser.PetData.DBState = DatabaseUpdateState.NeedsUpdate;
PetUser.PetData.RoomId = 0;
Session.GetHabbo().GetInventoryComponent().AddPet(PetUser.PetData);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
Room.GetRoomUserManager().SavePets(dbClient);
Room.GetRoomUserManager().RemoveBot(PetUser.VirtualId, false);
Session.SendMessage(Session.GetHabbo().GetInventoryComponent().SerializePetInventory());
}
internal void RespectPet()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
uint PetId = Request.PopWiredUInt();
RoomUser PetUser = Room.GetRoomUserManager().GetPet(PetId);
if (PetUser == null || PetUser.PetData == null)
{
return;
}
PetUser.PetData.OnRespect();
Session.GetHabbo().DailyPetRespectPoints--;
SilverwaveEnvironment.GetGame().GetAchievementManager().ProgressUserAchievement(Session, "ACH_PetRespectGiver", 1, false);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
//dbClient.addParameter("userid", Session.GetHabbo().Id);
dbClient.runFastQuery("UPDATE user_stats SET DailyPetRespectPoints = DailyPetRespectPoints - 1 WHERE id = " + Session.GetHabbo().Id + " LIMIT 1");
}
}
internal void AllowAllRide()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
uint PetID = Request.PopWiredUInt();
RoomUser Pet = Room.GetRoomUserManager().GetPet(PetID);
if (Pet.PetData.AnyoneCanRide == 1)
{
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
dbClient.runFastQuery("UPDATE bots_petdata SET anyone_ride=0 WHERE id=" + PetID + " LIMIT 1");
Pet.PetData.AnyoneCanRide = 0;
}
else
{
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
dbClient.runFastQuery("UPDATE bots_petdata SET anyone_ride=1 WHERE id=" + PetID + " LIMIT 1");
Pet.PetData.AnyoneCanRide = 1;
}
ServerMessage Nfo = new ServerMessage(Outgoing.PetInformation);
Nfo.AppendInt32(Pet.PetData.PetId);
Nfo.AppendString(Pet.PetData.Name);
Nfo.AppendInt32(Pet.PetData.Level);
Nfo.AppendInt32(20);
Nfo.AppendInt32(Pet.PetData.experience);
Nfo.AppendInt32(Pet.PetData.experienceGoal);
Nfo.AppendInt32(Pet.PetData.Energy);
Nfo.AppendInt32(100);
Nfo.AppendInt32(Pet.PetData.Nutrition);
Nfo.AppendInt32(150);
//Nfo.AppendString(Color.ToLower());
Nfo.AppendInt32(Pet.PetData.Respect);
Nfo.AppendInt32(Pet.PetData.OwnerId);
Nfo.AppendInt32(Pet.PetData.Age);
Nfo.AppendString(Pet.PetData.OwnerName);
Nfo.AppendInt32(1);
Nfo.AppendBoolean(Pet.PetData.HaveSaddle);
Nfo.AppendBoolean(SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Pet.PetData.RoomId).GetRoomUserManager().GetRoomUserByVirtualId(Pet.PetData.VirtualId).RidingHorse);
Nfo.AppendInt32(0);
Nfo.AppendInt32(Pet.PetData.AnyoneCanRide); // Anyone can ride horse
Nfo.AppendInt32(0);
Nfo.AppendInt32(0);
Nfo.AppendInt32(0);
Nfo.AppendInt32(0);
Nfo.AppendInt32(0);
Nfo.AppendInt32(0);
Nfo.AppendString("");
Nfo.AppendBoolean(false);
Nfo.AppendInt32(-1);
Nfo.AppendInt32(-1);
Nfo.AppendInt32(-1);
Nfo.AppendBoolean(false);
Room.SendMessage(Nfo);
}
internal void AddSaddle()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || (Room.AllowPets == 0 && !Room.CheckRights(Session, true)))
{
return;
}
uint ItemId = Request.PopWiredUInt();
RoomItem Item = Room.GetRoomItemHandler().GetItem(ItemId);
if (Item == null)
return; ;
uint PetId = Request.PopWiredUInt();
RoomUser PetUser = Room.GetRoomUserManager().GetPet(PetId);
if (PetUser == null || PetUser.PetData == null || PetUser.PetData.OwnerId != Session.GetHabbo().Id)
{
return;
}
Room.GetRoomItemHandler().RemoveFurniture(Session, Item.Id, false);
if (Item.GetBaseItem().Name.Contains("horse_hairdye"))
{
string HairType = Item.GetBaseItem().Name.Split('_')[2];
int HairDye = 48;
HairDye = HairDye + int.Parse(HairType);
PetUser.PetData.HairDye = HairDye;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("UPDATE bots_petdata SET hairdye = '" + PetUser.PetData.HairDye + "' WHERE id = " + PetUser.PetData.PetId);
}
}
else if (Item.GetBaseItem().Name.Contains("horse_dye"))
{
string Race = Item.GetBaseItem().Name.Split('_')[2];
int Parse = int.Parse(Race);
int RaceLast = 2 + (Parse * 4) - 4;
if (Parse == 13)
RaceLast = 61;
else if (Parse == 14)
RaceLast = 65;
else if (Parse == 15)
RaceLast = 69;
else if (Parse == 16)
RaceLast = 73;
PetUser.PetData.Race = RaceLast.ToString();
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("UPDATE bots_petdata SET race = '" + PetUser.PetData.Race + "' WHERE id = " + PetUser.PetData.PetId);
dbClient.runFastQuery("DELETE FROM items WHERE id=" + Item.Id + " LIMIT 1");
}
}
else if (Item.GetBaseItem().Name.Contains("horse_hairstyle"))
{
string HairType = Item.GetBaseItem().Name.Split('_')[2];
int Parse = 100;
Parse = Parse + int.Parse(HairType);
PetUser.PetData.PetHair = Parse;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("UPDATE bots_petdata SET pethair = '" + PetUser.PetData.PetHair + "' WHERE id = " + PetUser.PetData.PetId);
dbClient.runFastQuery("DELETE FROM items WHERE id=" + Item.Id + " LIMIT 1");
}
}
else if (Item.GetBaseItem().Name.Contains("saddle"))
{
PetUser.PetData.HaveSaddle = true;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("UPDATE bots_petdata SET have_saddle = 1 WHERE id = " + PetUser.PetData.PetId);
dbClient.runFastQuery("DELETE FROM items WHERE id=" + Item.Id + " LIMIT 1");
}
}
ServerMessage Message = new ServerMessage(Outgoing.PlaceBot);
Message.AppendInt32(1);
PetUser.Serialize(Message, false);
Room.SendMessage(Message);
ServerMessage AddToPet = new ServerMessage(Outgoing.PetData);
AddToPet.AppendInt32(PetUser.PetData.VirtualId);
AddToPet.AppendInt32(PetUser.PetData.PetId);
AddToPet.AppendInt32(PetUser.PetData.Type);
AddToPet.AppendInt32(int.Parse(PetUser.PetData.Race));
AddToPet.AppendString(PetUser.PetData.Color.ToLower());
if (PetUser.PetData.HaveSaddle)
{
AddToPet.AppendInt32(2);
AddToPet.AppendInt32(3);
AddToPet.AppendInt32(4);
AddToPet.AppendInt32(9);
AddToPet.AppendInt32(0);
AddToPet.AppendInt32(3);
AddToPet.AppendInt32(PetUser.PetData.PetHair);
AddToPet.AppendInt32(PetUser.PetData.HairDye);
AddToPet.AppendInt32(3);
AddToPet.AppendInt32(PetUser.PetData.PetHair);
AddToPet.AppendInt32(PetUser.PetData.HairDye);
}
else
{
AddToPet.AppendInt32(1);
AddToPet.AppendInt32(2);
AddToPet.AppendInt32(2);
AddToPet.AppendInt32(PetUser.PetData.PetHair);
AddToPet.AppendInt32(PetUser.PetData.HairDye);
AddToPet.AppendInt32(3);
AddToPet.AppendInt32(PetUser.PetData.PetHair);
AddToPet.AppendInt32(PetUser.PetData.HairDye);
}
AddToPet.AppendBoolean(PetUser.PetData.HaveSaddle);
AddToPet.AppendBoolean(PetUser.RidingHorse);
Room.SendMessage(AddToPet);
}
internal void RemoveSaddle()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || (Room.AllowPets == 0 && !Room.CheckRights(Session, true)))
{
return;
}
uint PetId = Request.PopWiredUInt();
RoomUser PetUser = Room.GetRoomUserManager().GetPet(PetId);
if (PetUser == null || PetUser.PetData == null || PetUser.PetData.OwnerId != Session.GetHabbo().Id)
{
return;
}
//SilverwaveEnvironment.GetGame().GetCatalog().DeliverItems(Session, SilverwaveEnvironment.GetGame().GetItemManager().GetItem((uint)2804), 1, "");
PetUser.PetData.HaveSaddle = false;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
//dbClient.addParameter("userid", Session.GetHabbo().Id);
dbClient.runFastQuery("UPDATE bots_petdata SET have_saddle = 0 WHERE id = " + PetUser.PetData.PetId);
dbClient.runFastQuery("INSERT INTO items (user_id, base_item) VALUES (" + Session.GetHabbo().Id + ", 4221);");
}
Session.GetHabbo().GetInventoryComponent().UpdateItems(true);
ServerMessage Message = new ServerMessage(Outgoing.PlaceBot);
Message.AppendInt32(1);
PetUser.Serialize(Message, false);
Room.SendMessage(Message);
ServerMessage AddToPet = new ServerMessage(Outgoing.PetData);
AddToPet.AppendInt32(PetUser.PetData.VirtualId);
AddToPet.AppendInt32(PetUser.PetData.PetId);
AddToPet.AppendInt32(PetUser.PetData.Type);
AddToPet.AppendInt32(int.Parse(PetUser.PetData.Race));
AddToPet.AppendString(PetUser.PetData.Color.ToLower());
AddToPet.AppendInt32(1);
AddToPet.AppendInt32(2);
AddToPet.AppendInt32(2);
AddToPet.AppendInt32(PetUser.PetData.PetHair);
AddToPet.AppendInt32(PetUser.PetData.HairDye);
AddToPet.AppendInt32(3);
AddToPet.AppendInt32(PetUser.PetData.PetHair);
AddToPet.AppendInt32(PetUser.PetData.HairDye);
AddToPet.AppendBoolean(PetUser.PetData.HaveSaddle);
AddToPet.AppendBoolean(PetUser.RidingHorse);
Room.SendMessage(AddToPet);
}
internal void CancelMountOnPet()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
return;
uint PetId = Request.PopWiredUInt();
RoomUser Pet = Room.GetRoomUserManager().GetPet(PetId);
if (Pet == null || Pet.PetData == null)
{
return;
}
User.RidingHorse = false;
User.HorseID = 0;
Pet.RidingHorse = false;
Pet.HorseID = 0;
User.MoveTo(User.X + 1, User.Y + 1);
User.ApplyEffect(-1);
}
internal void GiveHanditem()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
//if (Room == null || Room.IsPublic || (!Room.AllowPets && !Room.CheckRights(Session, true)))
if (Room == null)
return;
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
return;
RoomUser toGive = Room.GetRoomUserManager().GetRoomUserByHabbo(Request.PopWiredUInt());
if (toGive == null)
return;
if (!((Math.Abs((int)(User.X - toGive.X)) >= 3) || (Math.Abs((int)(User.Y - toGive.Y)) >= 3)) || User.GetClient().GetHabbo().Rank > 4)
{
if (User.CarryItemID > 0 && User.CarryTimer > 0)
{
if(User.CarryItemID == 8)
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.GIVE_COFFEE);
toGive.CarryItem(User.CarryItemID);
User.CarryItem(0);
toGive.DanceId = 0;
}
}
}
internal void RedeemVoucher()
{
string ticket = this.Request.PopFixedString();
string productName = "";
string productDescription= "";
bool isValid = false;
DataRow dRow;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("SELECT * FROM vouchers WHERE voucher = @vo LIMIT 1");
dbClient.addParameter("vo", ticket);
dRow = dbClient.getRow();
}
if (dRow != null)
{
isValid = true;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("DELETE * FROM vouchers WHERE voucher = @vou LIMIT 1");
dbClient.addParameter("vou", ticket);
dbClient.runQuery();
}
this.Session.GetHabbo().Credits += (int)dRow["value"];
this.Session.GetHabbo().UpdateCreditsBalance();
this.Session.GetHabbo().NotifyNewPixels((int)dRow["extra_duckets"]);
}
this.Session.GetHabbo().NotifyVoucher(isValid, productName, productDescription);
}
internal void RemoveHanditem()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
//if (Room == null || Room.IsPublic || (!Room.AllowPets && !Room.CheckRights(Session, true)))
if (Room == null)
return;
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
return;
if (User.CarryItemID > 0 && User.CarryTimer > 0)
User.CarryItem(0);
}
internal void MountOnPet()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
//if (Room == null || Room.IsPublic || (!Room.AllowPets && !Room.CheckRights(Session, true)))
if (Room == null)
{
return;
}
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
return;
uint PetId = Request.PopWiredUInt();
bool Type = Request.PopWiredBoolean();
RoomUser Pet = Room.GetRoomUserManager().GetPet(PetId);
//if (Pet == null || Pet.PetData == null || Pet.PetData.OwnerId != Session.GetHabbo().Id)
if (Pet == null || Pet.PetData == null)
{
return;
}
if (Pet.PetData.AnyoneCanRide == 0 && Pet.PetData.OwnerId != User.userID)
{
Session.SendNotif("You are unable to ride this horse.\nThe owner of the pet has not selected for anyone to ride it.");
return;
}
if (Type)
{
if (Pet.RidingHorse == true)
{
string[] Speech2 = PetLocale.GetValue("pet.alreadymounted");
Random RandomSpeech2 = new Random();
Pet.Chat(null, Speech2[RandomSpeech2.Next(0, Speech2.Length - 1)], false,0,0);
}
else if (User.RidingHorse == true)
{
Session.SendNotif("You are already riding a horse!");
}
else
{
Pet.Statusses.Remove("sit");
Pet.Statusses.Remove("lay");
Pet.Statusses.Remove("snf");
Pet.Statusses.Remove("eat");
Pet.Statusses.Remove("ded");
Pet.Statusses.Remove("jmp");
int NewX2 = User.X;
int NewY2 = User.Y;
//Pet.PetData.Addexperience(10); // Give XP
Room.SendMessage(Room.GetRoomItemHandler().UpdateUserOnRoller(Pet, new Point(NewX2, NewY2), 0, Room.GetGameMap().SqAbsoluteHeight(NewX2, NewY2)));
Room.GetRoomUserManager().UpdateUserStatus(Pet, false);
Room.SendMessage(Room.GetRoomItemHandler().UpdateUserOnRoller(User, new Point(NewX2, NewY2), 0, Room.GetGameMap().SqAbsoluteHeight(NewX2, NewY2) + 1));
Room.GetRoomUserManager().UpdateUserStatus(User, false);
Pet.ClearMovement(true);
User.RidingHorse = true;
Pet.RidingHorse = true;
Pet.HorseID = (uint)User.VirtualId;
User.HorseID = Convert.ToUInt32(Pet.VirtualId);
User.ApplyEffect(77);
User.Z += 1;
User.UpdateNeeded = true;
Pet.UpdateNeeded = true;
}
}
else
{
if (User.VirtualId == Pet.HorseID)
{
Pet.Statusses.Remove("sit");
Pet.Statusses.Remove("lay");
Pet.Statusses.Remove("snf");
Pet.Statusses.Remove("eat");
Pet.Statusses.Remove("ded");
Pet.Statusses.Remove("jmp");
User.RidingHorse = false;
User.HorseID = 0;
Pet.RidingHorse = false;
Pet.HorseID = 0;
User.MoveTo(new Point(User.X + 2, User.Y + 2));
User.ApplyEffect(-1);
User.UpdateNeeded = true;
Pet.UpdateNeeded = true;
}
else
{
Session.SendNotif("Could not dismount this horse - You are not riding it!");
}
}
ServerMessage AddToPet = new ServerMessage(Outgoing.PetData);
AddToPet.AppendInt32(Pet.PetData.VirtualId);
AddToPet.AppendInt32(Pet.PetData.PetId);
AddToPet.AppendInt32(Pet.PetData.Type);
AddToPet.AppendInt32(int.Parse(Pet.PetData.Race));
AddToPet.AppendString(Pet.PetData.Color.ToLower());
AddToPet.AppendInt32(2);
AddToPet.AppendInt32(3);
AddToPet.AppendInt32(4);
AddToPet.AppendInt32(9);
AddToPet.AppendInt32(0);
AddToPet.AppendInt32(3);
AddToPet.AppendInt32(Pet.PetData.PetHair);
AddToPet.AppendInt32(Pet.PetData.HairDye);
AddToPet.AppendInt32(3);
AddToPet.AppendInt32(Pet.PetData.PetHair);
AddToPet.AppendInt32(Pet.PetData.HairDye);
AddToPet.AppendBoolean(Pet.PetData.HaveSaddle);
AddToPet.AppendBoolean((Pet.RidingHorse) ? true : false);
Room.SendMessage(AddToPet);
}
internal void SetLookTransfer()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session))
return;
uint ItemID = Request.PopWiredUInt();
string Gender = Request.PopFixedString().ToUpper();
string Look = Request.PopFixedString();
RoomItem RoomItemToSet = Room.GetRoomItemHandler().mFloorItems.GetValue(ItemID);
if (Gender.Length > 1)
return;
if (Gender != "M" && Gender != "F")
return;
RoomItemToSet.Figure = SilverwaveEnvironment.FilterFigure(Look);
RoomItemToSet.Gender = Gender;
RoomItemToSet.ExtraData = Gender + ":" + Look;
}
internal void CommandsPet()
{
uint PetID = Request.PopWiredUInt();
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
RoomUser PetUser = Room.GetRoomUserManager().GetPet(PetID);
if (PetUser == null || PetUser.PetData == null)
return;
//2603:I,I,I,I,I
Response.Init(2603);
Response.AppendInt32(PetUser.PetData.PetId);
Response.AppendInt32(0);
Response.AppendInt32(1);
Response.AppendInt32(14);
Response.AppendInt32(43);
Response.AppendInt32(2);
Response.AppendInt32(3);
Response.AppendInt32(4);
Response.AppendInt32(17);
Response.AppendInt32(5);
Response.AppendInt32(6);
Response.AppendInt32(7);
Response.AppendInt32(8);
Response.AppendInt32(9);
Response.AppendInt32(10);
Response.AppendInt32(11);
Response.AppendInt32(12);
Response.AppendInt32(13);
Response.AppendInt32(15);
Response.AppendInt32(16);
Response.AppendInt32(24);
Response.AppendInt32(25);
Response.AppendInt32(26);
Response.AppendInt32(4);
Response.AppendInt32(0);
Response.AppendInt32(1);
Response.AppendInt32(14);
Response.AppendInt32(43);
SendResponse();
/*GetResponse().Init(605);
GetResponse().AppendUInt(PetID);
int level = PetUser.PetData.Level;
GetResponse().AppendInt32(18);
GetResponse().AppendInt32(0);
GetResponse().AppendInt32(1);
GetResponse().AppendInt32(2);
GetResponse().AppendInt32(3);
GetResponse().AppendInt32(4);
GetResponse().AppendInt32(17);
GetResponse().AppendInt32(5);
GetResponse().AppendInt32(6);
GetResponse().AppendInt32(7);
GetResponse().AppendInt32(8);
GetResponse().AppendInt32(9);
GetResponse().AppendInt32(10);
GetResponse().AppendInt32(11);
GetResponse().AppendInt32(12);
GetResponse().AppendInt32(13);
GetResponse().AppendInt32(14);
GetResponse().AppendInt32(15);
GetResponse().AppendInt32(16);
for (int i = 0; level > i; )
{
i++;
GetResponse().AppendInt32(i);
}
GetResponse().AppendInt32(0);
GetResponse().AppendInt32(1);
GetResponse().AppendInt32(2);*/
}
internal void SaveWired()
{
uint itemID = Request.PopWiredUInt();
RoomItem Item = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId).GetRoomItemHandler().GetItem(itemID);
WiredSaver.SaveWired(Session, Item, Request);
}
internal void SaveWiredConditions()
{
uint itemID = Request.PopWiredUInt();
RoomItem Item = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId).GetRoomItemHandler().GetItem(itemID);
WiredSaver.SaveWired(Session, Item, Request);
}
internal void PlaceBot()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || ((Room.AllowPets == 0) && !Room.CheckRights(Session, true)) || !Room.CheckRights(Session, true))
{
return;
}
uint PetId = Request.PopWiredUInt();
RoomBot Bot = Session.GetHabbo().GetInventoryComponent().GetBot(PetId);
if (Bot == null)
{
Logging.WriteLine("Null bot found" + PetId);
return;
}
int X = Request.PopWiredInt32();
int Y = Request.PopWiredInt32();
//Session.SendNotif("RoomID: " + Room.RoomId + "\nBotID: " + BotId + "\nX: " + X + "\nY: " + Y + "");
if (!Room.GetGameMap().CanWalk(X, Y, false) || !Room.GetGameMap().ValidTile(X, Y))
{
Session.SendNotif("You cannot place a bot here!");
return;
}
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("UPDATE bots SET room_id = '" + Room.RoomId + "', x = '" + X + "', y = '" + Y + "' WHERE id = '" + PetId + "'");
}
Bot.RoomId = Room.RoomId;
List<RandomSpeech> RndSpeechList = new List<RandomSpeech>();
List<BotResponse> BotResponse = new List<Silverwave.HabboHotel.RoomBots.BotResponse>();
RoomUser PetUser = Room.GetRoomUserManager().DeployBot(new RoomBot(PetId,Bot.OwnerId, Bot.RoomId, AIType.Generic, "freeroam", Bot.Name, Bot.Motto, Bot.Look, X, Y, 0, 0, 0, 0, 0, 0, ref RndSpeechList, ref BotResponse,Bot.Gender,Bot.DanceId), null);
Session.GetHabbo().GetInventoryComponent().MoveBotToRoom(PetId);
Session.SendMessage(Session.GetHabbo().GetInventoryComponent().SerializeBotInventory());
}
internal void Sit()
{
RoomUser user = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
if (user.Statusses.ContainsKey("lie") || user.isLying || user.RidingHorse || user.IsWalking)
{
return;
}
if (!user.Statusses.ContainsKey("sit"))
{
if ((user.RotBody % 2) == 0)
{
if (user == null)
return;
try
{
user.Statusses.Add("sit", "1.0");
user.Z -= 0.35;
user.isSitting = true;
user.UpdateNeeded = true;
}
catch { }
}
else
{
user.RotBody--;
user.Statusses.Add("sit", "1.0");
user.Z -= 0.35;
user.isSitting = true;
user.UpdateNeeded = true;
}
}
else if (user.isSitting == true)
{
user.Z += 0.35;
user.Statusses.Remove("sit");
user.Statusses.Remove("1.0");
user.isSitting = false;
user.UpdateNeeded = true;
}
}
internal void PickUpBot()
{
uint BotId = Request.PopWiredUInt();
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
RoomUser BotUser = Room.GetRoomUserManager().GetBot(BotId);
uint ownerID = 0;
using (IQueryAdapter adapter = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
try
{
adapter.setQuery("SELECT user_id FROM bots WHERE id = " + BotId);
ownerID = Convert.ToUInt32((adapter.getInteger()));
}
catch (Exception ex)
{
Logging.LogQueryError(ex, "Error @ Bot pickup for Bot:" + BotId);
}
}
if ((Session == null) || (Session.GetHabbo() == null) || (Session.GetHabbo().GetInventoryComponent() == null) || (BotUser == null) || (this.Session.GetHabbo().Id != ownerID))
return;
Session.GetHabbo().GetInventoryComponent().AddBot(BotUser.BotData);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
dbClient.runFastQuery("UPDATE bots SET room_id = '0' WHERE id = '" + BotId + "' LIMIT 1");
Room.GetRoomUserManager().RemoveBot(BotUser.VirtualId, false);
Session.SendMessage(Session.GetHabbo().GetInventoryComponent().SerializeBotInventory());
}
internal void CancelMysteryBox()
{
uint ItemId = Request.PopWiredUInt();
RoomUser User = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
RoomItem item = Session.GetHabbo().CurrentRoom.GetRoomItemHandler().GetItem(User.GateId);
if (item == null)
{
return;
}
if (item.InteractingUser == Session.GetHabbo().Id)
item.InteractingUser = 0;
else if (item.InteractingUser2 == Session.GetHabbo().Id)
item.InteractingUser2 = 0;
User.GateId = 0;
string BoxColour = item.ExtraData.Split(Convert.ToChar(5))[0];
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("UPDATE items SET extra_data = '" + BoxColour + Convert.ToChar(5) + "2' WHERE id=" + item.Id + " LIMIT 1;");
}
item.ExtraData = BoxColour + Convert.ToChar(5) + "2";
item.UpdateNeeded = true;
item.UpdateState(true, true);
}
internal void ReturnMysBox()
{
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
bool QueryReq = false;
dbClient.setQuery("SELECT * FROM items WHERE id=" + Session.GetHabbo().MysteryBoxId + " LIMIT 1");
DataRow Row = dbClient.getRow();
if (Row != null)
{
if (!string.IsNullOrEmpty(Row[2].ToString()))
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(uint.Parse(Row[2].ToString()));
if (Room != null)
{
RoomItem Item = Room.GetRoomItemHandler().GetItem(Session.GetHabbo().MysteryBoxId);
if (Item != null)
{
Session.GetHabbo().GetInventoryComponent().AddItem(Item);
Room.GetRoomItemHandler().RemoveFurniture(Session, Session.GetHabbo().MysteryBoxId, true);
Session.GetHabbo().GetInventoryComponent().UpdateItems(true);
return;
}
else
{
QueryReq = true;
}
}
else
{
QueryReq = true;
}
}
else
{
QueryReq = true;
}
if(QueryReq)
dbClient.runFastQuery("UPDATE items SET room_id=0 WHERE id=" + Session.GetHabbo().MysteryBoxId + " LIMIT 1");
Session.GetHabbo().GetInventoryComponent().AddNewItem(uint.Parse(Row[1].ToString()), 4700, Row[3].ToString(), 0, true, true, 0, 0);
Session.GetHabbo().GetInventoryComponent().UpdateItems(true);
}
}
}
internal void SaveMannequin()
{
uint ItemId = Request.PopWiredUInt();
string Name = Request.PopFixedString();
RoomItem Item = Session.GetHabbo().CurrentRoom.GetRoomItemHandler().GetItem(ItemId);
if (Item == null)
return;
if (!Item.ExtraData.Contains(Convert.ToChar(5)))
return;
if (!Session.GetHabbo().CurrentRoom.CheckRights(Session, true))
return;
String[] Split = Item.ExtraData.Split(Convert.ToChar(5));
Split[2] = Name;
Item.ExtraData = Split[0] + Convert.ToChar(5) + Split[1] + Convert.ToChar(5) + Split[2];
Item.Serialize(Response);
Item.UpdateState(true, true);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("UPDATE items SET extra_data=@Ed WHERE id=" + Item.Id + " LIMIT 1");
dbClient.addParameter("Ed", Item.ExtraData);
dbClient.runQuery();
}
}
internal void SaveMannequin2()
{
uint ItemId = Request.PopWiredUInt();
RoomItem Item = Session.GetHabbo().CurrentRoom.GetRoomItemHandler().GetItem(ItemId);
if (Item == null)
return;
if (!Item.ExtraData.Contains(Convert.ToChar(5)))
return;
if (!Session.GetHabbo().CurrentRoom.CheckRights(Session, true))
return;
String[] Split = Item.ExtraData.Split(Convert.ToChar(5));
Split[0] = Session.GetHabbo().Gender.ToLower();
Split[1] = "";
foreach (String Str in Session.GetHabbo().Look.Split('.'))
{
if(Str.Contains("hr") || Str.Contains("hd") || Str.Contains("he") || Str.Contains("ea") || Str.Contains("ha"))
continue;
Split[1] += Str + ".";
}
Split[1] = Split[1].TrimEnd('.');
Item.ExtraData = Split[0] + Convert.ToChar(5) + Split[1] + Convert.ToChar(5) + Split[2];
Item.UpdateNeeded = true;
Item.UpdateState(true, true);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("UPDATE items SET extra_data=@Ed WHERE id=" + Item.Id + " LIMIT 1");
dbClient.addParameter("Ed", Item.ExtraData);
dbClient.runQuery();
}
}
internal void EjectFurni()
{
int Junk = Request.PopWiredInt32();
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
if (Room == null || !Room.CheckRights(Session))
{
return;
}
uint Itemid = Request.PopWiredUInt();
RoomItem Item = Room.GetRoomItemHandler().GetItem(Itemid);
if (Item == null)
{
return;
}
GameClient Client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUserID(Item.UserID);
if (Item.GetBaseItem().InteractionType == Silverwave.HabboHotel.Items.InteractionType.postit)
return;
if (Client != null)
{
Room.GetRoomItemHandler().RemoveFurniture(Session, Item.Id);
Client.GetHabbo().GetInventoryComponent().AddNewItem(Item.Id, Item.BaseItem, Item.ExtraData, Item.GroupId, true, true, 0,0,0);
Client.GetHabbo().GetInventoryComponent().UpdateItems(true);
}
else
{
Room.GetRoomItemHandler().RemoveFurniture(Session, Item.Id);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("UPDATE items SET room_id='0' WHERE id=" + Item.Id + " LIMIT 1");
}
}
}
internal void MuteUser()
{
uint UserId = Request.PopWiredUInt();
uint RoomId = Request.PopWiredUInt();
uint Time = Request.PopWiredUInt();
Room Room = Session.GetHabbo().CurrentRoom;
if (Room == null || ((Room.WhoCanBan == 0 && !Room.CheckRights(Session, true)) || (Room.WhoCanBan == 1 && !Room.CheckRights(Session))))
return;
RoomUser Target = Room.GetRoomUserManager().GetRoomUserByHabbo(SilverwaveEnvironment.getHabboForId(UserId).Username);
if (Target == null)
return;
else if (Target.GetClient().GetHabbo().Rank > 3)
return;
if (Room.MutedUsers.ContainsKey(UserId))
{
if (Room.MutedUsers[UserId] < SilverwaveEnvironment.GetUnixTimestamp())
Room.MutedUsers.Remove(UserId);
else
return;
}
Room.MutedUsers.Add(UserId, uint.Parse((SilverwaveEnvironment.GetUnixTimestamp() + (Time * 60)).ToString()));
Target.GetClient().SendNotif("The room owner has muted you for " + Time + " minutes!");
}
internal void UpdateEventInfo()
{
int um = Request.PopWiredInt32();
string Name = Request.PopFixedString();
string Desc = Request.PopFixedString();
RoomData Room = SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(Session.GetHabbo().CurrentRoomId);
if (Room == null)
{
return;
}
// to-do: check rights for editing event ?
Room.Event.Name = LanguageLocale.FilterSwearwords(Name);
Room.Event.Description = LanguageLocale.FilterSwearwords(Desc);
SilverwaveEnvironment.GetGame().GetRoomEvents().UpdateEvent(Room.Event);
}
internal void HandleBotSpeechList()
{
int botId = this.Request.PopWiredInt32();
int skillType = this.Request.PopWiredInt32();
switch (skillType)
{
case 2:
{
string truncatedText = "";
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
DataTable dt;
DataRow speakingRow;
dbClient.setQuery("SELECT * FROM bots_speech WHERE bot_id = " + botId);
dt = dbClient.getTable();
if (dt != null)
{
foreach (DataRow dr in dt.Rows)
{
truncatedText += (dr["text"] + "\n");
}
dbClient.setQuery("SELECT * FROM bots WHERE id = " + botId);
speakingRow = dbClient.getRow();
truncatedText += ";#;";
truncatedText += Convert.ToString(speakingRow["automatic_chat"]);
truncatedText += ";#;";
truncatedText += Convert.ToString(speakingRow["speaking_interval"]);
}
}
ServerMessage message = new ServerMessage(Outgoing.SerializeSpeechList);
message.AppendInt32(botId);
message.AppendInt32(skillType);
message.AppendString(truncatedText);
this.Response = message;
this.SendResponse();
break;
}
case 5:
{
ServerMessage message = new ServerMessage(Outgoing.SerializeSpeechList);
message.AppendInt32(botId);
message.AppendInt32(skillType);
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("SELECT name FROM bots WHERE id = " + botId);
message.AppendString(dbClient.getString());
}
this.Response = message;
this.SendResponse();
break;
}
default:
return;
}
}
internal void ManageBotActions()
{
Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
uint BotId = Request.PopWiredUInt();
int ActionType = Request.PopWiredInt32();
string Data = SilverwaveEnvironment.FilterInjectionChars(Request.PopFixedString());
RoomUser BotUser = Room.GetRoomUserManager().GetBot(BotId);
bool newBot = false;
// Console.WriteLine("TEST1" + ActionType + ">>" + BotId);
switch (ActionType)
{
case 1:
BotUser.BotData.Look = this.Session.GetHabbo().Look;
break;
case 2:
DataTable BotSpeech;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("SELECT text, shout FROM bots_speech WHERE bot_id = @id;");
dbClient.addParameter("id", BotId);
BotSpeech = dbClient.getTable();
}
string[] firstdata = Data.Split(new string[] {";#;"},StringSplitOptions.None);
string[] toinendata = firstdata[0].Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
string automaticChat = firstdata[1];
string speakingInterval = firstdata[2]; //seconds
if (String.IsNullOrEmpty(speakingInterval) || Convert.ToInt32(speakingInterval) <= 0)
speakingInterval = "7";
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.runFastQuery("DELETE FROM bots_speech WHERE bot_id = '" + BotId + "'");
}
for (int i = 0; i <= toinendata.Length - 1; i++)
{
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("INSERT INTO `bots_speech` (`bot_id`, `text`) VALUES ('" + BotId + "', @data)");
dbClient.addParameter("data", toinendata[i]);
dbClient.runQuery();
dbClient.runFastQuery("UPDATE bots SET automatic_chat='" + automaticChat + "',speaking_interval=" + Convert.ToInt32(speakingInterval) + " WHERE id = " + BotId);
}
}
List<RandomSpeech> RndSpeechList = new List<RandomSpeech>();
foreach (DataRow Row2 in BotSpeech.Rows)
{
RndSpeechList.Add(new RandomSpeech((string)Row2["text"], SilverwaveEnvironment.EnumToBool(Row2["shout"].ToString())));
}
List<BotResponse> responses = new List<BotResponse>();
Room.GetRoomUserManager().RemoveBot(BotUser.VirtualId, false);
Room.GetRoomUserManager().DeployBot(new RoomBot(BotUser.BotData.BotId,BotUser.BotData.OwnerId, BotUser.BotData.RoomId, AIType.Generic, BotUser.BotData.WalkingMode, BotUser.BotData.Name, BotUser.BotData.Motto, BotUser.BotData.Look, BotUser.X, BotUser.Y, BotUser.Z, BotUser.BotData.Rot, 0, 0, 0, 0, ref RndSpeechList, ref responses, BotUser.BotData.Gender,BotUser.BotData.DanceId), null);
newBot = true;
break;
case 3:
// Stand
break;
case 4:
// Dance
if (BotUser.BotData.DanceId > 0)
{
BotUser.BotData.DanceId = 0;
}
else
{
Random rnd = new Random();
BotUser.DanceId = rnd.Next(1, 4);
BotUser.BotData.DanceId = BotUser.DanceId;
}
ServerMessage message = new ServerMessage(Outgoing.Dance);
message.AppendInt32(BotUser.VirtualId);
message.AppendInt32(BotUser.BotData.DanceId);
Session.GetHabbo().CurrentRoom.SendMessage(message);
break;
case 5:
BotUser.BotData.Name = Data;
break;
default:
break;
}
if (!newBot)
{
ServerMessage EnterMessage = new ServerMessage(Outgoing.PlaceBot);
EnterMessage.AppendInt32(1);
BotUser.Serialize(EnterMessage, Room.GetGameMap().gotPublicPool);
Room.SendMessage(EnterMessage);
}
}
internal void That()
{
Response.Init(Outgoing.AutoRoom);
Response.AppendInt32(0);
SendResponse();
}
internal void MuteAll()
{
Room Room = Session.GetHabbo().CurrentRoom;
if (Room == null || !Room.CheckRights(Session, true))
return;
Room.RoomMuted = !Room.RoomMuted;
Response.Init(Outgoing.BroadcastMessage);
Response.AppendString((Room.RoomMuted) ? "The room has been muted" : "The room has been unmuted");
Response.AppendString("");
Room.SendMessage(Response);
}
}
}
Catalogue works fine here...
Pets page doesn't works, but pets are working for me, I fixed ;)
http://i.imgur.com/XzdRJM0.png
The Staff catalog root does work. What doesn't work are the custom furni.
Since it seems no one wants to follow rules and or just blatantly disrespect them. Thread is closed. It was going to be allowed to stay open to post bug fixes and report bugs. But it seems some of you can't get it right. Just want to fix your problems and not going about it correctly.
Got a problem you can solve? Well post it here http://forum.ragezone.com/f333/