예제 #1
0
        public override bool OnUse(GameClient session, string[] args)
        {
            if (args.Length >= 2)
            {
                if (session.GetHabbo().HasPermission("cmd_roomalert"))
                {
                    string message = TextUtilies.MergeArrayToString(args, 1);

                    foreach (RoomUnitUser user in session.GetHabbo().GetRoomSession().GetRoom().RoomUserManager.GetRealUsers())
                    {
                        try
                        {
                            user.Session.SendNotif(message);
                        }
                        catch
                        {
                        }
                    }
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
예제 #2
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)");
                            }
                        }

                        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)
        {
            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);
                        }
                    }
                }
            }
        }
        public override void LoadItemData(string data)
        {
            string[] dataSpit = data.Split((char)9);

            if (!string.IsNullOrEmpty(dataSpit[0]))
            {
                foreach (string itemData in dataSpit[0].Split('|'))
                {
                    string[] itemDataSlit = itemData.Split(',');
                    uint     itemId       = uint.Parse(itemDataSlit[0]);

                    RoomItem item = this.Room.RoomItemManager.TryGetRoomItem(itemId);
                    if (item != null)
                    {
                        string extraData = itemDataSlit[1];
                        int    rot       = int.Parse(itemDataSlit[2]);
                        int    x         = int.Parse(itemDataSlit[3]);
                        int    y         = int.Parse(itemDataSlit[4]);
                        double z         = double.Parse(itemDataSlit[5]);

                        this.SelectedItems.Add(item);
                        this.MatchFurniData.Add(item.ID, new MatchFurniData(extraData, rot, x, y, z));
                    }
                }
            }

            this.FurniState = TextUtilies.StringToBool(dataSpit[1]);
            this.Direction  = TextUtilies.StringToBool(dataSpit[2]);
            this.Position   = TextUtilies.StringToBool(dataSpit[3]);
        }
