/// <summary> /// Serializes the offline messages. /// </summary> /// <param name="message">The message.</param> /// <returns>ServerMessage.</returns> internal ServerMessage SerializeOfflineMessages(OfflineMessage message) { var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("ConsoleChatMessageComposer")); serverMessage.AppendInteger(message.FromId); serverMessage.AppendString(message.Message); serverMessage.AppendInteger(((int)(Plus.GetUnixTimeStamp() - message.Timestamp))); return(serverMessage); }
/// <summary> /// Sends the instant message. /// </summary> /// <param name="toId">To identifier.</param> /// <param name="message">The message.</param> internal void SendInstantMessage(uint toId, string message) { int credit = new Random().Next(1, 15); if (!GetClient().GetHabbo().HasFuse("fuse_owner") && AntiPublicistas.CheckPublicistas(message)) { GetClient().PublicistCount++; GetClient().HandlePublicista(message); return; } if (!FriendshipExists(toId)) { DeliverInstantMessageError(6, toId); return; } if (GetClient().GetRoleplay().Phone == 0) { GetClient().SendWhisperBubble("Você não tem telefone! Você pode comprar um na loja de telefone! [Room ID: 5]", 1); return; } if (GetClient().GetHabbo().ActivityPoints < credit) { GetClient().SendWhisperBubble("Você tem fundos de crédito insuficientes! Você pode comprar mais na loja de telefone! [Room ID: 5]", 1); return; } if (toId == 0) // Staff Chat { var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("ConsoleChatMessageComposer")); serverMessage.AppendInteger(0); //userid serverMessage.AppendString(GetClient().GetHabbo().UserName + " : " + message); serverMessage.AppendInteger(0); Plus.GetGame().GetClientManager().StaffAlert(serverMessage, GetClient().GetHabbo().Id); } else { var clientByUserId = Plus.GetGame().GetClientManager().GetClientByUserId(toId); if (clientByUserId == null || clientByUserId.GetHabbo().GetMessenger() == null) { if (Plus.OfflineMessages.ContainsKey(toId)) { Plus.OfflineMessages[toId].Add(new OfflineMessage(GetClient().GetHabbo().Id, message, Plus.GetUnixTimeStamp())); } else { Plus.OfflineMessages.Add(toId, new List <OfflineMessage>()); Plus.OfflineMessages[toId].Add(new OfflineMessage(GetClient().GetHabbo().Id, message, Plus.GetUnixTimeStamp())); } OfflineMessage.SaveMessage(Plus.GetDatabaseManager().GetQueryReactor(), toId, GetClient().GetHabbo().Id, message); return; } if (GetClient().GetHabbo().Muted) { DeliverInstantMessageError(4, toId); return; } if (clientByUserId.GetHabbo().Muted) { DeliverInstantMessageError(3, toId); } if (message == "") { return; } clientByUserId.GetHabbo().GetMessenger().DeliverInstantMessage(message, _userId); #region Whisper if (GetClient().GetHabbo().CurrentRoomId != 0) { var roomUserByRank = GetClient().GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByRank(2); RoomUser u = GetClient().GetHabbo().GetRoomUser(); RoomUser u2 = clientByUserId.GetHabbo().GetRoomUser(); foreach (var current2 in roomUserByRank) { if (current2 != null && current2.HabboId != u2.HabboId && current2.HabboId != u.HabboId && current2.GetClient() != null) { if (RoleplayManager.BypassRights(current2.GetClient())) { var whispStaff = new ServerMessage(LibraryParser.OutgoingRequest("WhisperMessageComposer")); whispStaff.AppendInteger(u.VirtualId); whispStaff.AppendString(string.Format("PM to {0}: {1}", clientByUserId.GetHabbo().UserName, message)); whispStaff.AppendInteger(0); whispStaff.AppendInteger(0); whispStaff.AppendInteger(0); whispStaff.AppendInteger(-1); current2.GetClient().SendMessage(whispStaff); } } } } #endregion RoleplayManager.GiveCredit(GetClient(), -credit); } LogPM(_userId, toId, message); }