Example #1
0
		internal void Serialize(ServerMessage Message, GameClient Session)
		{
			Relationship value = Session.GetHabbo().Relationships.FirstOrDefault((KeyValuePair<int, Relationship> x) => x.Value.UserId == Convert.ToInt32(this.UserId)).Value;
			int i = (value == null) ? 0 : value.Type;
			Message.AppendUInt(this.UserId);
			Message.AppendString(this.mUsername);
			Message.AppendInt32(1);
			if (!this.mAppearOffline || Session.GetHabbo().Rank >= 4u)
			{
				Message.AppendBoolean(this.IsOnline);
			}
			else
			{
				Message.AppendBoolean(false);
			}
			if (!this.mHideInroom || Session.GetHabbo().Rank >= 4u)
			{
				Message.AppendBoolean(this.InRoom);
			}
			else
			{
				Message.AppendBoolean(false);
			}
			Message.AppendString(this.IsOnline ? this.mLook : "");
			Message.AppendInt32(0);
			Message.AppendString(this.mMotto);
			Message.AppendString(string.Empty);
			Message.AppendString(string.Empty);
			Message.AppendBoolean(true);
			Message.AppendBoolean(false);
			Message.AppendBoolean(false);
			Message.AppendShort(i);
		}
Example #2
0
 internal void OnHeightmapUpdate(List<Point> oldCoords, List<Point> newCoords)
 {
     ServerMessage Message = new ServerMessage(Outgoing.UpdateFurniStackMapMessageComposer);
     Message.AppendByte((byte)(oldCoords.Count + newCoords.Count));
     foreach (Point Coord in oldCoords)
     {
         Message.AppendByte((byte)Coord.X);
         Message.AppendByte((byte)Coord.Y);
         Message.AppendShort((short)(room.GetGameMap().SqAbsoluteHeight(Coord.X, Coord.Y) * 256));
     }
     foreach (Point nCoord in newCoords)
     {
         Message.AppendByte((byte)nCoord.X);
         Message.AppendByte((byte)nCoord.Y);
         Message.AppendShort((short)(room.GetGameMap().SqAbsoluteHeight(nCoord.X, nCoord.Y) * 256));
     }
     room.SendMessage(Message);
 }
Example #3
0
 internal void OnHeightmapUpdate(ICollection affectedTiles)
 {
     ServerMessage Message = new ServerMessage(Outgoing.UpdateFurniStackMapMessageComposer);
     Message.AppendByte((byte)affectedTiles.Count);
     foreach (Point Coord in affectedTiles)
     {
         Message.AppendByte((byte)Coord.X);
         Message.AppendByte((byte)Coord.Y);
         Message.AppendShort((short)(room.GetGameMap().SqAbsoluteHeight(Coord.X, Coord.Y) * 256));
     }
     room.SendMessage(Message);
 }
Example #4
0
		internal static ServerMessage SerializeRoomChatlog(uint roomID)
		{
            // NEW CHATLOGS [March 2014] Coded by Finn
            // Please don't remove credits, this took me some time to do... :(
            // Credits to Itachi for the structure's "context" enigma :D

			ServerMessage Message = new ServerMessage();
            RoomData Room = MercuryEnvironment.GetGame().GetRoomManager().GenerateRoomData(roomID);
			if (Room == null)
			{
                throw new NullReferenceException("No room found.");
			}

			Message.Init(Outgoing.ModerationToolRoomChatlogMessageComposer);
			Message.AppendByte(1);
			Message.AppendShort(2);
			Message.AppendString("roomName");
			Message.AppendByte(2);
			Message.AppendString(Room.Name);
			Message.AppendString("roomId");
			Message.AppendByte(1);
			Message.AppendUInt(Room.Id);


            var TempChatlogs = Room.RoomChat.Reverse().Take(60);
            Message.AppendShort(TempChatlogs.Count());
            foreach (Chatlog current in TempChatlogs)
			{
				Habbo Habbo = MercuryEnvironment.getHabboForId(current.UserId);
				DateTime Date = MercuryEnvironment.UnixToDateTime(current.Timestamp);
                if (Habbo == null)
                {
                    Message.AppendInt32((DateTime.Now - Date).Seconds);
                    Message.AppendUInt(current.UserId);
                    Message.AppendString("*User not found*");
                    Message.AppendString(current.Message);
                    Message.AppendBoolean(true);
                }
                else
                {
                    Message.AppendInt32((DateTime.Now - Date).Seconds);
                    Message.AppendUInt(Habbo.Id);
                    Message.AppendString(Habbo.Username);
                    Message.AppendString(current.Message);
                    Message.AppendBoolean(false); // Text is bold
                }
			}
            TempChatlogs = null;

            return Message;
		}