예제 #6
0
        public override bool OnUse(GameClient session, string[] args)
        {
            if (args.Length >= 3)
            {
                if (session.GetHabbo().HasPermission("cmd_motd"))
                {
                    GameClient target = Skylight.GetGame().GetGameClientManager().GetGameClientByUsername(args[1]);
                    if (target != null)
                    {
                        target.SendNotif(TextUtilies.MergeArrayToString(args, 2), 2);
                    }
                    else
                    {
                        session.SendNotif("Unable to find user!");
                    }

                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
예제 #7
0
        public virtual void Handle(GameClient session, ClientMessage message)
        {
            if (session?.GetHabbo()?.GetMessenger() != null)
            {
                uint userId = 0;
                bool blockFriendRequests = false;

                GameClient target = Skylight.GetGame().GetGameClientManager().GetGameClientByUsername(this.Username);
                if (target?.GetHabbo()?.GetUserSettings() == null)
                {
                    DataRow dataRow = null;
                    using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                    {
                        dbClient.AddParamWithValue("username", this.Username);
                        dataRow = dbClient.ReadDataRow("SELECT id, block_newfriends FROM users WHERE username = @username LIMIT 1");
                    }

                    if (dataRow != null)
                    {
                        userId = (uint)dataRow["id"];
                        blockFriendRequests = TextUtilies.StringToBool((string)dataRow["block_newfriends"]);
                    }
                }
                else
                {
                    userId = target.GetHabbo().ID;
                    blockFriendRequests = target.GetHabbo().GetUserSettings().BlockNewFriends;
                }

                if (userId > 0 && userId != session.GetHabbo().ID)
                {
                    if (blockFriendRequests)
                    {
                        session.SendMessage(new MessengerSendFriendRequestErrorComposerHandler(MessengerSendFriendRequestErrorCode.FriendRequestsDisabled));
                    }
                    else
                    {
                        if (session.GetHabbo().GetMessenger().TrySendFriendRequestTo(userId) && !(target?.GetHabbo()?.GetMessenger()?.HasFriendRequestPendingFrom(session.GetHabbo().ID) ?? true))
                        {
                            bool insertSuccess = false;
                            using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                            {
                                dbClient.AddParamWithValue("toid", userId);
                                dbClient.AddParamWithValue("userid", session.GetHabbo().ID);
                                insertSuccess = dbClient.ExecuteNonQuery("INSERT INTO messenger_requests (to_id, from_id) VALUES (@toid, @userid)") > 0;
                            }

                            if (insertSuccess)
                            {
                                target?.GetHabbo()?.GetMessenger()?.AddFriendRequest(new MessengerRequest(userId, session.GetHabbo().ID, session.GetHabbo().Username, session.GetHabbo().Look));
                            }
                        }
                    }
                }
                else
                {
                    session.SendMessage(new MessengerSendFriendRequestErrorComposerHandler(MessengerSendFriendRequestErrorCode.RequestNotFound));
                }
            }
        }
예제 #8
0
파일: RoomData.cs 프로젝트: aromaa/Skylight
        public RoomData(DataRow dataRow)
        {
            if (dataRow != null)
            {
                this.ID          = (uint)dataRow["id"];
                this.Name        = (string)dataRow["name"];
                this.Description = (string)dataRow["description"];
                this.OwnerID     = (uint)dataRow["ownerid"];
                this.Type        = (string)dataRow["type"];
                this.Model       = (string)dataRow["model"];
                this.State       = (string)dataRow["state"] == "password" ? RoomStateType.PASSWORD : (string)dataRow["state"] == "locked" ? RoomStateType.LOCKED : RoomStateType.OPEN;
                this.Category    = (int)dataRow["category"];
                this.UsersNow    = (int)dataRow["users_now"]; //maybe we need this sometimes :3
                this.UsersMax    = (int)dataRow["users_max"];
                this.PublicCCTs  = (string)dataRow["public_ccts"];
                this.Score       = (int)dataRow["score"];
                string tags = (string)dataRow["tags"];
                if (!string.IsNullOrEmpty(tags))
                {
                    this.Tags = tags.Split(',').ToList();
                }
                else
                {
                    this.Tags = new List <string>();
                }
                this.RoomIcon         = new RoomIcon((int)dataRow["icon_bg"], (int)dataRow["icon_fg"], (string)dataRow["icon_items"]);
                this.Password         = (string)dataRow["password"];
                this.Wallpaper        = (string)dataRow["wallpaper"];
                this.Floor            = (string)dataRow["floor"];
                this.Landscape        = (string)dataRow["landscape"];
                this.AllowPets        = TextUtilies.StringToBool((string)dataRow["allow_pets"]);
                this.AllowPetsEat     = TextUtilies.StringToBool((string)dataRow["allow_pets_eat"]);
                this.AllowWalkthrough = TextUtilies.StringToBool((string)dataRow["allow_walkthrough"]);
                this.Hidewalls        = TextUtilies.StringToBool((string)dataRow["hidewalls"]);
                this.Wallthick        = (int)dataRow["wallthick"];
                this.Floorthick       = (int)dataRow["floorthick"];
                this.AllowTrade       = (RoomAllowTradeType)int.Parse((string)dataRow["trade"]);
                this.MuteOption       = (RoomWhoCanType)int.Parse((string)dataRow["mute_option"]);
                this.KickOption       = (RoomWhoCanType)int.Parse((string)dataRow["kick_option"]);
                this.BanOption        = (RoomWhoCanType)int.Parse((string)dataRow["ban_option"]);
                this.ChatMode         = (RoomChatModeType)int.Parse((string)dataRow["chat_mode"]);
                this.ChatWeight       = (RoomChatWeightType)int.Parse((string)dataRow["chat_weight"]);
                this.ChatSpeed        = (RoomChatSpeedType)int.Parse((string)dataRow["chat_speed"]);
                this.ChatProtection   = (RoomChatProtectionType)int.Parse((string)dataRow["chat_protection"]);

                string data = (string)dataRow["data"];
                if (!string.IsNullOrEmpty(data))
                {
                    this.ExtraData = JsonConvert.DeserializeObject <RoomExtraData>(data);
                }
                else
                {
                    this.ExtraData = new RoomExtraData();
                }
            }
            else
            {
                this.NullValues();
            }
        }
        public void Handle(GameClient session, ClientMessage message)
        {
            string name = message.PopFixedString();
            int    type = message.PopWiredInt32();

            if (name.Length >= 2)
            {
                if (name.Length <= 16)
                {
                    Regex regex = new Regex(@"^[A-Z0-9_-]+$", RegexOptions.IgnoreCase);
                    foreach (char char_ in name)
                    {
                        if (!regex.IsMatch(char_.ToString()))
                        {
                            ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                            message_.Init(r63aOutgoing.ValidatePetNameResult);
                            message_.AppendInt32(3); //0 = valid, 1 = too long, 2 = too short, 3 = forbidden cheracters, 4 = forbidden words
                            message_.AppendString(char_.ToString());
                            session.SendMessage(message_);

                            return; //we don't want continue :(
                        }
                    }

                    if (TextUtilies.HaveBlacklistedWords(name))
                    {
                        ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                        message_.Init(r63aOutgoing.ValidatePetNameResult);
                        message_.AppendInt32(4);   //0 = valid, 1 = too long, 2 = too short, 3 = forbidden cheracters, 4 = forbidden words
                        message_.AppendString(""); //show the forbidden word
                        session.SendMessage(message_);
                    }
                    else //let the user buy it
                    {
                        ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                        message_.Init(r63aOutgoing.ValidatePetNameResult);
                        message_.AppendInt32(0);   //0 = valid, 1 = too long, 2 = too short, 3 = forbidden cheracters, 4 = forbidden words
                        message_.AppendString(""); //show the forbidden word
                        session.SendMessage(message_);
                    }
                }
                else
                {
                    ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                    message_.Init(r63aOutgoing.ValidatePetNameResult);
                    message_.AppendInt32(1); //0 = valid, 1 = too long, 2 = too short, 3 = forbidden cheracters, 4 = forbidden words
                    message_.AppendString("16");
                    session.SendMessage(message_);
                }
            }
            else
            {
                ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                message_.Init(r63aOutgoing.ValidatePetNameResult);
                message_.AppendInt32(2); //0 = valid, 1 = too long, 2 = too short, 3 = forbidden cheracters, 4 = forbidden words
                message_.AppendString("2");
                session.SendMessage(message_);
            }
        }
예제 #10
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
     {
     }
 }
예제 #11
0
 public MoodlightPreset StringToMoodlightPreset(string data)
 {
     string[] dataSplitted = data.Split(',');
     if (!this.IsValidColor(dataSplitted[0]))
     {
         dataSplitted[0] = "#000000";
     }
     return(new MoodlightPreset(dataSplitted[0], int.Parse(dataSplitted[1]), TextUtilies.StringToBool(dataSplitted[2])));
 }
예제 #12
0
        public static Habbo LoadHabbo(UserDataFactory userData, GameClient session)
        {
            DataRow habboData = userData.GetUserData();

            uint   id                       = (uint)habboData["id"];
            string username                 = (string)habboData["username"];
            string realName                 = (string)habboData["real_name"];
            string email                    = (string)habboData["mail"];
            string sso                      = (string)habboData["auth_ticket"];
            int    rank                     = (int)habboData["rank"];
            int    credits                  = (int)habboData["credits"];
            string activityPoints           = (string)habboData["activity_points"];
            double activityPointsLastUpdate = (double)habboData["activity_points_lastupdate"];
            string look                     = (string)habboData["look"];
            string gender                   = (string)habboData["gender"];
            string motto                    = (string)habboData["motto"];
            double accountCreated           = (double)habboData["account_created"];
            double lastOnline               = (double)habboData["last_online"];
            string ipLast                   = (string)habboData["ip_last"];
            string ipReg                    = (string)habboData["ip_reg"];
            uint   homeRoom                 = (uint)habboData["home_room"];
            int    dailyRespectPoints       = (int)habboData["daily_respect_points"];
            int    dailyPetRespectPoints    = (int)habboData["daily_pet_respect_points"];
            double muteExpires              = (double)habboData["mute_expires"];
            bool   blockNewFriends          = TextUtilies.StringToBool((string)habboData["block_newfriends"]);
            bool   hideOnline               = TextUtilies.StringToBool((string)habboData["hide_online"]);
            bool   hideInRoom               = TextUtilies.StringToBool((string)habboData["hide_inroom"]);

            int[] volume = ((string)habboData["volume"]).Split(new char[] { ',' }, 3, StringSplitOptions.RemoveEmptyEntries).Select(v => int.TryParse(v, out int i) ? i : 100).ToArray();
            if (volume.Length == 0)
            {
                volume = new int[] { 100, 100, 100 };
            }
            else if (volume.Length == 1)
            {
                volume = new int[] { volume[0], 100, 100 };
            }
            else if (volume.Length == 2)
            {
                volume = new int[] { volume[0], volume[1], 100 };
            }
            bool   acceptTrading     = TextUtilies.StringToBool((string)habboData["accept_trading"]);
            int    marketplaceTokens = (int)habboData["marketplace_tokens"];
            int    newbieStatus      = (int)habboData["newbie_status"];
            uint   newbieRoom        = (uint)habboData["newbie_room"];
            bool   friendStream      = TextUtilies.StringToBool((string)habboData["friend_stream"]);
            string twoFactoryAuthenicationSecretCode = (string)habboData["two_factory_authenication_secret_code"];
            bool   mailConfirmed            = TextUtilies.StringToBool((string)habboData["mail_confirmed"]);
            bool   preferOldChat            = TextUtilies.StringToBool((string)habboData["prefer_old_chat"]);
            bool   blockRoomInvites         = TextUtilies.StringToBool((string)habboData["block_room_invites"]);
            bool   blockCameraFollow        = TextUtilies.StringToBool((string)habboData["block_camera_follow"]);
            int    chatColor                = (int)habboData["chat_color"];
            double guideEnrollmentTimestamp = (double)habboData["guide_enrollment_timestamp"];

            return(new Habbo(session, userData, id, username, realName, email, sso, rank, credits, activityPoints, activityPointsLastUpdate, look, gender, motto, accountCreated, lastOnline, ipLast, ipReg, homeRoom, dailyRespectPoints, dailyPetRespectPoints, muteExpires, blockNewFriends, hideOnline, hideInRoom, volume, acceptTrading, marketplaceTokens, newbieStatus, newbieRoom, friendStream, twoFactoryAuthenicationSecretCode, mailConfirmed, preferOldChat, blockRoomInvites, blockCameraFollow, chatColor, guideEnrollmentTimestamp));
        }
        public void Handle(GameClient session, ClientMessage message)
        {
            session.GetHabbo().GetUserSettings().FriendStream = message.PopBase64Boolean();

            using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
            {
                dbClient.AddParamWithValue("userId", session.GetHabbo().ID);
                dbClient.AddParamWithValue("friendStream", TextUtilies.BoolToString(session.GetHabbo().GetUserSettings().FriendStream));

                dbClient.ExecuteQuery("UPDATE users SET friend_stream = @friendStream WHERE id = @userId LIMIT 1");
            }
        }
예제 #14
0
        public void Handle(GameClient session, ClientMessage message)
        {
            RoomUnit user = session.GetHabbo().GetRoomSession().GetRoomUser();

            if (!user.HasStatus("lay"))
            {
                if (user.BodyRotation == 0 || user.BodyRotation == 2 || user.BodyRotation == 4 || user.BodyRotation == 6)
                {
                    user.AddStatus("sit", TextUtilies.DoubleWithDotDecimal((user.Z + 1) / 2 - user.Z * 0.5));
                }
            }
        }
예제 #15
0
        public ServerMessage Handle(ValueHolder valueHolder = null)
        {
            RoomItemRollerMovement[] movement = valueHolder.GetValueOrDefault <RoomItemRollerMovement[]>("Movement");
            RoomUserRollerMovement   user     = valueHolder.GetValueOrDefault <RoomUserRollerMovement>("User");

            ServerMessage message = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_201211141113_913728051);

            message.Init(r63cOutgoing.RollerMovement);
            if (movement != null)
            {
                RoomItemRollerMovement single = movement[0];

                message.AppendInt32(single.CurrentXY.X);
                message.AppendInt32(single.CurrentXY.Y);
                message.AppendInt32(single.NextXY.X);
                message.AppendInt32(single.NextXY.Y);

                message.AppendInt32(movement.Length); //items count
                foreach (RoomItemRollerMovement item in movement)
                {
                    message.AppendUInt(item.ItemId);
                    message.AppendString(TextUtilies.DoubleWithDotDecimal(item.CurrentZ));
                    message.AppendString(TextUtilies.DoubleWithDotDecimal(item.NextZ));
                }

                message.AppendUInt(single.SourceID); //source of action
            }
            else
            {
                message.AppendInt32(user.CurrentX);
                message.AppendInt32(user.CurrentY);
                message.AppendInt32(user.NextX);
                message.AppendInt32(user.NextY);

                message.AppendInt32(0);            //items count

                message.AppendUInt(user.SourceID); //source of action
            }

            if (user != null)
            {
                message.AppendInt32(2); //user movement type
                message.AppendInt32(user.VirtualID);
                message.AppendString(TextUtilies.DoubleWithDotDecimal(user.CurrentZ));
                message.AppendString(TextUtilies.DoubleWithDotDecimal(user.NextZ));
            }
            else
            {
                message.AppendInt32(0);
            }
            return(message);
        }
예제 #16
0
파일: RoomBot.cs 프로젝트: aromaa/Skylight
 public override void Serialize(ServerMessage message)
 {
     message.AppendInt32(-1);
     message.AppendString(this.Data.Name);
     message.AppendString(this.Data.Motto);
     message.AppendString(this.Data.Look);
     message.AppendInt32(this.VirtualID);
     message.AppendInt32(this.X);
     message.AppendInt32(this.Y);
     message.AppendString(TextUtilies.DoubleWithDotDecimal(this.Z));
     message.AppendInt32(2); //dir
     message.AppendInt32(3);
 }
예제 #17
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);
        }
