示例#1
0
        public HItem(HPacket packet)
            : base(packet)
        {
            Remnants.Enqueue(packet.ReadInt32());

            string unknown1 = packet.ReadUTF8();

            Remnants.Enqueue(unknown1);

            Id     = packet.ReadInt32();
            TypeId = packet.ReadInt32();
            Remnants.Enqueue(packet.ReadInt32());

            Category = packet.ReadInt32();
            Stuff    = ReadData(packet, Category);

            IsGroupable = packet.ReadBoolean();
            Remnants.Enqueue(packet.ReadBoolean());
            Remnants.Enqueue(packet.ReadBoolean());
            Remnants.Enqueue(packet.ReadBoolean());
            SecondsToExpiration = packet.ReadInt32();

            HasRentPeriodStarted = packet.ReadBoolean();
            RoomId = packet.ReadInt32();

            if (unknown1 == "S")
            {
                SlotId = packet.ReadUTF8();
                Remnants.Enqueue(packet.ReadInt32());
            }
        }
示例#2
0
        public HSlideObjectBundle(HPacket packet)
        {
            HPoint location = new HPoint(packet.ReadInt32(), packet.ReadInt32());
            HPoint target   = new HPoint(packet.ReadInt32(), packet.ReadInt32());

            Objects = new HSlideObject[packet.ReadInt32()];
            for (int i = 0; i < Objects.Length; i++)
            {
                int objectId = packet.ReadInt32();
                location.Z = double.Parse(packet.ReadUTF8(), CultureInfo.InvariantCulture);
                target.Z   = double.Parse(packet.ReadUTF8(), CultureInfo.InvariantCulture);

                Objects[i] = new HSlideObject(objectId, location, target);
            }

            Id = packet.ReadInt32();

            if (packet.ReadableBytes > 0)
            {
                HMoveType type = (HMoveType)packet.ReadInt32();

                int entityIndex = packet.ReadInt32();
                location.Z = double.Parse(packet.ReadUTF8(), CultureInfo.InvariantCulture);
                target.Z   = double.Parse(packet.ReadUTF8(), CultureInfo.InvariantCulture);

                Entity = new HSlideObject(entityIndex, location, target, type);
            }
        }
示例#3
0
文件: HItem.cs 项目: scottstamp/Geode
        public HItem(HPacket packet)
        {
            packet.ReadInt32();

            string loc2 = packet.ReadUTF8();

            Id     = packet.ReadInt32();
            TypeId = packet.ReadInt32();
            packet.ReadInt32();

            Category = packet.ReadInt32();
            Stuff    = ReadData(packet, Category);

            IsGroupable = packet.ReadBoolean();
            IsTradeable = packet.ReadBoolean();
            packet.ReadBoolean();
            CanPlaceInMarketplace = packet.ReadBoolean();
            SecondsToExpiration   = packet.ReadInt32();

            HasRentPeriodStarted = packet.ReadBoolean();
            RoomId = packet.ReadInt32();

            if (loc2 == "S")
            {
                SlotId = packet.ReadUTF8();
                packet.ReadInt32();
            }
        }
示例#4
0
        public HItem(HPacket packet)
        {
            packet.ReadInt32();

            Type = (HProductType)packet.ReadUTF8()[0];

            Id       = packet.ReadInt32();
            TypeId   = packet.ReadInt32();
            Category = (HFurniCategory)packet.ReadInt32();

            StuffDataFormat = packet.ReadInt32();
            Stuff           = ReadData(packet, StuffDataFormat);

            IsRecyclable = packet.ReadBoolean();
            IsTradable   = packet.ReadBoolean();
            IsGroupable  = packet.ReadBoolean();
            IsSellable   = packet.ReadBoolean();

            CanPlaceInMarketplace = packet.ReadBoolean();
            SecondsToExpiration   = packet.ReadInt32();

            HasRentPeriodStarted = packet.ReadBoolean();
            RoomId = packet.ReadInt32();

            if (Type == HProductType.Stuff)
            {
                SlotId = packet.ReadUTF8();
                Extra  = packet.ReadInt32();
            }
        }
