internal Trade(uint UserOneId, uint UserTwoId, uint RoomId) { this.oneId = UserOneId; this.twoId = UserTwoId; this.Users = new TradeUser[2]; this.Users[0] = new TradeUser(UserOneId, RoomId); this.Users[1] = new TradeUser(UserTwoId, RoomId); this.TradeStage = 1; this.RoomId = RoomId; TradeUser[] users = this.Users; for (int i = 0; i < users.Length; i++) { TradeUser tradeUser = users[i]; if (!tradeUser.GetRoomUser().Statusses.ContainsKey("trd")) { tradeUser.GetRoomUser().AddStatus("trd", ""); tradeUser.GetRoomUser().UpdateNeeded = true; } } ServerMessage serverMessage = new ServerMessage(Outgoing.TradeStartMessageComposer); serverMessage.AppendUInt(UserOneId); serverMessage.AppendInt32(1); serverMessage.AppendUInt(UserTwoId); serverMessage.AppendInt32(1); this.SendMessageToUsers(serverMessage); }
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 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 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 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 ServerMessage SmallPromoComposer(ServerMessage Message) { Message.AppendInt32(this.HotelViewPromosIndexers.Count); foreach (SmallPromo current in this.HotelViewPromosIndexers) { current.Serialize(Message); } return Message; }
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 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 ServerMessage GenerateExtraData(ServerMessage Message) { Message.AppendInt32(0); Message.AppendInt32(5); Message.AppendInt32(4); Message.AppendInt32(this.Enabled); Message.AppendInt32(this.Data1); Message.AppendInt32(this.Data2); Message.AppendInt32(this.Data3); return Message; }
internal static ServerMessage Compose(int PlaylistCapacity, List<SongInstance> Playlist) { ServerMessage serverMessage = new ServerMessage(Outgoing.JukeboxPlaylistMessageComposer); serverMessage.AppendInt32(PlaylistCapacity); serverMessage.AppendInt32(Playlist.Count); foreach (SongInstance current in Playlist) { serverMessage.AppendUInt(current.DiskItem.itemID); serverMessage.AppendUInt(current.SongData.Id); } return serverMessage; }
internal static ServerMessage Compose(GameClient Session, List<Quest> Quests, bool Send) { Dictionary<string, int> dictionary = new Dictionary<string, int>(); Dictionary<string, Quest> dictionary2 = new Dictionary<string, Quest>(); foreach (Quest current in Quests) { if (!current.Category.Contains("xmas2012")) { if (!dictionary.ContainsKey(current.Category)) { dictionary.Add(current.Category, 1); dictionary2.Add(current.Category, null); } if (current.Number >= dictionary[current.Category]) { int questProgress = Session.GetHabbo().GetQuestProgress(current.Id); if (Session.GetHabbo().CurrentQuestId != current.Id && (long)questProgress >= (long)((ulong)current.GoalData)) { dictionary[current.Category] = checked(current.Number + 1); } } } } foreach (Quest current2 in Quests) { foreach (KeyValuePair<string, int> current3 in dictionary) { if (!current2.Category.Contains("xmas2012") && current2.Category == current3.Key && current2.Number == current3.Value) { dictionary2[current3.Key] = current2; break; } } } ServerMessage serverMessage = new ServerMessage(Outgoing.QuestListMessageComposer); serverMessage.AppendInt32(dictionary2.Count); foreach (KeyValuePair<string, Quest> current4 in dictionary2) { if (current4.Value != null) { QuestListComposer.SerializeQuest(serverMessage, Session, current4.Value, current4.Key); } } foreach (KeyValuePair<string, Quest> current5 in dictionary2) { if (current5.Value == null) { QuestListComposer.SerializeQuest(serverMessage, Session, current5.Value, current5.Key); } } serverMessage.AppendBoolean(Send); return serverMessage; }
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); }
internal ServerMessage GetPacket() { ServerMessage serverMessage = new ServerMessage(Outgoing.EffectsInventoryMessageComposer); serverMessage.AppendInt32(this.Effects.Count); foreach (AvatarEffect current in this.Effects) { serverMessage.AppendInt32(current.EffectId); serverMessage.AppendInt32(0); serverMessage.AppendInt32(current.TotalDuration); serverMessage.AppendInt32(0); serverMessage.AppendInt32(current.TimeLeft); } 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 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; }
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; }
internal ServerMessage SerializeNewFlatCategories() { var flatcat = MercuryEnvironment.GetGame().GetNavigator().PrivateCategories.OfType<FlatCat>(); var rooms = MercuryEnvironment.GetGame().GetRoomManager().loadedRooms; ServerMessage Message = new ServerMessage(Outgoing.NavigatorNewFlatCategoriesMessageComposer); Message.AppendInt32(flatcat.Count()); foreach (FlatCat cat in flatcat) { Message.AppendInt32(cat.Id); Message.AppendInt32(cat.UsersNow); Message.AppendInt32(500); } return Message; }
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; }
internal void StopGame() { this.gameStarted = false; this.room.GetGameManager().UnlockGates(); this.room.GetGameManager().StopGame(); Team winningTeam = this.room.GetGameManager().getWinningTeam(); foreach (RoomUser Avatar in this.room.GetRoomUserManager().UserList.Values) { Avatar.FreezeLives = 0; if (Avatar.team == winningTeam) { Avatar.UnIdle(); Avatar.DanceId = 0; ServerMessage waveAtWin = new ServerMessage(Outgoing.RoomUserActionMessageComposer); waveAtWin.AppendInt32(Avatar.VirtualId); waveAtWin.AppendInt32(1); this.room.SendMessage(waveAtWin); } } }
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); }
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 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 static ServerMessage ComposePlayingComposer(uint SongId, int PlaylistItemNumber, int SyncTimestampMs) { ServerMessage serverMessage = new ServerMessage(Outgoing.JukeboxNowPlayingMessageComposer); if (SongId == 0u) { serverMessage.AppendInt32(-1); serverMessage.AppendInt32(-1); serverMessage.AppendInt32(-1); serverMessage.AppendInt32(-1); serverMessage.AppendInt32(0); } else { serverMessage.AppendUInt(SongId); serverMessage.AppendInt32(PlaylistItemNumber); serverMessage.AppendUInt(SongId); serverMessage.AppendInt32(0); serverMessage.AppendInt32(SyncTimestampMs); } 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); }
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); }