Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        internal void GetRoomData3()
        {
            if (Session.GetHabbo().LoadingRoom <= 0 || !Session.GetHabbo().LoadingChecksPassed || CurrentLoadingRoom == null)
            {
                return;
            }

            if (CurrentLoadingRoom.UsersNow + 1 > CurrentLoadingRoom.UsersMax && !Session.GetHabbo().HasRight("acc_enter_anyroom"))
            {
                Session.SendNotif(LanguageLocale.GetValue("room.roomfull"));
                return;
            }

            ClearRoomLoading();

            QueuedServerMessage response = new QueuedServerMessage(Session.GetConnection());
            Response.Init(30);

            if (!string.IsNullOrEmpty(CurrentLoadingRoom.GetGameMap().StaticModel.StaticFurniMap))
            {
                Response.Append(CurrentLoadingRoom.GetGameMap().StaticModel.StaticFurniMap);
            }
            else
            {
                Response.Append(0);
            }

            response.appendResponse(GetResponse());
            //SendResponse();

            if (CurrentLoadingRoom.Type == "private")
            {
                RoomItem[] floorItems = CurrentLoadingRoom.GetRoomItemHandler().mFloorItems.Values.ToArray();
                RoomItem[] wallItems = CurrentLoadingRoom.GetRoomItemHandler().mWallItems.Values.ToArray();

                Response.Init(32);
                Response.Append(floorItems.Length);

                foreach (RoomItem Item in floorItems)
                    Item.Serialize(Response);

                response.appendResponse(GetResponse());

                Response.Init(45);
                Response.Append(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;
            }

            response.sendResponse();
            CurrentLoadingRoom.GetRoomUserManager().AddUserToRoom(Session, Session.GetHabbo().SpectatorMode);
        }
Exemplo n.º 3
0
 internal void SerializeQuests(ref QueuedServerMessage response)
 {
     PiciEnvironment.GetGame().GetQuestManager().GetList(mClient, null);
 }
Exemplo n.º 4
0
        internal void GetRoomData2()
        {
            try
            {
                QueuedServerMessage message = new QueuedServerMessage(Session.GetConnection());
                if (Session.GetHabbo().LoadingRoom <= 0 || CurrentLoadingRoom == null)
                    return;

                RoomData Data = CurrentLoadingRoom.RoomData;//PiciEnvironment.GetGame().GetRoomManager().GenerateRoomData(Session.GetHabbo().LoadingRoom);

                if (Data == null)
                {
                    return;
                }

                if (Data.Model == null)
                {
                    Session.SendNotif(LanguageLocale.GetValue("room.missingmodeldata"));
                    Session.SendMessage(new ServerMessage(18));
                    ClearRoomLoading();
                    return;
                }

                //CurrentLoadingRoom = PiciEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().LoadingRoom);

                message.appendResponse(CurrentLoadingRoom.GetGameMap().Model.GetHeightmap());
                message.appendResponse(CurrentLoadingRoom.GetGameMap().Model.SerializeRelativeHeightmap());
                message.sendResponse();
                //Session.SendMessage(CurrentLoadingRoom.Model.GetHeightmap());
                //Session.SendMessage(CurrentLoadingRoom.Model.SerializeRelativeHeightmap());

            }
            catch (Exception e)
            {
                Logging.LogException("Unable to load room ID [" + Session.GetHabbo().LoadingRoom + "] " + e.ToString());
                Session.SendNotif(LanguageLocale.GetValue("room.roomdataloaderror"));
            }
        }
Exemplo n.º 5
0
 internal void GetInventory()
 {
     QueuedServerMessage response = new QueuedServerMessage(Session.GetConnection());
     response.appendResponse(Session.GetHabbo().GetInventoryComponent().SerializeFloorItemInventory());
     response.appendResponse(Session.GetHabbo().GetInventoryComponent().SerializeWallItemInventory());
     response.sendResponse();
 }
Exemplo n.º 6
0
        internal void PrepareRoomForUser(uint Id, string Password)
        {
            ClearRoomLoading();
            QueuedServerMessage response = new QueuedServerMessage(Session.GetConnection());

            if (PiciEnvironment.ShutdownStarted)
            {
                Session.SendNotif(LanguageLocale.GetValue("shutdown.alert"));
                return;
            }

            if (Session.GetHabbo().InRoom)
            {
                Room OldRoom = PiciEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                if (OldRoom != null)
                {
                    OldRoom.GetRoomUserManager().RemoveUserFromRoom(Session, false, false);
                    Session.CurrentRoomUserID = -1;
                }
            }

            Room Room = PiciEnvironment.GetGame().GetRoomManager().LoadRoom(Id);

            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().HasRight("acc_enter_anyroom") && Room.UserIsBanned(Session.GetHabbo().Id))
            {
                if (Room.HasBanExpired(Session.GetHabbo().Id))
                {
                    Room.RemoveBan(Session.GetHabbo().Id);
                }
                else
                {
                    // C`PA
                    Response.Init(MessageComposerIds.CantConnectMessageComposer);
                    Response.AppendInt32(4);
                    //SendResponse();//******
                    response.appendResponse(GetResponse());

                    Response.Init(MessageComposerIds.CloseConnectionMessageComposer);
                    //SendResponse();//******
                    response.appendResponse(GetResponse());

                    response.sendResponse();
                    return;
                }
            }

            if (Room.UsersNow >= Room.UsersMax && !Session.GetHabbo().HasRight("acc_enter_fullrooms"))
            {
                if (!Session.GetHabbo().HasRight("acc_enter_fullrooms"))
                {
                    Response.Init(MessageComposerIds.CantConnectMessageComposer);
                    Response.AppendInt32(1);
                    //SendResponse();//******
                    response.appendResponse(GetResponse());

                    Response.Init(MessageComposerIds.CloseConnectionMessageComposer);
                    //SendResponse();//******
                    response.appendResponse(GetResponse());

                    response.sendResponse();
                    return;
                }
            }

            if (Room.Type == "public")
            {
                if (Room.State > 0 && !Session.GetHabbo().HasRight("acc_enter_anyroom"))
                {
                    Session.SendNotif(LanguageLocale.GetValue("room.noaccess"));

                    Response.Init(MessageComposerIds.CloseConnectionMessageComposer);
                    //SendResponse();//******
                    response.appendResponse(GetResponse());

                    response.sendResponse();
                    return;
                }

                Response.Init(MessageComposerIds.RoomUrlMessageComposer);
                Response.AppendStringWithBreak("/client/public/" + Room.ModelName + "/0");
                //SendResponse();//******
                response.appendResponse(GetResponse());
            }
            else if (Room.Type == "private")
            {
                Response.Init(MessageComposerIds.OpenConnectionMessageComposer);
                //SendResponse();//******
                response.appendResponse(GetResponse());

                if (!Session.GetHabbo().HasRight("acc_enter_anyroom") && !Room.CheckRights(Session, true) && !Session.GetHabbo().IsTeleporting)
                {
                    if (Room.State == 1)
                    {
                        if (Room.UserCount == 0)
                        {
                            Response.Init(MessageComposerIds.FlatAccessDeniedMessageComposer);
                            //SendResponse();//******
                            response.appendResponse(GetResponse());
                        }
                        else
                        {
                            Response.Init(MessageComposerIds.DoorbellMessageComposer);
                            Response.AppendStringWithBreak("");
                            //SendResponse();//******
                            response.appendResponse(GetResponse());

                            ServerMessage RingMessage = new ServerMessage(MessageComposerIds.DoorbellMessageComposer);
                            RingMessage.AppendStringWithBreak(Session.GetHabbo().Username);
                            Room.SendMessageToUsersWithRights(RingMessage);
                        }

                        response.sendResponse();

                        return;
                    }
                    else if (Room.State == 2)
                    {
                        if (Password.ToLower() != Room.Password.ToLower())
                        {
                            Response.Init(33);
                            Response.AppendInt32(-100002);
                            //SendResponse();//******
                            response.appendResponse(GetResponse());

                            Response.Init(MessageComposerIds.CloseConnectionMessageComposer);
                            //SendResponse();//******
                            response.appendResponse(GetResponse());

                            response.sendResponse();
                            return;
                        }
                    }
                }

                Response.Init(MessageComposerIds.GenericErrorComposer);
                Response.AppendStringWithBreak("/client/internal/" + Room.RoomId + "/id");
                //SendResponse(); //******
                response.appendResponse(GetResponse());
            }

            Session.GetHabbo().LoadingChecksPassed = true;

            response.addBytes(LoadRoomForUser().getPacket);
            //LoadRoomForUser();
            response.sendResponse();
        }