示例#5
0
        public HFloorObject(HPacket packet)
        {
            Id     = packet.ReadInt32();
            TypeId = packet.ReadInt32();

            var tile = new HPoint(packet.ReadInt32(), packet.ReadInt32());

            Facing = (HDirection)packet.ReadInt32();

            tile.Z = double.Parse(packet.ReadUTF8(), CultureInfo.InvariantCulture);
            Tile   = tile;

            Height = double.Parse(packet.ReadUTF8(), CultureInfo.InvariantCulture);
            Extra  = packet.ReadInt32();

            Category = packet.ReadInt32();
            Stuff    = ReadData(packet, Category);

            SecondsToExpiration = packet.ReadInt32();
            UsagePolicy         = (HUsagePolicy)packet.ReadInt32();

            OwnerId = packet.ReadInt32();
            if (TypeId < 0)
            {
                StaticClass = packet.ReadUTF8();
            }
        }
示例#6
0
        public HCatalogProduct(HPacket packet)
        {
            Type = (HProductType)packet.ReadUTF8()[0];
            switch (Type)
            {
            case HProductType.Badge:
            {
                ExtraData    = packet.ReadUTF8();
                ProductCount = 1;
                break;
            }

            default:
            {
                ClassId      = packet.ReadInt32();
                ExtraData    = packet.ReadUTF8();
                ProductCount = packet.ReadInt32();
                if (IsLimited = packet.ReadBoolean())
                {
                    LimitedTotal     = packet.ReadInt32();
                    LimitedRemaining = packet.ReadInt32();
                }
                break;
            }
            }
        }
示例#7
0
        public HFloorItem(HPacket packet)
        {
            Id     = packet.ReadInt32();
            TypeId = packet.ReadInt32();

            var tile = new HPoint(packet.ReadInt32(), packet.ReadInt32());

            Facing = (HDirection)packet.ReadInt32();

            tile.Z = double.Parse(packet.ReadUTF8(), CultureInfo.InvariantCulture);
            Tile   = tile;

            var loc1 = packet.ReadUTF8();
            var loc3 = packet.ReadInt32();

            Category = packet.ReadInt32();
            Stuff    = ReadData(packet, Category);

            var loc4 = packet.ReadInt32();
            var loc5 = packet.ReadInt32();

            OwnerId = packet.ReadInt32();
            if (TypeId < 0)
            {
                var loc6 = packet.ReadUTF8();
            }
        }
示例#8
0
        public HFloorItem(HPacket packet)
            : base(packet)
        {
            Id = packet.ReadInt32();
            TypeId = packet.ReadInt32();

            var tile = new HPoint(packet.ReadInt32(), packet.ReadInt32());
            Facing = (HDirection)packet.ReadInt32();

            tile.Z = double.Parse(packet.ReadUTF8(), CultureInfo.InvariantCulture);
            Tile = tile;

            Remnants.Enqueue(packet.ReadUTF8());
            Remnants.Enqueue(packet.ReadInt32());

            Category = packet.ReadInt32();
            Stuff = ReadData(packet, Category);

            SecondsToExpiration = packet.ReadInt32();
            UsagePolicy = packet.ReadInt32();

            OwnerId = packet.ReadInt32();
            if (TypeId < 0)
            {
                Remnants.Enqueue(packet.ReadUTF8());
            }
        }
示例#9
0
文件: HItem.cs 项目: Nestor/Tanji-1
        public HItem(HPacket packet)
        {
            packet.ReadInt32();
            string unknown1 = packet.ReadUTF8();

            Id     = packet.ReadInt32();
            TypeId = packet.ReadInt32();
            packet.ReadInt32();

            Category = packet.ReadInt32();
            ReadData(packet, Category);

            packet.ReadBoolean();
            packet.ReadBoolean();
            packet.ReadBoolean();
            packet.ReadBoolean();
            SecondsToExpiration = packet.ReadInt32();

            HasRentPeriodStarted = packet.ReadBoolean();
            RoomId = packet.ReadInt32();

            if (unknown1 == "S")
            {
                SlotId = packet.ReadUTF8();
                packet.ReadInt32();
            }
        }
