コード例 #1
0
        internal static ServerMessage Compose(GameClient Session, List<Achievement> Achievements)
        {
            ServerMessage Message = new ServerMessage(436); //436
            Message.AppendInt32(Achievements.Count);

            foreach (Achievement Achievement in Achievements)
            {
                UserAchievement UserData = Session.GetHabbo().GetAchievementData(Achievement.GroupName);
                int TargetLevel = (UserData != null ? UserData.Level + 1 : 1);
                int TotalLevels = Achievement.Levels.Count;

                if (TargetLevel > TotalLevels)
                {
                    TargetLevel = TotalLevels;
                }

                AchievementLevel TargetLevelData = Achievement.Levels[TargetLevel];

                Message.AppendUInt(Achievement.Id);                                                           // Unknown (ID?)
                Message.AppendInt32(TargetLevel);                                                   // Target level
                Message.AppendStringWithBreak(Achievement.GroupName + TargetLevel);                 // Target name/desc/badge
                Message.AppendInt32(TargetLevelData.Requirement);                                   // Progress req/target
                Message.AppendInt32(TargetLevelData.RewardPixels);                                   // Pixel reward
                Message.AppendInt32(TargetLevelData.RewardPoints);                                  // Unknown(??)
                Message.AppendInt32(UserData != null ? UserData.Progress : 0);                      // Current progress
                Message.AppendBoolean(UserData != null ? (UserData.Level >= TotalLevels) : false);  // Set 100% completed(??)
                Message.AppendStringWithBreak(Achievement.Category);                                // Category
                Message.AppendInt32(TotalLevels);                                                   // Total amount of levels
            }

            return Message;
        }
コード例 #2
0
        internal void Serialize(ServerMessage Request)
        {
            // BDhqu@UMeth0d1322033860

            Request.AppendUInt(FromUser);
            Request.AppendStringWithBreak(mUsername);
            Request.AppendStringWithBreak(FromUser.ToString());
        }
コード例 #3
0
ファイル: ChatMessage.cs プロジェクト: habb0/PiciEmulator
 internal void Serialize(ref ServerMessage packet)
 {
     packet.AppendInt32(timeSpoken.Hour);
     packet.AppendInt32(timeSpoken.Minute);
     packet.AppendUInt(userID);
     packet.AppendStringWithBreak(username);
     packet.AppendStringWithBreak(message);
 }
コード例 #4
0
ファイル: Soccer.cs プロジェクト: habb0/PiciEmulator
        internal void MoveBall(RoomItem item, GameClient mover, int newX, int newY)
        {
            if (item == null || mover == null)
                return;

            if (!room.GetGameMap().itemCanBePlacedHere(newX, newY))
                return;

            Point oldRoomCoord = item.Coordinate;
            bool itemIsOnGameItem = GameItemOverlaps(item);

            Double NewZ = room.GetGameMap().Model.SqFloorHeight[newX, newY];

            ServerMessage Message = new ServerMessage(95);
            Message.AppendUInt(item.Id);
            Message.AppendInt32(3508);
            Message.AppendInt32(item.Coordinate.X);
            Message.AppendInt32(item.Coordinate.Y);
            Message.AppendInt32(newX);
            Message.AppendInt32(newY);
            Message.AppendInt32(4);
            Message.AppendStringWithBreak(NewZ.ToString());
            Message.AppendStringWithBreak("H11");
            Message.AppendInt32(-1);
            Message.AppendInt32(0);
            room.SendMessage(Message);

            ServerMessage mMessage = new ServerMessage();
            mMessage.Init(230); // Cf
            mMessage.AppendInt32(item.Coordinate.X);
            mMessage.AppendInt32(item.Coordinate.Y);
            mMessage.AppendInt32(newX);
            mMessage.AppendInt32(newY);
            mMessage.AppendInt32(1);
            mMessage.AppendUInt(item.Id);
            mMessage.AppendStringWithBreak(item.GetZ.ToString().Replace(',', '.'));
            mMessage.AppendStringWithBreak(NewZ.ToString().Replace(',', '.'));
            mMessage.AppendInt32(0);
            room.SendMessage(mMessage);

            if (oldRoomCoord.X == newX && oldRoomCoord.Y == newY)
                return;

            room.GetRoomItemHandler().SetFloorItem(mover, item, newX, newY, item.Rot, false, false, false, false);

            if (!itemIsOnGameItem)
                HandleFootballGameItems(new Point(newX, newY), room.GetRoomUserManager().GetRoomUserByHabbo(mover.GetHabbo().Id));
        }
コード例 #5
0
ファイル: HelpTool.cs プロジェクト: habb0/PiciEmulator
        internal static ServerMessage SerializeSearchResults(string Query)
        {
            DataTable Results = null;

            using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor())
            {
                if (dbClient.dbType == Pici.Storage.Database.DatabaseType.MySQL)
                    dbClient.setQuery("SELECT id,title FROM help_topics WHERE title LIKE @query OR body LIKE @query LIMIT 25");
                else
                    dbClient.setQuery("SELECT TOP 25 id,title FROM help_topics WHERE title LIKE @query OR body LIKE @query");
                dbClient.addParameter("query", Query + "%");
                Results = dbClient.getTable();
            }

            // HII[KBCan I pay to be unbanned?

            ServerMessage Search = new ServerMessage(521);

            if (Results == null)
            {
                Search.AppendBoolean(false);
                return Search;
            }

            Search.AppendInt32(Results.Rows.Count);

            foreach (DataRow Row in Results.Rows)
            {
                Search.AppendUInt(Convert.ToUInt32(Row["id"]));
                Search.AppendStringWithBreak((string)Row["title"]);
            }

            return Search;
        }