예제 #18
0
 public override void Serialize(ServerMessage message)
 {
     message.AppendUInt(this.PetData.ID);
     message.AppendString(this.PetData.Name);
     message.AppendString(""); //pets dont have motto xD
     message.AppendString(this.PetData.Look);
     message.AppendInt32(this.VirtualID);
     message.AppendInt32(this.X);
     message.AppendInt32(this.Y);
     message.AppendString(TextUtilies.DoubleWithDotDecimal(this.Z));
     message.AppendInt32(2); //dir
     message.AppendInt32(2);
     message.AppendInt32(int.Parse(this.PetData.Race));
 }
예제 #19
0
        public override bool OnUse(GameClient session, string[] args)
        {
            if (args.Length >= 2)
            {
                GameClient target = Skylight.GetGame().GetGameClientManager().GetGameClientByUsername(args[1]);
                if (target != null)
                {
                    RoomUnit     me    = session.GetHabbo().GetRoomSession().GetRoomUser();
                    RoomUnitUser other = target.GetHabbo().GetRoomSession().GetRoomUser();
                    if (target.GetHabbo().GetRoomSession().IsInRoom&& target.GetHabbo().GetRoomSession().CurrentRoomID == session.GetHabbo().GetRoomSession().CurrentRoomID)
                    {
                        bool doit = true;
                        if ((me.X + 1 != other.X || me.Y != other.Y) && (me.X - 1 != other.X || me.Y != other.Y) && (me.Y + 1 != other.Y || me.X != other.X))
                        {
                            bool skip = false;
                            if (me.X - 1 == other.X)
                            {
                                if (me.Y == other.Y)
                                {
                                    skip = true;
                                }
                            }

                            if (!skip)
                            {
                                doit = me.X == other.X || me.Y == other.Y;
                            }
                        }

                        if (doit)
                        {
                            me.Speak("*RKO'S " + other.Session.GetHabbo().Username + " OUT OF NO WHERE*", true);
                            other.Speak("Ouch", true);
                            if (!other.HasStatus("lay") && !other.HasStatus("sit"))
                            {
                                if (other.BodyRotation == 0 || other.BodyRotation == 2 || other.BodyRotation == 4 || other.BodyRotation == 6)
                                {
                                    other.AddStatus("sit", TextUtilies.DoubleWithDotDecimal((other.Z + 1) / 2 - other.Z * 0.5));
                                }
                            }
                        }

                        return(true);
                    }
                }
            }

            return(false);
        }
