コード例 #1
0
        public void Handle(GameClient session, ClientMessage message)
        {
            Room room = session.GetHabbo().GetRoomSession().GetRoom();

            if (room != null)
            {
                uint     itemId = message.PopWiredUInt();
                RoomItem item   = room.RoomItemManager.TryGetRoomItem(itemId);
                if (item != null)
                {
                    string   data         = message.PopFixedString();
                    string[] dataSpllited = data.Split(new char[] { ' ' }, 2);

                    string message_ = TextUtilies.FilterString(dataSpllited[1], false, true);
                    if (room.GaveRoomRights(session) || data.StartsWith(item.ExtraData))
                    {
                        string color = dataSpllited[0];
                        if (color == "FFFF33" || color == "FF9CFF" || color == "9CCEFF" || color == "9CFF9C")
                        {
                            item.ExtraData = color + " " + message_;
                            item.UpdateState(true, true);
                        }
                    }
                }
            }
        }
コード例 #2
0
ファイル: MottoMessageEvent.cs プロジェクト: aromaa/Skylight
        public void Handle(GameClient session, ClientMessage message)
        {
            if (session != null && session.GetHabbo() != null)
            {
                RoomUnit roomUser = session.GetHabbo().GetRoomSession().GetRoomUser();
                if (roomUser != null)
                {
                    string motto = TextUtilies.FilterString(message.PopFixedString());
                    if (!TextUtilies.HaveBlacklistedWords(motto))
                    {
                        session.GetHabbo().Motto = motto;

                        using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                        {
                            dbClient.AddParamWithValue("userId", session.GetHabbo().ID);
                            dbClient.AddParamWithValue("motto", motto);

                            dbClient.ExecuteQuery("UPDATE users SET motto = @motto WHERE id = @userId LIMIT 1");
                            if (session.GetHabbo().GetUserSettings().FriendStream)
                            {
                                dbClient.ExecuteQuery("INSERT INTO user_friend_stream(type, user_id, timestamp, extra_data) VALUES('3', @userId, UNIX_TIMESTAMP(), @motto)");
                            }
                        }

                        session.SendMessage(OutgoingPacketsEnum.UpdateUser, new ValueHolder("VirtualID", -1, "Look", session.GetHabbo().Look, "Gender", session.GetHabbo().Gender, "Motto", session.GetHabbo().Motto, "AchievementPoints", session.GetHabbo().GetUserStats().AchievementPoints));
                        roomUser.Room.SendToAll(OutgoingPacketsEnum.UpdateUser, new ValueHolder("VirtualID", roomUser.VirtualID, "Look", session.GetHabbo().Look, "Gender", session.GetHabbo().Gender, "Motto", session.GetHabbo().Motto, "AchievementPoints", session.GetHabbo().GetUserStats().AchievementPoints));

                        Skylight.GetGame().GetAchievementManager().AddAchievement(session, "ChangeMotto", 1);
                    }
                }
            }
        }
コード例 #3
0
        public virtual void Handle(GameClient session, ClientMessage message)
        {
            if (session?.GetHabbo()?.GetMessenger() != null)
            {
                string filteredMessage = TextUtilies.CheckBlacklistedWords(TextUtilies.FilterString(this.Message));

                List <string> receiverUsernames  = new List <string>();
                List <int>    receiverSessionIds = new List <int>();
                foreach (uint userId in this.SendTo)
                {
                    if (userId > 0) //real user
                    {
                        if (session.GetHabbo().GetMessenger().IsFriendWith(userId))
                        {
                            Skylight.GetGame().GetGameClientManager().GetGameClientById(userId)?.SendMessage(new MessengerReceivedRoomInviteComposerHandler(session.GetHabbo().ID, filteredMessage));
                        }
                        else
                        {
                            receiverUsernames.Add(Skylight.GetGame().GetGameClientManager().GetUsernameByID(userId));
                            receiverSessionIds.Add(-1);
                        }
                    }
                }

                Skylight.GetGame().GetChatlogManager().LogRoomInvite(session, this.SendTo.Where(u => u > 0).ToList(), receiverUsernames, receiverSessionIds, this.Message);
            }
        }
コード例 #4
0
 public void Handle(GameClient session, ClientMessage message)
 {
     if (session.FlagmeCommandUsed)
     {
         if (session.GetHabbo().HasPermission("cmd_flagme"))
         {
             string username = TextUtilies.FilterString(message.PopFixedString());
             if (username.Length < 3) //to short
             {
                 ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                 message_.Init(r63aOutgoing.ValidUsername);
                 message_.AppendInt32(2); //result
                 message_.AppendString(username);
                 message_.AppendInt32(0); //suggested names
                 session.SendMessage(message_);
             }
             else if (username.Length > 15) // too long
             {
                 ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                 message_.Init(r63aOutgoing.ValidUsername);
                 message_.AppendInt32(3); //result
                 message_.AppendString(username);
                 message_.AppendInt32(0); //suggested names
                 session.SendMessage(message_);
             }
             else if (username.Contains(" ") || !Regex.IsMatch(username, "^[-a-zA-Z0-9._:,]+$") || TextUtilies.HaveBlacklistedWords(username)) //invalid name
             {
                 ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                 message_.Init(r63aOutgoing.ValidUsername);
                 message_.AppendInt32(4); //result
                 message_.AppendString(username);
                 message_.AppendInt32(0); //suggested names
                 session.SendMessage(message_);
             }
             else if (Skylight.GetGame().GetGameClientManager().UsernameExits(username)) //name already exits
             {
                 ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                 message_.Init(r63aOutgoing.ValidUsername);
                 message_.AppendInt32(5); //result
                 message_.AppendString(username);
                 message_.AppendInt32(0); //suggested names
                 session.SendMessage(message_);
             }
             else
             {
                 ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                 message_.Init(r63aOutgoing.ValidUsername);
                 message_.AppendInt32(0); //result
                 message_.AppendString(username);
                 message_.AppendInt32(0); //suggested names
                 session.SendMessage(message_);
             }
         }
     }
     else
     {
     }
 }
コード例 #5
0
        public void Handle(GameClient session, ClientMessage message)
        {
            int    pageId           = message.PopWiredInt32();
            uint   itemId           = message.PopWiredUInt();
            string extraData        = message.PopFixedString();
            string receiverUsername = TextUtilies.FilterString(message.PopFixedString());
            string giftMessage      = TextUtilies.FilterString(message.PopFixedString());
            int    giftSpriteId     = message.PopWiredInt32(); //0 for no special gift
            int    giftBoxId        = message.PopWiredInt32();
            int    giftRibbonId     = message.PopWiredInt32();

            Skylight.GetGame().GetCatalogManager().BuyItem(session, pageId, itemId, extraData, 1, true, receiverUsername, giftMessage, giftSpriteId, giftBoxId, giftRibbonId);
        }