コード例 #6
0
 internal static ServerMessage Compose(Achievement Achievement, int Level, int PointReward, int PixelReward)
 {
     ServerMessage Message = new ServerMessage(437);
     Message.AppendUInt(Achievement.Id);                                           // Achievement ID
     Message.AppendInt32(Level);                                                     // Achieved level
     Message.AppendInt32(144);                                                         // Unknown. Random useless number.
     Message.AppendStringWithBreak(Achievement.GroupName + Level);                   // Achieved name
     Message.AppendInt32(PointReward);                                               // Point reward
     Message.AppendInt32(PixelReward);                                               // Pixel reward
     Message.AppendInt32(0);                                                         // Unknown.
     Message.AppendInt32(10);                                                         // Unknown.
     Message.AppendInt32(21);                                                         // Unknown. (Extra reward?)
     Message.AppendStringWithBreak(Level > 1 ? Achievement.GroupName + (Level - 1) : string.Empty);
     Message.AppendStringWithBreak(Achievement.Category);
     return Message;
 }
コード例 #7
0
        internal static ServerMessage Compose(List<Achievement> Achievements)
        {
            ServerMessage Message = new ServerMessage(627); //627
            Message.AppendInt32(Achievements.Count);

            foreach (Achievement Achievement in Achievements)
            {
                string DisplayName = Achievement.GroupName;

                if (DisplayName.StartsWith("ACH_"))
                {
                    DisplayName = DisplayName.Substring(4);
                }

                Message.AppendStringWithBreak(DisplayName);
                Message.AppendInt32(Achievement.Levels.Count);

                foreach (AchievementLevel Level in Achievement.Levels.Values)
                {
                    Message.AppendInt32(Level.Level);
                    Message.AppendInt32(Level.Requirement);
                }
            }

            return Message;
        }
コード例 #8
0
 internal static ServerMessage Compose(Achievement Achievement, int TargetLevel, AchievementLevel TargetLevelData,
     int TotalLevels, UserAchievement UserData)
 {
     ServerMessage Message = new ServerMessage(913);
     Message.AppendUInt(Achievement.Id);                                               // Unknown (ID?)
     Message.AppendInt32(TargetLevel);                                                   // Target level
     Message.AppendStringWithBreak(Achievement.GroupName + TargetLevel);                 // Target name/desc/badge
     Message.AppendInt32(TargetLevelData.Requirement);                                   // Progress req/target
     Message.AppendInt32(TargetLevelData.RewardPixels);                                   // Pixel reward
     Message.AppendInt32(TargetLevelData.RewardPoints);                                  // Unknown(??)
     Message.AppendInt32(UserData != null ? UserData.Progress : 0);                      // Current progress
     Message.AppendBoolean(UserData != null ? (UserData.Level >= TotalLevels) : false);  // Set 100% completed(??)
     Message.AppendStringWithBreak(Achievement.Category);                                // Category
     Message.AppendInt32(TotalLevels);                                                   // Total amount of levels
     return Message;
 }
コード例 #9
0
ファイル: HelpTool.cs プロジェクト: habb0/PiciEmulator
 internal static ServerMessage SerializeTopic(HelpTopic Topic)
 {
     ServerMessage Top = new ServerMessage(520);
     Top.AppendUInt(Topic.TopicId);
     Top.AppendStringWithBreak(Topic.Body);
     return Top;
 }
コード例 #10
0
        public static ServerMessage Compose(List<SongData> Songs)
        {
            ServerMessage Message = new ServerMessage(300);
            Message.AppendInt32(Songs.Count);

            foreach (SongData Song in Songs)
            {
                Message.AppendUInt(Song.Id);
                Message.AppendStringWithBreak(Song.Name);
                Message.AppendStringWithBreak(Song.Data);
                Message.AppendInt32(Song.LengthMiliseconds);
                Message.AppendStringWithBreak(Song.Artist);
            }

            return Message;
        }
コード例 #11
0
ファイル: UserItem.cs プロジェクト: habb0/PiciEmulator
        internal void SerializeFloor(ServerMessage Message, Boolean Inventory)
        {
            Message.AppendUInt(Id);
            Message.AppendStringWithBreak(mBaseItem.Type.ToString().ToUpper());
            Message.AppendUInt(Id);
            Message.AppendInt32(GetBaseItem().SpriteId);
            Message.AppendInt32(1);
            Message.AppendStringWithBreak(ExtraData);

            Message.AppendBoolean(GetBaseItem().AllowRecycle);
            Message.AppendBoolean(GetBaseItem().AllowTrade);
            Message.AppendBoolean(GetBaseItem().AllowInventoryStack);
            Message.AppendBoolean(Marketplace.CanSellItem(this));
            Message.AppendInt32(-1);
            Message.AppendStringWithBreak("");
            Message.AppendInt32(0);
        }
コード例 #12
0
ファイル: CatalogItem.cs プロジェクト: habb0/PiciEmulator
        internal void Serialize(ServerMessage Message)
        {
            try
            {
                Message.AppendUInt(Id);
                Message.AppendStringWithBreak(Name);
                Message.AppendInt32(CreditsCost);

                if (CrystalCost > 0)
                {
                    Message.AppendInt32(CrystalCost);
                    Message.AppendInt32(4); // Hearts
                }
                else
                {
                    Message.AppendInt32(PixelsCost);
                    Message.AppendInt32(0); // Page Type; 0 = nothing, 1 = Snowflakes, 2 = hearts, 3 = ?
                }
                Message.AppendInt32(1);
                Message.AppendStringWithBreak(GetBaseItem().Type.ToString());
                Message.AppendInt32(GetBaseItem().SpriteId);

                if (Name.Contains("wallpaper_single") || Name.Contains("floor_single") || Name.Contains("landscape_single"))
                {
                    string[] Analyze = Name.Split('_');
                    Message.AppendStringWithBreak(Analyze[2]);
                }
                else if (this.songID > 0 && GetBaseItem().InteractionType == InteractionType.musicdisc)
                {
                    Message.AppendStringWithBreak(songID.ToString());
                }
                else
                {
                    Message.AppendStringWithBreak(string.Empty);
                }
                Message.AppendInt32(Amount);
                Message.AppendInt32(-1);
                Message.AppendInt32(0);
            }
            catch
            {
                Console.WriteLine("Unable to load furniture item " + Id + ": " + Name);
            }
        }
