示例#1
0
文件: Guild.cs 项目: BjkGkh/Mercury
 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;
 }
示例#2
0
文件: Trade.cs 项目: BjkGkh/Mercury
		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);
		}
示例#3
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;
		}
示例#4
0
		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;
		}
示例#5
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 : "");
		}
示例#6
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);
			}
		}
示例#7
0
		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;
		}
示例#8
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);
		}
示例#9
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);
		}
示例#10
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;
		}
 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;
 }
示例#12
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);
				}
			}
		}
 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;
 }
示例#14
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;
        }
示例#15
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;
		}
示例#16
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;
		}
示例#17
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
		}
示例#18
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);
		}
示例#19
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;
		}
示例#20
0
		internal static ServerMessage SerializeSongInventory(HybridDictionary songs)
		{
			ServerMessage serverMessage = new ServerMessage(Outgoing.SongsLibraryMessageComposer);
			serverMessage.AppendInt32(songs.Count);
			foreach (UserItem userItem in songs.Values)
			{
				serverMessage.AppendUInt(userItem.Id);
				serverMessage.AppendUInt(SongManager.GetSong(userItem.SongCode).Id);
			}
			return serverMessage;
		}
示例#21
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);
		}
示例#22
0
文件: Trade.cs 项目: BjkGkh/Mercury
		internal void DeliverItems()
		{
			List<UserItem> offeredItems = this.GetTradeUser(this.oneId).OfferedItems;
			List<UserItem> offeredItems2 = this.GetTradeUser(this.twoId).OfferedItems;
			foreach (UserItem current in offeredItems)
			{
				if (this.GetTradeUser(this.oneId).GetClient().GetHabbo().GetInventoryComponent().GetItem(current.Id) == null)
				{
					this.GetTradeUser(this.oneId).GetClient().SendNotif("El tradeo ha fallado.");
					this.GetTradeUser(this.twoId).GetClient().SendNotif("El tradeo ha fallado.");
					return;
				}
			}
			foreach (UserItem current2 in offeredItems2)
			{
				if (this.GetTradeUser(this.twoId).GetClient().GetHabbo().GetInventoryComponent().GetItem(current2.Id) == null)
				{
					this.GetTradeUser(this.oneId).GetClient().SendNotif("El tradeo ha fallado.");
					this.GetTradeUser(this.twoId).GetClient().SendNotif("El tradeo ha fallado.");
					return;
				}
			}
			this.GetTradeUser(this.twoId).GetClient().GetHabbo().GetInventoryComponent().RunDBUpdate();
			this.GetTradeUser(this.oneId).GetClient().GetHabbo().GetInventoryComponent().RunDBUpdate();
			foreach (UserItem current3 in offeredItems)
			{
				this.GetTradeUser(this.oneId).GetClient().GetHabbo().GetInventoryComponent().RemoveItem(current3.Id, false);
				this.GetTradeUser(this.twoId).GetClient().GetHabbo().GetInventoryComponent().AddNewItem(current3.Id, current3.BaseItem, current3.ExtraData, current3.GroupId, false, false, 0, 0, current3.SongCode);
				this.GetTradeUser(this.oneId).GetClient().GetHabbo().GetInventoryComponent().RunDBUpdate();
				this.GetTradeUser(this.twoId).GetClient().GetHabbo().GetInventoryComponent().RunDBUpdate();
			}
			foreach (UserItem current4 in offeredItems2)
			{
				this.GetTradeUser(this.twoId).GetClient().GetHabbo().GetInventoryComponent().RemoveItem(current4.Id, false);
				this.GetTradeUser(this.oneId).GetClient().GetHabbo().GetInventoryComponent().AddNewItem(current4.Id, current4.BaseItem, current4.ExtraData, current4.GroupId, false, false, 0, 0, current4.SongCode);
				this.GetTradeUser(this.twoId).GetClient().GetHabbo().GetInventoryComponent().RunDBUpdate();
				this.GetTradeUser(this.oneId).GetClient().GetHabbo().GetInventoryComponent().RunDBUpdate();
			}
			ServerMessage serverMessage = new ServerMessage(Outgoing.NewInventoryObjectMessageComposer);
			serverMessage.AppendInt32(1);
			int i = 1;
			foreach (UserItem current5 in offeredItems)
			{
				if (current5.GetBaseItem().Type.ToString().ToLower() != "s")
				{
					i = 2;
				}
			}
			serverMessage.AppendInt32(i);
			serverMessage.AppendInt32(offeredItems.Count);
			foreach (UserItem current6 in offeredItems)
			{
				serverMessage.AppendUInt(current6.Id);
			}
			this.GetTradeUser(this.twoId).GetClient().SendMessage(serverMessage);
			ServerMessage serverMessage2 = new ServerMessage(Outgoing.NewInventoryObjectMessageComposer);
			serverMessage2.AppendInt32(1);
			i = 1;
			foreach (UserItem current7 in offeredItems2)
			{
				if (current7.GetBaseItem().Type.ToString().ToLower() != "s")
				{
					i = 2;
				}
			}
			serverMessage2.AppendInt32(i);
			serverMessage2.AppendInt32(offeredItems2.Count);
			foreach (UserItem current8 in offeredItems2)
			{
				serverMessage2.AppendUInt(current8.Id);
			}
			this.GetTradeUser(this.oneId).GetClient().SendMessage(serverMessage2);
			this.GetTradeUser(this.oneId).GetClient().GetHabbo().GetInventoryComponent().UpdateItems(false);
			this.GetTradeUser(this.twoId).GetClient().GetHabbo().GetInventoryComponent().UpdateItems(false);
		}
