internal static ServerMessage Compose(List<Achievement> Achievements)
        {
            ServerMessage Message = new ServerMessage(627); //627
            Message.AppendInt32(Achievements.Count);

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

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

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

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

            return Message;
        }
Пример #2
0
 internal void Serialize(ref ServerMessage message)
 {
     foreach (ChatMessage chatMessage in listOfMessages)
     {
         chatMessage.Serialize(ref message);
     }
 }
Пример #3
0
        internal Trade(int UserOneId, int UserTwoId, UInt32 RoomId)
        {
            this.oneId = UserOneId;
            this.twoId = UserTwoId;

            this.Users = new TradeUser[2];
            this.Users[0] = new TradeUser(UserOneId, RoomId);
            this.Users[1] = new TradeUser(UserTwoId, RoomId);
            this.TradeStage = 1;
            this.RoomId = RoomId;

            foreach (TradeUser User in Users)
            {
                if (!User.GetRoomUser().Statuses.ContainsKey("trd"))
                {
                    User.GetRoomUser().AddStatus("trd", "");
                    User.GetRoomUser().UpdateNeeded = true;
                }
            }

            ServerMessage Message = new ServerMessage(Outgoing.TradeStart);
            Message.AppendInt32(UserOneId);
            Message.AppendInt32(1); // ready
            Message.AppendInt32(UserTwoId);
            Message.AppendInt32(1); // ready
            SendMessageToUsers(Message);
        }
Пример #4
0
 internal void Serialize(ref ServerMessage packet)
 {
     packet.AppendInt32(timeSpoken.Hour);
     packet.AppendInt32(timeSpoken.Minute);
     packet.AppendInt32(userID);
     packet.AppendString(username);
     packet.AppendString(message);
 }
Пример #5
0
        internal void Serialize(ServerMessage Request)
        {
            // BDhqu@UMeth0d1322033860

            Request.AppendInt32(FromUser);
            Request.AppendString(mUsername);
            Habbo user = FirewindEnvironment.getHabboForName(mUsername);
            Request.AppendString((user != null) ? user.Look : "");
        }
Пример #6
0
 public void AppendToMessage(ServerMessage message)
 {
     message.AppendInt32(Data.Count);
     foreach (KeyValuePair<string, string> pair in Data)
     {
         message.AppendString(pair.Key);
         message.AppendString(pair.Value);
     }
 }
Пример #7
0
        internal static ServerMessage SerializeUpdate(MessengerBuddy friend)
        {
            ServerMessage reply = new ServerMessage(Outgoing.FriendUpdate);
            reply.AppendInt32(0); // category
            reply.AppendInt32(1); // number of updates
            reply.AppendInt32(0); // don't know

            friend.Serialize(reply);
            reply.AppendBoolean(false);

            return reply;
        }
Пример #8
0
        internal static ServerMessage Compose(int PlaylistCapacity, List<SongInstance> Playlist)
        {
            ServerMessage Message = new ServerMessage(334);
            Message.AppendInt32(PlaylistCapacity);
            Message.AppendInt32(Playlist.Count);

            foreach (SongInstance Song in Playlist)
            {
                Message.AppendUInt(Song.DiskItem.itemID);
                Message.AppendUInt(Song.SongData.Id);
            }

            return Message;
        }
Пример #9
0
        internal void SerializeTo(RoomData data, ServerMessage Message)
        {
            Message.AppendString(data.OwnerId + "");
            Message.AppendString(data.Owner);
            Message.AppendString(RoomId + "");
            Message.AppendInt32(Category);
            Message.AppendString(Name);
            Message.AppendString(Description);
            Message.AppendString(StartTime);
            Message.AppendInt32(Tags.Count);

            foreach (string Tag in Tags.ToArray())
            {
                Message.AppendString(Tag);
            }
        }
Пример #10
0
        public static ServerMessage Compose(List<SongData> Songs)
        {
            ServerMessage Message = new ServerMessage(300);
            Message.AppendInt32(Songs.Count);

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

            return Message;
        }