コード例 #13
0
ファイル: ShowMessage.cs プロジェクト: habb0/PiciEmulator
        public bool Handle(RoomUser user, Team team, RoomItem item)
        {
            if (user != null && !user.IsBot && user.GetClient() != null)
            {
                ServerMessage servermsg = new ServerMessage();
                servermsg.Init(25);
                servermsg.AppendInt32(user.VirtualId);
                servermsg.AppendStringWithBreak(message);
                servermsg.AppendBoolean(false);

                user.GetClient().SendMessage(servermsg);
                handler.OnEvent(itemID);
                return true;
            }

            return false;
        }
コード例 #14
0
ファイル: RoomEvent.cs プロジェクト: habb0/PiciEmulator
        internal ServerMessage Serialize(GameClient Session)
        {
            ServerMessage Message = new ServerMessage(370);
            Message.AppendStringWithBreak(Session.GetHabbo().Id + "");
            Message.AppendStringWithBreak(Session.GetHabbo().Username);
            Message.AppendStringWithBreak(RoomId + "");
            Message.AppendInt32(Category);
            Message.AppendStringWithBreak(Name);
            Message.AppendStringWithBreak(Description);
            Message.AppendStringWithBreak(StartTime);
            Message.AppendInt32(Tags.Count);

            foreach (string Tag in Tags.ToArray())
            {
                Message.AppendStringWithBreak(Tag);
            }
            return Message;
        }
コード例 #15
0
ファイル: SearchResult.cs プロジェクト: habb0/PiciEmulator
        internal void Searialize(ServerMessage reply)
        {
            reply.AppendUInt(userID);
            reply.AppendStringWithBreak(username);
            reply.AppendStringWithBreak(motto);

            bool Online = (PiciEnvironment.GetGame().GetClientManager().GetClient(userID) != null);

            reply.AppendBoolean(Online);

            reply.AppendBoolean(false);

            reply.AppendStringWithBreak(string.Empty);
            reply.AppendBoolean(false);
            reply.AppendStringWithBreak(look);
            reply.AppendStringWithBreak(last_online);
            reply.AppendStringWithBreak(string.Empty);
        }
コード例 #16
0
ファイル: GameClient.cs プロジェクト: habb0/PiciEmulator
        internal void SendNotif(string Message, Boolean FromHotelManager)
        {
            ServerMessage nMessage = new ServerMessage();

            if (FromHotelManager)
            {
                nMessage.Init(139);
            }
            else
            {
                nMessage.Init(161);
            }

            nMessage.AppendStringWithBreak(Message);
            GetConnection().SendData(nMessage.GetBytes());
        }
コード例 #17
0
ファイル: GameClient.cs プロジェクト: habb0/PiciEmulator
 internal void SendBanMessage(string Message)
 {
     ServerMessage BanMessage = new ServerMessage(35);
     BanMessage.AppendStringWithBreak(LanguageLocale.GetValue("moderation.banmessage"), 13);
     BanMessage.AppendStringWithBreak(Message);
     GetConnection().SendData(BanMessage.GetBytes());
 }