Exemplo n.º 7
0
        internal void OnRoomUserAdd()
        {
            QueuedServerMessage response = new QueuedServerMessage(Session.GetConnection());

            List<RoomUser> UsersToDisplay = new List<RoomUser>();

            if (CurrentLoadingRoom == null)
                return;

            foreach (RoomUser User in CurrentLoadingRoom.GetRoomUserManager().UserList.Values)
            {
                if (User.IsSpectator)
                    continue;

                UsersToDisplay.Add(User);
            }

            Response.Init(28);
            Response.AppendInt32(UsersToDisplay.Count);

            foreach (RoomUser User in UsersToDisplay)
            {
                User.Serialize(Response, CurrentLoadingRoom.GetGameMap().gotPublicPool);
            }

            response.appendResponse(GetResponse());

            GetResponse().Init(472);
            GetResponse().AppendBoolean(CurrentLoadingRoom.Hidewall);
            GetResponse().AppendInt32(CurrentLoadingRoom.WallThickness);
            GetResponse().AppendInt32(CurrentLoadingRoom.FloorThickness);
            response.appendResponse(GetResponse());

            if (CurrentLoadingRoom.Type == "public")
            {
                Response.Init(471);
                Response.AppendBoolean(false);
                Response.AppendStringWithBreak(CurrentLoadingRoom.ModelName, "room modelname");
                Response.AppendBoolean(false);
                response.appendResponse(GetResponse());
            }
            else if (CurrentLoadingRoom.Type == "private")
            {
                Response.Init(471);
                Response.AppendBoolean(true);
                Response.AppendUInt(CurrentLoadingRoom.RoomId);

                if (CurrentLoadingRoom.CheckRights(Session, true))
                {
                    Response.AppendBoolean(true);
                }
                else
                {
                    Response.AppendBoolean(false);
                }

                response.appendResponse(GetResponse());

                // GQhntX]uberEmu PacketloggingDescriptionHQMSCQFJtag1tag2Ika^SMqurbIHH

                Response.Init(454);
                Response.AppendInt32(1);
                Response.AppendUInt(CurrentLoadingRoom.RoomId);
                Response.AppendInt32(0);
                Response.AppendStringWithBreak(CurrentLoadingRoom.Name);
                Response.AppendStringWithBreak(CurrentLoadingRoom.Owner);
                Response.AppendInt32(CurrentLoadingRoom.State);
                Response.AppendInt32(0);
                Response.AppendInt32(25);
                Response.AppendStringWithBreak(CurrentLoadingRoom.Description);
                Response.AppendInt32(0);
                Response.AppendInt32(1);
                Response.AppendInt32(8228);
                Response.AppendInt32(CurrentLoadingRoom.Category);
                Response.AppendStringWithBreak("");
                Response.AppendInt32(CurrentLoadingRoom.TagCount);

                foreach (string Tag in CurrentLoadingRoom.Tags.ToArray())
                {
                    Response.AppendStringWithBreak(Tag);
                }

                CurrentLoadingRoom.Icon.Serialize(Response);
                Response.AppendBoolean(false);
                response.appendResponse(GetResponse());
            }

            ServerMessage Updates = CurrentLoadingRoom.GetRoomUserManager().SerializeStatusUpdates(true);

            if (Updates != null)
            {
                //Session.SendMessage(Updates);
                response.appendResponse(Updates);
            }

            foreach (RoomUser User in CurrentLoadingRoom.GetRoomUserManager().UserList.Values)
            {
                if (User.IsSpectator)
                    continue;

                if (User.IsDancing)
                {
                    Response.Init(480);
                    Response.AppendInt32(User.VirtualId);
                    Response.AppendInt32(User.DanceId);
                    response.appendResponse(GetResponse());
                }

                if (User.IsAsleep)
                {
                    Response.Init(486);
                    Response.AppendInt32(User.VirtualId);
                    Response.AppendBoolean(true);
                    response.appendResponse(GetResponse());
                }

                if (User.CarryItemID > 0 && User.CarryTimer > 0)
                {
                    Response.Init(482);
                    Response.AppendInt32(User.VirtualId);
                    Response.AppendInt32(User.CarryTimer);
                    response.appendResponse(GetResponse());
                }

                if (!User.IsBot)
                {
                    try
                    {
                        if (User.GetClient() != null && User.GetClient().GetHabbo() != null && User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent() != null && User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect >= 1)
                        {
                            Response.Init(485);
                            Response.AppendInt32(User.VirtualId);
                            Response.AppendInt32(User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect);
                            response.appendResponse(GetResponse());
                        }
                    }
                    catch (Exception e) { Logging.HandleException(e, "Rooms.SendRoomData3"); }
                }
            }

            response.sendResponse();
            CurrentLoadingRoom = null;
        }