예제 #20
0
 public override bool OnUse(GameClient session, string[] args)
 {
     if (session.GetHabbo().HasPermission("cmd_update_filter"))
     {
         using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
         {
             TextUtilies.LoadWordfilter(dbClient);
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #21
0
        public override void Serialize(ServerMessage message)
        {
            if (message.GetRevision() > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169)
            {
                message.AppendUInt(this.Session.GetHabbo().ID);
                message.AppendString(this.Session.GetHabbo().Username);
                message.AppendString(this.Session.GetHabbo().Motto);
                message.AppendString(this.Session.GetHabbo().Look);
                message.AppendInt32(this.VirtualID);
                message.AppendInt32(this.X);
                message.AppendInt32(this.Y);
                message.AppendString(TextUtilies.DoubleWithDotDecimal(this.Z));
                message.AppendInt32(0);
                message.AppendInt32(1);
                message.AppendString(this.Session.GetHabbo().Gender.ToLower());
                message.AppendInt32(-1); //group id
                message.AppendInt32(-1); //fav group
                if (message.GetRevision() < Revision.RELEASE63_201211141113_913728051)
                {
                    message.AppendInt32(-1);
                }
                else
                {
                    message.AppendString(""); //group name
                }
                message.AppendString(this.Swimsuit);
                message.AppendInt32(this.Session.GetHabbo().GetUserStats().AchievementPoints);
                if (message.GetRevision() >= Revision.PRODUCTION_201601012205_226667486)
                {
                    message.AppendBoolean(true); //IDK
                }
            }
            else
            {
                message.AppendString("i:" + this.VirtualID, 13);
                message.AppendString("a:" + this.UserID, 13);
                message.AppendString("s:" + this.Session.GetHabbo().Gender, 13);
                message.AppendString("n:" + this.Session.GetHabbo().Username, 13);
                message.AppendString("f:" + this.Session.GetHabbo().Look, 13);
                message.AppendString("l:" + this.X + " " + this.Y + " " + TextUtilies.DoubleWithDotDecimal(this.Z), 13);
                message.AppendString("c:" + this.Session.GetHabbo().Motto, 13);

                if (!string.IsNullOrEmpty(this.Swimsuit))
                {
                    message.AppendString("p:" + this.Swimsuit, 13);
                }
            }
        }
예제 #22
0
        public static void LoadConfigsFromDB(DatabaseClient dbClient)
        {
            Logging.Write("Loading server settings... ");

            DataRow settings = dbClient.ReadDataRow("SELECT * FROM server_settings");

            ServerConfiguration.EnableSecureSession = TextUtilies.StringToBool((string)settings["enable_secure_session"]);
            ServerConfiguration.EveryoneVIP         = TextUtilies.StringToBool((string)settings["everyone_vip"]);
            ServerConfiguration.MaxRoomsPerUser     = (int)settings["max_rooms_per_user"];
            ServerConfiguration.UseIPLastForBans    = TextUtilies.StringToBool((string)settings["ip_last_for_bans"]);
            ServerConfiguration.MOTD = (string)settings["motd"];
            ServerConfiguration.EnableMarketplace            = TextUtilies.StringToBool((string)settings["enable_marketplace"]);
            ServerConfiguration.MarketplaceMinPrice          = (int)settings["marketplace_min_price"];
            ServerConfiguration.MarketplaceMaxPrice          = (int)settings["marketplace_max_price"];
            ServerConfiguration.MarketplaceOffersActiveHours = (int)settings["marketplace_offers_active_hours"];
            ServerConfiguration.MarketplaceTokensNonPremium  = (int)settings["marketplace_tokens_non_premium"];
            ServerConfiguration.MarketplaceTokensPremium     = (int)settings["marketplace_tokens_premium"];
            ServerConfiguration.MarketplaceTokensPrice       = (int)settings["marketplace_tokens_price"];
            ServerConfiguration.MarketplaceCompremission     = (int)settings["marketplace_compremission"];
            ServerConfiguration.MarketplaceAvaragePriceDays  = (int)settings["marketplace_avarage_price_days"];
            ServerConfiguration.EventsEnabled                  = TextUtilies.StringToBool((string)settings["events_enabled"]);
            ServerConfiguration.EnableCrypto                   = TextUtilies.StringToBool((string)settings["enable_crypto"]);
            ServerConfiguration.RequireMachineID               = TextUtilies.StringToBool((string)settings["require_machine_id"]);
            ServerConfiguration.CryptoType                     = (int)settings["crypto_type"];
            ServerConfiguration.IdleTime                       = (int)settings["idle_time"];
            ServerConfiguration.IdleKickTime                   = (int)settings["idle_kick_time"];
            ServerConfiguration.ActivityBonusTime              = (int)settings["activity_bonus_time"];
            ServerConfiguration.CreditsBonus                   = (int)settings["credits_bonus"];
            ServerConfiguration.PixelsBonus                    = (int)settings["pixels_bonus"];
            ServerConfiguration.ActivityPointsBonusType        = (int)settings["activity_points_bonus_type"];
            ServerConfiguration.ActivityPointsBonus            = (int)settings["activity_points_bonus"];
            ServerConfiguration.AllowedComamndsToBeBlacklisted = ((string)settings["allowed_commands_to_be_blacklisted"]).ToLower().Split(',').ToList();
            ServerConfiguration.MinRankRequireLogin            = (int)settings["min_rank_require_login"];

            ServerConfiguration.BlacklistedEffects.Clear();
            foreach (string string_ in ((string)settings["blacklisted_effects"]).Split(';'))
            {
                string[] string_2 = string_.Split(',');
                if (string_2.Length == 2)
                {
                    ServerConfiguration.BlacklistedEffects.Add(int.Parse(string_2[0]), int.Parse(string_2[1]));
                }
            }

            ServerConfiguration.StaffPicksCategoryId = (int)settings["staff_picks_category_id"];

            Logging.WriteLine("completed!", ConsoleColor.Green);
        }
        public override string GetItemData()
        {
            string itemString = "";

            foreach (KeyValuePair <uint, MatchFurniData> data in this.MatchFurniData)
            {
                if (itemString.Length > 0)
                {
                    itemString += "|";
                }

                itemString += data.Key + "," + data.Value.ExtraData + "," + data.Value.Rot + "," + data.Value.X + "," + data.Value.Y + "," + TextUtilies.DoubleWithDotDecimal(data.Value.Z);
            }

            return(itemString + (char)9 + TextUtilies.BoolToString(this.FurniState) + (char)9 + TextUtilies.BoolToString(this.Direction) + (char)9 + TextUtilies.BoolToString(this.Position));
        }
예제 #24
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);
                    }
                }
            }
        }