コード例 #18
0
ファイル: RoomUserManager.cs プロジェクト: habb0/PiciEmulator
        internal void UpdateUserStatus(RoomUser User, bool cyclegameitems)
        {
            if (User == null)
                return;
            bool isBot = User.IsBot;
            if (isBot)
                cyclegameitems = false;

            if (User.Statusses.ContainsKey("lay") || User.Statusses.ContainsKey("sit"))
            {
                User.Statusses.Remove("lay");
                User.Statusses.Remove("sit");
                User.UpdateNeeded = true;
            }

            //List<RoomItem> ItemsOnSquare = GetFurniObjects(User.X, User.Y);
            CoordItemSearch ItemSearch = new CoordItemSearch(room.GetGameMap().CoordinatedItems);
            List<RoomItem> ItemsOnSquare = ItemSearch.GetAllRoomItemForSquare(User.X, User.Y);
            double newZ = room.GetGameMap().SqAbsoluteHeight(User.X, User.Y, ItemsOnSquare);

            if (newZ != User.Z)
            {
                User.Z = newZ;
                if (User.isFlying)
                    User.Z += 4 + (0.5 * Math.Sin(0.7 * User.flyk));
                User.UpdateNeeded = true;
            }

            DynamicRoomModel Model = room.GetGameMap().Model;
            if (Model.SqState[User.X, User.Y] == SquareState.SEAT)
            {
                if (!User.Statusses.ContainsKey("sit"))
                {
                    User.Statusses.Add("sit", "1.0");
                }

                User.Z = Model.SqFloorHeight[User.X, User.Y];
                if (User.isFlying)
                    User.Z += 4 + (0.5 * Math.Sin(0.7 * User.flyk));
                User.RotHead = Model.SqSeatRot[User.X, User.Y];
                User.RotBody = Model.SqSeatRot[User.X, User.Y];

                User.UpdateNeeded = true;
            }

            foreach (RoomItem Item in ItemsOnSquare)
            {
                if (cyclegameitems)
                {
                    Item.UserWalksOnFurni(User);
                }

                if (Item.GetBaseItem().IsSeat)
                {
                    if (!User.Statusses.ContainsKey("sit"))
                    {
                        User.Statusses.Add("sit", TextHandling.GetString(Item.GetBaseItem().Height));
                    }

                    User.Z = Item.GetZ;
                    if (User.isFlying)
                        User.Z += 4 + (0.5 * Math.Sin(0.7 * User.flyk));
                    User.RotHead = Item.Rot;
                    User.RotBody = Item.Rot;

                    User.UpdateNeeded = true;
                }

                switch (Item.GetBaseItem().InteractionType)
                {
                    case InteractionType.bed:
                        {
                            if (!User.Statusses.ContainsKey("lay"))
                            {
                                User.Statusses.Add("lay", TextHandling.GetString(Item.GetBaseItem().Height) + " null");
                            }

                            User.Z = Item.GetZ;
                            if (User.isFlying)
                                User.Z += 4 + (0.2 * 0.5 * Math.Sin(0.7 * User.flyk));
                            User.RotHead = Item.Rot;
                            User.RotBody = Item.Rot;

                            User.UpdateNeeded = true;
                            break;
                        }

                    case InteractionType.fbgate:
                        {
                            if (cyclegameitems)
                            {
                                if (User.team != Item.team)
                                    User.team = Item.team;

                                else if (User.team == Item.team)
                                    User.team = Team.none;

                                if (!string.IsNullOrEmpty(Item.Figure))
                                {
                                    //User = GetUserForSquare(Item.Coordinate.X, Item.Coordinate.Y);
                                    if (User != null && !User.IsBot)
                                    {
                                        if (User.Coordinate == Item.Coordinate)
                                        {
                                            if (User.GetClient().GetHabbo().Gender != Item.Gender && User.GetClient().GetHabbo().Look != Item.Figure)
                                            {

                                                User.GetClient().GetHabbo().tempGender = User.GetClient().GetHabbo().Gender;
                                                User.GetClient().GetHabbo().tempLook = User.GetClient().GetHabbo().Look;

                                                User.GetClient().GetHabbo().Gender = Item.Gender;
                                                User.GetClient().GetHabbo().Look = Item.Figure;
                                            }
                                            else
                                            {
                                                User.GetClient().GetHabbo().Gender = User.GetClient().GetHabbo().tempGender;
                                                User.GetClient().GetHabbo().Look = User.GetClient().GetHabbo().tempLook;
                                            }

                                            ServerMessage RoomUpdate = new ServerMessage(266);
                                            RoomUpdate.AppendInt32(User.VirtualId);
                                            RoomUpdate.AppendStringWithBreak(User.GetClient().GetHabbo().Look);
                                            RoomUpdate.AppendStringWithBreak(User.GetClient().GetHabbo().Gender.ToLower());
                                            RoomUpdate.AppendStringWithBreak(User.GetClient().GetHabbo().Motto);
                                            room.SendMessage(RoomUpdate);
                                        }
                                    }
                                }
                            }

                            break;
                        }

                    //33: Red
                    //34: Green
                    //35: Blue
                    //36: Yellow

                    case InteractionType.banzaigategreen:
                    case InteractionType.banzaigateblue:
                    case InteractionType.banzaigatered:
                    case InteractionType.banzaigateyellow:
                        {
                            if (cyclegameitems)
                            {
                                int effectID = (int)Item.team + 32;
                                AvatarEffectsInventoryComponent efectmanager = User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent();

                                if (User.team != Item.team)
                                {
                                    User.team = Item.team;

                                    if (efectmanager.CurrentEffect != effectID)
                                        efectmanager.ApplyCustomEffect(effectID);
                                }
                                else
                                {
                                    if (efectmanager.CurrentEffect == effectID)
                                        efectmanager.ApplyCustomEffect(0);
                                    User.team = Team.none;
                                }
                            }
                            break;
                        }

                    case InteractionType.freezeyellowgate:
                    case InteractionType.freezeredgate:
                    case InteractionType.freezegreengate:
                    case InteractionType.freezebluegate:
                        {
                            if (cyclegameitems)
                            {
                                int effectID = (int)Item.team + 39;
                                AvatarEffectsInventoryComponent efectmanager = User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent();

                                if (User.team != Item.team)
                                {
                                    User.team = Item.team;

                                    if (efectmanager.CurrentEffect != effectID)
                                        efectmanager.ApplyCustomEffect(effectID);
                                }
                                else
                                {
                                    if (efectmanager.CurrentEffect == effectID)
                                        efectmanager.ApplyCustomEffect(0);
                                    User.team = Team.none;
                                }

                                ServerMessage message = new ServerMessage(700);
                                message.AppendBoolean((User.team != Team.none));

                                User.GetClient().SendMessage(message);
                            }
                            break;
                        }

                    case InteractionType.banzaitele:
                        {
                            room.GetGameItemHandler().onTeleportRoomUserEnter(User, Item);
                            break;
                        }
                }
            }

            if (cyclegameitems)
            {
                if (room.GotSoccer())
                    room.GetSoccer().OnUserWalk(User);

                if (room.GotBanzai())
                    room.GetBanzai().OnUserWalk(User);

                //if (room.GotFreeze())
                room.GetFreeze().OnUserWalk(User);
            }
        }
