Ejemplo n.º 1
0
		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);
			}
		}
Ejemplo n.º 2
0
		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 : "");
		}
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
		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;
		}
Ejemplo n.º 5
0
		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);
		}
Ejemplo n.º 6
0
		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;
		}
Ejemplo n.º 7
0
 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;
 }
Ejemplo n.º 8
0
		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);
				}
			}
		}
Ejemplo n.º 9
0
 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;
 }
Ejemplo n.º 10
0
        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;
        }
Ejemplo n.º 11
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;
        }
Ejemplo n.º 12
0
		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;
		}
Ejemplo n.º 13
0
		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);
		}
Ejemplo n.º 14
0
		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;
		}
Ejemplo n.º 15
0
		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;
		}
Ejemplo n.º 16
0
        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;
        }
Ejemplo n.º 17
0
		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);
		}
Ejemplo n.º 18
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;
		}
Ejemplo n.º 19
0
		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;
		}
Ejemplo n.º 20
0
		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
		}
Ejemplo n.º 21
0
		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);
		}
Ejemplo n.º 22
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);
				}
			}
		}
Ejemplo n.º 23
0
		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");
			}
		}
Ejemplo n.º 24
0
		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);
		}
Ejemplo n.º 25
0
		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;
		}
Ejemplo n.º 26
0
		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);
		}
Ejemplo n.º 27
0
		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;
			}
		}
Ejemplo n.º 28
0
		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);
		}
Ejemplo n.º 29
0
		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);
			}
		}
Ejemplo n.º 30
0
        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);
        }