/// <summary> /// Called when [height map update]. /// </summary> /// <param name="affectedTiles">The affected tiles.</param> internal void OnHeightMapUpdate(ICollection affectedTiles) { var message = new ServerMessage(LibraryParser.OutgoingRequest("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); }
/// <summary> /// Called when [height map update]. /// </summary> /// <param name="oldCoords">The old coords.</param> /// <param name="newCoords">The new coords.</param> internal void OnHeightMapUpdate(List<Point> oldCoords, List<Point> newCoords) { var message = new ServerMessage(LibraryParser.OutgoingRequest("UpdateFurniStackMapMessageComposer")); message.AppendByte((byte) (oldCoords.Count + newCoords.Count)); foreach (var 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 (var 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); }
/// <summary> /// Serializes the specified message. /// </summary> /// <param name="message">The message.</param> /// <param name="session">The session.</param> internal void Serialize(ServerMessage message, GameClient session) { if (Id == 0) { message.AppendInteger(Id); message.AppendString(UserName); message.AppendInteger(1); message.AppendBool(true); message.AppendBool(false); message.AppendString(_look); message.AppendInteger(0); // category message.AppendString(string.Empty); message.AppendString(string.Empty); // realname message.AppendString(string.Empty); // shit? message.AppendBool(true); // offline message message.AppendBool(false); // pocket user message.AppendBool(false); // pocketHabboUser message.AppendShort(0); } else { var value = session.GetHabbo().Relationships.FirstOrDefault(x => x.Value.UserId == Convert.ToInt32(Id)).Value; var i = (value == null) ? 0 : value.Type; message.AppendInteger(Id); message.AppendString(UserName); message.AppendInteger(IsOnline); message.AppendBool(IsOnline); message.AppendBool(InRoom); message.AppendString(IsOnline ? _look : string.Empty); message.AppendInteger(0); // category message.AppendString(IsOnline ? _motto : string.Empty); message.AppendString(string.Empty); // realname message.AppendString(string.Empty); // shit? message.AppendBool(true); // offline message message.AppendBool(false); // pocket user message.AppendBool(false); // pocketHabboUser message.AppendShort(i); } }
/// <summary> /// News the height map. /// </summary> /// <returns>ServerMessage.</returns> private ServerMessage NewHeightMap() { var serverMessage = new ServerMessage(); serverMessage.Init(LibraryParser.OutgoingRequest("HeightMapMessageComposer")); serverMessage.AppendInteger(Model.MapSizeX); { serverMessage.AppendInteger(Model.MapSizeX * Model.MapSizeY); for (Int32 i = 0; i < Model.MapSizeY; i++) for (Int32 j = 0; j < Model.MapSizeX; j++) serverMessage.AppendShort((short)(SqAbsoluteHeight(j, i) * 256)); // serverMessage.AppendShort(this.Model.SqFloorHeight[j, i] * 256); return serverMessage; } }
/// <summary> /// Serializes the user chatlog. /// </summary> /// <param name="userId">The user identifier.</param> /// <returns>ServerMessage.</returns> internal static ServerMessage SerializeUserChatlog(uint userId) { ServerMessage result; using (IQueryAdapter queryReactor = AzureEmulator.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery(string.Format("SELECT DISTINCT room_id FROM users_chatlogs WHERE user_id = {0} ORDER BY timestamp DESC LIMIT 4", userId)); DataTable table = queryReactor.GetTable(); var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("ModerationToolUserChatlogMessageComposer")); serverMessage.AppendInteger(userId); serverMessage.AppendString(AzureEmulator.GetGame().GetClientManager().GetNameById(userId)); if (table != null) { serverMessage.AppendInteger(table.Rows.Count); IEnumerator enumerator = table.Rows.GetEnumerator(); try { while (enumerator.MoveNext()) { var dataRow = (DataRow)enumerator.Current; queryReactor.SetQuery(string.Concat("SELECT user_id,timestamp,message FROM users_chatlogs WHERE room_id = ", (uint)dataRow["room_id"], " AND user_id = ", userId, " ORDER BY timestamp DESC LIMIT 30")); DataTable table2 = queryReactor.GetTable(); RoomData roomData = AzureEmulator.GetGame().GetRoomManager().GenerateRoomData((uint)dataRow["room_id"]); if (table2 != null) { serverMessage.AppendByte(1); serverMessage.AppendShort(2); serverMessage.AppendString("roomName"); serverMessage.AppendByte(2); serverMessage.AppendString(roomData == null ? "This room was deleted" : roomData.Name); serverMessage.AppendString("roomId"); serverMessage.AppendByte(1); serverMessage.AppendInteger((uint)dataRow["room_id"]); serverMessage.AppendShort(table2.Rows.Count); IEnumerator enumerator2 = table2.Rows.GetEnumerator(); try { while (enumerator2.MoveNext()) { var dataRow2 = (DataRow)enumerator2.Current; Habbo habboForId = AzureEmulator.GetHabboById((uint)dataRow2["user_id"]); AzureEmulator.UnixToDateTime((double)dataRow2["timestamp"]); if (habboForId == null) { return null; } serverMessage.AppendInteger(((int)(AzureEmulator.GetUnixTimeStamp() - (double)dataRow2["timestamp"]))); serverMessage.AppendInteger(habboForId.Id); serverMessage.AppendString(habboForId.UserName); serverMessage.AppendString(dataRow2["message"].ToString()); serverMessage.AppendBool(false); } continue; } finally { var disposable = enumerator2 as IDisposable; if (disposable != null) { disposable.Dispose(); } } } serverMessage.AppendByte(1); serverMessage.AppendShort(0); serverMessage.AppendShort(0); } goto IL_29B; } finally { var disposable2 = enumerator as IDisposable; if (disposable2 != null) { disposable2.Dispose(); } } } serverMessage.AppendInteger(0); IL_29B: result = serverMessage; } return result; }
/// <summary> /// Serializes the ticket chatlog. /// </summary> /// <param name="ticket">The ticket.</param> /// <param name="roomData">The room data.</param> /// <param name="timestamp">The timestamp.</param> /// <returns>ServerMessage.</returns> /// <exception cref="System.NullReferenceException">No room found.</exception> internal static ServerMessage SerializeTicketChatlog(SupportTicket ticket, RoomData roomData, double timestamp) { var message = new ServerMessage(); RoomData room = AzureEmulator.GetGame().GetRoomManager().GenerateRoomData(ticket.RoomId); //if (room == null) //{ // throw new NullReferenceException("No room found."); //} message.Init(LibraryParser.OutgoingRequest("ModerationToolIssueChatlogMessageComposer")); message.AppendInteger(ticket.TicketId); message.AppendInteger(ticket.SenderId); message.AppendInteger(ticket.ReportedId); message.AppendInteger(ticket.RoomId); message.AppendByte(1); message.AppendShort(2); message.AppendString("roomName"); message.AppendByte(2); message.AppendString(ticket.RoomName); message.AppendString("roomId"); message.AppendByte(1); message.AppendInteger(ticket.RoomId); var tempChatlogs = room.RoomChat.Reverse().Skip(Math.Max(0, room.RoomChat.Count() - 60)).Take(60).ToList(); message.AppendShort(tempChatlogs.Count()); foreach (var chatLog in tempChatlogs) { chatLog.Serialize(ref message); } tempChatlogs = null; return message; }
/// <summary> /// Serializes the room chatlog. /// </summary> /// <param name="roomId">The room identifier.</param> /// <returns>ServerMessage.</returns> /// <exception cref="System.NullReferenceException">No room found.</exception> internal static ServerMessage SerializeRoomChatlog(uint roomId) { var message = new ServerMessage(); Room room = AzureEmulator.GetGame().GetRoomManager().LoadRoom(roomId); message.Init(LibraryParser.OutgoingRequest("ModerationToolRoomChatlogMessageComposer")); message.AppendByte(1); //type message.AppendShort(2); message.AppendString("roomName"); message.AppendByte(2); message.AppendString(room.RoomData.Name); message.AppendString("roomId"); message.AppendByte(1); message.AppendInteger(room.RoomData.Id); if (room != null) { var tempChatlogs = room.RoomData.RoomChat.Reverse().Skip(Math.Max(0, room.RoomData.RoomChat.Count() - 150)).Take(150).ToList(); message.AppendShort(tempChatlogs.Count()); foreach (var chatLog in tempChatlogs) { chatLog.Serialize(ref message); } tempChatlogs = null; } else { DateTime Date = AzureEmulator.UnixToDateTime(1413672144); message.AppendInteger((DateTime.Now - Date).Seconds); // niet goed denk ik message.AppendInteger(1); message.AppendString("*Kamer is niet geladen!*"); message.AppendString(""); message.AppendBool(false); } return message; }
/// <summary> /// Serializes the specified message. /// </summary> /// <param name="message">The message.</param> /// <param name="session">The session.</param> internal void Serialize(ServerMessage message, GameClient session) { var value = session.GetHabbo().Relationships.FirstOrDefault(x => x.Value.UserId == Convert.ToInt32(Id)).Value; var i = value?.Type ?? 0; message.AppendInteger(Id); message.AppendString(UserName); message.AppendInteger(IsOnline || Id == 0); message.AppendBool(Id == 0 || (!_appearOffline || session.GetHabbo().Rank >= 4) && IsOnline); message.AppendBool(Id != 0 && (!_hideInroom || session.GetHabbo().Rank >= 4) && InRoom); message.AppendString(IsOnline || Id == 0 ? _look : string.Empty); message.AppendInteger(0); message.AppendString(_motto); message.AppendString(string.Empty); message.AppendString(string.Empty); message.AppendBool(true); message.AppendBool(false); message.AppendBool(false); message.AppendShort(i); }
/// <summary> /// Serializes the room chatlog. /// </summary> /// <param name="roomId">The room identifier.</param> /// <returns>ServerMessage.</returns> /// <exception cref="System.NullReferenceException">No room found.</exception> internal static ServerMessage SerializeRoomChatlog(uint roomId) { var message = new ServerMessage(); var room = Azure.GetGame().GetRoomManager().LoadRoom(roomId); if (room?.RoomData != null) { message.Init(LibraryParser.OutgoingRequest("ModerationToolRoomChatlogMessageComposer")); message.AppendByte(1); message.AppendShort(2); message.AppendString("roomName"); message.AppendByte(2); message.AppendString(room.RoomData.Name); message.AppendString("roomId"); message.AppendByte(1); message.AppendInteger(room.RoomData.Id); var tempChatlogs = room.RoomData.RoomChat.Reverse() .Skip(Math.Max(0, room.RoomData.RoomChat.Count - 60)) .Take(60) .ToList(); message.AppendShort(tempChatlogs.Count); foreach (var chatLog in tempChatlogs) chatLog.Serialize(ref message); return message; } return null; }