public static void WriteRoom(ServerPacket Packet, RoomData Data, RoomPromotion Promotion, bool NewNavigator = false) { Packet.WriteInteger(Data.Id); Packet.WriteString(Data.Name); Packet.WriteInteger(Data.OwnerId); Packet.WriteString(Data.OwnerName); Packet.WriteInteger(RoomAccessUtility.GetRoomAccessPacketNum(Data.Access)); Packet.WriteInteger(Data.UsersNow); Packet.WriteInteger(Data.UsersMax); Packet.WriteString(Data.Description); Packet.WriteInteger(Data.TradeSettings); Packet.WriteInteger(Data.Score); Packet.WriteInteger(0);//Top rated room rank. Packet.WriteInteger(Data.Category); Packet.WriteInteger(Data.Tags.Count); foreach (string tag in Data.Tags) { Packet.WriteString(tag); } int RoomType = 0; if (Data.Group != null) RoomType += 2; if (Data.Promotion != null) RoomType += 4; if (Data.Type == "private") RoomType += 8; if (Data.AllowPets == 1) RoomType += 16; FeaturedRoom Item = null; if (PlusEnvironment.GetGame().GetNavigator().TryGetFeaturedRoom(Data.Id, out Item)) { RoomType += 1; } Packet.WriteInteger(RoomType); if (Item != null) { Packet.WriteString(Item.Image); } if (Data.Group != null) { Packet.WriteInteger(Data.Group == null ? 0 : Data.Group.Id); Packet.WriteString(Data.Group == null ? "" : Data.Group.Name); Packet.WriteString(Data.Group == null ? "" : Data.Group.Badge); } if (Data.Promotion != null) { Packet.WriteString(Promotion != null ? Promotion.Name : ""); Packet.WriteString(Promotion != null ? Promotion.Description : ""); Packet.WriteInteger(Promotion != null ? Promotion.MinutesLeft : 0); } }
public void Serialize(ServerPacket Message, GameClient Session) { Relationship Relationship = null; if(Session != null && Session.GetHabbo() != null && Session.GetHabbo().Relationships != null) Relationship = Session.GetHabbo().Relationships.FirstOrDefault(x => x.Value.UserId == Convert.ToInt32(UserId)).Value; int y = Relationship == null ? 0 : Relationship.Type; Message.WriteInteger(UserId); Message.WriteString(mUsername); Message.WriteInteger(1); Message.WriteBoolean(!mAppearOffline || Session.GetHabbo().GetPermissions().HasRight("mod_tool") ? IsOnline : false); Message.WriteBoolean(!mHideInroom || Session.GetHabbo().GetPermissions().HasRight("mod_tool") ? InRoom : false); Message.WriteString(IsOnline ? mLook : ""); Message.WriteInteger(0); // categoryid Message.WriteString(mMotto); Message.WriteString(string.Empty); // Facebook username Message.WriteString(string.Empty); Message.WriteBoolean(true); // Allows offline messaging Message.WriteBoolean(false); // ? Message.WriteBoolean(false); // Uses phone Message.WriteShort(y); }
public ServerPacket UpdateUserOnRoller(RoomUser pUser, Point pNextCoord, int pRollerID, Double NextZ) { var mMessage = new ServerPacket(ServerPacketHeader.SlideObjectBundleMessageComposer); mMessage.WriteInteger(pUser.X); mMessage.WriteInteger(pUser.Y); mMessage.WriteInteger(pNextCoord.X); mMessage.WriteInteger(pNextCoord.Y); mMessage.WriteInteger(0); mMessage.WriteInteger(pRollerID); mMessage.WriteInteger(2); mMessage.WriteInteger(pUser.VirtualId); mMessage.WriteString(TextHandling.GetString(pUser.Z)); mMessage.WriteString(TextHandling.GetString(NextZ)); _room.GetGameMap().UpdateUserMovement(new Point(pUser.X, pUser.Y), new Point(pNextCoord.X, pNextCoord.Y), pUser); _room.GetGameMap().GameMap[pUser.X, pUser.Y] = 1; pUser.X = pNextCoord.X; pUser.Y = pNextCoord.Y; pUser.Z = NextZ; _room.GetGameMap().GameMap[pUser.X, pUser.Y] = 0; if (pUser != null && pUser.GetClient() != null && pUser.GetClient().GetHabbo() != null) { List<Item> Items = _room.GetGameMap().GetRoomItemForSquare(pNextCoord.X, pNextCoord.Y); foreach (Item IItem in Items.ToList()) { if (IItem == null) continue; this._room.GetWired().TriggerEvent(WiredBoxType.TriggerWalkOnFurni, pUser.GetClient().GetHabbo(), IItem); } Item Item = this._room.GetRoomItemHandler().GetItem(pRollerID); if (Item != null) { this._room.GetWired().TriggerEvent(WiredBoxType.TriggerWalkOffFurni, pUser.GetClient().GetHabbo(), Item); } } return mMessage; }
public ServerPacket UpdateItemOnRoller(Item pItem, Point NextCoord, int pRolledID, Double NextZ) { var mMessage = new ServerPacket(ServerPacketHeader.SlideObjectBundleMessageComposer); mMessage.WriteInteger(pItem.GetX); mMessage.WriteInteger(pItem.GetY); mMessage.WriteInteger(NextCoord.X); mMessage.WriteInteger(NextCoord.Y); mMessage.WriteInteger(1); mMessage.WriteInteger(pItem.Id); mMessage.WriteString(TextHandling.GetString(pItem.GetZ)); mMessage.WriteString(TextHandling.GetString(NextZ)); mMessage.WriteInteger(pRolledID); SetFloorItem(pItem, NextCoord.X, NextCoord.Y, NextZ); return mMessage; }
public bool Execute(params object[] Params) { if (Params == null || Params.Length == 0) return false; if (String.IsNullOrEmpty(this.StringData)) return false; string[] Stuff = this.StringData.Split('\t'); if (Stuff.Length != 2) return false;//This is important, incase a c**t scripts. string Username = Stuff[0]; RoomUser User = this.Instance.GetRoomUserManager().GetBotByName(Username); if (User == null) return false; string Figure = Stuff[1]; ServerPacket UserChangeComposer = new ServerPacket(ServerPacketHeader.UserChangeMessageComposer); UserChangeComposer.WriteInteger(User.VirtualId); UserChangeComposer.WriteString(Figure); UserChangeComposer.WriteString("M"); UserChangeComposer.WriteString(User.BotData.Motto); UserChangeComposer.WriteInteger(0); this.Instance.SendMessage(UserChangeComposer); User.BotData.Look = Figure; User.BotData.Gender = "M"; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `bots` SET `look` = '" + User.BotData.Look + "', `gender` = '" + User.BotData.Gender + "' WHERE `id` = '" + User.BotData.Id + "' LIMIT 1"); } return true; }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) return; Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) return; int BotId = Packet.PopInt(); int ActionId = Packet.PopInt(); string DataString = Packet.PopString(); if (ActionId < 1 || ActionId > 5) return; RoomUser Bot = null; if (!Room.GetRoomUserManager().TryGetBot(BotId, out Bot)) return; if ((Bot.BotData.ownerID != Session.GetHabbo().Id && !Session.GetHabbo().GetPermissions().HasRight("bot_edit_any_override"))) return; RoomBot RoomBot = Bot.BotData; if (RoomBot == null) return; /* 1 = Copy looks * 2 = Setup Speech * 3 = Relax * 4 = Dance * 5 = Change Name */ switch (ActionId) { #region Copy Looks (1) case 1: { ServerPacket UserChangeComposer = new ServerPacket(ServerPacketHeader.UserChangeMessageComposer); UserChangeComposer.WriteInteger(Bot.VirtualId); UserChangeComposer.WriteString(Session.GetHabbo().Look); UserChangeComposer.WriteString(Session.GetHabbo().Gender); UserChangeComposer.WriteString(Bot.BotData.Motto); UserChangeComposer.WriteInteger(0); Room.SendMessage(UserChangeComposer); //Change the defaults Bot.BotData.Look = Session.GetHabbo().Look; Bot.BotData.Gender = Session.GetHabbo().Gender; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `bots` SET `look` = '" + Session.GetHabbo().Look + "', `gender` = '" + Session.GetHabbo().Gender + "' WHERE `id` = '" + Bot.BotData.Id + "' LIMIT 1"); } //Room.SendMessage(new UserChangeComposer(BotUser.GetClient(), true)); break; } #endregion #region Setup Speech (2) case 2: { string[] ConfigData = DataString.Split(new string[] { ";#;" }, StringSplitOptions.None); string[] SpeechData = ConfigData[0].Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); string AutomaticChat = Convert.ToString(ConfigData[1]); string SpeakingInterval = Convert.ToString(ConfigData[2]); string MixChat = Convert.ToString(ConfigData[3]); if (String.IsNullOrEmpty(SpeakingInterval) || Convert.ToInt32(SpeakingInterval) <= 0 || Convert.ToInt32(SpeakingInterval) < 7) SpeakingInterval = "7"; RoomBot.AutomaticChat = Convert.ToBoolean(AutomaticChat); RoomBot.SpeakingInterval = Convert.ToInt32(SpeakingInterval); RoomBot.MixSentences = Convert.ToBoolean(MixChat); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("DELETE FROM `bots_speech` WHERE `bot_id` = '" + Bot.BotData.Id + "'"); } #region Save Data - TODO: MAKE METHODS FOR THIS. for (int i = 0; i <= SpeechData.Length - 1; i++) { using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `bots_speech` (`bot_id`, `text`) VALUES (@id, @data)"); dbClient.AddParameter("id", BotId); dbClient.AddParameter("data", SpeechData[i]); dbClient.RunQuery(); dbClient.SetQuery("UPDATE `bots` SET `automatic_chat` = @AutomaticChat, `speaking_interval` = @SpeakingInterval, `mix_sentences` = @MixChat WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("id", BotId); dbClient.AddParameter("AutomaticChat", AutomaticChat.ToLower()); dbClient.AddParameter("SpeakingInterval", Convert.ToInt32(SpeakingInterval)); dbClient.AddParameter("MixChat", PlusEnvironment.BoolToEnum(Convert.ToBoolean(MixChat))); dbClient.RunQuery(); } } #endregion #region Handle Speech RoomBot.RandomSpeech.Clear(); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `text` FROM `bots_speech` WHERE `bot_id` = @id"); dbClient.AddParameter("id", BotId); DataTable BotSpeech = dbClient.getTable(); List<RandomSpeech> Speeches = new List<RandomSpeech>(); foreach (DataRow Speech in BotSpeech.Rows) { RoomBot.RandomSpeech.Add(new RandomSpeech(Convert.ToString(Speech["text"]), BotId)); } } #endregion break; } #endregion #region Relax (3) case 3: { if (Bot.BotData.WalkingMode == "stand") Bot.BotData.WalkingMode = "freeroam"; else Bot.BotData.WalkingMode = "stand"; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `bots` SET `walk_mode` = '" + Bot.BotData.WalkingMode + "' WHERE `id` = '" + Bot.BotData.Id + "' LIMIT 1"); } break; } #endregion #region Dance (4) case 4: { if (Bot.BotData.DanceId > 0) Bot.BotData.DanceId = 0; else { Random RandomDance = new Random(); Bot.BotData.DanceId = RandomDance.Next(1, 4); } Room.SendMessage(new DanceComposer(Bot, Bot.BotData.DanceId)); break; } #endregion #region Change Name (5) case 5: { if (DataString.Length == 0) { Session.SendWhisper("Come on, atleast give the bot a name!"); return; } else if (DataString.Length >= 16) { Session.SendWhisper("Come on, the bot doesn't need a name that long!"); return; } if (DataString.Contains("<img src") || DataString.Contains("<font ") || DataString.Contains("</font>") || DataString.Contains("</a>") || DataString.Contains("<i>")) { Session.SendWhisper("No HTML, please :<"); return; } Bot.BotData.Name = DataString; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `bots` SET `name` = @name WHERE `id` = '" + Bot.BotData.Id + "' LIMIT 1"); dbClient.AddParameter("name", DataString); dbClient.RunQuery(); } Room.SendMessage(new UsersComposer(Bot)); break; } #endregion } }
public abstract void Compose(ServerPacket packet);
public static void Search(ServerPacket Message, SearchResultList SearchResult, string SearchData, GameClient Session, int FetchLimit) { //Switching by categorys. switch (SearchResult.CategoryType) { default: Message.WriteInteger(0); break; case NavigatorCategoryType.QUERY: { #region Query if (SearchData.ToLower().StartsWith("owner:")) { if (SearchData.Length > 0) { int UserId = 0; DataTable GetRooms = null; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { if (SearchData.ToLower().StartsWith("owner:")) { dbClient.SetQuery("SELECT r.* FROM rooms r, users u WHERE u.username = @username AND r.owner = u.id AND r.state != 'invisible' ORDER BY r.users_now DESC LIMIT 50;"); dbClient.AddParameter("username", SearchData.Remove(0, 6)); GetRooms = dbClient.getTable(); } } List<RoomData> Results = new List<RoomData>(); if (GetRooms != null) { foreach (DataRow Row in GetRooms.Rows) { RoomData RoomData = PlusEnvironment.GetGame().GetRoomManager().FetchRoomData(Convert.ToInt32(Row["id"]), Row); if (RoomData != null && !Results.Contains(RoomData)) Results.Add(RoomData); } } Message.WriteInteger(Results.Count); foreach (RoomData Data in Results.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } } } else if (SearchData.ToLower().StartsWith("tag:")) { SearchData = SearchData.Remove(0, 4); ICollection<RoomData> TagMatches = PlusEnvironment.GetGame().GetRoomManager().SearchTaggedRooms(SearchData); Message.WriteInteger(TagMatches.Count); foreach (RoomData Data in TagMatches.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } } else if (SearchData.ToLower().StartsWith("group:")) { SearchData = SearchData.Remove(0, 6); ICollection<RoomData> GroupRooms = PlusEnvironment.GetGame().GetRoomManager().SearchGroupRooms(SearchData); Message.WriteInteger(GroupRooms.Count); foreach (RoomData Data in GroupRooms.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } } else { if (SearchData.Length > 0) { DataTable Table = null; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `id`,`caption`,`description`,`roomtype`,`owner`,`state`,`category`,`users_now`,`users_max`,`model_name`,`score`,`allow_pets`,`allow_pets_eat`,`room_blocking_disabled`,`allow_hidewall`,`password`,`wallpaper`,`floor`,`landscape`,`floorthick`,`wallthick`,`mute_settings`,`kick_settings`,`ban_settings`,`chat_mode`,`chat_speed`,`chat_size`,`trade_settings`,`group_id`,`tags`,`push_enabled`,`pull_enabled`,`enables_enabled`,`respect_notifications_enabled`,`pet_morphs_allowed`,`spush_enabled`,`spull_enabled` FROM rooms WHERE `caption` LIKE @query ORDER BY `users_now` DESC LIMIT 50"); if (SearchData.ToLower().StartsWith("roomname:")) { dbClient.AddParameter("query", "%" + SearchData.Split(new char[] { ':' }, 2)[1] + "%"); } else { dbClient.AddParameter("query", "%" + SearchData + "%"); } Table = dbClient.getTable(); } List<RoomData> Results = new List<RoomData>(); if (Table != null) { foreach (DataRow Row in Table.Rows) { if (Convert.ToString(Row["state"]) == "invisible") continue; RoomData RData = PlusEnvironment.GetGame().GetRoomManager().FetchRoomData(Convert.ToInt32(Row["id"]), Row); if (RData != null && !Results.Contains(RData)) Results.Add(RData); } } Message.WriteInteger(Results.Count); foreach (RoomData Data in Results.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } } } #endregion break; } case NavigatorCategoryType.FEATURED: #region Featured List<RoomData> Rooms = new List<RoomData>(); ICollection<FeaturedRoom> Featured = PlusEnvironment.GetGame().GetNavigator().GetFeaturedRooms(); foreach (FeaturedRoom FeaturedItem in Featured.ToList()) { if (FeaturedItem == null) continue; RoomData Data = PlusEnvironment.GetGame().GetRoomManager().GenerateRoomData(FeaturedItem.RoomId); if (Data == null) continue; if (!Rooms.Contains(Data)) Rooms.Add(Data); } Message.WriteInteger(Rooms.Count); foreach (RoomData Data in Rooms.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } #endregion break; case NavigatorCategoryType.POPULAR: { List<RoomData> PopularRooms = PlusEnvironment.GetGame().GetRoomManager().GetPopularRooms(-1, FetchLimit); Message.WriteInteger(PopularRooms.Count); foreach (RoomData Data in PopularRooms.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } break; } case NavigatorCategoryType.RECOMMENDED: { List<RoomData> RecommendedRooms = PlusEnvironment.GetGame().GetRoomManager().GetRecommendedRooms(FetchLimit); Message.WriteInteger(RecommendedRooms.Count); foreach (RoomData Data in RecommendedRooms.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } break; } case NavigatorCategoryType.CATEGORY: { List<RoomData> GetRoomsByCategory = PlusEnvironment.GetGame().GetRoomManager().GetRoomsByCategory(SearchResult.Id, FetchLimit); Message.WriteInteger(GetRoomsByCategory.Count); foreach (RoomData Data in GetRoomsByCategory.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } break; } case NavigatorCategoryType.MY_ROOMS: Message.WriteInteger(Session.GetHabbo().UsersRooms.Count); foreach (RoomData Data in Session.GetHabbo().UsersRooms.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } break; case NavigatorCategoryType.MY_FAVORITES: List<RoomData> Favourites = new List<RoomData>(); foreach (int Id in Session.GetHabbo().FavoriteRooms.ToArray()) { RoomData Room = PlusEnvironment.GetGame().GetRoomManager().GenerateRoomData(Id); if (Room == null) continue; if (!Favourites.Contains(Room)) Favourites.Add(Room); } Favourites = Favourites.Take(FetchLimit).ToList(); Message.WriteInteger(Favourites.Count); foreach (RoomData Data in Favourites.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } break; case NavigatorCategoryType.MY_GROUPS: List<RoomData> MyGroups = new List<RoomData>(); foreach (Group Group in PlusEnvironment.GetGame().GetGroupManager().GetGroupsForUser(Session.GetHabbo().Id).ToList()) { if (Group == null) continue; RoomData Data = PlusEnvironment.GetGame().GetRoomManager().GenerateRoomData(Group.RoomId); if (Data == null) continue; if (!MyGroups.Contains(Data)) MyGroups.Add(Data); } MyGroups = MyGroups.Take(FetchLimit).ToList(); Message.WriteInteger(MyGroups.Count); foreach (RoomData Data in MyGroups.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } break; case NavigatorCategoryType.MY_FRIENDS_ROOMS: List<RoomData> MyFriendsRooms = new List<RoomData>(); foreach (MessengerBuddy buddy in Session.GetHabbo().GetMessenger().GetFriends().Where(p => p.InRoom)) { if (buddy == null || !buddy.InRoom || buddy.UserId == Session.GetHabbo().Id) continue; if (!MyFriendsRooms.Contains(buddy.CurrentRoom.RoomData)) MyFriendsRooms.Add(buddy.CurrentRoom.RoomData); } Message.WriteInteger(MyFriendsRooms.Count); foreach (RoomData Data in MyFriendsRooms.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } break; case NavigatorCategoryType.MY_RIGHTS: List<RoomData> MyRights = new List<RoomData>(); DataTable GetRights = null; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `room_id` FROM `room_rights` WHERE `user_id` = @UserId LIMIT @FetchLimit"); dbClient.AddParameter("UserId", Session.GetHabbo().Id); dbClient.AddParameter("FetchLimit", FetchLimit); GetRights = dbClient.getTable(); foreach (DataRow Row in GetRights.Rows) { RoomData Data = PlusEnvironment.GetGame().GetRoomManager().GenerateRoomData(Convert.ToInt32(Row["room_id"])); if (Data == null) continue; if (!MyRights.Contains(Data)) MyRights.Add(Data); } } Message.WriteInteger(MyRights.Count); foreach (RoomData Data in MyRights.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } break; case NavigatorCategoryType.TOP_PROMOTIONS: { List<RoomData> GetPopularPromotions = PlusEnvironment.GetGame().GetRoomManager().GetOnGoingRoomPromotions(16, FetchLimit); Message.WriteInteger(GetPopularPromotions.Count); foreach (RoomData Data in GetPopularPromotions.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } break; } case NavigatorCategoryType.PROMOTION_CATEGORY: { List<RoomData> GetPromotedRooms = PlusEnvironment.GetGame().GetRoomManager().GetPromotedRooms(SearchResult.Id, FetchLimit); Message.WriteInteger(GetPromotedRooms.Count); foreach (RoomData Data in GetPromotedRooms.ToList()) { RoomAppender.WriteRoom(Message, Data, Data.Promotion); } break; } } }
public void SendMessage(ServerPacket Packet, string fuse = "") { foreach (GameClient Client in this._clients.Values.ToList()) { if (Client == null || Client.GetHabbo() == null) continue; if (!string.IsNullOrEmpty(fuse)) { if (!Client.GetHabbo().GetPermissions().HasRight(fuse)) continue; } Client.SendMessage(Packet); } }
public void StaffAlert(ServerPacket Message, int Exclude = 0) { foreach (GameClient client in this.GetClients.ToList()) { if (client == null || client.GetHabbo() == null) continue; if (client.GetHabbo().Rank < 2 || client.GetHabbo().Id == Exclude) continue; client.SendMessage(Message); } }
public static void GenerateWallExtradata(Item Item, ServerPacket Message) { switch (Item.GetBaseItem().InteractionType) { default: Message.WriteString(Item.ExtraData); break; case InteractionType.POSTIT: Message.WriteString(Item.ExtraData.Split(' ')[0]); break; } }
public static void GenerateExtradata(Item Item, ServerPacket Message) { switch (Item.GetBaseItem().InteractionType) { default: Message.WriteInteger(1); Message.WriteInteger(0); Message.WriteString(Item.GetBaseItem().InteractionType != InteractionType.FOOTBALL_GATE ? Item.ExtraData : string.Empty); break; case InteractionType.GNOME_BOX: Message.WriteInteger(0); Message.WriteInteger(0); Message.WriteString(""); break; case InteractionType.PET_BREEDING_BOX: case InteractionType.PURCHASABLE_CLOTHING: Message.WriteInteger(0); Message.WriteInteger(0); Message.WriteString("0"); break; case InteractionType.STACKTOOL: Message.WriteInteger(0); Message.WriteInteger(0); Message.WriteString(""); break; case InteractionType.WALLPAPER: Message.WriteInteger(2); Message.WriteInteger(0); Message.WriteString(Item.ExtraData); break; case InteractionType.FLOOR: Message.WriteInteger(3); Message.WriteInteger(0); Message.WriteString(Item.ExtraData); break; case InteractionType.LANDSCAPE: Message.WriteInteger(4); Message.WriteInteger(0); Message.WriteString(Item.ExtraData); break; case InteractionType.GUILD_ITEM: case InteractionType.GUILD_GATE: case InteractionType.GUILD_FORUM: Group Group = null; if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(Item.GroupId, out Group)) { Message.WriteInteger(1); Message.WriteInteger(0); Message.WriteString(Item.ExtraData); } else { Message.WriteInteger(0); Message.WriteInteger(2); Message.WriteInteger(5); Message.WriteString(Item.ExtraData); Message.WriteString(Group.Id.ToString()); Message.WriteString(Group.Badge); Message.WriteString(PlusEnvironment.GetGame().GetGroupManager().GetGroupColour(Group.Colour1, true)); // Group Colour 1 Message.WriteString(PlusEnvironment.GetGame().GetGroupManager().GetGroupColour(Group.Colour2, false)); // Group Colour 2 } break; case InteractionType.BACKGROUND: Message.WriteInteger(0); Message.WriteInteger(1); if (!String.IsNullOrEmpty(Item.ExtraData)) { Message.WriteInteger(Item.ExtraData.Split(Convert.ToChar(9)).Length / 2); for (int i = 0; i <= Item.ExtraData.Split(Convert.ToChar(9)).Length - 1; i++) { Message.WriteString(Item.ExtraData.Split(Convert.ToChar(9))[i]); } } else { Message.WriteInteger(0); } break; case InteractionType.GIFT: { string[] ExtraData = Item.ExtraData.Split(Convert.ToChar(5)); if (ExtraData.Length != 7) { Message.WriteInteger(0); Message.WriteInteger(0); Message.WriteString(Item.ExtraData); } else { int Style = int.Parse(ExtraData[6]) * 1000 + int.Parse(ExtraData[6]); UserCache Purchaser = PlusEnvironment.GetGame().GetCacheManager().GenerateUser(Convert.ToInt32(ExtraData[2])); if (Purchaser == null) { Message.WriteInteger(0); Message.WriteInteger(0); Message.WriteString(Item.ExtraData); } else { Message.WriteInteger(Style); Message.WriteInteger(1); Message.WriteInteger(6); Message.WriteString("EXTRA_PARAM"); Message.WriteString(""); Message.WriteString("MESSAGE"); Message.WriteString(ExtraData[1]); Message.WriteString("PURCHASER_NAME"); Message.WriteString(Purchaser.Username); Message.WriteString("PURCHASER_FIGURE"); Message.WriteString(Purchaser.Look); Message.WriteString("PRODUCT_CODE"); Message.WriteString("A1 KUMIANKKA"); Message.WriteString("state"); Message.WriteString(Item.MagicRemove == true ? "1" : "0"); } } } break; case InteractionType.MANNEQUIN: Message.WriteInteger(0); Message.WriteInteger(1); Message.WriteInteger(3); if (Item.ExtraData.Contains(Convert.ToChar(5).ToString())) { string[] Stuff = Item.ExtraData.Split(Convert.ToChar(5)); Message.WriteString("GENDER"); Message.WriteString(Stuff[0]); Message.WriteString("FIGURE"); Message.WriteString(Stuff[1]); Message.WriteString("OUTFIT_NAME"); Message.WriteString(Stuff[2]); } else { Message.WriteString("GENDER"); Message.WriteString(""); Message.WriteString("FIGURE"); Message.WriteString(""); Message.WriteString("OUTFIT_NAME"); Message.WriteString(""); } break; case InteractionType.TONER: if (Item.RoomId != 0) { if (Item.GetRoom().TonerData == null) Item.GetRoom().TonerData = new TonerData(Item.Id); Message.WriteInteger(0); Message.WriteInteger(5); Message.WriteInteger(4); Message.WriteInteger(Item.GetRoom().TonerData.Enabled); Message.WriteInteger(Item.GetRoom().TonerData.Hue); Message.WriteInteger(Item.GetRoom().TonerData.Saturation); Message.WriteInteger(Item.GetRoom().TonerData.Lightness); } else { Message.WriteInteger(0); Message.WriteInteger(0); Message.WriteString(string.Empty); } break; case InteractionType.BADGE_DISPLAY: Message.WriteInteger(0); Message.WriteInteger(2); Message.WriteInteger(4); string[] BadgeData = Item.ExtraData.Split(Convert.ToChar(9)); if (Item.ExtraData.Contains(Convert.ToChar(9).ToString())) { Message.WriteString("0");//No idea Message.WriteString(BadgeData[0]);//Badge name Message.WriteString(BadgeData[1]);//Owner Message.WriteString(BadgeData[2]);//Date } else { Message.WriteString("0");//No idea Message.WriteString("DEV");//Badge name Message.WriteString("Sledmore");//Owner Message.WriteString("13-13-1337");//Date } break; case InteractionType.TELEVISION: Message.WriteInteger(0); Message.WriteInteger(1); Message.WriteInteger(1); Message.WriteString("THUMBNAIL_URL"); //Message.WriteString("http://img.youtube.com/vi/" + PlusEnvironment.GetGame().GetTelevisionManager().TelevisionList.OrderBy(x => Guid.NewGuid()).FirstOrDefault().YouTubeId + "/3.jpg"); Message.WriteString(""); break; case InteractionType.LOVELOCK: if (Item.ExtraData.Contains(Convert.ToChar(5).ToString())) { var EData = Item.ExtraData.Split((char)5); int I = 0; Message.WriteInteger(0); Message.WriteInteger(2); Message.WriteInteger(EData.Length); while (I < EData.Length) { Message.WriteString(EData[I]); I++; } } else { Message.WriteInteger(0); Message.WriteInteger(0); Message.WriteString("0"); } break; case InteractionType.MONSTERPLANT_SEED: Message.WriteInteger(0); Message.WriteInteger(1); Message.WriteInteger(1); Message.WriteString("rarity"); Message.WriteString("1");//Leve should be dynamic. break; } }
public ServerPacket SerializeUpdate(MessengerBuddy friend) { ServerPacket Packet = new ServerPacket(ServerPacketHeader.FriendListUpdateMessageComposer); Packet.WriteInteger(0); // category count Packet.WriteInteger(1); // number of updates Packet.WriteInteger(0); // don't know friend.Serialize(Packet, GetClient()); return Packet; }
public void SendMessageToUsers(ServerPacket Message) { foreach (TradeUser User in this.Users.ToList()) { if (User == null || User.GetClient() == null) continue; User.GetClient().SendMessage(Message); } }