コード例 #19
0
ファイル: RoomUserManager.cs プロジェクト: habb0/PiciEmulator
        internal void RemoveUserFromRoom(GameClient Session, Boolean NotifyClient, Boolean NotifyKick)
        {
            try
            {
                if (Session == null)
                    return;

                if (Session.GetHabbo() == null)
                    return;

                Session.GetHabbo().GetAvatarEffectsInventoryComponent().OnRoomExit();

                if (NotifyClient)
                {
                    if (NotifyKick)
                    {
                        Session.GetMessageHandler().GetResponse().Init(33);
                        Session.GetMessageHandler().GetResponse().AppendInt32(4008);
                        Session.GetMessageHandler().SendResponse();
                    }

                    Session.GetMessageHandler().GetResponse().Init(18);
                    Session.GetMessageHandler().SendResponse();
                }

                RoomUser User = GetRoomUserByHabbo(Session.GetHabbo().Id);

                if (User != null)
                {
                    RemoveRoomUser(User);

                    if (Session.GetHabbo() != null)
                    {
                        if (!User.IsSpectator)
                        {
                            if (User.CurrentItemEffect != ItemEffectType.None)
                            {
                                User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect = -1;
                            }
                            //UserMatrix[User.X, User.Y] = false;

                            if (Session.GetHabbo() != null)
                            {
                                if (room.HasActiveTrade(Session.GetHabbo().Id))
                                    room.TryStopTrade(Session.GetHabbo().Id);

                                if (Session.GetHabbo().Username == room.Owner)
                                {
                                    if (room.HasOngoingEvent)
                                    {
                                        room.Event = new RoomEvent(0, null, null, 0, new List<string>());

                                        ServerMessage Message = new ServerMessage(370);
                                        Message.AppendStringWithBreak("-1");
                                        room.SendMessage(Message);

                                        PiciEnvironment.GetGame().GetRoomManager().GetEventManager().QueueRemoveEvent(room.RoomData, room.Event.Category);
                                    }
                                }
                                Session.GetHabbo().CurrentRoomId = 0;

                                if (Session.GetHabbo().GetMessenger() != null)
                                    Session.GetHabbo().GetMessenger().OnStatusChanged(true);
                            }

                            //DateTime Start = DateTime.Now;
                            //using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor())
                            //{
                            //    //TimeSpan TimeUsed1 = DateTime.Now - Start;
                            //    //Logging.LogThreadException("Time used on sys part 2: " + TimeUsed1.Seconds + "s, " + TimeUsed1.Milliseconds + "ms", "");

                            //    //if (Session.GetHabbo() != null)
                            //    //    dbClient.runFastQuery("UPDATE user_roomvisits SET exit_timestamp = '" + PiciEnvironment.GetUnixTimestamp() + "' WHERE room_id = '" + this.Id + "' AND user_id = '" + Id + "' ORDER BY exit_timestamp DESC LIMIT 1");
                            //    //dbClient.runFastQuery("UPDATE rooms SET users_now = " + UsersNow + " WHERE id = " + Id);
                            //    //dbClient.runFastQuery("REPLACE INTO room_active VALUES (" + RoomId + ", " + UsersNow + ")");
                            //    dbClient.runFastQuery("UPDATE room_active SET active_users = " + UsersNow);
                            //}
                        }
                    }

                    usersByUserID.Remove(User.userID);
                    if (Session.GetHabbo() != null)
                        usersByUsername.Remove(Session.GetHabbo().Username.ToLower());

                    User.Dispose();
                }

            }
            catch (Exception e)
            {
                Logging.LogCriticalException("Error during removing user from room:" + e.ToString());
            }
        }
コード例 #20
0
        private void RemoveRoomItem(RoomItem Item)
        {
            if (Item.IsWallItem)
            {
                ServerMessage Message = new ServerMessage(84);
                Message.AppendRawUInt(Item.Id);
                Message.AppendStringWithBreak("");
                Message.AppendBoolean(false);
                room.SendMessage(Message);
            }
            else if (Item.IsFloorItem)
            {
                ServerMessage Message = new ServerMessage(94);
                Message.AppendRawUInt(Item.Id);
                Message.AppendStringWithBreak("");
                Message.AppendBoolean(false);
                room.SendMessage(Message);
            }

            if (Item.IsWallItem)
                mWallItems.Remove(Item.Id);
            else
            {
                room.GetGameMap().RemoveFromMap(Item);
                mFloorItems.Remove(Item.Id);
            }

            RemoveItem(Item);

            room.GetRoomUserManager().UpdateUserStatusses();

            if (WiredHandler.TypeIsWire(Item.GetBaseItem().InteractionType))
            {
                room.GetWiredHandler().RemoveWiredItem(Item.Coordinate);
            }
        }
コード例 #21
0
        internal ServerMessage UpdateUserOnRoller(RoomUser pUser, Point pNextCoord, uint pRollerID, Double NextZ)
        {
            ServerMessage mMessage = new ServerMessage();
            mMessage.Init(230); // Cf
            mMessage.AppendInt32(pUser.X);
            mMessage.AppendInt32(pUser.Y);

            mMessage.AppendInt32(pNextCoord.X);
            mMessage.AppendInt32(pNextCoord.Y);

            mMessage.AppendInt32(0);
            mMessage.AppendUInt(pRollerID);
            mMessage.AppendString("J");
            mMessage.AppendInt32(pUser.VirtualId);
            mMessage.AppendStringWithBreak(TextHandling.GetString(pUser.Z));
            mMessage.AppendStringWithBreak(TextHandling.GetString(NextZ));

            room.GetGameMap().UpdateUserMovement(new Point(pUser.X, pUser.Y), new Point(pNextCoord.X, pNextCoord.Y), pUser);
            room.GetGameMap().GameMap[pUser.X, pUser.Y] = 1;
            pUser.X = pNextCoord.X;
            pUser.Y = pNextCoord.Y;
            pUser.Z = NextZ;
            room.GetGameMap().GameMap[pUser.X, pUser.Y] = 0;

            return mMessage;
        }
コード例 #22
0
        internal List<RoomItem> RemoveAllFurniture(GameClient Session)
        {
            List<RoomItem> ReturnList = new List<RoomItem>();
            foreach (RoomItem Item in mFloorItems.Values.ToArray())
            {
                Item.Interactor.OnRemove(Session, Item);
                ServerMessage Message = new ServerMessage(94);
                Message.AppendRawUInt(Item.Id);
                Message.AppendStringWithBreak("");
                Message.AppendBoolean(false);
                room.SendMessage(Message);

                //mFloorItems.Remove(Item.Id);

                ReturnList.Add(Item);
            }

            foreach (RoomItem Item in mWallItems.Values.ToArray())
            {
                Item.Interactor.OnRemove(Session, Item);
                ServerMessage Message = new ServerMessage(84);
                Message.AppendRawUInt(Item.Id);
                Message.AppendStringWithBreak("");
                Message.AppendBoolean(false);
                room.SendMessage(Message);
                //mWallItems.Remove(Item.Id);

                ReturnList.Add(Item);
            }

            mWallItems.Clear();
            mFloorItems.Clear();

            mRemovedItems.Clear();

            mMovedItems.Clear();
            mAddedItems.Clear();
            mRollers.QueueDelegate(new onCycleDoneDelegate(ClearRollers));

            using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.runFastQuery("DELETE FROM items_rooms WHERE room_id = " + room.RoomId);
            }

            room.GetGameMap().GenerateMaps();
            room.GetRoomUserManager().UpdateUserStatusses();

            if (room.GotWired())
            {
                room.GetWiredHandler().OnPickall();
            }

            return ReturnList;
        }