示例#23
0
文件: Trade.cs 项目: BjkGkh/Mercury
		internal void CloseTrade(uint UserId)
		{
			checked
			{
				for (int i = 0; i < this.Users.Length; i++)
				{
					TradeUser tradeUser = this.Users[i];
					if (tradeUser != null && tradeUser.GetRoomUser() != null)
					{
						tradeUser.GetRoomUser().RemoveStatus("trd");
						tradeUser.GetRoomUser().UpdateNeeded = true;
					}
				}
				ServerMessage serverMessage = new ServerMessage(Outgoing.TradeCloseMessageComposer);
				serverMessage.AppendUInt(UserId);
				serverMessage.AppendInt32(0);
				this.SendMessageToUsers(serverMessage);
			}
		}
示例#24
0
文件: Trade.cs 项目: BjkGkh/Mercury
		internal void CompleteTrade(uint UserId)
		{
			TradeUser tradeUser = this.GetTradeUser(UserId);
			if (tradeUser == null || this.TradeStage != 2)
			{
				return;
			}
			tradeUser.HasAccepted = true;
			ServerMessage serverMessage = new ServerMessage(Outgoing.TradeAcceptMessageComposer);
			serverMessage.AppendUInt(UserId);
			serverMessage.AppendInt32(1);
			this.SendMessageToUsers(serverMessage);
			if (this.AllUsersAccepted)
			{
				this.TradeStage = 999;
				this.Finnito();
			}
		}
示例#25
0
文件: Trade.cs 项目: BjkGkh/Mercury
		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);
			}
		}
示例#26
0
文件: Trade.cs 项目: BjkGkh/Mercury
		internal void Unaccept(uint UserId)
		{
			TradeUser tradeUser = this.GetTradeUser(UserId);
			if (tradeUser == null || this.TradeStage != 1 || this.AllUsersAccepted)
			{
				return;
			}
			tradeUser.HasAccepted = false;
			ServerMessage serverMessage = new ServerMessage(Outgoing.TradeAcceptMessageComposer);
			serverMessage.AppendUInt(UserId);
			serverMessage.AppendInt32(0);
			this.SendMessageToUsers(serverMessage);
		}
示例#27
0
文件: Trade.cs 项目: BjkGkh/Mercury
		internal void Accept(uint UserId)
		{
			TradeUser tradeUser = this.GetTradeUser(UserId);
			if (tradeUser == null || this.TradeStage != 1)
			{
				return;
			}
			tradeUser.HasAccepted = true;
			ServerMessage serverMessage = new ServerMessage(Outgoing.TradeAcceptMessageComposer);
			serverMessage.AppendUInt(UserId);
			serverMessage.AppendInt32(1);
			this.SendMessageToUsers(serverMessage);
			checked
			{
				if (this.AllUsersAccepted)
				{
					this.SendMessageToUsers(new ServerMessage(Outgoing.TradeConfirmationMessageComposer));
					this.TradeStage++;
					this.ClearAccepted();
				}
			}
		}
示例#28
0
文件: Soccer.cs 项目: BjkGkh/Mercury
        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);
        }
示例#29
0
		internal void Serialize(ServerMessage Message, GameClient Session)
		{
			Relationship value = Session.GetHabbo().Relationships.FirstOrDefault((KeyValuePair<int, Relationship> x) => x.Value.UserId == Convert.ToInt32(this.UserId)).Value;
			int i = (value == null) ? 0 : value.Type;
			Message.AppendUInt(this.UserId);
			Message.AppendString(this.mUsername);
			Message.AppendInt32(1);
			if (!this.mAppearOffline || Session.GetHabbo().Rank >= 4u)
			{
				Message.AppendBoolean(this.IsOnline);
			}
			else
			{
				Message.AppendBoolean(false);
			}
			if (!this.mHideInroom || Session.GetHabbo().Rank >= 4u)
			{
				Message.AppendBoolean(this.InRoom);
			}
			else
			{
				Message.AppendBoolean(false);
			}
			Message.AppendString(this.IsOnline ? this.mLook : "");
			Message.AppendInt32(0);
			Message.AppendString(this.mMotto);
			Message.AppendString(string.Empty);
			Message.AppendString(string.Empty);
			Message.AppendBoolean(true);
			Message.AppendBoolean(false);
			Message.AppendBoolean(false);
			Message.AppendShort(i);
		}
示例#30
0
文件: Poll.cs 项目: BjkGkh/Mercury
		internal void Serialize(ServerMessage Message)
		{
			Message.AppendUInt(this.Id);
            Message.AppendString("");//?
			Message.AppendString(this.PollInvitation);
		}