コード例 #6
0
        public void Handle(GameClient session, ClientMessage message)
        {
            if (session != null && session.GetHabbo() != null)
            {
                RoomUnit roomUser = session.GetHabbo().GetRoomSession().GetRoomUser();
                if (roomUser != null)
                {
                    string motto = TextUtilies.FilterString(message.PopFixedString());
                    if (!TextUtilies.HaveBlacklistedWords(motto))
                    {
                        session.GetHabbo().Motto = motto;

                        using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                        {
                            dbClient.AddParamWithValue("userId", session.GetHabbo().ID);
                            dbClient.AddParamWithValue("motto", motto);

                            dbClient.ExecuteQuery("UPDATE users SET motto = @motto WHERE id = @userId LIMIT 1");
                            if (session.GetHabbo().GetUserSettings().FriendStream)
                            {
                                dbClient.ExecuteQuery("INSERT INTO user_friend_stream(type, user_id, timestamp, extra_data) VALUES('3', @userId, UNIX_TIMESTAMP(), @motto)");
                            }
                        }

                        ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                        message_.Init(r63aOutgoing.UpdateUser);
                        message_.AppendInt32(-1);
                        message_.AppendString(session.GetHabbo().Look);
                        message_.AppendString(session.GetHabbo().Gender.ToLower());
                        message_.AppendString(session.GetHabbo().Motto);
                        message_.AppendInt32(session.GetHabbo().GetUserStats().AchievementPoints);
                        session.SendMessage(message_);

                        ServerMessage message_2 = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                        message_2.Init(r63aOutgoing.UpdateUser);
                        message_2.AppendInt32(roomUser.VirtualID);
                        message_2.AppendString(session.GetHabbo().Look);
                        message_2.AppendString(session.GetHabbo().Gender.ToLower());
                        message_2.AppendString(session.GetHabbo().Motto);
                        message_2.AppendInt32(session.GetHabbo().GetUserStats().AchievementPoints);
                        roomUser.Room.SendToAll(message_2);

                        Skylight.GetGame().GetAchievementManager().AddAchievement(session, "ChangeMotto", 1);
                    }
                }
            }
        }
コード例 #7
0
        void IncomingPacket.Handle(GameClient session, ClientMessage message)
        {
            if (session != null && session.GetHabbo() != null)
            {
                RoomUnit roomUser = session.GetHabbo().GetRoomSession().CurrentRoomRoomUser;
                if (roomUser != null)
                {
                    string message_ = message.PopFixedString();
                    if (message_.Length > 300)
                    {
                        message_ = message_.Substring(0, 300);
                    }

                    roomUser.Speak(TextUtilies.FilterString(message_), true, session.GetHabbo().GetUserSettings().ChatColor = message.PopWiredInt32());
                }
            }
        }
コード例 #8
0
ファイル: ShoutMessageEvent.cs プロジェクト: aromaa/Skylight
        public void Handle(GameClient session, ClientMessage message)
        {
            if (session != null && session.GetHabbo() != null)
            {
                RoomUnit roomUser = session.GetHabbo().GetRoomSession().CurrentRoomRoomUser;
                if (roomUser != null)
                {
                    string message_ = message.PopFixedString();
                    if (message_.Length > 300)
                    {
                        message_ = message_.Substring(0, 300);
                    }

                    roomUser.Speak(TextUtilies.FilterString(message_), true);
                }
            }
        }
コード例 #9
0
        public void Handle(GameClient session, ClientMessage message)
        {
            if (session != null && session.GetHabbo() != null)
            {
                RoomUnit roomUser = session.GetHabbo().GetRoomSession().CurrentRoomRoomUser;
                if (roomUser != null)
                {
                    string message_ = message.PopFixedString();
                    if (message_.Length > 300)
                    {
                        message_ = message_.Substring(0, 300);
                    }

                    roomUser.Speak(TextUtilies.FilterString(message_), false);
                    roomUser.Room.SendToAll(new MultiRevisionServerMessage(OutgoingPacketsEnum.TypingStatus, new ValueHolder().AddValue("VirtualID", roomUser.VirtualID).AddValue("Typing", false)));
                }
            }
        }
コード例 #10
0
        public RoomData CreateRoom(GameClient gameClient, string roomName, string roomDescription, string roomModel, int categoryId, int maxUsers, int tradeType, RoomStateType state)
        {
            roomName = TextUtilies.CheckBlacklistedWords(TextUtilies.FilterString(roomName));
            if (this.RoomModels.ContainsKey(roomModel))
            {
                string clubName = this.RoomModels[roomModel].ClubName;
                if (string.IsNullOrEmpty(clubName) || gameClient.GetHabbo().GetSubscriptionManager().HasSubscription(clubName)) //hc check
                {
                    if (roomName.Length >= 1)
                    {
                        uint roomId = 0;
                        using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                        {
                            dbClient.AddParamWithValue("name", roomName);
                            dbClient.AddParamWithValue("description", roomDescription);
                            dbClient.AddParamWithValue("model", roomModel);
                            dbClient.AddParamWithValue("category", categoryId);
                            dbClient.AddParamWithValue("usersMax", maxUsers);
                            dbClient.AddParamWithValue("ownerid", gameClient.GetHabbo().ID);
                            dbClient.ExecuteQuery("INSERT INTO rooms(type, name, description, model, category, users_max, trade, ownerid, data, state) VALUES('private', @name, @description, @model, @category, @usersMax, '" + tradeType + "', @ownerid, '', '" + (state == RoomStateType.PASSWORD ? "password" : state == RoomStateType.LOCKED ? "locked" : "open") + "')");
                            roomId = (uint)dbClient.GetID();
                        }
                        gameClient.GetHabbo().AddRoom(roomId);

                        return(this.TryGetAndLoadRoomData(roomId));
                    }
                    else
                    {
                        gameClient.SendNotif("Room name is too short!");
                        return(null);
                    }
                }
                else
                {
                    gameClient.SendNotif("You need HC/VIP to use this room model!");
                    return(null);
                }
            }
            else
            {
                gameClient.SendNotif("This room model havent yet added! Please try again later!");
                return(null);
            }
        }