示例#10
0
        private async Task CaptureModulesAsync(TcpListener listener)
        {
            try
            {
                HNode moduleNode = new HNode(await listener.AcceptSocketAsync());

                moduleNode.InFormat  = HFormat.EvaWire;
                moduleNode.OutFormat = HFormat.EvaWire;
                HPacket infoPacket = await moduleNode.ReceivePacketAsync();

                var module = new ModuleInfo(moduleNode);
                module.PropertyChanged += Module_PropertyChanged;

                module.Version     = Version.Parse(infoPacket.ReadUTF8());
                module.Name        = infoPacket.ReadUTF8();
                module.Description = infoPacket.ReadUTF8();

                module.Authors.Capacity = infoPacket.ReadInt32();
                for (int i = 0; i < module.Authors.Capacity; i++)
                {
                    module.Authors.Add(new AuthorAttribute(infoPacket.ReadUTF8()));
                }
                Modules.Add(module);

                module.Initialize();
                Task handleModuleDataTask = HandleModuleDataAsync(module);
            }
            finally { Task captureModulesAsync = CaptureModulesAsync(listener); }
        }
示例#11
0
        public HCatalogPage(HPacket packet)
            : base(packet)
        {
            Id          = packet.ReadInt32();
            CatalogType = packet.ReadUTF8();
            LayoutCode  = packet.ReadUTF8();

            Images = new string[packet.ReadInt32()];
            for (int i = 0; i < Images.Length; i++)
            {
                Images[i] = packet.ReadUTF8();
            }

            Texts = new string[packet.ReadInt32()];
            for (int i = 0; i < Texts.Length; i++)
            {
                Texts[i] = packet.ReadUTF8();
            }

            Offers = new HCatalogOffer[packet.ReadInt32()];
            for (int i = 0; i < Offers.Length; i++)
            {
                Offers[i] = new HCatalogOffer(packet);
            }

            OfferId = packet.ReadInt32();
            AcceptSeasonCurrencyAsCredits = packet.ReadBoolean();

            //TODO: ?????????????
            IsFrontPage = (packet.ReadableBytes > 0);
        }
示例#12
0
        public HFurniture(HPacket packet)
        {
            Id     = packet.ReadInt32();
            TypeId = packet.ReadInt32();

            Tile   = new HPoint(packet.ReadInt32(), packet.ReadInt32());
            Facing = (HDirection)packet.ReadInt32();
            Tile.Z = double.Parse(packet.ReadUTF8(), CultureInfo.InvariantCulture);

            var loc1 = packet.ReadUTF8();
            var loc3 = packet.ReadInt32();

            int category = packet.ReadInt32();

            ReadData(packet, category);

            var loc4 = packet.ReadInt32();
            var loc5 = packet.ReadInt32();

            OwnerId = packet.ReadInt32();
            if (TypeId < 0)
            {
                var loc6 = packet.ReadUTF8();
            }
        }
示例#13
0
        public HWallItem(HPacket packet)
        {
            Id                  = int.Parse(packet.ReadUTF8());
            TypeId              = packet.ReadInt32();
            Location            = packet.ReadUTF8();
            Data                = packet.ReadUTF8();
            SecondsToExpiration = packet.ReadInt32();
            UsagePolicy         = packet.ReadInt32();
            OwnerId             = packet.ReadInt32();

            if (float.TryParse(Data, out float fResult))
            {
                State = int.Parse(Data);
            }

            string[] locations = Location.Split(' ');
            if (Location.IndexOf(":") == 0 && locations.Length >= 3) // False
            {
                Placement = locations[2];

                if (locations[0].Length <= 3 || locations[1].Length <= 2)
                {
                    return;
                }
                string firstLoc  = locations[0].Substring(3);
                string secondLoc = locations[1].Substring(2);

                locations = firstLoc.Split(',');
                if (locations.Length >= 2)
                {
                    Global    = new HPoint(int.Parse(locations[0]), int.Parse(locations[1]));
                    locations = secondLoc.Split(',');

                    if (locations.Length >= 2)
                    {
                        Local = new HPoint(int.Parse(locations[0]), int.Parse(locations[1]));
                    }
                }
            }
            else if (locations.Length >= 2) // True
            {
                Placement = locations[0];
                if (Placement == "rightwall" || Placement == "frontwall")
                {
                    Placement = "r";
                }
                else
                {
                    Placement = "l";
                }

                string[] coords = locations[1].Split(',');
                if (coords.Length >= 3)
                {
                    Y = float.Parse(coords[0]);
                    Z = float.Parse(coords[1]);
                }
            }
        }