Пример #11
0
        internal void Searialize(ServerMessage reply)
        {
            reply.AppendInt32(userID);
            reply.AppendString(username);
            reply.AppendString(motto);

            bool Online = (FirewindEnvironment.GetGame().GetClientManager().GetClientByUserID(userID) != null);

            reply.AppendBoolean(Online);

            reply.AppendBoolean(false);

            reply.AppendString(string.Empty);
            reply.AppendInt32(0);
            reply.AppendString(look);
            reply.AppendString(last_online);
        }
Пример #12
0
        internal ServerMessage Serialize(GameClient Session)
        {
            ServerMessage Message = new ServerMessage(Outgoing.RoomEvent);
            Message.AppendString(Session.GetHabbo().Id + "");
            Message.AppendString(Session.GetHabbo().Username);
            Message.AppendString(RoomId + "");
            Message.AppendInt32(Category);
            Message.AppendString(Name);
            Message.AppendString(Description);
            Message.AppendString(StartTime);
            Message.AppendInt32(Tags.Count);

            foreach (string Tag in Tags.ToArray())
            {
                Message.AppendString(Tag);
            }
            return Message;
        }
 internal static ServerMessage Compose(Achievement Achievement, int Level, int PointReward, int PixelReward)
 {
     ServerMessage Message = new ServerMessage(Outgoing.UnlockAchievement);
     Message.AppendUInt(Achievement.Id);                                           // Achievement ID
     Message.AppendInt32(Level);                                                     // Achieved level
     Message.AppendInt32(144);                                                         // Unknown. Random useless number.
     Message.AppendString(Achievement.GroupName + Level);                   // Achieved name
     Message.AppendInt32(PointReward);                                               // Point reward
     Message.AppendInt32(PixelReward);                                               // Pixel reward
     Message.AppendInt32(0);                                                         // Unknown.
     Message.AppendInt32(10);                                                         // Unknown.
     Message.AppendInt32(21);                                                         // Unknown. (Extra reward?)
     Message.AppendString(Level > 1 ? Achievement.GroupName + (Level - 1) : string.Empty);
     Message.AppendString(Achievement.Category);
     Message.AppendString(String.Empty);
     Message.AppendInt32(0);
     Message.AppendInt32(0);
     return Message;
 }
Пример #14
0
        internal void SerializeFloor(ServerMessage Message, Boolean Inventory)
        {
            Message.AppendUInt(Id);
            Message.AppendString(mBaseItem.Type.ToString().ToUpper());
            Message.AppendUInt(Id);
            Message.AppendInt32(GetBaseItem().SpriteId);
            Message.AppendInt32(Extra); // extra

            Message.AppendInt32(Data.GetTypeID());
            Data.AppendToMessage(Message);

            Message.AppendBoolean(GetBaseItem().AllowRecycle);
            Message.AppendBoolean(GetBaseItem().AllowTrade);
            Message.AppendBoolean(GetBaseItem().AllowInventoryStack);
            Message.AppendBoolean(Marketplace.CanSellItem(this));
            Message.AppendInt32(-1);
            Message.AppendString("");
            Message.AppendInt32(0);
        }
 internal static ServerMessage Compose(Achievement Achievement, int TargetLevel, AchievementLevel TargetLevelData,
     int TotalLevels, UserAchievement UserData)
 {
     ServerMessage Message = new ServerMessage(Outgoing.AchievementProgress);
     Message.AppendUInt(Achievement.Id);                                               // Unknown (ID?)
     Message.AppendInt32(TargetLevel);                                                   // Target level
     Message.AppendString(Achievement.GroupName + TargetLevel);                 // Target name/desc/badge
     Message.AppendInt32(TargetLevelData.Requirement);                                   // Progress req/target
     Message.AppendInt32(TargetLevelData.RewardPixels);                                   // Pixel reward
     Message.AppendInt32(TargetLevelData.RewardPoints);                                  // Unknown(??)
     Message.AppendInt32(0); // ?
     Message.AppendInt32(UserData != null ? UserData.Progress : 0);                      // Current progress
     Message.AppendBoolean(UserData != null ? (UserData.Level >= TotalLevels) : false);  // Set 100% completed(??)
     Message.AppendString(Achievement.Category);                               // Category
     Message.AppendString(String.Empty);
     Message.AppendInt32(TotalLevels);                                                   // Total amount of levels
     Message.AppendInt32(0);
     return Message;
 }