コード例 #11
0
        public void Handle(GameClient session, ClientMessage message)
        {
            Room room = session.GetHabbo().GetRoomSession().GetRoom();

            if (room != null)
            {
                uint     itemId = message.PopWiredUInt();
                RoomItem item   = room.RoomItemManager.TryGetFloorItem(itemId);
                if (item != null && item is RoomItemFootballGate)
                {
                    RoomItemFootballGate gate = (RoomItemFootballGate)item;

                    string gender = message.PopFixedString();
                    string look   = message.PopFixedString();
                    if (gender == "M" || gender == "F")
                    {
                        gate.SetFigure(gender, TextUtilies.FilterString(look));
                    }
                }
            }
        }
コード例 #12
0
        public void Handle(GameClient session, ClientMessage message)
        {
            if (!Skylight.GetGame().GetModerationToolManager().HaveOpenSupportTickets(session.GetHabbo().ID))
            {
                string issue = TextUtilies.FilterString(message.PopFixedString());
                message.PopWiredInt32(); //always 1
                int  topic      = message.PopWiredInt32();
                uint reportedId = message.PopWiredUInt();

                Skylight.GetGame().GetModerationToolManager().CallForHelp(session, issue, topic, reportedId);

                ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                message_.Init(r63aOutgoing.CallForHelpResult);
                message_.AppendBoolean(false);
                session.SendMessage(message_);
            }
            else
            {
                ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                message_.Init(r63aOutgoing.CallForHelpResult);
                message_.AppendBoolean(true);
                session.SendMessage(message_);
            }
        }
コード例 #13
0
        public void Handle(GameClient session, ClientMessage message)
        {
            if (session != null && session.GetHabbo() != null && session.GetHabbo().GetRoomSession() != null)
            {
                Room room = Skylight.GetGame().GetRoomManager().TryGetRoom(session.GetHabbo().GetRoomSession().CurrentRoomID);
                if (room != null && room.HaveOwnerRights(session))
                {
                    uint   roomId = message.PopWiredUInt();
                    string name   = TextUtilies.CheckBlacklistedWords(TextUtilies.FilterString(message.PopFixedString()));
                    if (name.Length > 100)
                    {
                        name = name.Substring(0, 100);
                    }

                    string description = TextUtilies.CheckBlacklistedWords(TextUtilies.FilterString(message.PopFixedString()));
                    if (description.Length > 255)
                    {
                        description = description.Substring(0, 255);
                    }

                    int state = message.PopWiredInt32();
                    if (state < 0 || state > 2)
                    {
                        state = (int)room.RoomData.State;
                    }

                    string password = TextUtilies.FilterString(message.PopFixedString());
                    if (password.Length > 30)
                    {
                        password = room.RoomData.Password;
                    }

                    int usersMax = message.PopWiredInt32();
                    if (usersMax < 0 || usersMax % 5 == 1 || usersMax > 100)
                    {
                        usersMax = room.RoomData.UsersMax;
                    }

                    int category = message.PopWiredInt32();
                    if (Skylight.GetGame().GetNavigatorManager().GetFlatCat(category) == null) //invalid category
                    {
                        category = room.RoomData.Category;
                    }

                    string tags      = "";
                    int    tagsCount = message.PopWiredInt32();
                    if (tagsCount >= 0 && tagsCount <= 2)
                    {
                        for (int i = 0; i < tagsCount; i++)
                        {
                            if (i > 0)
                            {
                                tags += ",";
                            }

                            tags += TextUtilies.CheckBlacklistedWords(TextUtilies.FilterString(message.PopFixedString()));
                        }

                        if (tags.Length > 100)
                        {
                            tags = string.Join(",", room.RoomData.Tags);
                        }
                    }
                    else
                    {
                        tags = string.Join(",", room.RoomData.Tags);
                    }

                    bool allowPets        = message.PopBase64Boolean();
                    bool allowPetsEat     = message.PopBase64Boolean();
                    bool allowWalkthrough = message.PopBase64Boolean();
                    bool hidewalls        = message.PopBase64Boolean();

                    int wallthick = message.PopWiredInt32();
                    if (wallthick < -2 || wallthick > 1)
                    {
                        wallthick = room.RoomData.Wallthick;
                    }

                    int floorthick = message.PopWiredInt32();
                    if (floorthick < -2 || floorthick > 1)
                    {
                        floorthick = room.RoomData.Floorthick;
                    }

                    room.RoomData.Name             = name;
                    room.RoomData.Description      = description;
                    room.RoomData.State            = (RoomStateType)state;
                    room.RoomData.Password         = password;
                    room.RoomData.UsersMax         = usersMax;
                    room.RoomData.Category         = category;
                    room.RoomData.Tags             = tags.Split(',').ToList();
                    room.RoomData.AllowPets        = allowPets;
                    room.RoomData.AllowPetsEat     = allowPetsEat;
                    room.RoomData.AllowWalkthrough = allowWalkthrough;
                    room.RoomData.Hidewalls        = hidewalls;
                    room.RoomData.Wallthick        = wallthick;
                    room.RoomData.Floorthick       = floorthick;

                    using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                    {
                        dbClient.AddParamWithValue("roomid", room.ID);
                        dbClient.AddParamWithValue("name", name);
                        dbClient.AddParamWithValue("description", description);
                        dbClient.AddParamWithValue("state", room.RoomData.State == RoomStateType.PASSWORD ? "password" : room.RoomData.State == RoomStateType.LOCKED ? "locked" : "open");
                        dbClient.AddParamWithValue("password", password);
                        dbClient.AddParamWithValue("users_max", usersMax);
                        dbClient.AddParamWithValue("category", category);
                        dbClient.AddParamWithValue("tags", tags);
                        dbClient.AddParamWithValue("allow_pets", allowPets ? "1" : "0");
                        dbClient.AddParamWithValue("allow_pets_eat", allowPetsEat ? "1" : "0");
                        dbClient.AddParamWithValue("allow_walkthrough", allowWalkthrough ? "1" : "0");
                        dbClient.AddParamWithValue("hidewalls", hidewalls ? "1" : "0");
                        dbClient.AddParamWithValue("wallthick", wallthick);
                        dbClient.AddParamWithValue("floorthick", floorthick);

                        dbClient.ExecuteQuery("UPDATE rooms SET name = @name, description = @description, state = @state, password = @password, users_max = @users_max, category = @category, tags = @tags, allow_pets = @allow_pets, allow_pets_eat = @allow_pets_eat, allow_walkthrough = @allow_walkthrough, hidewalls = @hidewalls, wallthick = @wallthick, floorthick = @floorthick WHERE id = @roomid LIMIT 1");
                    }

                    room.SendToAll(new MultiRevisionServerMessage(OutgoingPacketsEnum.RoomSettingsOK, new ValueHolder("RoomID", room.ID)));
                    room.SendToAll(new MultiRevisionServerMessage(OutgoingPacketsEnum.RoomUpdateOK, new ValueHolder("RoomID", room.ID)));
                    room.SendToAll(new MultiRevisionServerMessage(OutgoingPacketsEnum.RoomVIPSettings, new ValueHolder("Hidewalls", room.RoomData.Hidewalls, "Wallthick", room.RoomData.Wallthick, "Floorthick", room.RoomData.Floorthick)));
                    room.SendToAll(new MultiRevisionServerMessage(OutgoingPacketsEnum.RoomData, new ValueHolder("Room", room.RoomData)));
                }
            }
        }
