internal static void SerializeQuest(ServerMessage Message, GameClient Session, Quest Quest, string Category) { if (Message == null || Session == null) { return; } int amountOfQuestsInCategory = MercuryEnvironment.GetGame().GetQuestManager().GetAmountOfQuestsInCategory(Category); checked { int num = (Quest == null) ? amountOfQuestsInCategory : (Quest.Number - 1); int num2 = (Quest == null) ? 0 : Session.GetHabbo().GetQuestProgress(Quest.Id); if (Quest != null && Quest.IsCompleted(num2)) { num++; } Message.AppendString(Category); Message.AppendInt32((Quest == null) ? 0 : (Quest.Category.Contains("xmas2012") ? 0 : num)); Message.AppendInt32((Quest == null) ? 0 : (Quest.Category.Contains("xmas2012") ? 0 : amountOfQuestsInCategory)); Message.AppendInt32((Quest == null) ? 3 : Quest.RewardType); Message.AppendUInt((Quest == null) ? 0u : Quest.Id); Message.AppendBoolean(Quest != null && Session.GetHabbo().CurrentQuestId == Quest.Id); Message.AppendString((Quest == null) ? string.Empty : Quest.ActionName); Message.AppendString((Quest == null) ? string.Empty : Quest.DataBit); Message.AppendInt32((Quest == null) ? 0 : Quest.Reward); Message.AppendString((Quest == null) ? string.Empty : Quest.Name); Message.AppendInt32(num2); Message.AppendUInt((Quest == null) ? 0u : Quest.GoalData); Message.AppendInt32((Quest == null) ? 0 : Quest.TimeUnlock); Message.AppendString(""); Message.AppendString(""); Message.AppendBoolean(true); } }
internal void Serialize(ServerMessage Request) { Request.AppendUInt(this.FromUser); Request.AppendString(this.mUsername); Habbo habboForName = MercuryEnvironment.getHabboForName(this.mUsername); Request.AppendString((habboForName != null) ? habboForName.Look : ""); }
internal ServerMessage ForumDataMessage(uint RequesterId) { ServerMessage Message = new ServerMessage(Outgoing.GroupForumDataMessageComposer); Message.AppendUInt(this.Id); Message.AppendString(this.Name);//nombre del foro Message.AppendString(this.Description); Message.AppendString(this.Badge); Message.AppendInt32(0);// nosé Message.AppendInt32(0); Message.AppendUInt(this.ForumMessagesCount);//Mensajes Message.AppendInt32(0);//Mensajes no leídos Message.AppendInt32(0);//mensajes? Message.AppendUInt(this.ForumLastPosterId);//Id de quien publicó el último mensaje Message.AppendString(this.ForumLastPosterName);//Quién publicó eL último mensaje. Message.AppendInt32(this.ForumLastPostTime);//hace cuantos segundos se publicó Message.AppendInt32(0); Message.AppendInt32(1); Message.AppendInt32(1); Message.AppendInt32(2); Message.AppendString(""); // (si no está vacío: Acceso denegado para ver el foro) Message.AppendString((this.Members.ContainsKey(RequesterId) ? "" : "not_member")); Message.AppendString((this.Members.ContainsKey(RequesterId) ? "" : "not_member")); Message.AppendString((this.Admins.ContainsKey(RequesterId) ? "" : "not_admin")); Message.AppendString(""); // Message.AppendBoolean(false); Message.AppendBoolean(false); return Message; }
internal ServerMessage Serialize(ServerMessage Composer) { Composer.AppendInt32(this.Index); Composer.AppendString(this.Header); Composer.AppendString(this.Body); Composer.AppendString(this.Button); Composer.AppendInt32(this.inGamePromo); Composer.AppendString(this.SpecialAction); Composer.AppendString(this.Image); return Composer; }
internal void Searialize(ServerMessage reply) { reply.AppendUInt(this.userID); reply.AppendString(this.username); reply.AppendString(this.motto); bool b = MercuryEnvironment.GetGame().GetClientManager().GetClient(this.userID) != null; reply.AppendBoolean(b); reply.AppendBoolean(false); reply.AppendString(string.Empty); reply.AppendInt32(0); reply.AppendString(this.look); reply.AppendString(this.last_online); }
public static ServerMessage Compose(List<SongData> Songs) { ServerMessage serverMessage = new ServerMessage(Outgoing.SongsMessageComposer); serverMessage.AppendInt32(Songs.Count); foreach (SongData current in Songs) { serverMessage.AppendUInt(current.Id); serverMessage.AppendString(current.Codename); serverMessage.AppendString(current.Name); serverMessage.AppendString(current.Data); serverMessage.AppendInt32(current.LengthMiliseconds); serverMessage.AppendString(current.Artist); } return serverMessage; }
internal static ServerMessage Compose(Achievement Achievement, int Level, int PointReward, int PixelReward) { ServerMessage serverMessage = new ServerMessage(Outgoing.UnlockAchievementMessageComposer); serverMessage.AppendUInt(Achievement.Id); serverMessage.AppendInt32(Level); serverMessage.AppendInt32(144); serverMessage.AppendString(Achievement.GroupName + Level); serverMessage.AppendInt32(PointReward); serverMessage.AppendInt32(PixelReward); serverMessage.AppendInt32(0); serverMessage.AppendInt32(10); serverMessage.AppendInt32(21); serverMessage.AppendString(Level > 1 ? Achievement.GroupName + checked(Level - 1) : string.Empty); serverMessage.AppendString(Achievement.Category); serverMessage.AppendBoolean(true); return serverMessage; }
public void Serialize(ServerMessage Message, int QuestionNumber) { Message.AppendUInt(this.Index); Message.AppendInt32(QuestionNumber); Message.AppendInt32((int)this.AType); Message.AppendString(this.Question); if (this.AType == PollQuestion.PollAnswerType.Selection || this.AType == PollQuestion.PollAnswerType.RadioSelection) { Message.AppendInt32(1); Message.AppendInt32(this.Answers.Count); foreach (string current in this.Answers) { Message.AppendString(current); Message.AppendString(current); } } }
internal static ServerMessage Compose(Achievement Achievement, int TargetLevel, AchievementLevel TargetLevelData, int TotalLevels, UserAchievement UserData) { ServerMessage serverMessage = new ServerMessage(Outgoing.AchievementProgressMessageComposer); serverMessage.AppendUInt(Achievement.Id); serverMessage.AppendInt32(TargetLevel); serverMessage.AppendString(Achievement.GroupName + TargetLevel); serverMessage.AppendInt32(TargetLevelData.Requirement); serverMessage.AppendInt32(TargetLevelData.Requirement); serverMessage.AppendInt32(TargetLevelData.RewardPixels); serverMessage.AppendInt32(0); serverMessage.AppendInt32(UserData != null ? UserData.Progress : 0); serverMessage.AppendBoolean(UserData != null && UserData.Level >= TotalLevels); serverMessage.AppendString(Achievement.Category); serverMessage.AppendString(string.Empty); serverMessage.AppendInt32(TotalLevels); serverMessage.AppendInt32(0); return serverMessage; }
internal static ServerMessage Compose(GameClient Session, List<Achievement> Achievements) { ServerMessage serverMessage = new ServerMessage(Outgoing.AchievementListMessageComposer); serverMessage.AppendInt32(Achievements.Count); foreach (Achievement achievement in Achievements) { UserAchievement achievementData = Session.GetHabbo().GetAchievementData(achievement.GroupName); int i = achievementData != null ? checked(achievementData.Level + 1) : 1; int count = achievement.Levels.Count; if (i > count) { i = count; } AchievementLevel achievementLevel = achievement.Levels[i]; AchievementLevel oldLevel = (achievement.Levels.ContainsKey(i - 1)) ? achievement.Levels[i - 1] : achievementLevel; serverMessage.AppendUInt(achievement.Id); serverMessage.AppendInt32(i); serverMessage.AppendString(achievement.GroupName + i); serverMessage.AppendInt32(oldLevel.Requirement); // Requisito Anterior serverMessage.AppendInt32(achievementLevel.Requirement); // Requisito Nuevo serverMessage.AppendInt32(achievementLevel.RewardPoints); serverMessage.AppendInt32(0); serverMessage.AppendInt32(achievementData != null ? achievementData.Progress : 0); // Progreso Total if (achievementData == null) { serverMessage.AppendBoolean(false); } else if (achievementData.Level >= count) { serverMessage.AppendBoolean(true); } else { serverMessage.AppendBoolean(false); // Terminado } serverMessage.AppendString(achievement.Category); serverMessage.AppendString(string.Empty); serverMessage.AppendInt32(count); // Número de niveles serverMessage.AppendInt32(0); } serverMessage.AppendString(""); return serverMessage; }
private void ExplodeAndKick(Object Source, ElapsedEventArgs e) { Timer Timer = (Timer)Source; Timer.Stop(); ServerMessage serverMessage = new ServerMessage(Outgoing.SuperNotificationMessageComposer); serverMessage.AppendString("room.kick.cannonball"); serverMessage.AppendInt32(2); serverMessage.AppendString("link"); serverMessage.AppendString("event:"); serverMessage.AppendString("linkTitle"); serverMessage.AppendString("ok"); Room Room = mItem.GetRoom(); HashSet<RoomUser> toRemove = new HashSet<RoomUser>(); foreach (Point coord in mCoords) { foreach (RoomUser User in Room.GetGameMap().GetRoomUsers(coord)) { if (User == null || User.IsBot || User.IsPet || User.GetUsername() == Room.Owner) { continue; } User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(4, false); toRemove.Add(User); } } foreach (RoomUser user in toRemove) { Room.GetRoomUserManager().RemoveUserFromRoom(user.GetClient(), true, false); user.GetClient().SendMessage(serverMessage); } mItem.OnCannonActing = false; }
internal static ServerMessage Compose(GameClient Session, Quest Quest) { int amountOfQuestsInCategory = MercuryEnvironment.GetGame().GetQuestManager().GetAmountOfQuestsInCategory(Quest.Category); int i = (Quest == null) ? amountOfQuestsInCategory : Quest.Number; int i2 = (Quest == null) ? 0 : Session.GetHabbo().GetQuestProgress(Quest.Id); ServerMessage serverMessage = new ServerMessage(Outgoing.QuestCompletedMessageComposer); serverMessage.AppendString(Quest.Category); serverMessage.AppendInt32(i); serverMessage.AppendInt32(Quest.Name.Contains("xmas2012") ? 1 : amountOfQuestsInCategory); serverMessage.AppendInt32((Quest == null) ? 3 : Quest.RewardType); serverMessage.AppendUInt((Quest == null) ? 0u : Quest.Id); serverMessage.AppendBoolean(Quest != null && Session.GetHabbo().CurrentQuestId == Quest.Id); serverMessage.AppendString((Quest == null) ? string.Empty : Quest.ActionName); serverMessage.AppendString((Quest == null) ? string.Empty : Quest.DataBit); serverMessage.AppendInt32((Quest == null) ? 0 : Quest.Reward); serverMessage.AppendString((Quest == null) ? string.Empty : Quest.Name); serverMessage.AppendInt32(i2); serverMessage.AppendUInt((Quest == null) ? 0u : Quest.GoalData); serverMessage.AppendInt32((Quest == null) ? 0 : Quest.TimeUnlock); serverMessage.AppendString(""); serverMessage.AppendString(""); serverMessage.AppendBoolean(true); serverMessage.AppendBoolean(true); return serverMessage; }
internal void SerializeWall(ServerMessage Message, bool Inventory) { Message.AppendUInt(this.Id); Message.AppendString(this.mBaseItem.Type.ToString().ToUpper()); Message.AppendUInt(this.Id); Message.AppendInt32(this.GetBaseItem().SpriteId); if (this.GetBaseItem().Name.Contains("a2")) { Message.AppendInt32(3); } else { if (this.GetBaseItem().Name.Contains("wallpaper")) { Message.AppendInt32(2); } else { if (this.GetBaseItem().Name.Contains("landscape")) { Message.AppendInt32(4); } else { Message.AppendInt32(1); } } } Message.AppendInt32(0); Message.AppendString(this.ExtraData); Message.AppendBoolean(this.GetBaseItem().AllowRecycle); Message.AppendBoolean(this.GetBaseItem().AllowTrade); Message.AppendBoolean(this.GetBaseItem().AllowInventoryStack); Message.AppendBoolean(false); Message.AppendInt32(-1); Message.AppendBoolean(true); Message.AppendInt32(-1); }
internal ServerMessage SerializeTool() { ServerMessage serverMessage = new ServerMessage(Outgoing.LoadModerationToolMessageComposer); serverMessage.AppendInt32(this.Tickets.Count); foreach (SupportTicket current in this.Tickets) { current.Serialize(serverMessage); } serverMessage.AppendInt32(this.UserMessagePresets.Count); foreach (string current2 in this.UserMessagePresets) { serverMessage.AppendString(current2); } IEnumerable<ModerationTemplate> enumerable = from x in this.ModerationTemplates.Values where x.Category == -1 select x; serverMessage.AppendInt32(enumerable.Count<ModerationTemplate>()); using (IEnumerator<ModerationTemplate> enumerator3 = enumerable.GetEnumerator()) { while (enumerator3.MoveNext()) { ModerationTemplate Template = enumerator3.Current; IEnumerable<ModerationTemplate> enumerable2 = from x in this.ModerationTemplates.Values where (long)x.Category == (long)((ulong)Template.Id) select x; serverMessage.AppendString(Template.Caption); serverMessage.AppendBoolean(true); serverMessage.AppendInt32(enumerable2.Count<ModerationTemplate>()); foreach (ModerationTemplate current3 in enumerable2) { serverMessage.AppendString(current3.Caption); serverMessage.AppendString(current3.BanMessage); serverMessage.AppendInt32((int)current3.BanHours); serverMessage.AppendInt32(MercuryEnvironment.BoolToInteger(current3.AvatarBan)); serverMessage.AppendInt32(MercuryEnvironment.BoolToInteger(current3.Mute)); serverMessage.AppendInt32(MercuryEnvironment.BoolToInteger(current3.TradeLock)); serverMessage.AppendString(current3.WarningMessage); } } } serverMessage.AppendBoolean(true); serverMessage.AppendBoolean(true); serverMessage.AppendBoolean(true); serverMessage.AppendBoolean(true); serverMessage.AppendBoolean(true); serverMessage.AppendBoolean(true); serverMessage.AppendBoolean(true); serverMessage.AppendInt32(this.RoomMessagePresets.Count); foreach (string current4 in this.RoomMessagePresets) { serverMessage.AppendString(current4); } return serverMessage; }
internal ServerMessage SerializeFlatCategories(GameClient Session) { ServerMessage serverMessage = new ServerMessage(Outgoing.FlatCategoriesMessageComposer); serverMessage.AppendInt32(this.PrivateCategories.Count); foreach (FlatCat flatCat in this.PrivateCategories.Values) { serverMessage.AppendInt32(flatCat.Id); serverMessage.AppendString(flatCat.Caption); serverMessage.AppendBoolean(flatCat.MinRank <= Session.GetHabbo().Rank); serverMessage.AppendBoolean(false); // New Build Fix by Finn serverMessage.AppendString("NONE"); // New Build Fix by Finn serverMessage.AppendString(""); // New Build Fix by Finn } return serverMessage; }
internal static ServerMessage ComposeIndex(uint Rank) { var Pages = MercuryEnvironment.GetGame().GetCatalog().Categories.Values.OfType<CatalogPage>(); ServerMessage Message = new ServerMessage(Outgoing.CatalogueIndexMessageComposer); var SortedPages = Pages.Where(x => x.ParentId == -1 && x.MinRank <= Rank).OrderBy(x => x.OrderNum); Message.AppendBoolean(true); Message.AppendInt32(0); Message.AppendInt32(-1); Message.AppendString("root"); Message.AppendString(string.Empty); Message.AppendInt32(0); Message.AppendInt32(SortedPages.Count()); foreach (CatalogPage Cat in SortedPages) { Message.AppendBoolean(Cat.Visible); Message.AppendInt32(Cat.IconImage); Message.AppendInt32(Cat.PageId); Message.AppendString(Cat.CodeName); Message.AppendString(Cat.Caption); Message.AppendInt32(Cat.FlatOffers.Count); foreach (int i in Cat.FlatOffers.Keys) { Message.AppendInt32(i); } var SortedSubPages = Pages.Where(x => x.ParentId == Cat.PageId && x.MinRank <= Rank).OrderBy(x => x.Caption); Message.AppendInt32(SortedSubPages.Count()); foreach (CatalogPage SubCat in SortedSubPages) { Message.AppendBoolean(SubCat.Visible); Message.AppendInt32(SubCat.IconImage); Message.AppendInt32(SubCat.PageId); Message.AppendString(SubCat.CodeName); Message.AppendString(SubCat.Caption); Message.AppendInt32(SubCat.FlatOffers.Count); foreach (int i2 in SubCat.FlatOffers.Keys) { Message.AppendInt32(i2); } Message.AppendInt32(0); } } Message.AppendBoolean(false); Message.AppendString("NORMAL"); return Message; }
internal void LoadAchievements(IQueryAdapter dbClient) { Achievements.Clear(); AchievementLevelFactory.GetAchievementLevels(out this.Achievements, dbClient); AchievementDataCached = new ServerMessage(Outgoing.SendAchievementsRequirementsMessageComposer); AchievementDataCached.AppendInt32(this.Achievements.Count); foreach (Achievement Ach in this.Achievements.Values) { AchievementDataCached.AppendString(Ach.GroupName.Replace("ACH_", "")); AchievementDataCached.AppendInt32(Ach.Levels.Count); for (int i = 1; i < Ach.Levels.Count + 1; i++) { AchievementDataCached.AppendInt32(i); AchievementDataCached.AppendInt32(Ach.Levels[i].Requirement); } } AchievementDataCached.AppendInt32(0); }
internal List<RoomItem> RemoveAllFurniture(GameClient Session) { List<RoomItem> list = new List<RoomItem>(); RoomItem[] array = this.mFloorItems.Values.ToArray<RoomItem>(); for (int i = 0; i < array.Length; i++) { RoomItem roomItem = array[i]; roomItem.Interactor.OnRemove(Session, roomItem); ServerMessage serverMessage = new ServerMessage(Outgoing.PickUpFloorItemMessageComposer); serverMessage.AppendString(roomItem.Id + string.Empty); serverMessage.AppendBoolean(false); serverMessage.AppendInt32(0); serverMessage.AppendUInt(roomItem.UserID); this.room.SendMessage(serverMessage); list.Add(roomItem); } RoomItem[] array2 = this.mWallItems.Values.ToArray<RoomItem>(); for (int j = 0; j < array2.Length; j++) { RoomItem roomItem2 = array2[j]; roomItem2.Interactor.OnRemove(Session, roomItem2); ServerMessage serverMessage2 = new ServerMessage(Outgoing.PickUpWallItemMessageComposer); serverMessage2.AppendString(roomItem2.Id + string.Empty); serverMessage2.AppendUInt(roomItem2.UserID); this.room.SendMessage(serverMessage2); list.Add(roomItem2); } this.mWallItems.Clear(); this.mFloorItems.Clear(); this.mRemovedItems.Clear(); this.mMovedItems.Clear(); this.mAddedItems.Clear(); this.mRollers.QueueDelegate(new onCycleDoneDelegate(this.ClearRollers)); using (IQueryAdapter queryreactor = MercuryEnvironment.GetDatabaseManager().getQueryreactor()) { queryreactor.runFastQuery("UPDATE items SET room_id='0' WHERE room_id = " + this.room.RoomId); } this.room.GetGameMap().GenerateMaps(true); this.room.GetRoomUserManager().UpdateUserStatusses(); return list; }
public bool OnCycle() { long num = MercuryEnvironment.Now(); if (this.Room == null || this.Room.GetRoomItemHandler() == null || this.Room.GetRoomItemHandler().mFloorItems == null) { return false; } if (this.mNext < num) { foreach (RoomItem current in this.mItems) { if (current != null && this.Room.GetRoomItemHandler().mFloorItems.ContainsKey(current.Id)) { Point left = this.HandleMovement(this.mDir, new Point(current.GetX, current.GetY)); int num2 = this.HandleRotation(this.mRot, current.Rot); if (this.mRoom.GetGameMap().CanRollItemHere(left.X, left.Y) && !this.mRoom.GetGameMap().SquareHasUsers(left.X, left.Y)) { double num3 = 0.0; bool flag = true; List<RoomItem> roomItemForSquare = this.mRoom.GetGameMap().GetRoomItemForSquare(left.X, left.Y); foreach (RoomItem current2 in roomItemForSquare) { if (current2 != null) { if (current2.TotalHeight > num3) { num3 = current.TotalHeight; } if (flag && !current2.GetBaseItem().Stackable) { flag = false; } } } if (num2 != current.Rot) { current.Rot = num2; ServerMessage message = new ServerMessage(Outgoing.UpdateRoomItemMessageComposer); current.Serialize(message); this.mRoom.SendMessage(message); } if (flag && left != current.Coordinate) { ServerMessage serverMessage = new ServerMessage(); serverMessage.Init(Outgoing.ItemAnimationMessageComposer); serverMessage.AppendInt32(current.GetX); serverMessage.AppendInt32(current.GetY); serverMessage.AppendInt32(left.X); serverMessage.AppendInt32(left.Y); serverMessage.AppendInt32(1); serverMessage.AppendUInt(current.Id); serverMessage.AppendString(TextHandling.GetString(current.GetZ)); serverMessage.AppendString(TextHandling.GetString(num3)); serverMessage.AppendInt32(0); this.mRoom.SendMessage(serverMessage); this.mRoom.GetRoomItemHandler().SetFloorItem(current, left.X, left.Y, num3); } } } } this.mNext = 0L; return true; } return false; }
internal void SerializeFloor(ServerMessage Message, bool Inventory) { Message.AppendUInt(this.Id); Message.AppendString(this.mBaseItem.Type.ToString().ToUpper()); Message.AppendUInt(this.Id); Message.AppendInt32(this.GetBaseItem().SpriteId); int ExtraParam = 0; if (this.GetBaseItem().InteractionType == InteractionType.gld_item || this.GetBaseItem().InteractionType == InteractionType.gld_gate) { Guild group = MercuryEnvironment.GetGame().GetGroupManager().GetGroup(this.GroupId); if (group != null) { Message.AppendInt32(17); Message.AppendInt32(2); Message.AppendInt32(5); Message.AppendString(this.ExtraData); Message.AppendString(group.Id.ToString()); Message.AppendString(group.Badge); Message.AppendString(MercuryEnvironment.GetGame().GetGroupManager().GetGroupColour(group.Colour1, true)); Message.AppendString(MercuryEnvironment.GetGame().GetGroupManager().GetGroupColour(group.Colour2, false)); } else { if (this.GetBaseItem().InteractionType == InteractionType.moplaseed) { Message.AppendInt32(19); Message.AppendInt32(1); Message.AppendInt32(1); Message.AppendString("rarity"); Message.AppendString(this.ExtraData.ToString()); } else { if (this.LimitedNo > 0) { Message.AppendInt32(1); Message.AppendInt32(256); Message.AppendString(this.ExtraData); Message.AppendInt32(this.LimitedNo); Message.AppendInt32(this.LimitedTot); } else { Message.AppendInt32((GetBaseItem().InteractionType == InteractionType.gift) ? 9 : 0); Message.AppendInt32(0); Message.AppendString((GetBaseItem().InteractionType == InteractionType.gift) ? "" : this.ExtraData); } } } } else { Message.AppendInt32(1); Message.AppendInt32(0); Message.AppendString((GetBaseItem().InteractionType == InteractionType.gift) ? "" : this.ExtraData); } Message.AppendBoolean(this.GetBaseItem().AllowRecycle); Message.AppendBoolean(this.GetBaseItem().AllowTrade); Message.AppendBoolean(this.LimitedNo <= 0 && this.GetBaseItem().AllowInventoryStack); Message.AppendBoolean(false); Message.AppendInt32(-1); Message.AppendBoolean(true); Message.AppendInt32(-1); Message.AppendString(""); try { if (GetBaseItem().InteractionType == InteractionType.gift) { string[] Split = this.ExtraData.Split((char)9); int Ribbon = int.Parse(Split[2]); int Colour = int.Parse(Split[3]); ExtraParam = (Ribbon * 1000) + Colour; } } catch { ExtraParam = 1001; } Console.WriteLine(ExtraParam); Message.AppendInt32(ExtraParam);//ExtraParam }
internal static void PerformShutDown(bool Restart) { //Console.Clear(); DateTime now = DateTime.Now; MercuryEnvironment.ShutdownInitiated = true; ServerMessage serverMessage = new ServerMessage(Outgoing.SuperNotificationMessageComposer); serverMessage.AppendString("disconnection"); serverMessage.AppendInt32(2); serverMessage.AppendString("title"); serverMessage.AppendString("HEY EVERYONE!"); serverMessage.AppendString("message"); if (Restart) { serverMessage.AppendString("<b>The hotel is shutting down for a break.</b>\nYou may come back later.\r\n<b>So long!</b>"); } else { serverMessage.AppendString("<b>The hotel is shutting down for a break.</b><br />You may come back soon. Don't worry, everything's going to be saved..<br /><b>So long!</b>\r\n~ This session was powered by MercuryEmulator"); } MercuryEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(serverMessage); Thread.Sleep(6000); MercuryEnvironment.Game.StopGameLoop(); DateTime arg_93_0 = DateTime.Now; Logging.WriteLine("Shutting down...", ConsoleColor.Yellow); Console.Title = "Mercury Emulator | Shutting down..."; DateTime arg_AF_0 = DateTime.Now; MercuryEnvironment.GetGame().GetClientManager().CloseAll(); DateTime arg_C4_0 = DateTime.Now; MercuryEnvironment.Game.GetRoomManager().RemoveAllRooms(); foreach (Guild Group in Game.GetGroupManager().Groups.Values) { Group.UpdateForum(); } MercuryEnvironment.GetConnectionManager().Destroy(); DateTime arg_E3_0 = DateTime.Now; using (IQueryAdapter queryreactor = MercuryEnvironment.manager.getQueryreactor()) { queryreactor.runFastQuery("UPDATE users SET online = '0'"); queryreactor.runFastQuery("UPDATE rooms SET users_now = 0"); queryreactor.runFastQuery("TRUNCATE TABLE user_roomvisits"); } DateTime arg_121_0 = DateTime.Now; MercuryEnvironment.ConnectionManager.Destroy(); DateTime arg_131_0 = DateTime.Now; MercuryEnvironment.Game.Destroy(); DateTime arg_141_0 = DateTime.Now; try { Console.WriteLine("Destroying database manager..."); MercuryEnvironment.manager.Destroy(); } catch { } TimeSpan span = DateTime.Now - now; Console.WriteLine("Mercury Emulator took " + MercuryEnvironment.TimeSpanToString(span) + " in shutdown process."); Console.WriteLine("Mercury Emulator has shut down succesfully."); MercuryEnvironment.isLive = false; if (Restart) { Process.Start(AppDomain.CurrentDomain.BaseDirectory + "\\Mercury Emulator.exe"); } Console.WriteLine("Closing..."); Environment.Exit(0); }
internal void SerializeMessengerAction(int Type, string Name) { if (this.GetClient() == null) { return; } ServerMessage serverMessage = new ServerMessage(); serverMessage.Init(Outgoing.ConsoleMessengerActionMessageComposer); serverMessage.AppendString(this.GetClient().GetHabbo().Id.ToString()); serverMessage.AppendInt32(Type); serverMessage.AppendString(Name); foreach (MessengerBuddy current in this.friends.Values) { if (current.client != null) { current.client.SendMessage(serverMessage); } } }
internal static void SendMassMessage(string Message) { try { ServerMessage serverMessage = new ServerMessage(Outgoing.BroadcastNotifMessageComposer); serverMessage.AppendString(Message); MercuryEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(serverMessage); } catch (Exception pException) { Logging.HandleException(pException, "MercuryEnvironment.SendMassMessage"); } }
internal void DeliverInstantMessageError(int ErrorId, uint ConversationId) { ServerMessage serverMessage = new ServerMessage(Outgoing.ConsoleChatErrorMessageComposer); serverMessage.AppendInt32(ErrorId); serverMessage.AppendUInt(ConversationId); serverMessage.AppendString(""); this.GetClient().SendMessage(serverMessage); }
internal ServerMessage SerializeOfflineMessages(OfflineMessage Message) { ServerMessage serverMessage = new ServerMessage(Outgoing.ConsoleChatMessageComposer); serverMessage.AppendUInt(Message.FromId); serverMessage.AppendString(Message.Message); serverMessage.AppendInt32(checked((int)unchecked((double)MercuryEnvironment.GetUnixTimestamp() - Message.Timestamp))); return serverMessage; }
internal void DeliverInstantMessage(string message, uint convoID) { ServerMessage serverMessage = new ServerMessage(Outgoing.ConsoleChatMessageComposer); serverMessage.AppendUInt(convoID); serverMessage.AppendString(message); serverMessage.AppendInt32(0); this.GetClient().SendMessage(serverMessage); }
private ServerMessage SerializeHeightmap() { ServerMessage serverMessage = new ServerMessage(Outgoing.FloorMapMessageComposer); serverMessage.AppendBoolean(true); serverMessage.AppendInt32(mRoom.WallHeight); StringBuilder stringBuilder = new StringBuilder(); checked { for (int i = 0; i < this.MapSizeY; i++) { for (int j = 0; j < this.MapSizeX; j++) { try { stringBuilder.Append(this.SqChar[j, i].ToString()); } catch (Exception) { stringBuilder.Append("0"); } } stringBuilder.Append(Convert.ToChar(13)); } string s = stringBuilder.ToString(); serverMessage.AppendString(s); return serverMessage; } }
internal void processCommand(string data) { string text = data.Split(new char[] { Convert.ToChar(1) })[0]; string text2 = data.Split(new char[] { Convert.ToChar(1) })[1]; string[] array = text2.Split(new char[] { Convert.ToChar(5) }); string a; if ((a = text.ToLower()) != null) { if (!(a == "updatemotto")) { GameClient clientByUserID; if (!(a == "updaterooms")) { if (!(a == "addtoinventory")) { if (!(a == "updatecredits")) { if (!(a == "updatesubscription")) { goto IL_38B; } uint userID = Convert.ToUInt32(array[0]); clientByUserID = MercuryEnvironment.GetGame().GetClientManager().GetClientByUserID(userID); if (clientByUserID != null && clientByUserID.GetHabbo() != null) { clientByUserID.GetHabbo().GetSubscriptionManager().ReloadSubscription(); clientByUserID.GetHabbo().SerializeClub(); clientByUserID.SendMessage(new ServerMessage(Outgoing.PublishShopMessageComposer)); goto IL_3A3; } goto IL_3A3; } else { uint userID2 = Convert.ToUInt32(array[0]); int credits = Convert.ToInt32(array[1]); clientByUserID = MercuryEnvironment.GetGame().GetClientManager().GetClientByUserID(userID2); if (clientByUserID != null && clientByUserID.GetHabbo() != null) { clientByUserID.GetHabbo().Credits = credits; clientByUserID.GetHabbo().UpdateCreditsBalance(); goto IL_3A3; } goto IL_3A3; } } } else { uint num = Convert.ToUInt32(array[0]); string arg_20F_0 = array[1]; using (Dictionary<uint, Room>.ValueCollection.Enumerator enumerator = MercuryEnvironment.GetGame().GetRoomManager().loadedRooms.Values.GetEnumerator()) { while (enumerator.MoveNext()) { Room current = enumerator.Current; if ((long)current.OwnerId == (long)((ulong)num)) { MercuryEnvironment.GetGame().GetRoomManager().UnloadRoom(current); current.RequestReload(); } } goto IL_3A3; } } uint userID3 = Convert.ToUInt32(array[0]); int id = Convert.ToInt32(array[1]); clientByUserID = MercuryEnvironment.GetGame().GetClientManager().GetClientByUserID(userID3); if (clientByUserID != null && clientByUserID.GetHabbo() != null && clientByUserID.GetHabbo().GetInventoryComponent() != null) { clientByUserID.GetHabbo().GetInventoryComponent().UpdateItems(true); clientByUserID.GetHabbo().GetInventoryComponent().SendNewItems((uint)id); } } else { GameClient clientByUserID = MercuryEnvironment.GetGame().GetClientManager().GetClientByUserID(Convert.ToUInt32(array[0])); clientByUserID.GetHabbo().Motto = MusConnection.MergeParams(array, 1); ServerMessage serverMessage = new ServerMessage(Outgoing.UpdateUserDataMessageComposer); serverMessage.AppendInt32(-1); serverMessage.AppendString(clientByUserID.GetHabbo().Look); serverMessage.AppendString(clientByUserID.GetHabbo().Gender.ToLower()); serverMessage.AppendString(clientByUserID.GetHabbo().Motto); serverMessage.AppendInt32(clientByUserID.GetHabbo().AchievementPoints); clientByUserID.SendMessage(serverMessage); if (clientByUserID.GetHabbo().CurrentRoom != null) { RoomUser roomUserByHabbo = clientByUserID.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(clientByUserID.GetHabbo().Username); ServerMessage serverMessage2 = new ServerMessage(Outgoing.UpdateUserDataMessageComposer); serverMessage2.AppendInt32(roomUserByHabbo.VirtualId); serverMessage2.AppendString(clientByUserID.GetHabbo().Look); serverMessage2.AppendString(clientByUserID.GetHabbo().Gender.ToLower()); serverMessage2.AppendString(clientByUserID.GetHabbo().Motto); serverMessage2.AppendInt32(clientByUserID.GetHabbo().AchievementPoints); clientByUserID.GetHabbo().CurrentRoom.SendMessage(serverMessage2); } } IL_3A3: Logging.WriteLine("[MUS SOCKET] Comando MUS procesado correctamente: '" + text + "'", ConsoleColor.Green); return; } IL_38B: Logging.WriteLine("[MUS SOCKET] Paquete MUS no reconocido: " + text + "//" + data, ConsoleColor.DarkRed); }
internal void UpdateTradeWindow() { ServerMessage serverMessage = new ServerMessage(Outgoing.TradeUpdateMessageComposer); checked { for (int i = 0; i < this.Users.Length; i++) { TradeUser tradeUser = this.Users[i]; if (tradeUser != null) { serverMessage.AppendUInt(tradeUser.UserId); serverMessage.AppendInt32(tradeUser.OfferedItems.Count); foreach (UserItem current in tradeUser.OfferedItems) { serverMessage.AppendUInt(current.Id); serverMessage.AppendString(current.GetBaseItem().Type.ToString().ToLower()); serverMessage.AppendUInt(current.Id); serverMessage.AppendInt32(current.GetBaseItem().SpriteId); serverMessage.AppendInt32(0); serverMessage.AppendBoolean(true); serverMessage.AppendInt32(0); serverMessage.AppendString(""); serverMessage.AppendInt32(0); serverMessage.AppendInt32(0); serverMessage.AppendInt32(0); if (current.GetBaseItem().Type == 's') { serverMessage.AppendInt32(0); } } } } this.SendMessageToUsers(serverMessage); } }
internal void MoveBall(RoomItem item, GameClient mover, int newX, int newY, RoomUser user) { if (item == null || mover == null) return; if (!room.GetGameMap().itemCanBePlacedHere(newX, newY)) return; Point oldRoomCoord = item.Coordinate; // bool itemIsOnGameItem = GameItemOverlaps(item); Double NewZ = room.GetGameMap().Model.SqFloorHeight[newX, newY]; ServerMessage mMessage = new ServerMessage(); mMessage.Init(Outgoing.ItemAnimationMessageComposer); // Cf mMessage.AppendInt32(item.Coordinate.X); mMessage.AppendInt32(item.Coordinate.Y); mMessage.AppendInt32(newX); mMessage.AppendInt32(newY); mMessage.AppendInt32(1); mMessage.AppendUInt(item.Id); mMessage.AppendString(TextHandling.GetString(item.GetZ)); mMessage.AppendString(TextHandling.GetString(NewZ)); mMessage.AppendUInt(item.Id); room.SendMessage(mMessage); item.ExtraData = "11"; item.UpdateNeeded = true; if (oldRoomCoord.X == newX && oldRoomCoord.Y == newY) return; if (!room.GetRoomItemHandler().SetFloorItem(mover, item, newX, newY, item.Rot, false, false, false, false)) { room.GetRoomItemHandler().SetFloorItem(item, newX, newY, NewZ); } HandleFootballGameItems(item.Coordinate, user); }