コード例 #23
0
        private ServerMessage UpdateItemOnRoller(RoomItem pItem, Point NextCoord, uint pRolledID, Double NextZ)
        {
            ServerMessage mMessage = new ServerMessage();
            mMessage.Init(230); // Cf
            mMessage.AppendInt32(pItem.GetX);
            mMessage.AppendInt32(pItem.GetY);

            mMessage.AppendInt32(NextCoord.X);
            mMessage.AppendInt32(NextCoord.Y);

            mMessage.AppendInt32(1);

            mMessage.AppendUInt(pItem.Id);

            mMessage.AppendStringWithBreak(TextHandling.GetString(pItem.GetZ));
            mMessage.AppendStringWithBreak(TextHandling.GetString(NextZ));

            mMessage.AppendUInt(pRolledID);

            //room.SendMessage(mMessage);

            //SetFloorItem(null, pItem, NextCoord.X, NextCoord.Y, pItem.Rot, false, true);
            SetFloorItem(pItem, NextCoord.X, NextCoord.Y, NextZ);

            return mMessage;
        }
コード例 #24
0
ファイル: GameClient.cs プロジェクト: habb0/PiciEmulator
        /* internal bool tryLogin(string AuthTicket)
        {
            try
            {
                string ip = GetConnection().getIp();
                byte errorCode = 0;
                UserData userData = UserDataFactory.GetUserData(AuthTicket, ip, out errorCode);
                if (errorCode == 1)
                {
                    SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso"));
                    return false;
                }
                else if (errorCode == 2)
                {
                    SendNotifWithScroll(LanguageLocale.GetValue("login.loggedin"));
                    return false;
                }

                PiciEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.userID, userData.user.Username);
                this.Habbo = userData.user;
                userData.user.LoadData(userData);

                if (userData.user.Username == null)
                {
                    SendBanMessage("You have no username.");
                    return false;
                }
                string banReason = PiciEnvironment.GetGame().GetBanManager().GetBanReason(userData.user.Username, ip);
                if (!string.IsNullOrEmpty(banReason))
                {
                    SendBanMessage(banReason);
                    return false;
                }

                userData.user.Init(this, userData);

                QueuedServerMessage response = new QueuedServerMessage(Connection);

                userData.user.SerializeQuests(ref response);

                //List<string> Rights = PiciEnvironment.GetGame().GetRoleManager().GetRightsForHabbo(userData.user);

                GetMessageHandler().GetResponse().Init(2);
                if (userData.user.HasRight("acc_anyroomowner"))
                    GetMessageHandler().GetResponse().Append(7);
                else if (userData.user.HasRight("acc_anyroomrights"))
                    GetMessageHandler().GetResponse().Append(5);
                else if (userData.user.HasRight("acc_supporttool"))
                    GetMessageHandler().GetResponse().Append(4);
                else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_vip"))
                    GetMessageHandler().GetResponse().AppendInt32(2);
                else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_club"))
                    GetMessageHandler().GetResponse().AppendInt32(1);
                else
                    GetMessageHandler().GetResponse().AppendInt32(0);

                GetMessageHandler().SendResponse();
                /*foreach (string Right in Rights)
                {
                    appendingResponse.AppendStringWithBreak(Right);
                }

                if (userData.user.HasRight("acc_supporttool"))
                {
                    SendMessage(PiciEnvironment.GetGame().GetModerationTool().SerializeTool());
                    PiciEnvironment.GetGame().GetModerationTool().SerializeOpenTickets(this);
                }

                SendMessage(userData.user.GetAvatarEffectsInventoryComponent().Serialize());

                //GetResponse().Init(290);
                GetMessageHandler().GetResponse().Init(290);
                GetMessageHandler().GetResponse().AppendBoolean(true);
                GetMessageHandler().GetResponse().AppendBoolean(false);
                GetMessageHandler().SendResponse();

                GetMessageHandler().GetResponse().Init(3);
                GetMessageHandler().SendResponse();

                GetMessageHandler().GetResponse().Init(517);
                GetMessageHandler().GetResponse().AppendBoolean(true);
                GetMessageHandler().SendResponse();

                //if (PixelManager.NeedsUpdate(this))
                //    PixelManager.GivePixels(this);

                if (PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin > 0)
                {
                    PixelManager.GivePixels(this, PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin);
                }

                if (PiciEnvironment.GetGame().GetClientManager().creditsOnLogin > 0)
                {
                    userData.user.Credits += PiciEnvironment.GetGame().GetClientManager().creditsOnLogin;
                    userData.user.UpdateCreditsBalance();
                }

                if (userData.user.HomeRoom > 0)
                {
                    GetMessageHandler().GetResponse().Init(455);
                    GetMessageHandler().GetResponse().AppendUInt(userData.user.HomeRoom);
                    GetMessageHandler().SendResponse();
                }

                GetMessageHandler().GetResponse().Init(458);
                GetMessageHandler().GetResponse().AppendInt32(30);
                GetMessageHandler().GetResponse().AppendInt32(userData.user.FavoriteRooms.Count);

                foreach (uint Id in userData.user.FavoriteRooms.ToArray())
                {
                    GetMessageHandler().GetResponse().AppendUInt(Id);
                }

                GetMessageHandler().SendResponse();

                if (!userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1"))
                {
                    userData.user.GetBadgeComponent().GiveBadge("ACH_BasicClub1", true);
                }
                else if (userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1"))
                {
                    userData.user.GetBadgeComponent().RemoveBadge("ACH_BasicClub1");
                }

                if (!userData.user.GetBadgeComponent().HasBadge("Z63"))
                    userData.user.GetBadgeComponent().GiveBadge("Z63", true);

                ServerMessage alert = new ServerMessage(810);
                alert.AppendUInt(1);
                alert.AppendStringWithBreak("Welcome bro!");
                SendMessage(alert);

                return true;
            }
            catch (UserDataNotFoundException e)
            {
                SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso") + "extra data: " + e.ToString());
            }
            catch (Exception e)
            {
                Logging.LogCriticalException("Invalid Dario bug duing user login: "******"Login error: " + e.ToString());
                SendNotifWithScroll("Login error: " + e.ToString());
            }
            return false;
        }
        */
        internal void SendNotifWithScroll(string message)
        {
            ServerMessage notification = new ServerMessage(810);
            notification.AppendUInt(1);
            notification.AppendStringWithBreak(message);

            SendMessage(notification);
        }