Пример #16
0
        public bool Handle(RoomUnit unit, Team team, RoomItem item)
        {
            RoomUser user = unit as RoomUser;
            if (user != null && user.GetClient() != null)
            {
                ServerMessage servermsg = new ServerMessage();
                servermsg.Init(Outgoing.Whisp);
                servermsg.AppendInt32(user.VirtualID);
                servermsg.AppendString(message);
                servermsg.AppendInt32(0);
                servermsg.AppendInt32(0);
                servermsg.AppendInt32(-1);

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

            return false;
        }
Пример #17
0
        internal static void TryRedeemVoucher(GameClient Session, string Code)
        {
            if (!IsValidCode(Code))
            {
                ServerMessage Error = new ServerMessage(Outgoing.VoucherRedeemError);
                Error.AppendRawInt32(0); // 0=invalid code,1=technical issue,3=redeem at webpage
                Session.SendMessage(Error);
                return;
            }

            int Value = GetVoucherValue(Code);

            TryDeleteVoucher(Code);

            Session.GetHabbo().Credits += Value;
            Session.GetHabbo().UpdateCreditsBalance();

            ServerMessage message = new ServerMessage(Outgoing.VoucherRedeemOk);
            message.AppendString("Credits"); // productName
            message.AppendString("Awesome"); // productDescription
            Session.SendMessage(message);
        }
Пример #18
0
        internal static ServerMessage Compose(uint SongId, int PlaylistItemNumber, int SyncTimestampMs)
        {
            ServerMessage Message = new ServerMessage(327);

            if (SongId == 0)
            {
                Message.AppendInt32(-1);
                Message.AppendInt32(-1);
                Message.AppendInt32(-1);
                Message.AppendInt32(-1);
                Message.AppendInt32(0);
            }
            else
            {
                Message.AppendUInt(SongId);
                Message.AppendInt32(PlaylistItemNumber);
                Message.AppendUInt(SongId);
                Message.AppendInt32(0);
                Message.AppendInt32(SyncTimestampMs);
            }

            return Message;
        }
Пример #19
0
        internal static ServerMessage Compose(GameClient Session, List<Achievement> Achievements)
        {
            ServerMessage Message = new ServerMessage(Outgoing.AchievementList); //436
            Message.AppendInt32(Achievements.Count);

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

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

                AchievementLevel TargetLevelData = Achievement.Levels[TargetLevel];

                Message.AppendUInt(Achievement.Id);                                                           // Unknown (ID?)
                Message.AppendInt32(TargetLevel);                                                   // Target level
                Message.AppendString(Achievement.GroupName + TargetLevel);                 // Target name/desc/badge
                Message.AppendInt32(TargetLevelData.Requirement);                                   // Progress req/target
                Message.AppendInt32(TargetLevelData.RewardPixels);                                   // Pixel reward
                Message.AppendInt32(TargetLevelData.RewardPoints);                                  // Unknown(??)
                Message.AppendInt32(0);
                Message.AppendInt32(UserData != null ? UserData.Progress : 0);                      // Current progress
                Message.AppendBoolean(UserData != null ? (UserData.Level >= TotalLevels) : false);  // Set 100% completed(??)
                Message.AppendString(Achievement.Category);                                // Category
                Message.AppendString(String.Empty);
                Message.AppendInt32(TotalLevels);                                                   // Total amount of levels
                Message.AppendInt32(0);
            }
            Message.AppendBoolean(false);
            Message.AppendBoolean(false);
            return Message;
        }
