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 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 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 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) { 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; } 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 request, Yupi.Protocol.IRouter router) { int groupId = request.GetInteger(); int color1 = request.GetInteger(); int color2 = request.GetInteger(); Group group = GroupRepository.Find(groupId); if (group?.Creator != session.Info) { return; } group.Colour1 = new GroupSymbolColours() { Colour = color1 }; group.Colour2 = new GroupBackGroundColours() { Colour = color2 }; throw new NotImplementedException(); //router.GetComposer<GroupDataMessageComposer> ().Compose (session.GetHabbo().CurrentRoom, group, session.GetHabbo()); }
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 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 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) { 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 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 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 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 selectType = request.GetInteger(); int startIndex = request.GetInteger(); router.GetComposer <GroupForumListingsMessageComposer>().Compose(session, selectType, startIndex); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { session.ReleaseName = request.GetString(); string unknown1 = request.GetString(); int unknown2 = request.GetInteger(); int unknown3 = request.GetInteger(); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { UserPreferences preferences = session.Info.Preferences; // TODO Validate values preferences.Volume1 = message.GetInteger(); preferences.Volume2 = message.GetInteger(); preferences.Volume3 = message.GetInteger(); UserRepository.Save(session.Info); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int count = request.GetInteger(); for (int i = 0; i < count; i++) { int friendId = request.GetInteger(); RelationshipController.Remove(session, friendId); } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int groupId = request.GetInteger(); Group group = GroupRepository.Find(groupId); if (group != null) { // TODO Unused request.GetInteger(); int Base = request.GetInteger(); int baseColor = request.GetInteger(); // TODO Unused value! request.GetInteger(); List <int> guildStates = new List <int>(); throw new NotImplementedException(); /* * for (int i = 0; i < 12; i++) * guildStates.Add (request.GetInteger ()); * * string badge = Yupi.GetGame ().GetGroupManager ().GenerateGuildImage (Base, baseColor, guildStates); * * guild.Badge = badge; * * router.GetComposer<RoomGroupMessageComposer> ().Compose (room); * * router.GetComposer<GroupDataMessageComposer> ().Compose (room, guild, session.GetHabbo ()); * * using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager ().GetQueryReactor ()) { * queryReactor.SetQuery ( * $"UPDATE groups_data SET group_badge = @badge WHERE id = {guildId}"); * * queryReactor.AddParameter ("badge", badge); * queryReactor.RunQuery (); * } * * if (session.GetHabbo ().CurrentRoom != null) { * // TODO Isn't this a duplicate of the above? * session.GetHabbo ().CurrentRoom.LoadedGroups [guildId] = guild.Badge; * * router.GetComposer<RoomGroupMessageComposer> ().Compose (session.GetHabbo ().CurrentRoom); * * router.GetComposer<GroupDataMessageComposer> ().Compose (session.GetHabbo ().CurrentRoom, guild, session.GetHabbo ()); * } */ } }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int groupId = request.GetInteger(); int state = request.GetInteger(); int admindeco = request.GetInteger(); Group group = GroupRepository.Find(groupId); if (group?.Creator != session.Info) { return; } group.State = state; group.AdminOnlyDeco = admindeco; GroupRepository.Save(group); Room room = RoomManager.GetIfLoaded(group.Room); /* * if (room != null) * { * foreach (RoomUser current in room.GetRoomUserManager().GetRoomUsers()) * { * if (room.Data.Owner != current.UserId && !group.Admins.ContainsKey(current.UserId) && * group.Members.ContainsKey(current.UserId)) * { * // TODO USE F*KING ENUMS! * if (admindeco == 1u) * { * current.RemoveStatus("flatctrl 1"); * router.GetComposer<RoomRightsLevelMessageComposer> ().Compose (current.GetClient(), 0); * } * else * { * if (admindeco == 0u && !current.Statusses.ContainsKey("flatctrl 1")) * { * current.AddStatus("flatctrl 1", string.Empty); * router.GetComposer<RoomRightsLevelMessageComposer> ().Compose (current.GetClient(), 1); * } * } * * current.UpdateNeeded = true; * } * } * } * router.GetComposer<GroupDataMessageComposer> ().Compose (session.GetHabbo().CurrentRoom, group, session.GetHabbo()); */ throw new NotImplementedException(); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message, Yupi.Protocol.IRouter router) { // TODO Maximum items int pageId = message.GetInteger(); int itemId = message.GetInteger(); string extraData = message.GetString(); int amount = message.GetInteger(); CatalogOffer item = CatalogController.GetById(pageId, itemId); CatalogController.Purchase(session, item, extraData, amount); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { request.GetInteger(); // pageId uint itemId = Convert.ToUInt32(request.GetInteger()); string extradata = request.GetString(); int x = request.GetInteger(); int y = request.GetInteger(); int dir = request.GetInteger(); /* * Yupi.Messages.Rooms actualRoom = session.GetHabbo().CurrentRoom; * CatalogItem item = Yupi.GetGame().GetCatalogManager().GetItem(itemId); * * if (actualRoom == null || item == null) * return; * * session.GetHabbo().BuildersItemsUsed++; * * router.GetComposer<BuildersClubUpdateFurniCountMessageComposer> ().Compose (session, session.GetHabbo ().BuildersItemsUsed); * * double z = actualRoom.GetGameMap().SqAbsoluteHeight(x, y); * using (IQueryAdapter adapter = Yupi.GetDatabaseManager().GetQueryReactor()) * { * adapter.SetQuery( * "INSERT INTO items_rooms (user_id,room_id,item_name,x,y,z,rot,builders) VALUES (@userId,@roomId,@itemName,@x,@y,@z,@rot,'1')"); * adapter.AddParameter("userId", session.GetHabbo().Id); * adapter.AddParameter("roomId", actualRoom.RoomId); * adapter.AddParameter("itemName", item.BaseName); * adapter.AddParameter("x", x); * adapter.AddParameter("y", y); * adapter.AddParameter("z", z); * adapter.AddParameter("rot", dir); * * uint insertId = (uint) adapter.InsertQuery(); * * RoomItem newItem = new RoomItem(insertId, actualRoom.RoomId, item.BaseName, extradata, x, y, z, dir, * actualRoom, session.GetHabbo().Id, 0, string.Empty, true); * * session.GetHabbo().BuildersItemsUsed++; * * actualRoom.GetRoomItemHandler().FloorItems.TryAdd(newItem.Id, newItem); * * router.GetComposer<AddFloorItemMessageComposer> ().Compose (actualRoom, newItem); * actualRoom.GetGameMap().AddItemToMap(newItem); * } */ throw new NotImplementedException(); }
public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage request, Yupi.Protocol.IRouter router) { int offerId = request.GetInteger(); int quantity = request.GetInteger(); TargetedOffer offer = OfferRepository.Find(offerId); if (offer == null) { return; } CatalogController.Purchase(session, offer, string.Empty, quantity); }
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, 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 request, Yupi.Protocol.IRouter router) { if (session.Room == null || !session.Room.Data.HasRights(session.Info)) { return; } int id = request.GetInteger(); string locationData = request.GetString(); /* * UserItem item = session.GetHabbo ().GetInventoryComponent ().GetItem (id); * * if (item == null) * return; * * WallCoordinate wallCoord = new WallCoordinate (":" + locationData.Split (':') [1]); * * RoomItem item2 = new RoomItem (item.Id, room.RoomId, item.BaseItem.Name, item.ExtraData, wallCoord, room, * session.GetHabbo ().Id, item.GroupId, false); * * if (room.GetRoomItemHandler ().SetWallItem (session, item2)) * session.GetHabbo ().GetInventoryComponent ().RemoveItem (id, true); */ throw new NotImplementedException(); }
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) { 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 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); } } }