コード例 #25
0
        internal ServerMessage SerializeHeightmap()
        {
            StringBuilder HeightMap = new StringBuilder();

            //Needs cache!
            for (int y = 0; y < MapSizeY; y++)
            {
                for (int x = 0; x < MapSizeX; x++)
                {
                    if (SqState[x, y] == SquareState.BLOCKED)
                        HeightMap.Append("x");
                    else if (x == DoorX && y == DoorY)
                        HeightMap.Append(DoorZ.ToString());
                    else
                        HeightMap.Append(SqFloorHeight[x, y]);
                }
                HeightMap.Append(Convert.ToChar(13));
            }

            ServerMessage Message = new ServerMessage(31);
            Message.AppendStringWithBreak(HeightMap.ToString());

            return Message;
        }
コード例 #26
0
ファイル: GameClient.cs プロジェクト: habb0/PiciEmulator
        internal bool tryLogin(string AuthTicket)
        {
            try
            {
                string ip = GetConnection().getIp();
                byte errorCode = 0;
                UserData userData = UserDataFactory.GetUserData(AuthTicket, ip, out errorCode);
                if (errorCode == 1)
                {
                    SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso"));
                    return false;
                }
                else if (errorCode == 2)
                {
                    SendNotifWithScroll(LanguageLocale.GetValue("login.loggedin"));
                    return false;
                }

                PiciEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.userID, userData.user.Username);
                this.Habbo = userData.user;
                userData.user.LoadData(userData);

                if (userData.user.Username == null)
                {
                    SendBanMessage("You have no username.");
                    return false;
                }
                string banReason = PiciEnvironment.GetGame().GetBanManager().GetBanReason(userData.user.Username, ip);
                if (!string.IsNullOrEmpty(banReason))
                {
                    SendBanMessage(banReason);
                    return false;
                }

                userData.user.Init(this, userData);

                QueuedServerMessage response = new QueuedServerMessage(Connection);

                userData.user.SerializeQuests(ref response);

                GetMessageHandler().GetResponse().Init(2);
                if (userData.user.HasRight("acc_anyroomowner"))
                    GetMessageHandler().GetResponse().AppendInt32(7);
                else if (userData.user.HasRight("acc_anyroomrights"))
                    GetMessageHandler().GetResponse().AppendInt32(5);
                else if (userData.user.HasRight("acc_supporttool"))
                    GetMessageHandler().GetResponse().AppendInt32(4);
                else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_vip"))
                    GetMessageHandler().GetResponse().AppendInt32(2);
                else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_club"))
                    GetMessageHandler().GetResponse().AppendInt32(1);
                else
                    GetMessageHandler().GetResponse().AppendInt32(0);

                GetMessageHandler().SendResponse();

                if (userData.user.HasRight("acc_supporttool"))
                {
                    SendMessage(PiciEnvironment.GetGame().GetModerationTool().SerializeTool());
                    PiciEnvironment.GetGame().GetModerationTool().SerializeOpenTickets(this);
                }

                SendMessage(userData.user.GetAvatarEffectsInventoryComponent().Serialize());

                GetMessageHandler().GetResponse().Init(290);
                GetMessageHandler().GetResponse().AppendBoolean(true);
                GetMessageHandler().GetResponse().AppendBoolean(false);
                GetMessageHandler().SendResponse();

                GetMessageHandler().GetResponse().Init(3);
                GetMessageHandler().SendResponse();

                GetMessageHandler().GetResponse().Init(517);
                GetMessageHandler().GetResponse().AppendBoolean(true);
                GetMessageHandler().SendResponse();

                //if (PixelManager.NeedsUpdate(this))
                //    PixelManager.GivePixels(this);

                if (PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin > 0)
                {
                    PixelManager.GivePixels(this, PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin);
                }

                if (PiciEnvironment.GetGame().GetClientManager().creditsOnLogin > 0)
                {
                    userData.user.Credits += PiciEnvironment.GetGame().GetClientManager().creditsOnLogin;
                    userData.user.UpdateCreditsBalance();
                }

                if (userData.user.HomeRoom > 0)
                {
                    GetMessageHandler().GetResponse().Init(455);
                    GetMessageHandler().GetResponse().AppendUInt(userData.user.HomeRoom);
                    GetMessageHandler().SendResponse();
                }

                GetMessageHandler().GetResponse().Init(458);
                GetMessageHandler().GetResponse().AppendInt32(30);
                GetMessageHandler().GetResponse().AppendInt32(userData.user.FavoriteRooms.Count);

                foreach (uint Id in userData.user.FavoriteRooms.ToArray())
                {
                    GetMessageHandler().GetResponse().AppendUInt(Id);
                }

                GetMessageHandler().SendResponse();

                if (!userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1"))
                {
                    userData.user.GetBadgeComponent().GiveBadge("ACH_BasicClub1", true);
                }
                else if (userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1"))
                {
                    userData.user.GetBadgeComponent().RemoveBadge("ACH_BasicClub1");
                }

                if (!userData.user.GetBadgeComponent().HasBadge("Z63"))
                    userData.user.GetBadgeComponent().GiveBadge("Z63", true);

                if (userData.user.Rank > 5 && !userData.user.GetBadgeComponent().HasBadge("ADM"))
                    userData.user.GetBadgeComponent().GiveBadge("ADM", true);

                ServerMessage alert = new ServerMessage(810);
                alert.AppendUInt(1);
                alert.AppendStringWithBreak(LanguageLocale.welcomeAlert);
                SendMessage(alert);
                Logging.WriteLine("[" + Habbo.Username + "] logged in");

                return true;
            }
            catch (UserDataNotFoundException e)
            {
                SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso") + "extra data: " + e.ToString());
            }
            catch (Exception e)
            {
                Logging.LogCriticalException("Invalid Dario bug duing user login: "******"Login error: " + e.ToString());
                SendNotifWithScroll("Login error: " + e.ToString());
            }
            return false;
        }
コード例 #27
0
ファイル: CatalogPage.cs プロジェクト: habb0/PiciEmulator
 internal void Serialize(int Rank, ServerMessage Message)
 {
     Message.AppendBoolean(Visible);
     Message.AppendInt32(IconColor);
     Message.AppendInt32(IconImage);
     Message.AppendInt32(Id);
     Message.AppendStringWithBreak(Caption);
     Message.AppendInt32(PiciEnvironment.GetGame().GetCatalog().GetTreeSize(Rank, Id));
 }
コード例 #28
0
        internal void copylook()
        {
            string copyTarget = Params[1];
            bool findResult = false;

            string gender = null;
            string figure = null;
            DataRow dRow;
            using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.setQuery("SELECT gender,look FROM users WHERE username = @username");
                dbClient.addParameter("username", copyTarget);
                dRow = dbClient.getRow();

                if (dRow != null)
                {
                    findResult = true;
                    gender = (string)dRow[0];
                    figure = (string)dRow[1];

                    dbClient.setQuery("UPDATE users SET gender = @gender, look = @look WHERE username = @username");
                    dbClient.addParameter("gender", gender);
                    dbClient.addParameter("look", figure);
                    dbClient.addParameter("username", Session.GetHabbo().Username);
                    dbClient.runQuery();
                }
            }

            if (findResult)
            {
                Session.GetHabbo().Gender = gender;
                Session.GetHabbo().Look = figure;
                Session.GetMessageHandler().GetResponse().Init(266);
                Session.GetMessageHandler().GetResponse().AppendInt32(-1);
                Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Session.GetHabbo().Look);
                Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Session.GetHabbo().Gender.ToLower());
                Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Session.GetHabbo().Motto);
                Session.GetMessageHandler().SendResponse();

                if (Session.GetHabbo().InRoom)
                {
                    Room Room = Session.GetHabbo().CurrentRoom;

                    if (Room == null)
                    {
                        return;
                    }

                    RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                    if (User == null)
                    {
                        return;
                    }

                    ServerMessage RoomUpdate = new ServerMessage(266);
                    RoomUpdate.AppendInt32(User.VirtualId);
                    RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Look);
                    RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Gender.ToLower());
                    RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Motto);
                    Room.SendMessage(RoomUpdate);
                }
            }
        }