Пример #20
0
        internal void massaction()
        {
            Room currentRoom = Session.GetHabbo().CurrentRoom;
            if (currentRoom != null)
            {
                if (currentRoom.Owner == Session.GetHabbo().Username && Session.GetHabbo().Rank >= 4)
                {
                    string action = Params[1];
                    int ActionId = 0;

                    switch(action)
                    {
                        case "wave":
                            ActionId = 1;
                            break;

                        case "kiss":
                            ActionId = 2;
                            break;

                        case "laugh":
                            ActionId = 3;
                            break;

                        case "sleep":
                            ActionId = 5;
                            break;

                        default:
                            Session.SendNotif(":massaction wave\n:massaction kiss\n:massaction laugh\n:massaction sleep");
                            return;
                    }

                    List<RoomUser> roomUsers = currentRoom.GetRoomUserManager().GetRoomUsers();
                    foreach (RoomUser user in roomUsers)
                    {
                        user.DanceId = 0;
                        ServerMessage message = new ServerMessage(Outgoing.Action);
                        message.AppendInt32(user.VirtualId);
                        message.AppendInt32(ActionId);
                        currentRoom.SendMessage(message);
                        if (ActionId == 5)
                        {
                            user.IsAsleep = true;
                            ServerMessage message2 = new ServerMessage(Outgoing.IdleStatus);
                            message2.AppendInt32(user.VirtualId);
                            message2.AppendBoolean(user.IsAsleep);
                            currentRoom.SendMessage(message2);
                        }
                    }
                }
            }
        }
Пример #21
0
        internal void linkAlert()
        {
            Room TargetRoom = Session.GetHabbo().CurrentRoom;
            // Hotel Alert pluss link :hal <link> <message>
            string Link = Params[1];

            string Message = MergeParams(Params, 2);

            ServerMessage nMessage = new ServerMessage(Outgoing.SendNotif);
            nMessage.AppendStringWithBreak(LanguageLocale.GetValue("hotelallert.notice") + "\r\n" + Message + "\r\n-" + Session.GetHabbo().Username);
            nMessage.AppendStringWithBreak(Link);
            FirewindEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(nMessage);

            //FirewindEnvironment.messagingBot.SendMassMessage(new PublicMessage(string.Format("[{0}] => [{1}] + [{2}]", Session.GetHabbo().Username, Link, Message)), true);
        }
Пример #22
0
        internal void hotelalert()
        {
            string Notice = GetInput(Params).Substring(4);
            ServerMessage HotelAlert = new ServerMessage(Outgoing.BroadcastMessage);
            HotelAlert.AppendStringWithBreak(LanguageLocale.GetValue("hotelallert.notice") + "\r\n" +
            Notice + "\r\n" + "- " + Session.GetHabbo().Username);
            FirewindEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(HotelAlert);
            FirewindEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "HotelAlert", "Hotel alert [" + Notice + "]");

            //FirewindEnvironment.messagingBot.SendMassMessage(new PublicMessage(string.Format("[{0}] => [{1}]", Session.GetHabbo().Username, Notice)), true);
        }
Пример #23
0
        internal void deleteMission()
        {
            string TargetUser = Params[1];
            GameClient TargetClient = null;
            Room TargetRoom = Session.GetHabbo().CurrentRoom;

            TargetClient = FirewindEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);

            if (TargetClient == null)
            {
                Session.SendNotif(LanguageLocale.GetValue("input.usernotfound"));
                return;
            }
            if (Session.GetHabbo().Rank <= TargetClient.GetHabbo().Rank)
            {
                Session.SendNotif(LanguageLocale.GetValue("user.notpermitted"));
                return;
            }
            TargetClient.GetHabbo().Motto = LanguageLocale.GetValue("user.unacceptable_motto");
            //TODO update motto

            FirewindEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, TargetClient.GetHabbo().Username, "mission removal", "removed mission");

            Room Room = TargetClient.GetHabbo().CurrentRoom;

            if (Room == null)
            {
                return;
            }
            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (User == null)
            {
                return;
            }

            ServerMessage RoomUpdate = new ServerMessage(266);
            RoomUpdate.AppendInt32(User.VirtualId);
            RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Look);
            RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Gender.ToLower());
            RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Motto);
            Room.SendMessage(RoomUpdate);
        }