Example #5
0
        internal static ServerMessage SerializeUserChatlog(uint UserId)
        {
            ServerMessage result;
            using (IQueryAdapter queryreactor = MercuryEnvironment.GetDatabaseManager().getQueryreactor())
            {
                queryreactor.setQuery("SELECT DISTINCT room_id FROM chatlogs WHERE user_id = " + UserId + " ORDER BY timestamp DESC LIMIT 4");
                DataTable table = queryreactor.getTable();
                ServerMessage serverMessage = new ServerMessage(Outgoing.ModerationToolUserChatlogMessageComposer);
                serverMessage.AppendUInt(UserId);
                serverMessage.AppendString(MercuryEnvironment.GetGame().GetClientManager().GetNameById(UserId));
                if (table != null)
                {
                    serverMessage.AppendInt32(table.Rows.Count);
                    IEnumerator enumerator = table.Rows.GetEnumerator();
                    try
                    {
                        while (enumerator.MoveNext())
                        {
                            DataRow dataRow = (DataRow)enumerator.Current;
                            queryreactor.setQuery(string.Concat(new object[]
							{
								"SELECT user_id,timestamp,message FROM chatlogs WHERE room_id = ",
								(uint)dataRow["room_id"],
								" AND user_id = ",
								UserId,
								" ORDER BY timestamp DESC LIMIT 30"
							}));
                            DataTable table2 = queryreactor.getTable();
                            RoomData roomData = MercuryEnvironment.GetGame().GetRoomManager().GenerateRoomData((uint)dataRow["room_id"]);
                            if (table2 != null)
                            {
                                serverMessage.AppendByte(1);
                                serverMessage.AppendShort(2);
                                serverMessage.AppendString("roomName");
                                serverMessage.AppendByte(2);
                                if (roomData == null)
                                {
                                    serverMessage.AppendString("This room was deleted");
                                }
                                else
                                {
                                    serverMessage.AppendString(roomData.Name);
                                }
                                serverMessage.AppendString("roomId");
                                serverMessage.AppendByte(1);
                                serverMessage.AppendUInt((uint)dataRow["room_id"]);
                                serverMessage.AppendShort(table2.Rows.Count);
                                IEnumerator enumerator2 = table2.Rows.GetEnumerator();
                                try
                                {
                                    while (enumerator2.MoveNext())
                                    {
                                        DataRow dataRow2 = (DataRow)enumerator2.Current;
                                        Habbo habboForId = MercuryEnvironment.getHabboForId((uint)dataRow2["user_id"]);
                                        MercuryEnvironment.UnixToDateTime((double)dataRow2["timestamp"]);
                                        if (habboForId == null)
                                        {
                                            result = null;
                                            return result;
                                        }
                                        serverMessage.AppendInt32(checked((int)unchecked((double)MercuryEnvironment.GetUnixTimestamp() - (double)dataRow2["timestamp"])));
                                        serverMessage.AppendUInt(habboForId.Id);
                                        serverMessage.AppendString(habboForId.Username);
                                        serverMessage.AppendString(dataRow2["message"].ToString());
                                        serverMessage.AppendBoolean(false);
                                    }
                                    continue;
                                }
                                finally
                                {
                                    IDisposable disposable = enumerator2 as IDisposable;
                                    if (disposable != null)
                                    {
                                        disposable.Dispose();
                                    }
                                }
                            }
                            serverMessage.AppendByte(1);
                            serverMessage.AppendShort(0);
                            serverMessage.AppendShort(0);
                        }
                        goto IL_29B;
                    }
                    finally
                    {
                        IDisposable disposable2 = enumerator as IDisposable;
                        if (disposable2 != null)
                        {
                            disposable2.Dispose();
                        }
                    }
                }
                serverMessage.AppendInt32(0);
            IL_29B:
                result = serverMessage;
            }
            return result;
        }
Example #6
0
 private ServerMessage NewHeightMap()
 {
     ServerMessage serverMessage = new ServerMessage();
     serverMessage.Init(Outgoing.HeightMapMessageComposer);
     serverMessage.AppendInt32(this.Model.MapSizeX);
     checked
     {
         serverMessage.AppendInt32(this.Model.MapSizeX * this.Model.MapSizeY);
         for (int i = 0; i < this.Model.MapSizeY; i++)
         {
             for (int j = 0; j < this.Model.MapSizeX; j++)
             {
                 serverMessage.AppendShort((short)(this.SqAbsoluteHeight(j, i) * 256));
               //  serverMessage.AppendShort(this.Model.SqFloorHeight[j, i] * 256);
             }
         }
         return serverMessage;
     }
 }