示例#14
0
文件: HPerk.cs 项目: xnumad/Sulakore
        public static HPerk[] Parse(HPacket packet)
        {
            var perkAllowances = new HPerk[packet.ReadInt32()];

            for (int i = 0; i < perkAllowances.Length; i++)
            {
                perkAllowances[i] = new HPerk(packet.ReadUTF8(),
                                              packet.ReadUTF8(), packet.ReadBoolean());
            }
            return(perkAllowances);
        }
示例#15
0
        public HGroupEntry(HPacket packet)
        {
            Id             = packet.ReadInt32();
            Name           = packet.ReadUTF8();
            BadgeCode      = packet.ReadUTF8();
            PrimaryColor   = packet.ReadUTF8();
            SecondaryColor = packet.ReadUTF8();

            Favorite = packet.ReadBoolean();
            OwnerId  = packet.ReadInt32();
            HasForum = packet.ReadBoolean();
        }
示例#16
0
        public HWallItem(HPacket packet)
            : base(packet)
        {
            Id     = int.Parse(packet.ReadUTF8());
            TypeId = packet.ReadInt32();

            Location            = packet.ReadUTF8();
            State               = packet.ReadUTF8();
            SecondsToExpiration = packet.ReadInt32();
            UsagePolicy         = packet.ReadInt32();

            OwnerId = packet.ReadInt32();
        }
示例#17
0
        public static HSearchResult[] Parse(HPacket packet)
        {
            string searchCode = packet.ReadUTF8();
            string filter     = packet.ReadUTF8();

            var results = new HSearchResult[packet.ReadInt32()];

            for (int i = 0; i < results.Length; i++)
            {
                results[i] = new HSearchResult(packet);
            }
            return(results);
        }
示例#18
0
        public HPoll(HPacket packet)
        {
            Id = packet.ReadInt32();

            StartMessage = packet.ReadUTF8();
            EndMessage   = packet.ReadUTF8();

            Questions = new HPollQuestion[packet.ReadInt32()];
            for (int i = 0; i < Questions.Length; i++)
            {
                Questions[i] = new HPollQuestion(packet);
            }
            packet.ReadBoolean();
        }
示例#19
0
        public HSearchResult(HPacket packet)
        {
            SearchCode = packet.ReadUTF8();
            Text       = packet.ReadUTF8();

            ActionAllowed = packet.ReadInt32();
            ForceClosed   = packet.ReadBoolean();
            ViewMode      = packet.ReadInt32();

            Rooms = new HRoomEntry[packet.ReadInt32()];
            for (int i = 0; i < Rooms.Length; i++)
            {
                Rooms[i] = new HRoomEntry(packet);
            }
        }
示例#20
0
        public HUserSearchResult(HPacket packet)
        {
            Id    = packet.ReadInt32();
            Name  = packet.ReadUTF8();
            Motto = packet.ReadUTF8();

            IsOnline  = packet.ReadBoolean();
            CanFollow = packet.ReadBoolean();

            packet.ReadUTF8();

            Gender = packet.ReadInt32() == 1 ? HGender.Male : HGender.Female; //TODO: HExtension, ffs sulake
            Figure = packet.ReadUTF8();

            RealName = packet.ReadUTF8();
        }
示例#21
0
        public static HCatalogNode Parse(HPacket packet)
        {
            var    root = new HCatalogNode(packet);
            bool   newAdditionsAvailable = packet.ReadBoolean();
            string catalogType           = packet.ReadUTF8();

            return(root);
        }