Пример #24
0
        internal void copylook()
        {
            string copyTarget = Params[1];
            bool findResult = false;

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

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

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

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

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

                    if (Room == null)
                    {
                        return;
                    }

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

                    if (User == null)
                    {
                        return;
                    }

                    ServerMessage RoomUpdate = new ServerMessage(Outgoing.UpdateUserInformation);
                    RoomUpdate.AppendInt32(User.VirtualId);
                    RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Look);
                    RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Gender.ToLower());
                    RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Motto);
                    RoomUpdate.AppendInt32(Session.GetHabbo().AchievementPoints);
                    Room.SendMessage(RoomUpdate);
                }
            }
        }
Пример #25
0
 private void BroadcastMessage(ServerMessage message)
 {
     lock (broadcastQueue.SyncRoot)
     {
         broadcastQueue.Enqueue(message);
     }
 }
Пример #26
0
        internal void UpdateBadges()
        {
            Session.GetHabbo().GetBadgeComponent().ResetSlots();

            using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.runFastQuery("UPDATE user_badges SET badge_slot = 0 WHERE user_id = " + Session.GetHabbo().Id);
            }

            for (int i = 0; i < 5; i++)
            {
                int    Slot  = Request.ReadInt32();
                string Badge = Request.ReadString();

                if (Badge.Length == 0)
                {
                    continue;
                }

                if (!Session.GetHabbo().GetBadgeComponent().HasBadge(Badge) || Slot < 1 || Slot > 5)
                {
                    return;
                }

                Session.GetHabbo().GetBadgeComponent().GetBadge(Badge).Slot = Slot;

                using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor())
                {
                    dbClient.setQuery("UPDATE user_badges SET badge_slot = " + Slot + " WHERE badge_id = @badge AND user_id = " + Session.GetHabbo().Id + "");
                    dbClient.addParameter("badge", Badge);
                    dbClient.runQuery();
                }
            }

            FirewindEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.PROFILE_BADGE);

            ServerMessage Message = new ServerMessage(Outgoing.UpdateBadges);

            Message.AppendUInt(Session.GetHabbo().Id);
            Message.AppendInt32(Session.GetHabbo().GetBadgeComponent().EquippedCount);

            foreach (Badge Badge in Session.GetHabbo().GetBadgeComponent().BadgeList.Values)
            {
                if (Badge.Slot <= 0)
                {
                    continue;
                }

                Message.AppendInt32(Badge.Slot);
                Message.AppendString(Badge.Code);
            }

            if (Session.GetHabbo().InRoom&& FirewindEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId) != null)
            {
                FirewindEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId).SendMessage(Message);
            }
            else
            {
                Session.SendMessage(Message);
            }
        }
Пример #27
0
        //private delegate void RequestHandler();
        //private Dictionary<uint, RequestHandler> RequestHandlers;

        internal GameClientMessageHandler(GameClient Session)
        {
            this.Session = Session;
            //this.RequestHandlers = new Dictionary<uint, RequestHandler>();
            this.Response = new ServerMessage();
        }
Пример #28
0
 internal void appendResponse(ServerMessage message)
 {
     appendBytes(message.GetBytes());
 }
Пример #29
0
 internal void QueueBroadcaseMessage(ServerMessage message)
 {
     lock (broadcastQueue.SyncRoot)
     {
         broadcastQueue.Enqueue(message);
     }
 }