Exemplo n.º 8
0
        internal QueuedServerMessage LoadRoomForUser()
        {
            //Room Room = PiciEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().LoadingRoom);
            Room Room = CurrentLoadingRoom;

            QueuedServerMessage response = new QueuedServerMessage(Session.GetConnection());

            if (Room == null || !Session.GetHabbo().LoadingChecksPassed)
                return response;

            // todo: Room.SerializeGroupBadges()
            Response.Init(309);
            Response.AppendInt32(1); //yes or no i guess
            Response.AppendInt32(122768); // group iD
            Response.AppendStringWithBreak("b1201Xs03097s55091s17094a7a396e8d44670744d87bf913858b1fc");

            Response.Init(69);
            Response.AppendStringWithBreak(Room.ModelName);
            Response.AppendUInt(Room.RoomId);
            response.appendResponse(GetResponse());

            if (Session.GetHabbo().SpectatorMode)
            {
                Response.Init(254);
                response.appendResponse(GetResponse());
            }

            if (Room.Type == "private")
            {
                if (Room.Wallpaper != "0.0")
                {
                    Response.Init(46);
                    Response.AppendStringWithBreak("wallpaper");
                    Response.AppendStringWithBreak(Room.Wallpaper);
                    response.appendResponse(GetResponse());
                }

                if (Room.Floor != "0.0")
                {
                    Response.Init(46);
                    Response.AppendStringWithBreak("floor");
                    Response.AppendStringWithBreak(Room.Floor);
                    response.appendResponse(GetResponse());
                }

                Response.Init(46);
                Response.AppendStringWithBreak("landscape");
                Response.AppendStringWithBreak(Room.Landscape);
                response.appendResponse(GetResponse());

                if (Room.CheckRights(Session, true))
                {
                    Response.Init(42);
                    response.appendResponse(GetResponse());

                    Response.Init(47);
                    response.appendResponse(GetResponse());
                }
                else if (Room.CheckRights(Session))
                {
                    Response.Init(42);
                    response.appendResponse(GetResponse());
                }

                Response.Init(345);

                if (Session.GetHabbo().RatedRooms.Contains(Room.RoomId) || Room.CheckRights(Session, true))
                {
                    Response.Append(Room.Score);
                }
                else
                {
                    Response.Append(-1);
                }

                response.appendResponse(GetResponse());

                if (Room.HasOngoingEvent)
                {
                    Session.SendMessage(Room.Event.Serialize(Session));
                }
                else
                {
                    Response.Init(370);
                    Response.AppendStringWithBreak("-1");
                    response.appendResponse(GetResponse());
                }
            }

            //response.sendResponse();
            return response;
        }