コード例 #14
0
        public virtual void Handle(GameClient session, ClientMessage message)
        {
            if (session?.GetHabbo()?.GetMessenger() != null)
            {
                if (this.UserID > 0) //Real user
                {
                    if (!session.GetHabbo().GetMessenger().IsFriendWith(this.UserID))
                    {
                        session.SendMessage(new MessengerSendPrivateMessageErrorComposerHandler(this.UserID, MessengerSendPrivateMessageErrorCode.NotFriend));
                    }
                    else
                    {
                        if (session.GetHabbo().IsMuted())
                        {
                            session.SendMessage(new MessengerSendPrivateMessageErrorComposerHandler(this.UserID, MessengerSendPrivateMessageErrorCode.SenderMuted));
                        }
                        else
                        {
                            GameClient target = Skylight.GetGame().GetGameClientManager().GetGameClientById(this.UserID);
                            if (target?.GetHabbo()?.GetMessenger() != null)
                            {
                                if (target.GetHabbo().IsMuted())
                                {
                                    session.SendMessage(new MessengerSendPrivateMessageErrorComposerHandler(this.UserID, MessengerSendPrivateMessageErrorCode.ReceiverMuted));
                                }
                                else
                                {
                                    string filteredMessage = TextUtilies.CheckBlacklistedWords(TextUtilies.FilterString(this.Message));

                                    if (!session.GetHabbo().HasPermission("acc_nochatlog_pm"))
                                    {
                                        Skylight.GetGame().GetChatlogManager().LogPrivateMessage(session, target, this.Message);
                                    }

                                    target.SendMessage(new MessengerReceivePrivateMessageComposerHandler(session.GetHabbo().ID, filteredMessage));
                                }
                            }
                            else
                            {
                                session.SendMessage(new MessengerSendPrivateMessageErrorComposerHandler(this.UserID, MessengerSendPrivateMessageErrorCode.Offline));
                            }
                        }
                    }
                }
                else if (this.UserID == 0) //Staff chat
                {
                    if (session.GetHabbo().HasPermission("acc_staffchat"))
                    {
                        List <uint>   receiverIds        = new List <uint>();
                        List <string> receiverUsernames  = new List <string>();
                        List <int>    receiverSessionIds = new List <int>();

                        foreach (GameClient session_ in Skylight.GetGame().GetGameClientManager().GetClients())
                        {
                            if ((session_?.GetHabbo()?.HasPermission("acc_staffchat") ?? false) && session_.GetHabbo().ID != session.GetHabbo().ID)
                            {
                                receiverIds.Add(session_.GetHabbo().ID);
                                receiverUsernames.Add(session_.GetHabbo().Username);
                                receiverSessionIds.Add(session_.SessionID);

                                session_.SendMessage(new MessengerReceivePrivateMessageComposerHandler(this.UserID, this.Message, 0, session.GetHabbo().Username, session.GetHabbo().Look, session.GetHabbo().ID));
                            }
                        }

                        Skylight.GetGame().GetChatlogManager().LogStaffChatMessage(session, receiverIds, receiverUsernames, receiverSessionIds, this.Message);
                    }
                    else
                    {
                        session.SendMessage(new MessengerSendPrivateMessageErrorComposerHandler(this.UserID, MessengerSendPrivateMessageErrorCode.NotFriend));
                    }
                }
                else //Group chats
                {
                    //MUCH TODO

                    session.SendMessage(new MessengerSendPrivateMessageErrorComposerHandler(this.UserID, MessengerSendPrivateMessageErrorCode.Offline));
                }
            }
        }