Пример #30
0
        internal void roomalert()
        {
            Room TargetRoom = Session.GetHabbo().CurrentRoom;
            TargetRoom = FirewindEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (TargetRoom == null)
                return;

            if (TargetRoom.OwnerId == Session.GetHabbo().Id && Session.GetHabbo().Rank >= 2)
            {
                if(Session.GetHabbo().Rank < 5)
                {
                    string Msg = MergeParams(Params, 1);

                    ServerMessage nMessage = new ServerMessage();
                    nMessage.Init(Outgoing.SendNotif);
                    nMessage.AppendString("Fra roomeier: (" + TargetRoom.Owner + ")\n" + Msg);
                    nMessage.AppendString("");
                    TargetRoom.QueueRoomMessage(nMessage);
                }
                else
                {
                    string Msg = MergeParams(Params, 1);

                    ServerMessage nMessage = new ServerMessage();
                    nMessage.Init(Outgoing.SendNotif);
                    nMessage.AppendString(Msg);
                    nMessage.AppendString("");
                    FirewindEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Alert", "Room alert with message [" + Msg + "]");
                    TargetRoom.QueueRoomMessage(nMessage);
                }
            }
            else
            {
                if (Session.GetHabbo().Rank > 5)
                {
                    string Msg = MergeParams(Params, 1);

                    ServerMessage nMessage = new ServerMessage();
                    nMessage.Init(Outgoing.SendNotif);
                    nMessage.AppendString(Msg);
                    nMessage.AppendString("");
                    FirewindEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Alert", "Room alert with message [" + Msg + "]");
                    TargetRoom.QueueRoomMessage(nMessage);
                }
            }
        }
Пример #31
0
 internal void QueueBroadcaseMessage(ServerMessage message, string requirements)
 {
     FusedPacket packet = new FusedPacket(message, requirements);
     lock (authorizedPacketSending.SyncRoot)
     {
         authorizedPacketSending.Enqueue(packet);
     }
 }
Пример #32
0
        internal void close()
        {
            Room TargetRoom = Session.GetHabbo().CurrentRoom;

            TargetRoom = FirewindEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            TargetRoom.Name = LanguageLocale.GetValue("moderation.room.roomclosed");
            TargetRoom.Description = LanguageLocale.GetValue("moderation.room.roomclosed");

            TargetRoom.State = 1;

            ServerMessage nMessage = new ServerMessage();
            nMessage.Init(Outgoing.SendNotif);
            nMessage.AppendString(LanguageLocale.GetValue("moderation.room.roomclosed"));
            nMessage.AppendString("");
            TargetRoom.QueueRoomMessage(nMessage);

            using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.runFastQuery("UPDATE rooms SET state = 'locked', caption = '" + LanguageLocale.GetValue("moderation.room.roomclosed") + "', description = '" + LanguageLocale.GetValue("moderation.room.roomclosed") + "' WHERE id = " + TargetRoom.RoomId);
            }

            FirewindEnvironment.GetGame().GetRoomManager().UnloadRoom(TargetRoom);
        }
