public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { if (session.RoomEntity == null) { return; } string command = request.GetString(); int bubbleId = request.GetInteger(); ChatBubbleStyle bubble; if (!ChatBubbleStyle.TryFromInt32(bubbleId, out bubble)) { return; } string[] args = command.Split(new char[] { ' ' }, 2); if (args.Length != 2) { return; } string targetUsername = args[0]; string msg = args[1]; RoomEntity target = session.Room.GetEntity(targetUsername); Chat.Whisper(session, msg, bubble, target, -1); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int targetX = request.GetInteger(); int targetY = request.GetInteger(); RoomEntity entity = session.RoomEntity; var target = new Vector2(targetX, targetY); if (entity == null || !entity.CanWalk() || entity.Position.Equals(target)) { return; } entity.Wake(); entity.Walk(target); /* TODO Implement Horse * if (entity.RidingHorse) { * RoomUser roomUserByVirtualId = currentRoom.GetRoomUserManager ().GetRoomUserByVirtualId ((int)roomUserByHabbo.HorseId); * * roomUserByVirtualId.MoveTo (targetX, targetY); * }*/ }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { if (!session.Info.HasPermission("fuse_mod")) { return; } int result = message.GetInteger(); message.GetInteger(); // TODO unused int ticketId = message.GetInteger(); SupportTicket ticket = TicketRepository.Find(ticketId); TicketCloseReason reason; if (ticket != null && TicketCloseReason.TryFromInt32(result, out reason)) { ticket.Close(reason); foreach (Habbo staff in ClientManager.GetByPermission("handle_cfh")) { staff.Router.GetComposer <ModerationToolIssueMessageComposer>().Compose(staff, ticket); } } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int groupId = request.GetInteger(); int whoCanRead = request.GetInteger(); int whoCanPost = request.GetInteger(); int whoCanThread = request.GetInteger(); int whoCanMod = request.GetInteger(); Group group = GroupRepository.Find(groupId); if (group?.Creator != session.Info) { return; } // TODO Check rights?! group.Forum.WhoCanRead = whoCanRead; group.Forum.WhoCanPost = whoCanPost; group.Forum.WhoCanThread = whoCanThread; group.Forum.WhoCanMod = whoCanMod; GroupRepository.Save(group); router.GetComposer <GroupForumDataMessageComposer>().Compose(session, group, session.Info); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { string friendName = request.GetString(); UserInfo friend = UserRepository.Find(x => x.Name == friendName); if (friend != null) { if (friend.HasFriendRequestsDisabled) { router.GetComposer <NotAcceptingRequestsMessageComposer>().Compose(session); } else { IRepository <FriendRequest> requests = DependencyFactory.Resolve <IRepository <FriendRequest> > (); if (!requests.Exists(x => x.To == friend && x.From == session.Info)) { var friendRequest = new FriendRequest(session.Info, friend); requests.Save(friendRequest); var friendSession = ClientManager.GetByInfo(friend); if (friendSession != null) { friendSession.Router.GetComposer <ConsoleSendFriendRequestMessageComposer>() .Compose(friendSession, friendRequest); } } } } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { if (!session.Info.HasPermission("fuse_mod")) { return; } message.GetInteger(); // TODO Unused int ticketId = message.GetInteger(); SupportTicket ticket = TicketRepository.Find(ticketId); if (ticket == null || ticket.Status != TicketStatus.Closed) { return; } ticket.Pick(session.Info); TicketRepository.Save(ticket); foreach (Habbo staff in ClientManager.GetByPermission("handle_cfh")) { staff.Router.GetComposer <ModerationToolIssueMessageComposer>().Compose(staff, ticket); } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { if (session.Room == null) { return; } int itemId = message.GetInteger(); SongMachineComponent songMachine = session.Room.Data.SongMachine; SongItem item = songMachine.Find(itemId); if (item == null) { return; } songMachine.Remove(item); session.Info.Inventory.FloorItems.Add(item); ItemRepository.Save(item); SongItem[] items = session.Info.Inventory.FloorItems.OfType <SongItem>().ToArray(); router.GetComposer <UpdateInventoryMessageComposer>().Compose(session); router.GetComposer <SongsLibraryMessageComposer>().Compose(session, items); router.GetComposer <JukeboxPlaylistMessageComposer>().Compose(session, songMachine); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { Room room = session.Room; int userId = message.GetInteger(); UserEntity roomUserByHabbo = room?.GetEntity(userId) as UserEntity; if (roomUserByHabbo == null) { return; } router.GetComposer <UserTagsMessageComposer>() .Compose(session, roomUserByHabbo.UserInfo); // TODO Move to proper place! /* * if (session.Info.Tags.Count >= 5) { * Yupi.GetGame () * .GetAchievementManager () * .ProgressUserAchievement (roomUserByHabbo.GetClient (), "ACH_UserTags", 5); * * }*/ }
// TODO Refactor public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int groupId = request.GetInteger(); string name = request.GetString(); string description = request.GetString(); Group theGroup = GroupRepository.Find(groupId); if (theGroup?.Creator != session.Info) { return; } theGroup.Name = name; theGroup.Description = description; GroupRepository.Save(theGroup); if (session.Room != null) { session.Room.EachUser( (entitySession) => { entitySession.Router.GetComposer <GroupDataMessageComposer>() .Compose(entitySession, theGroup, session.Info); }); } else { router.GetComposer <GroupDataMessageComposer>().Compose(session, theGroup, session.Info); } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, ClientMessage message, Yupi.Protocol.IRouter router) { int reportedId = message.GetInteger(); UserInfo reportedUser = DependencyFactory.Resolve <IRepository <UserInfo> >().Find(reportedId); throw new NotImplementedException(); /* * SupportTicket ticket = new SupportTicket() * { * Category = 104, * Type = 9, * ReportedUser = reportedUser * }; * * DependencyFactory.Resolve<ModerationTool>().Tickets.Add(ticket); */ router.GetComposer <BullyReportSentMessageComposer>().Compose(session); /* TODO Implement * router.GetComposer<ModerationToolIssueMessageComposer>() * .Compose(DependencyFactory.Resolve<StaffSender>(), ticket); */ throw new NotImplementedException(); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { if (session.RoomEntity == null) { return; } int actionId = request.GetInteger(); UserAction action; if (!UserAction.TryParse(actionId, out action)) { return; } if (action == UserAction.Idle) { session.RoomEntity.Sleep(); } else { session.RoomEntity.Wake(); session.RoomEntity.Room.EachUser( roomSession => { roomSession.Router.GetComposer <RoomUserActionMessageComposer>() .Compose(roomSession, session.RoomEntity.Id, action); }); } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int roomId = request.GetInteger(); request.GetBool(); // TODO Unused RoomData roomData = RoomRepository.Find(roomId); if (roomData == null) { return; } // TODO TOGGLE?! AchievementManager.ProgressUserAchievement(roomData.Owner, RoomBuilderAchievement.StaffPickedRooms); // TODO Add room to Staff Pick category! throw new NotImplementedException(); Room room = RoomManager.GetIfLoaded(roomData); if (room != null) { room.EachUser( (entitySession) => { entitySession.Router.GetComposer <RoomDataMessageComposer>() .Compose(entitySession, roomData, entitySession.Info, true, true); }); } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int groupId = request.GetInteger(); int threadId = request.GetInteger(); int startIndex = request.GetInteger(); request.GetInteger(); // TODO Unused Group theGroup = GroupRepository.Find(groupId); if (theGroup == null) { return; } GroupForumThread thread = theGroup.Forum.GetThread(threadId); if (thread == null) { return; } // TODO Magic constant List <GroupForumPost> posts = thread.Posts.Skip(startIndex).Take(20).ToList(); router.GetComposer <GroupForumReadThreadMessageComposer>() .Compose(session, groupId, threadId, startIndex, posts); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { int targetUserId = message.GetInteger(); message.GetUInt32(); // TODO Unknown int duration = message.GetInteger(); Room room = session.Room; if (room == null || !room.Data.ModerationSettings.CanMute(session.Info)) { return; } UserEntity targetUser = room.GetEntity(targetUserId) as UserEntity; if (targetUser == null || targetUser.UserInfo.Rank >= session.Info.Rank) { return; } room.Data.MutedEntities.Add(new RoomMute() { Entity = targetUser.UserInfo, ExpiresAt = DateTime.Now.AddMinutes(duration) }); targetUser.User.Router.GetComposer <SuperNotificationMessageComposer>() .Compose(targetUser.User, T._("Notice"), string.Format(T._("The owner of the room has muted you for {0} minutes!"), duration), "", "", "", 4); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int groupId = request.GetInteger(); int memberId = request.GetInteger(); // TODO Rename variables Group group = GroupRepository.Find(groupId); throw new NotImplementedException(); /* * if (session.Info != group.Creator || !group.Members.ContainsKey(memberId) || * group.Admins.ContainsKey(memberId)) * return; * * group.Members[memberId].Rank = 1; * * group.Admins.Add(memberId, group.Members[memberId]); * * router.GetComposer<GroupMembersMessageComposer> ().Compose (session, group, 1u, session); * * Yupi.Messages.Rooms room = Yupi.GetGame().GetRoomManager().GetRoom(group.RoomId); * * RoomUser roomUserByHabbo = room?.GetRoomUserManager().GetRoomUserByHabbo(Yupi.GetHabboById(memberId).Name); * * if (roomUserByHabbo != null) * { * if (!roomUserByHabbo.Statusses.ContainsKey("flatctrl 1")) * roomUserByHabbo.AddStatus("flatctrl 1", ""); * * router.GetComposer<RoomRightsLevelMessageComposer> ().Compose (roomUserByHabbo.GetClient (), 1); * roomUserByHabbo.UpdateNeeded = true; * } */ }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { if (session.RoomEntity == null) { return; } if (session.RoomEntity.RotBody % 2 != 0) { session.RoomEntity.SetRotation(session.RoomEntity.RotBody - 1); } Vector3 position = session.RoomEntity.Position; position.Z = session.Room.HeightMap.GetTileHeight(session.RoomEntity.Position); session.RoomEntity.SetPosition(position); EntityStatus status = session.RoomEntity.Status; if (status.IsSitting()) { status.Stand(); } else { // TODO Stop dancing status.Sit(); } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { if (!session.Info.HasPermission("fuse_lock_trade")) return; int userId = request.GetInteger(); string message = request.GetString(); int hours = request.GetInteger(); UserInfo user = UserRepository.Find(userId); user.TradeLocks.Add(new TradeLock() { ExpiresAt = DateTime.Now.AddHours(hours) }); UserRepository.Save(user); var target = ClientManager.GetByInfo(user); if (target != null) { target.Router.GetComposer<AlertNotificationMessageComposer>().Compose(target, message); } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { if (!session.Info.HasPermission("fuse_mod")) { return; } int ticketCount = message.GetInteger(); for (int i = 0; i < ticketCount; i++) { int ticketId = message.GetInteger(); SupportTicket ticket = TicketRepository.Find(ticketId); if (ticket != null) { ticket.Release(); TicketRepository.Save(ticket); } foreach (Habbo staff in ClientManager.GetByPermission("handle_cfh")) { staff.Router.GetComposer <ModerationToolIssueMessageComposer>().Compose(staff, ticket); } } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int roomId = request.GetInteger(); bool shouldAdd = request.GetBool(); string word = request.GetString(); RoomData room = RoomRepository.Find(roomId); if (room != null && room.HasOwnerRights(session.Info)) { bool hasChanged = false; if (shouldAdd) { hasChanged = room.WordFilter.Add (word); } else { hasChanged = room.WordFilter.Remove (word); } if (hasChanged) { RoomRepository.Save(room); } } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int toId = request.GetInteger(); string text = request.GetString(); if (string.IsNullOrWhiteSpace(text)) { return; } Relationship friend = session.Info.Relationships.FindByUser(toId); if (friend != null) { MessengerMessage message = new MessengerMessage() { From = session.Info, UnfilteredText = text, Text = Wordfilter.Filter(text), Timestamp = DateTime.Now, }; var friendSession = ClientManager.GetByInfo(friend.Friend); friendSession?.Router.GetComposer <ConsoleChatMessageComposer>().Compose(session, message); message.Read = friendSession != null; // TODO Store for offline // TODO Store for chatlog } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { string gender = message.GetString(); string look = message.GetString(); // TODO Validate gender & look session.Info.Look = look; session.Info.Gender = gender; UserRepository.Save(session.Info); AchievementManager.ProgressUserAchievement(session, ProfileAchievement.AvatarLooks); if (session.Room == null) { return; } router.GetComposer <UpdateAvatarAspectMessageComposer>().Compose(session, session.Info); session.Room.EachUser( (roomSession) => { roomSession.Router.GetComposer <UpdateUserDataMessageComposer>() .Compose(roomSession, session.Info, session.RoomEntity.Id); } ); MessengerController.UpdateUser(session.Info); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int groupId = request.GetInteger(); int userId = request.GetInteger(); Group group = GroupRepository.Find(groupId); UserInfo user = UserRepository.Find(userId); if (group == null || !group.Admins.Contains(session.Info) || !group.Requests.Contains(user)) { return; } throw new NotImplementedException(); /* * * GroupMember memberGroup = group.Requests[userId]; * * memberGroup.DateJoin = Yupi.GetUnixTimeStamp(); * group.Members.Add(userId, memberGroup); * group.Requests.Remove(userId); * group.Admins.Add(userId, group.Members[userId]); * * router.GetComposer<GroupDataMessageComposer> ().Compose (session, group, session.GetHabbo()); * router.GetComposer<GroupMembersMessageComposer> ().Compose (session, group, 0u, session); */ }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { var openTickets = session.Info.SupportTickets.Where(x => x.Status != TicketStatus.Closed); router.GetComposer <OpenHelpToolMessageComposer>().Compose(session, openTickets.ToList()); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { string name = request.GetString(); // TODO Refactor switch (name) { case "predefined_noob_lobby": { /* * int roomId = Convert.ToUInt32(Yupi.GetDbConfig().DbData["noob.lobby.roomid"]); * router.GetComposer<RoomForwardMessageComposer> ().Compose (session, roomId);*/ throw new NotImplementedException(); break; } case "random_friending_room": { Room room = RoomManager.GetActive().ToList().Random(); router.GetComposer <RoomForwardMessageComposer>().Compose(session, room.Data.Id); break; } } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { if (session.Room == null || !session.Room.Data.HasOwnerRights(session.Info)) { return; } int itemId = message.GetInteger(); SongItem item = session.Info.Inventory.GetFloorItem(itemId) as SongItem; if (item == null) { return; } SongMachineComponent songMachine = session.Room.Data.SongMachine; if (songMachine.TryAdd(item)) { session.Info.Inventory.FloorItems.Remove(item); router.GetComposer <RemoveInventoryObjectMessageComposer>().Compose(session, item.Id); ItemRepository.Save(item); } router.GetComposer <JukeboxPlaylistMessageComposer>().Compose(session, songMachine); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { SongItem[] items = session.Info.Inventory.FloorItems.OfType <SongItem>().ToArray(); router.GetComposer <SongsLibraryMessageComposer>().Compose(session, items); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int count = request.GetInteger(); int[] users = new int[count]; for (int i = 0; i < count; i++) { users[i] = request.GetInteger(); } string content = request.GetString(); foreach (int userId in users) { Relationship relationship = session.Info.Relationships.FindByUser(userId); if (relationship == null) { continue; } var friendSession = ClientManager.GetByInfo(relationship.Friend); friendSession?.Router.GetComposer <ConsoleInvitationMessageComposer>() .Compose(friendSession, session.Info.Id, content); } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int groupId = request.GetInteger(); int threadId = request.GetInteger(); int stateToSet = request.GetInteger(); Group theGroup = GroupRepository.Find(groupId); if (theGroup != null) { GroupForumThread thread = theGroup.Forum.GetThread(threadId); if (thread != null && (thread.Creator == session.Info || theGroup.Admins.Contains(session.Info))) { thread.Hidden = stateToSet == 20; thread.HiddenBy = session.Info; GroupRepository.Save(theGroup); router.GetComposer <SuperNotificationMessageComposer>() .Compose(session, string.Empty, string.Empty, string.Empty, string.Empty, stateToSet == 20 ? "forums.thread.hidden" : "forums.thread.restored", 0); router.GetComposer <GroupForumThreadUpdateMessageComposer>() .Compose(session, groupId, thread, thread.Pinned, thread.Locked); } } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { int targetId = message.GetInteger(); int type = message.GetInteger(); Relationship relationship = session.Info.Relationships.FindByUser(targetId); if (relationship == default(Relationship)) { relationship = new Relationship() { Friend = UserRepository.Find(targetId), Type = type }; session.Info.Relationships.Relationships.Add(relationship); } else { relationship.Type = type; } UserRepository.Save(session.Info); MessengerController.UpdateUser(session.Info); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { request.GetBool(); // TODO Unused string idAsString = request.GetString(); int userId; int.TryParse(idAsString, out userId); if (userId == 0) { return; } string message = request.GetString(); Habbo guide = GuideManager.GetRandomGuide(); if (guide == null) { router.GetComposer <OnGuideSessionErrorComposer>().Compose(session); return; } router.GetComposer <OnGuideSessionAttachedMessageComposer>().Compose(session, false, userId, message, 30); router.GetComposer <OnGuideSessionAttachedMessageComposer>().Compose(guide, true, userId, message, 15); guide.GuideOtherUser = session; session.GuideOtherUser = guide; }