コード例 #15
0
        public void Handle(GameClient session, ClientMessage message)
        {
            if (session != null && session.GetHabbo() != null && session.GetHabbo().GetRoomSession() != null)
            {
                uint roomId = message.PopWiredUInt();

                Room room = Skylight.GetGame().GetRoomManager().TryGetRoom(session.GetHabbo().GetRoomSession().CurrentRoomID);
                if (room != null && room.HaveOwnerRights(session) && room.ID == roomId)
                {
                    string name = TextUtilies.CheckBlacklistedWords(TextUtilies.FilterString(message.PopFixedString()));
                    if (name.Length > 100)
                    {
                        name = name.Substring(0, 100);
                    }

                    string description = TextUtilies.CheckBlacklistedWords(TextUtilies.FilterString(message.PopFixedString()));
                    if (description.Length > 255)
                    {
                        description = description.Substring(0, 255);
                    }

                    int state = message.PopWiredInt32();
                    if (state < 0 || state > 3)
                    {
                        state = (int)room.RoomData.State;
                    }

                    string password = TextUtilies.FilterString(message.PopFixedString());
                    if (password.Length > 30)
                    {
                        password = room.RoomData.Password;
                    }

                    int usersMax = message.PopWiredInt32();
                    if (usersMax < 0 || usersMax % 5 == 1 || usersMax > 100)
                    {
                        usersMax = room.RoomData.UsersMax;
                    }

                    int category = message.PopWiredInt32();
                    if (Skylight.GetGame().GetNavigatorManager().GetFlatCat(category) == null) //invalid category
                    {
                        category = room.RoomData.Category;                                     // 0 = no category
                    }

                    string tags      = "";
                    int    tagsCount = message.PopWiredInt32();
                    if (tagsCount >= 0 && tagsCount <= 2)
                    {
                        for (int i = 0; i < tagsCount; i++)
                        {
                            if (i > 0)
                            {
                                tags += ",";
                            }

                            tags += TextUtilies.CheckBlacklistedWords(TextUtilies.FilterString(message.PopFixedString()));
                        }

                        if (tags.Length > 100)
                        {
                            tags = string.Join(",", room.RoomData.Tags);
                        }
                    }
                    else
                    {
                        tags = string.Join(",", room.RoomData.Tags);
                    }

                    int allowTrade = message.PopWiredInt32();
                    if (allowTrade < 0 || allowTrade > 2)
                    {
                        allowTrade = (int)room.RoomData.AllowTrade;
                    }

                    bool allowPets        = message.PopWiredBoolean();
                    bool allowPetsEat     = message.PopWiredBoolean();
                    bool allowWalkthrough = message.PopWiredBoolean();
                    bool hidewalls        = message.PopWiredBoolean();

                    int wallthick = message.PopWiredInt32();
                    if (wallthick < -2 || wallthick > 1)
                    {
                        wallthick = room.RoomData.Wallthick;
                    }

                    int floorthick = message.PopWiredInt32();
                    if (floorthick < -2 || floorthick > 1)
                    {
                        floorthick = room.RoomData.Floorthick;
                    }

                    int muteOption = message.PopWiredInt32();
                    if (muteOption < 0 || muteOption > 1)
                    {
                        muteOption = (int)room.RoomData.MuteOption;
                    }

                    int kickOption = message.PopWiredInt32();
                    if (kickOption < 0 || kickOption > 2)
                    {
                        kickOption = (int)room.RoomData.KickOption;
                    }

                    int banOption = message.PopWiredInt32();
                    if (banOption < 0 || banOption > 1)
                    {
                        banOption = (int)room.RoomData.BanOption;
                    }

                    int chatMode = message.PopWiredInt32();
                    if (chatMode < 0 || chatMode > 1)
                    {
                        chatMode = (int)room.RoomData.ChatMode;
                    }

                    int chatWeight = message.PopWiredInt32();
                    if (chatWeight < 0 || chatWeight > 2)
                    {
                        chatWeight = (int)room.RoomData.ChatWeight;
                    }

                    int chatSpeed = message.PopWiredInt32();
                    if (chatSpeed < 0 || chatSpeed > 2)
                    {
                        chatSpeed = (int)room.RoomData.ChatSpeed;
                    }

                    int chatDistance = message.PopWiredInt32();
                    if (chatDistance < 0 || chatDistance > 99)
                    {
                        chatDistance = room.RoomData.ChatDistance;
                    }

                    int chatProtection = message.PopWiredInt32();
                    if (chatProtection < 0 || chatProtection > 2)
                    {
                        chatProtection = (int)room.RoomData.ChatProtection;
                    }

                    room.RoomData.Name             = name;
                    room.RoomData.Description      = description;
                    room.RoomData.State            = (RoomStateType)state;
                    room.RoomData.Password         = password;
                    room.RoomData.UsersMax         = usersMax;
                    room.RoomData.Category         = category;
                    room.RoomData.Tags             = tags.Split(',').ToList();
                    room.RoomData.AllowTrade       = (RoomAllowTradeType)allowTrade;
                    room.RoomData.AllowPets        = allowPets;
                    room.RoomData.AllowPetsEat     = allowPetsEat;
                    room.RoomData.AllowWalkthrough = allowWalkthrough;
                    room.RoomData.Hidewalls        = hidewalls;
                    room.RoomData.Wallthick        = wallthick;
                    room.RoomData.Floorthick       = floorthick;
                    room.RoomData.MuteOption       = (RoomWhoCanType)muteOption;
                    room.RoomData.KickOption       = (RoomWhoCanType)kickOption;
                    room.RoomData.BanOption        = (RoomWhoCanType)banOption;
                    room.RoomData.ChatMode         = (RoomChatModeType)chatMode;
                    room.RoomData.ChatWeight       = (RoomChatWeightType)chatWeight;
                    room.RoomData.ChatSpeed        = (RoomChatSpeedType)chatSpeed;
                    room.RoomData.ChatDistance     = chatDistance;
                    room.RoomData.ChatProtection   = (RoomChatProtectionType)chatProtection;

                    using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                    {
                        dbClient.AddParamWithValue("roomid", room.ID);
                        dbClient.AddParamWithValue("name", name);
                        dbClient.AddParamWithValue("description", description);
                        dbClient.AddParamWithValue("state", room.RoomData.State == RoomStateType.PASSWORD ? "password" : room.RoomData.State == RoomStateType.LOCKED ? "locked" : "open");
                        dbClient.AddParamWithValue("password", password);
                        dbClient.AddParamWithValue("users_max", usersMax);
                        dbClient.AddParamWithValue("category", category);
                        dbClient.AddParamWithValue("tags", tags);
                        dbClient.AddParamWithValue("allow_pets", allowPets ? "1" : "0");
                        dbClient.AddParamWithValue("allow_pets_eat", allowPetsEat ? "1" : "0");
                        dbClient.AddParamWithValue("allow_walkthrough", allowWalkthrough ? "1" : "0");
                        dbClient.AddParamWithValue("hidewalls", hidewalls ? "1" : "0");
                        dbClient.AddParamWithValue("wallthick", wallthick);
                        dbClient.AddParamWithValue("floorthick", floorthick);

                        dbClient.ExecuteQuery("UPDATE rooms SET name = @name, description = @description, state = @state, password = @password, users_max = @users_max, category = @category, tags = @tags, allow_pets = @allow_pets, allow_pets_eat = @allow_pets_eat, allow_walkthrough = @allow_walkthrough, hidewalls = @hidewalls, wallthick = @wallthick, floorthick = @floorthick, trade = '" + allowTrade + "', mute_option = '" + muteOption + "', kick_option = '" + kickOption + "', ban_option = '" + banOption + "', chat_mode = '" + chatMode + "', chat_weight = '" + chatWeight + "', chat_speed = '" + chatSpeed + "', chat_protection = '" + chatProtection + "' WHERE id = @roomid LIMIT 1");
                    }

                    room.SendToAll(OutgoingPacketsEnum.RoomSettingsOK, new ValueHolder("RoomID", room.ID));
                    room.SendToAll(OutgoingPacketsEnum.RoomUpdateOK, new ValueHolder("RoomID", room.ID));
                    room.SendToAll(OutgoingPacketsEnum.RoomVIPSettings, new ValueHolder("Hidewalls", hidewalls, "Wallthick", wallthick, "Floorthick", floorthick));
                    room.SendToAll(OutgoingPacketsEnum.RoomChatSettings, new ValueHolder("ChatMod", chatMode, "ChatWeight", chatWeight, "ChatSpeed", chatSpeed, "ChatDistance", chatDistance, "ChatProtection", chatProtection));
                    room.SendToAll(OutgoingPacketsEnum.RoomData, new ValueHolder("Room", room.RoomData));
                }
            }
        }