Пример #33
0
        private void TestClientConnections()
        {
            try
            {
                DateTime startTaskTime;
                TimeSpan spentTime;
                startTaskTime = DateTime.Now;
                TimeSpan sinceLastTime = DateTime.Now - pingLastExecution;

                if (sinceLastTime.TotalMilliseconds >= pingInterval)
                {
                    try
                    {
                        ServerMessage PingMessage = new ServerMessage(Outgoing.Ping);

                        List<GameClient> ToPing = new List<GameClient>();
                        //List<GameClient> ToDisconnect = new List<GameClient>();

                        TimeSpan noise;
                        TimeSpan sinceLastPing;

                        foreach (GameClient client in clients.Values)
                        {
                            noise = DateTime.Now - pingLastExecution.AddMilliseconds(pingInterval); //For finding out if there is any lagg
                            sinceLastPing = DateTime.Now - client.TimePingedReceived;

                            if ((sinceLastPing.TotalMilliseconds - noise.TotalMilliseconds < pingInterval + 10000))
                            {
                                ToPing.Add(client);
                            }
                            else
                            {
                                    lock (timedOutConnections.SyncRoot)
                                    {
                                        timedOutConnections.Enqueue(client);
                                    }
                                //ToDisconnect.Add(client);
                                // pa ver los timeouts por si sale alguno mas por algun motivo
                                Logging.WriteLine(client.ConnectionID + " => Connection timed out");
                            }
                        }
                        DateTime start = DateTime.Now;

                        byte[] PingMessageBytes = PingMessage.GetBytes();
                        foreach (GameClient Client in ToPing)
                        {
                            try
                            {
                                Client.GetConnection().SendUnsafeData(PingMessageBytes);
                            }
                            catch
                            {
                                //Logging.LogCriticalException("Failed to send ping packet, possible fack up!");
                                //ToDisconnect.Add(Client);
                                lock (timedOutConnections.SyncRoot)
                                {
                                    timedOutConnections.Enqueue(Client);
                                }
                            }
                        }

                        TimeSpan spent = DateTime.Now - start;
                        if (spent.TotalSeconds > 3)
                        {
                            Logging.WriteLine("Spent seconds on testing: " + (int)spent.TotalSeconds);
                        }

                        //start = DateTime.Now;
                        //foreach (GameClient client in ToDisconnect)
                        //{
                        //    try
                        //    {
                        //        client.Disconnect();
                        //    }
                        //    catch { }
                        //}
                        //spent = DateTime.Now - start;
                        if (spent.TotalSeconds > 3)
                        {
                            Logging.WriteLine("Spent seconds on disconnecting: " + (int)spent.TotalSeconds);
                        }

                        //ToDisconnect.Clear();
                        //ToDisconnect = null;
                        //ToPing.Clear();
                        //ToPing = null;

                    }
                    catch (Exception e) { Logging.LogThreadException(e.ToString(), "Connection checker task"); }
                    pingLastExecution = DateTime.Now;
                }
                spentTime = DateTime.Now - startTaskTime;

                if (spentTime.TotalSeconds > 3)
                {
                    Logging.WriteLine("GameClientManager.TestClientConnections spent: " + spentTime.TotalSeconds + " seconds in working.");
                }
            }
            catch (Exception e) { Logging.LogThreadException(e.ToString(), "GameClientManager.TestClientConnections Exception --> Not inclusive"); }
        }
Пример #34
0
        internal void ChangeLook()
        {
            if (Session.GetHabbo().MutantPenalty)
            {
                Session.SendNotif("Because of a penalty or restriction on your account, you are not allowed to change your look.");
                return;
            }

            string Gender = Request.ReadString().ToUpper();
            string Look   = FirewindEnvironment.FilterInjectionChars(Request.ReadString());

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

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

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

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

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

            Session.GetMessageHandler().GetResponse().Init(Outgoing.UpdateUserInformation);
            Session.GetMessageHandler().GetResponse().AppendInt32(-1);
            Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Look);
            Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Gender.ToLower());
            Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Motto);
            Session.GetMessageHandler().GetResponse().AppendInt32(Session.GetHabbo().AchievementPoints);
            Session.GetMessageHandler().SendResponse();

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

                if (Room == null)
                {
                    return;
                }

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

                if (User == null)
                {
                    return;
                }

                ServerMessage RoomUpdate = new ServerMessage(Outgoing.UpdateUserInformation);
                RoomUpdate.AppendInt32(User.VirtualId);
                RoomUpdate.AppendString(Session.GetHabbo().Look);
                RoomUpdate.AppendString(Session.GetHabbo().Gender.ToLower());
                RoomUpdate.AppendString(Session.GetHabbo().Motto);
                RoomUpdate.AppendInt32(Session.GetHabbo().AchievementPoints);
                Room.SendMessage(RoomUpdate);
            }
        }