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); }
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); }
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); }
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; }
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; }
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; } }