コード例 #16
0
        public void Handle(GameClient session, ClientMessage message)
        {
            string[] data      = message.PopStringUntilBreak(null).Split(Convert.ToChar(13));
            int      pageId    = int.Parse(data[1]);
            uint     itemId    = uint.Parse(data[3]);
            string   extraData = data[4];

            Skylight.GetGame().GetCatalogManager().BuyItem(session, pageId, itemId, extraData, session.GetHabbo().GetCommandCache().BuyCommandValue, data[5] == "1", data[6], TextUtilies.FilterString(data[7]));
            session.GetHabbo().GetCommandCache().BuyCommandValue = 1;
        }
コード例 #17
0
        public void Handle(GameClient session, ClientMessage message)
        {
            if (session.FlagmeCommandUsed)
            {
                if (session.GetHabbo().HasPermission("cmd_flagme"))
                {
                    string username = TextUtilies.FilterString(message.PopFixedString());
                    if (username.Length < 3) //to short
                    {
                        ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                        message_.Init(r63aOutgoing.ValidUsername);
                        message_.AppendInt32(2); //result
                        message_.AppendString(username);
                        message_.AppendInt32(0); //suggested names
                        session.SendMessage(message_);
                    }
                    else if (username.Length > 15) // too long
                    {
                        ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                        message_.Init(r63aOutgoing.ValidUsername);
                        message_.AppendInt32(3); //result
                        message_.AppendString(username);
                        message_.AppendInt32(0); //suggested names
                        session.SendMessage(message_);
                    }
                    else if (username.Contains(" ") || !Regex.IsMatch(username, "^[-a-zA-Z0-9._:,]+$") || TextUtilies.HaveBlacklistedWords(username)) //invalid name
                    {
                        ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                        message_.Init(r63aOutgoing.ValidUsername);
                        message_.AppendInt32(4); //result
                        message_.AppendString(username);
                        message_.AppendInt32(0); //suggested names
                        session.SendMessage(message_);
                    }
                    else if (Skylight.GetGame().GetGameClientManager().UsernameExits(username)) //name already exits
                    {
                        ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                        message_.Init(r63aOutgoing.ValidUsername);
                        message_.AppendInt32(5); //result
                        message_.AppendString(username);
                        message_.AppendInt32(0); //suggested names
                        session.SendMessage(message_);
                    }
                    else
                    {
                        //CHANGE THE DAMN NAME
                        session.FlagmeCommandUsed = false;

                        using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                        {
                            dbClient.AddParamWithValue("userId", session.GetHabbo().ID);
                            dbClient.AddParamWithValue("userName", session.GetHabbo().Username);
                            dbClient.AddParamWithValue("command", "flagme");
                            dbClient.AddParamWithValue("extraData", "Old username: "******" | New username: "******"timestamp", TimeUtilies.GetUnixTimestamp());
                            dbClient.AddParamWithValue("userSessionId", session.SessionID);

                            dbClient.ExecuteQuery("INSERT INTO cmdlogs(user_id, user_name, command, extra_data, timestamp, user_session_id) VALUES (@userId, @userName, @command, @extraData, @timestamp, @userSessionId)");

                            dbClient.AddParamWithValue("newUserName", username);
                            dbClient.ExecuteQuery("UPDATE users SET username = @newUserName WHERE id = @userId LIMIT 1");
                        }

                        foreach (Room room in Skylight.GetGame().GetRoomManager().GetLoadedRooms())
                        {
                            if (room.RoomData.OwnerID == session.GetHabbo().ID)
                            {
                                Skylight.GetGame().GetRoomManager().UnloadRoom(room);
                            }
                        }

                        session.GetHabbo().Username = username;
                        Skylight.GetGame().GetAchievementManager().AddAchievement(session, "ChangeName", 1);
                        session.Stop("Name changed");
                    }
                }
            }
            else
            {
            }
        }
