示例#1
0
        public HAchievementLevel(string name, HPacket packet)
        {
            Level      = packet.ReadInt32();
            PointLimit = packet.ReadInt32();

            BadgeId = "ACH_" + name + Level;
        }
示例#2
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();
            }
        }
示例#3
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();
            }
        }
示例#4
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;
            }
            }
        }
示例#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 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());
            }
        }
示例#7
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);
        }
示例#8
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]);
                }
            }
        }
示例#9
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);
            }
        }
示例#10
0
文件: HItem.cs 项目: Nestor/Tanji-1
        public static IEnumerable <HItem> Parse(HPacket packet)
        {
            packet.ReadInt32();
            packet.ReadInt32();
            int itemCount = packet.ReadInt32();

            for (int i = 0; i < itemCount; i++)
            {
                yield return(new HItem(packet));
            }
        }
示例#11
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();
        }
示例#12
0
文件: HItem.cs 项目: scottstamp/Geode
        public static HItem[] Parse(HPacket packet)
        {
            packet.ReadInt32();
            packet.ReadInt32();
            var items = new HItem[packet.ReadInt32()];

            for (int i = 0; i < items.Length; i++)
            {
                items[i] = new HItem(packet);
            }
            return(items);
        }
示例#13
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();
        }
示例#14
0
        public static HFriendData[] Parse(HPacket packet)
        {
            int removedFriends = packet.ReadInt32();
            int addedFriends   = packet.ReadInt32();

            var friends = new HFriendData[packet.ReadInt32()];

            for (int i = 0; i < friends.Length; i++)
            {
                friends[i] = new HFriendData(packet);
            }
            return(friends);
        }
示例#15
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();
            }
        }
示例#16
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();
        }
示例#17
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();
            }
        }
示例#18
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();
            }
        }
示例#19
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());
            }
        }
示例#20
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);
            }
        }
示例#21
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); }
        }
示例#22
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();
        }
示例#23
0
        public static (HUserSearchResult[] friends, HUserSearchResult[] others) Parse(HPacket packet)
        {
            var friends = new HUserSearchResult[packet.ReadInt32()];

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

            var others = new HUserSearchResult[packet.ReadInt32()];

            for (int i = 0; i < others.Length; i++)
            {
                others[i] = new HUserSearchResult(packet);
            }
            return(friends, others);
        }
示例#24
0
        public virtual void OnPacketIntercept(HPacket packet)
        {
            int    stringifiedInteceptionDataLength = packet.ReadInt32();
            string stringifiedInterceptionData      = Encoding.GetEncoding("latin1").GetString(packet.ReadBytes(stringifiedInteceptionDataLength));

            var dataInterceptedArgs = new DataInterceptedEventArgs(stringifiedInterceptionData);

            OnDataIntercept(dataInterceptedArgs);
        }
示例#25
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);
     }
 }
示例#26
0
        public static IEnumerable <HEntityAction> Parse(HPacket packet)
        {
            int entityActionCount = packet.ReadInt32();

            for (int i = 0; i < entityActionCount; i++)
            {
                yield return(new HEntityAction(packet));
            }
        }
示例#27
0
        public static HEntity[] Parse(HPacket packet)
        {
            var entities = new HEntity[packet.ReadInt32()];

            for (int i = 0; i < entities.Length; i++)
            {
                entities[i] = new HEntity(packet);
            }
            return(entities);
        }
示例#28
0
        public static HFloorItem[] Parse(HPacket packet)
        {
            int ownersCount = packet.ReadInt32();
            var owners = new Dictionary<int, string>(ownersCount);
            for (int i = 0; i < ownersCount; i++)
            {
                owners.Add(packet.ReadInt32(), packet.ReadUTF8());
            }

            var furniture = new HFloorItem[packet.ReadInt32()];
            for (int i = 0; i < furniture.Length; i++)
            {
                var furni = new HFloorItem(packet);
                furni.OwnerName = owners[furni.OwnerId];

                furniture[i] = furni;
            }
            return furniture;
        }
示例#29
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();
        }
示例#30
0
        public static HEntityUpdate[] Parse(HPacket packet)
        {
            var updates = new HEntityUpdate[packet.ReadInt32()];

            for (int i = 0; i < updates.Length; i++)
            {
                updates[i] = new HEntityUpdate(packet);
            }
            return(updates);
        }