示例#22
0
        public HPetInformation(HPacket packet)
        {
            Id   = packet.ReadInt32();
            Name = packet.ReadUTF8();

            Level    = packet.ReadInt32();
            MaxLevel = packet.ReadInt32();

            Experience    = packet.ReadInt32();
            MaxExperience = packet.ReadInt32();

            Energy    = packet.ReadInt32();
            MaxEnergy = packet.ReadInt32();

            Nutrition    = packet.ReadInt32();
            MaxNutrition = packet.ReadInt32();

            Scratches = packet.ReadInt32();
            OwnerId   = packet.ReadInt32();
            Age       = packet.ReadInt32();
            OwnerName = packet.ReadUTF8();

            BreedId = packet.ReadInt32();

            HasFreeSaddle = packet.ReadBoolean();
            IsRiding      = packet.ReadBoolean();

            SkillThresholds = new int[packet.ReadInt32()];
            for (int i = 0; i < SkillThresholds.Length; i++)
            {
                SkillThresholds[i] = packet.ReadInt32();
            }
            AccessRights = packet.ReadInt32();

            CanBreed   = packet.ReadBoolean();
            CanHarvest = packet.ReadBoolean();
            CanRevive  = packet.ReadBoolean();

            RarityLevel               = packet.ReadInt32();
            MaxWellBeingSeconds       = packet.ReadInt32();
            RemainingWellBeingSeconds = packet.ReadInt32();
            RemainingGrowingSeconds   = packet.ReadInt32();

            HasBreedingPermission = packet.ReadBoolean();
        }
示例#23
0
 public HAchievement(HPacket packet)
 {
     Name   = packet.ReadUTF8();
     Levels = new HAchievementLevel[packet.ReadInt32()];
     for (int i = 0; i < Levels.Length; i++)
     {
         Levels[i] = new HAchievementLevel(Name, packet);
     }
 }
示例#24
0
        public HRoomEntry(HPacket packet)
            : base(packet)
        {
            Id   = packet.ReadInt32();
            Name = packet.ReadUTF8();

            OwnerId   = packet.ReadInt32();
            OwnerName = packet.ReadUTF8();

            DoorMode     = packet.ReadInt32();
            UserCount    = packet.ReadInt32();
            MaxUserCount = packet.ReadInt32();

            Description = packet.ReadUTF8();
            TradeMode   = packet.ReadInt32();
            Ranking     = packet.ReadInt32();
            Category    = packet.ReadInt32();
            Stars       = packet.ReadInt32();

            Tags = new string[packet.ReadInt32()];
            for (int i = 0; i < Tags.Length; i++)
            {
                Tags[i] = packet.ReadUTF8();
            }

            HRoomFlags roomEntryBitmask = (HRoomFlags)packet.ReadInt32();

            if (roomEntryBitmask.HasFlag(HRoomFlags.HasCustomThumbnail))
            {
                ThumbnailUrl = packet.ReadUTF8();
            }
            if (roomEntryBitmask.HasFlag(HRoomFlags.HasGroup))
            {
                GroupId        = packet.ReadInt32();
                GroupName      = packet.ReadUTF8();
                GroupBadgeCode = packet.ReadUTF8();
            }
            if (roomEntryBitmask.HasFlag(HRoomFlags.HasAdvertisement))
            {
                AdName             = packet.ReadUTF8();
                AdDescription      = packet.ReadUTF8();
                AdExpiresInMinutes = packet.ReadInt32();
            }

            ShowOwner   = roomEntryBitmask.HasFlag(HRoomFlags.ShowOwner);
            AllowPets   = roomEntryBitmask.HasFlag(HRoomFlags.AllowPets);
            ShowEntryAd = roomEntryBitmask.HasFlag(HRoomFlags.ShowRoomAd);
        }
示例#25
0
        public HFriendData(HPacket packet)
        {
            Id       = packet.ReadInt32();
            Username = packet.ReadUTF8();
            Gender   = packet.ReadInt32() == 1 ? HGender.Male : HGender.Female;

            IsOnline   = packet.ReadBoolean();
            CanFollow  = packet.ReadBoolean();
            Figure     = packet.ReadUTF8();
            CategoryId = packet.ReadInt32();
            Motto      = packet.ReadUTF8();
            RealName   = packet.ReadUTF8();
            packet.ReadUTF8();

            IsPersisted = packet.ReadBoolean();
            packet.ReadBoolean();
            IsPocketHabboUser  = packet.ReadBoolean();
            RelationshipStatus = (HRelationship)packet.ReadUInt16();
        }