コード例 #18
0
ファイル: CatalogManager.cs プロジェクト: aromaa/Skylight
        public void BuyItem(GameClient session, int pageId, uint itemId, string extraData, int amountMultiplayer, bool asGift, string receiverUsername = "", string giftMessage = "", int giftSpriteId = 0, int giftBoxId = 0, int giftRibbonId = 0)
        {
            CatalogPage page = this.GetCatalogPage(pageId);

            if (page != null && page.Visible & page.Enabled && page.MinRank <= session.GetHabbo().Rank)
            {
                CatalogItem item = page.GetItem(itemId);
                if (item != null)
                {
                    if (item.IsDeal)
                    {
                        if (amountMultiplayer > 1)
                        {
                            session.SendNotif("You can't buy multiple deals at once!");
                            return;
                        }
                    }

                    Tuple <Item, int>[] products = item.GetItems();
                    uint giftReceiverId          = 0;
                    if (asGift)
                    {
                        foreach (Tuple <Item, int> data in products)
                        {
                            if (!data.Item1.AllowGift)
                            {
                                return;
                            }
                        }

                        giftReceiverId = Skylight.GetGame().GetGameClientManager().GetIDByUsername(receiverUsername);
                        if (giftReceiverId == 0) //not valid user
                        {
                            ServerMessage receiverNotFound = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                            receiverNotFound.Init(r63aOutgoing.GiftReceiverNotFound);
                            session.SendMessage(receiverNotFound);
                            return;
                        }
                    }

                    if (amountMultiplayer > 1 && products[0].Item2 * amountMultiplayer > 100)
                    {
                        session.SendNotif("You can't buy more then 100 at once with the buy command");
                        return;
                    }

                    int finalCredits = item.CostCredits * amountMultiplayer;
                    int finalPixels  = item.CostActivityPoints * amountMultiplayer;

                    if (asGift && giftSpriteId > 0) //special gifts costs one credit more
                    {
                        finalCredits++;
                    }

                    bool noCredits        = false;
                    bool noActivityPoints = false;

                    if (session.GetHabbo().Credits < finalCredits)
                    {
                        noCredits = true;
                    }

                    if (session.GetHabbo().TryGetActivityPoints(item.ActivityPointsType) < finalPixels)
                    {
                        noActivityPoints = true;
                    }

                    if (noCredits || noActivityPoints)
                    {
                        ServerMessage noEnoughtCash = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                        noEnoughtCash.Init(r63aOutgoing.NoEnoughtCash);
                        noEnoughtCash.AppendBoolean(noCredits);
                        noEnoughtCash.AppendBoolean(noActivityPoints);
                        session.SendMessage(noEnoughtCash);
                    }
                    else
                    {
                        if (asGift)
                        {
                            foreach (Tuple <Item, int> data in products)
                            {
                                if (data.Item1.Type == "e")
                                {
                                    session.SendNotif("You can not send this item as a gift.");
                                    return;
                                }
                            }
                        }

                        if (!item.IsDeal)
                        {
                            switch (products[0].Item1.InteractionType.ToLower())
                            {
                            case "pet":
                            {
                                string[] data    = extraData.Split('\n');
                                string   petName = data[0];
                                int      petRace = int.Parse(data[1]);
                                string   color   = data[2];

                                Regex regex = new Regex(@"^[A-Z0-9_-]+$", RegexOptions.IgnoreCase);
                                if (petName.Length >= 2 && petName.Length <= 16 && regex.IsMatch(petName) && !TextUtilies.HaveBlacklistedWords(petName))
                                {
                                    //buy
                                }
                                else
                                {
                                    return;
                                }

                                if (color.Length != 6)
                                {
                                    return;
                                }
                                break;
                            }

                            case "roomeffect":
                            {
                                extraData = TextUtilies.DoubleWithDotDecimal(double.Parse(extraData));
                            }
                            break;

                            case "postit":
                            {
                                extraData = "FFFF33";         //if you leave extra data empty same result, but for sure
                            }
                            break;

                            case "dimmer":
                            {
                                extraData = "1,1,1,#000000,255";         //current mode
                            }
                            break;

                            case "trophy":
                            {
                                extraData = session.GetHabbo().ID.ToString() + (char)9 + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year + (char)9 + TextUtilies.FilterString(extraData, false, true);
                            }
                            break;

                            default:
                            {
                                extraData = "";
                                break;
                            }
                            }
                        }

                        if (finalCredits > 0)
                        {
                            session.GetHabbo().Credits -= finalCredits;
                            session.GetHabbo().UpdateCredits(true);
                        }

                        if (finalPixels > 0)
                        {
                            session.GetHabbo().RemoveActivityPoints(item.ActivityPointsType, finalPixels);
                            session.GetHabbo().UpdateActivityPoints(item.ActivityPointsType, true);
                        }

                        session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.BuyInfo).Handle(new ValueHolder("Item", item, "Products", products, "Credits", finalCredits, "Pixels", finalPixels)));

                        if (asGift)
                        {
                            Item gift = this.GetGiftLook(giftSpriteId);

                            using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                            {
                                string giftData = TextUtilies.FilterString(giftMessage, false, true) + (char)9 + session.GetHabbo().ID + (char)9 + giftBoxId + (char)9 + giftRibbonId;
                                dbClient.AddParamWithValue("giftData", giftData);
                                dbClient.AddParamWithValue("receiverId", giftReceiverId);
                                dbClient.AddParamWithValue("giftBaseItem", gift.ID);
                                uint giftItemId = (uint)dbClient.ExecuteQuery("INSERT INTO items(user_id, base_item, extra_data) VALUES(@receiverId, @giftBaseItem, @giftData)");

                                string baseItems = "";
                                string amounts   = "";
                                foreach (Tuple <Item, int> data in products)
                                {
                                    if (baseItems.Length > 0)
                                    {
                                        baseItems += ",";
                                        amounts   += ",";
                                    }

                                    baseItems += data.Item1.ID;
                                    amounts   += data.Item2 * amountMultiplayer;
                                }

                                dbClient.AddParamWithValue("itemId", giftItemId);
                                dbClient.AddParamWithValue("baseItems", baseItems);
                                dbClient.AddParamWithValue("amounts", amounts);
                                dbClient.AddParamWithValue("extraData", extraData);
                                dbClient.ExecuteQuery("INSERT INTO items_presents(item_id, base_ids, amounts, extra_data) VALUES(@itemId, @baseItems, @amounts, @extraData)");

                                GameClient receiver = Skylight.GetGame().GetGameClientManager().GetGameClientById(giftReceiverId);
                                if (receiver != null)
                                {
                                    if (giftReceiverId != session.GetHabbo().ID) //do achievement progress
                                    {
                                        receiver.GetHabbo().GetUserStats().GiftsReceived++;
                                        receiver.GetHabbo().GetUserAchievements().CheckAchievement("GiftReceiver");
                                    }

                                    receiver.GetHabbo().GetInventoryManager().AddItem(giftItemId, gift.ID, giftData, false);                                                                                       //add it to inventory first

                                    session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.UnseenItem).Handle(new ValueHolder("Type", 1, "ID", giftItemId))); //receiver one item in this case the gift

                                    //receiver.GetHabbo().GetInventoryManager().UpdateInventoryItems(true); //update inv
                                }
                                else
                                {
                                    if (giftReceiverId != session.GetHabbo().ID) //do achievement progress
                                    {
                                        dbClient.ExecuteQuery("UPDATE user_stats SET gifts_received = gifts_received + 1 WHERE user_id = @receiverId LIMIT 1");
                                    }
                                }
                            }

                            if (giftReceiverId != session.GetHabbo().ID) //do achievement progress
                            {
                                session.GetHabbo().GetUserStats().GiftsGived++;
                                session.GetHabbo().GetUserAchievements().CheckAchievement("GiftGiver");
                            }
                        }
                        else
                        {
                            session.GetHabbo().GetInventoryManager().SetQueueBytes(true);
                            foreach (Tuple <Item, int> data in products)
                            {
                                this.AddItem(session, data.Item1, data.Item2 * amountMultiplayer, extraData, true, false);
                            }
                            session.GetHabbo().GetInventoryManager().SetQueueBytes(false);
                        }
                    }
                }
            }
        }