예제 #25
0
        public ServerMessage Handle(T handler)
        {
            ServerMessage message = BasicUtilies.GetRevisionServerMessage(Revision.PRODUCTION_201601012205_226667486, r63cOutgoing.ReceiveWhisper);

            message.AppendInt32(handler.SenderVirtualID);

            List <string> links = new List <string>();

            if (TextUtilies.ContainsLink(handler.Message))
            {
                string message_ = "";
                foreach (string word in handler.Message.Split(' '))
                {
                    if (TextUtilies.ValidURL(word))
                    {
                        links.Add(word);

                        message_ += " {" + (links.Count - 1) + "}";
                    }
                    else
                    {
                        message_ += " " + word;
                    }
                }

                message.AppendString(message_);
            }
            else
            {
                message.AppendString(handler.Message);
            }

            message.AppendInt32(RoomUnit.GetGesture(handler.Message));
            message.AppendInt32(handler.ChatColor);
            message.AppendInt32(links.Count);
            for (int i = 0; i < links.Count; i++)
            {
                string link = links[i];

                message.AppendString("/redirect.php?url=" + link); //link
                message.AppendString(link);                        //msg shown
                message.AppendBoolean(true);                       //trusted, can be clicked and opened, unused
            }
            message.AppendInt32(-1);
            return(message);
        }
예제 #26
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_), true);
                }
            }
        }
예제 #27
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());
                }
            }
        }
예제 #28
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)));
                }
            }
        }
예제 #29
0
        public override void LoadItemData(string data)
        {
            string[] splitData = data.Split((char)9);

            foreach (string sItemId in splitData[0].Split(','))
            {
                if (!string.IsNullOrEmpty(sItemId))
                {
                    RoomItem item = this.Room.RoomItemManager.TryGetRoomItem(uint.Parse(sItemId));
                    if (item != null)
                    {
                        this.SelectedItems.Add(item);
                    }
                }
            }

            this.AllFurnis = TextUtilies.StringToBool(splitData[1]);
        }
예제 #30
0
        public override bool OnUse(GameClient session, string[] args)
        {
            if (args.Length >= 3)
            {
                if (session.GetHabbo().HasPermission("cmd_makesay"))
                {
                    GameClient target = Skylight.GetGame().GetGameClientManager().GetGameClientByUsername(args[1]);
                    if (target != null)
                    {
                        target.GetHabbo().GetRoomSession().GetRoomUser().Speak(TextUtilies.MergeArrayToString(args, 2), false);

                        return(true);
                    }
                }
            }

            return(false);
        }