示例#26
0
        public new static CHItem[] Parse(HPacket packet)
        {
            packet.ReadInt32();
            packet.ReadInt32();

            var items = new CHItem[packet.ReadInt32()];

            for (int i = 0; i < items.Length; i++)
            {
                int pos = packet.Position + 4;
                packet.ReadUTF8(ref pos);
                pos += 16;

                items[i] = new CHItem(packet)
                {
                    ExtraData = packet.ReadUTF8(pos)
                };
            }
            return(items);
        }
示例#27
0
        public HCatalogNode(HPacket packet)
        {
            Visible = packet.ReadBoolean();

            Icon         = packet.ReadInt32();
            PageId       = packet.ReadInt32();
            PageName     = packet.ReadUTF8();
            Localization = packet.ReadUTF8();

            OfferIds = new int[packet.ReadInt32()];
            for (int i = 0; i < OfferIds.Length; i++)
            {
                OfferIds[i] = packet.ReadInt32();
            }

            Children = new HCatalogNode[packet.ReadInt32()];
            for (int i = 0; i < Children.Length; i++)
            {
                Children[i] = new HCatalogNode(packet);
            }
        }
示例#28
0
        public HUserProfile(HPacket packet)
        {
            Id               = packet.ReadInt32();
            Username         = packet.ReadUTF8();
            Motto            = packet.ReadUTF8();
            Figure           = packet.ReadUTF8();
            CreationDate     = packet.ReadUTF8();
            AchievementScore = packet.ReadInt32();
            FriendCount      = packet.ReadInt32();

            IsFriend            = packet.ReadBoolean();
            IsFriendRequestSent = packet.ReadBoolean();
            IsOnline            = packet.ReadBoolean();

            Groups = new HGroupEntry[packet.ReadInt32()];
            for (int i = 0; i < Groups.Length; i++)
            {
                Groups[i] = new HGroupEntry(packet);
            }
            LastAccessSinceInSeconds = packet.ReadInt32();
            OpenProfileView          = packet.ReadBoolean();
        }
示例#29
0
        private async Task HandleModuleDataAsync(ModuleInfo module)
        {
            try
            {
                while (module.Node.IsConnected)
                {
                    HPacket packet = await module.Node.ReceivePacketAsync().ConfigureAwait(false);

                    switch (packet.Id)
                    {
                    case 1:
                    {
                        string identifier = packet.ReadUTF8();
                        TaskCompletionSource <HPacket> handledDataSource = null;
                        if (module.DataAwaiters.TryGetValue(identifier, out handledDataSource))
                        {
                            handledDataSource.SetResult(packet);
                        }
                        else
                        {
                            Debugger.Break();
                        }
                        break;
                    }

                    case 2:
                    {
                        byte[] packetData = packet.ReadBytes(packet.ReadInt32(1), 5);
                        if (packet.ReadBoolean())     // IsOutgoing
                        {
                            await App.Master.Connection.SendToServerAsync(packetData).ConfigureAwait(false);
                        }
                        else
                        {
                            await App.Master.Connection.SendToClientAsync(packetData).ConfigureAwait(false);
                        }
                        break;
                    }
                    }
                }
            }
            finally
            {
                Dispatcher.Invoke(() =>
                {
                    module.Dispose();
                    Modules.Remove(module);
                });
            }
        }
示例#30
0
        public HCatalogOffer(HPacket packet)
        {
            Id          = packet.ReadInt32();
            DisplayName = packet.ReadUTF8();
            IsRentable  = packet.ReadBoolean();

            CreditCost        = packet.ReadInt32();
            OtherCurrencyCost = packet.ReadInt32();
            OtherCurrencyType = packet.ReadInt32();
            CanGift           = packet.ReadBoolean();

            Products = new HCatalogProduct[packet.ReadInt32()];
            for (int i = 0; i < Products.Length; i++)
            {
                Products[i] = new HCatalogProduct(packet);
            }

            ClubLevel   = packet.ReadInt32();
            IsPet       = packet.ReadBoolean();
            AllowBundle = packet.ReadBoolean();

            PreviewImage = packet.ReadUTF8();
        }