コード例 #19
0
        public void Handle(GameClient session, ClientMessage message)
        {
            Room room = session.GetHabbo().GetRoomSession().GetRoom();

            if (room != null)
            {
                if (!session.GetHabbo().GetRoomSession().GetRoom().RoomMute || session.GetHabbo().HasPermission("acc_ignore_roommute"))
                {
                    if (!session.GetHabbo().IsMuted())
                    {
                        session.GetHabbo().GetRoomSession().GetRoomUser().Unidle();

                        if (session.GetHabbo().GetRoomSession().GetRoomUser().CheckForFloor())
                        {
                            session.GetHabbo().GetRoomSession().GetRoomUser().FloodUser();
                        }
                        else
                        {
                            session.GetHabbo().LastRoomMessage = DateTime.Now;
                            session.GetHabbo().FloodCounter++;

                            string[] data     = message.PopFixedString().Split(new char[] { ' ' }, 2);
                            string   username = data[0];
                            string   message_ = data[1];
                            if (message_.Length > 300)
                            {
                                message_ = message_.Substring(0, 300);
                            }
                            message_ = TextUtilies.FilterString(message_);

                            RoomUnitUser user = room.RoomUserManager.GetUserByName(username);
                            if (user != null)
                            {
                                if (!session.GetHabbo().HasPermission("acc_nochatlog_whisper"))
                                {
                                    Skylight.GetGame().GetChatlogManager().LogRoomMessage(session, "Whisper" + (char)9 + user.Session.GetHabbo().ID + (char)9 + message_);
                                }

                                message_ = TextUtilies.CheckBlacklistedWords(message_);

                                ServerMessage message_2 = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                                message_2.Init(r63aOutgoing.Whisper);
                                message_2.AppendInt32(session.GetHabbo().GetRoomSession().GetRoomUser().VirtualID);

                                Dictionary <int, string> links = new Dictionary <int, string>();
                                if (message_.Contains("http://") || message_.Contains("www.") || message_.Contains("https://"))
                                {
                                    string[] words = message_.Split(' ');
                                    message_ = "";

                                    foreach (string word in words)
                                    {
                                        if (TextUtilies.ValidURL(word))
                                        {
                                            int index = links.Count;
                                            links.Add(index, word);

                                            message_ += " {" + index + "}";
                                        }
                                        else
                                        {
                                            message_ += " " + word;
                                        }
                                    }
                                }
                                message_2.AppendString(message_);
                                message_2.AppendInt32(RoomUnit.GetGesture(message_.ToLower())); //gesture
                                message_2.AppendInt32(links.Count);                             //links count
                                foreach (KeyValuePair <int, string> link in links)
                                {
                                    message_2.AppendString("/redirect.php?url=" + link.Value);
                                    message_2.AppendString(link.Value);
                                    message_2.AppendBoolean(true); //trushed, can link be opened
                                }
                                user.Session.SendMessage(message_2);
                                session.SendMessage(message_2);
                            }
                        }
                    }
                }
            }
        }
コード例 #20
0
        public virtual void Handle(GameClient session, ClientMessage message)
        {
            Room room = session?.GetHabbo()?.GetRoomSession()?.GetRoom();

            if (room != null)
            {
                if (!room.RoomMute || session.GetHabbo().HasPermission("acc_ignore_roommute"))
                {
                    if (!session.GetHabbo().IsMuted())
                    {
                        session.GetHabbo().GetRoomSession().GetRoomUser().Unidle();

                        if (session.GetHabbo().GetRoomSession().GetRoomUser().CheckForFloor())
                        {
                            session.GetHabbo().GetRoomSession().GetRoomUser().FloodUser();
                        }
                        else
                        {
                            session.GetHabbo().LastRoomMessage = DateTime.Now;
                            session.GetHabbo().FloodCounter++;
                        }


                        RoomUnitUser user = room.RoomUserManager.GetUserByName(this.Username);
                        if (user != null)
                        {
                            string filteredMessage = TextUtilies.CheckBlacklistedWords(TextUtilies.FilterString(this.Message));

                            if (!session.GetHabbo().HasPermission("acc_nochatlog_whisper"))
                            {
                                Skylight.GetGame().GetChatlogManager().LogRoomMessage(session, "Whisper" + (char)9 + user.Session.GetHabbo().ID + (char)9 + this.Message);
                            }

                            session.GetHabbo().GetUserSettings().ChatColor = this.Bubble;

                            session.SendMessage(new ReceiveWhisperComposerHandler(session.GetHabbo().GetRoomSession().GetRoomUser().VirtualID, filteredMessage, this.Bubble));
                            user.Session.SendMessage(new ReceiveWhisperComposerHandler(session.GetHabbo().GetRoomSession().GetRoomUser().VirtualID, filteredMessage, this.Bubble));
                        }
                    }
                }
            }
        }
コード例 #21
0
        public void Handle(GameClient session, ClientMessage message)
        {
            if (session != null && session.GetHabbo() != null && session.GetHabbo().GetMessenger() != null)
            {
                int         count = message.PopWiredInt32();
                List <uint> users = new List <uint>();
                for (int i = 0; i < count; i++)
                {
                    uint userId = message.PopWiredUInt();
                    if (userId > 0)
                    {
                        users.Add(userId);
                    }
                }

                if (users.Count <= 0)
                {
                    return;
                }

                string text            = TextUtilies.FilterString(message.PopFixedString(), false, false);
                string filteredMessage = TextUtilies.CheckBlacklistedWords(text);

                ServerMessage Message = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                Message.Init(r63aOutgoing.MessengerRoomInvite);
                Message.AppendUInt(session.GetHabbo().ID);
                Message.AppendString(filteredMessage);

                List <string> receiverUsernames  = new List <string>();
                List <int>    receiverSessionIds = new List <int>();
                foreach (uint userId in users)
                {
                    if (session.GetHabbo().GetMessenger().IsFriendWith(userId))
                    {
                        GameClient gameClient = Skylight.GetGame().GetGameClientManager().GetGameClientById(userId);
                        if (gameClient != null)
                        {
                            if (gameClient.GetHabbo() != null)
                            {
                                receiverUsernames.Add(gameClient.GetHabbo().Username);
                                if (gameClient.GetHabbo().GetMessenger() != null && gameClient.GetHabbo().GetMessenger().IsFriendWith(session.GetHabbo().ID))
                                {
                                    gameClient.SendMessage(Message);
                                }
                            }
                            else
                            {
                                receiverUsernames.Add(Skylight.GetGame().GetGameClientManager().GetUsernameByID(userId));
                            }

                            receiverSessionIds.Add(gameClient.SessionID);
                        }
                        else
                        {
                            receiverUsernames.Add(Skylight.GetGame().GetGameClientManager().GetUsernameByID(userId));
                            receiverSessionIds.Add(-1);
                        }
                    }
                    else
                    {
                        receiverUsernames.Add(Skylight.GetGame().GetGameClientManager().GetUsernameByID(userId));
                        receiverSessionIds.Add(-1);
                    }
                }

                Skylight.GetGame().GetChatlogManager().LogRoomInvite(session, users, receiverUsernames, receiverSessionIds, text);
            }
        }