コード例 #29
0
        internal void hotelalert()
        {
            string Notice = GetInput(Params).Substring(4);

            ServerMessage HotelAlert = new ServerMessage(808);
            HotelAlert.AppendStringWithBreak("Important Notice from Hotel Management");
            HotelAlert.AppendStringWithBreak(Notice + "\r\n" + "- " + Session.GetHabbo().Username);
            PiciEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(HotelAlert);

            PiciEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "HotelAlert", "Hotel alert [" + Notice + "]");

            //PiciEnvironment.messagingBot.SendMassMessage(new PublicMessage(string.Format("[{0}] => [{1}]", Session.GetHabbo().Username, Notice)), true);
        }
コード例 #30
0
ファイル: GuideBot.cs プロジェクト: habb0/PiciEmulator
        internal override void OnUserSay(Rooms.RoomUser User, string Message)
        {
            if (Gamemap.TileDistance(GetRoomUser().X, GetRoomUser().Y, User.X, User.Y) > 8)
            {
                return;
            }

            BotResponse Response = GetBotData().GetResponse(Message);

            if (Response == null)
            {
                return;
            }

            switch (Response.ResponseType.ToLower())
            {
                case "say":

                    GetRoomUser().Chat(null, Response.ResponseText, false);
                    break;

                case "shout":

                    GetRoomUser().Chat(null, Response.ResponseText, true);
                    break;

                case "whisper":

                    ServerMessage TellMsg = new ServerMessage(25);
                    TellMsg.AppendInt32(GetRoomUser().VirtualId);
                    TellMsg.AppendStringWithBreak(Response.ResponseText);
                    TellMsg.AppendBoolean(false);

                    User.GetClient().SendMessage(TellMsg);
                    break;
            }

            if (Response.ServeId >= 1)
            {
                User.CarryItem(Response.ServeId);
            }
        }
コード例 #31
0
        internal void ChangeLook()
        {
            if (Session.GetHabbo().MutantPenalty)
            {
                Session.SendNotif("Because of a penalty or restriction on your account, you are not allowed to change your look.");
                return;
            }

            string Gender = Request.PopFixedString().ToUpper();
            string Look   = PiciEnvironment.FilterInjectionChars(Request.PopFixedString());

            if (!AntiMutant.ValidateLook(Look, Gender))
            {
                return;
            }

            PiciEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.PROFILE_CHANGE_LOOK);

            Session.GetHabbo().Look   = PiciEnvironment.FilterFigure(Look);
            Session.GetHabbo().Gender = Gender.ToLower();

            using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.setQuery("UPDATE users SET look = @look, gender = @gender WHERE id = " + Session.GetHabbo().Id);
                dbClient.addParameter("look", Look);
                dbClient.addParameter("gender", Gender);
                dbClient.runQuery();
            }

            PiciEnvironment.GetGame().GetAchievementManager().ProgressUserAchievement(Session, "ACH_AvatarLooks", 1);

            Session.GetMessageHandler().GetResponse().Init(266);
            Session.GetMessageHandler().GetResponse().AppendInt32(-1);
            Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Session.GetHabbo().Look);
            Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Session.GetHabbo().Gender.ToLower());
            Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Session.GetHabbo().Motto);
            Session.GetMessageHandler().SendResponse();

            if (Session.GetHabbo().InRoom)
            {
                Room Room = Session.GetHabbo().CurrentRoom;

                if (Room == null)
                {
                    return;
                }

                RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                if (User == null)
                {
                    return;
                }

                ServerMessage RoomUpdate = new ServerMessage(266);
                RoomUpdate.AppendInt32(User.VirtualId);
                RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Look);
                RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Gender.ToLower());
                RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Motto);
                Room.SendMessage(RoomUpdate);
            }
        }