コード例 #1
0
ファイル: HFloorItem.cs プロジェクト: scottstamp/HarbleNet
        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());
            }
        }
コード例 #2
0
ファイル: ModulesViewModel.cs プロジェクト: Nestor/Tanji-1
        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); }
        }
コード例 #3
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();
            }
        }
コード例 #4
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();
            }
        }
コード例 #5
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();
            }
        }
コード例 #6
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());
            }
        }
コード例 #7
0
        public override void WriteTo(HPacket packet)
        {
            packet.Write((char)Type);
            switch (Type)
            {
            case HProductType.Badge:
            {
                packet.Write(ExtraData);
                break;
            }

            default:
            {
                packet.Write(ClassId);
                packet.Write(ExtraData);
                packet.Write(ProductCount);

                packet.Write(IsLimited);
                if (IsLimited)
                {
                    packet.Write(LimitedTotal);
                    packet.Write(LimitedRemaining);
                }
                break;
            }
            }
        }
コード例 #8
0
ファイル: HAchievementLevel.cs プロジェクト: xnumad/Sulakore
        public HAchievementLevel(string name, HPacket packet)
        {
            Level      = packet.ReadInt32();
            PointLimit = packet.ReadInt32();

            BadgeId = "ACH_" + name + Level;
        }
コード例 #9
0
ファイル: HCatalogPage.cs プロジェクト: scottstamp/HarbleNet
        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);
        }
コード例 #10
0
        public virtual HPacket ToPacket()
        {
            HPacket packet = Format.CreatePacket(PacketId);

            WriteTo(packet);
            return(packet);
        }
コード例 #11
0
        public static HPacket ToPacket(ushort packetId, HFormat format, IList <HWallItem> wallItems)
        {
            HPacket packet = format.CreatePacket(packetId);

            packet.Write(0);
            var owners = new Dictionary <int, string>();

            foreach (HWallItem wallItem in wallItems)
            {
                if (owners.ContainsKey(wallItem.OwnerId))
                {
                    continue;
                }
                owners.Add(wallItem.OwnerId, wallItem.OwnerName);

                packet.Write(wallItem.OwnerId);
                packet.Write(wallItem.OwnerName);
            }
            packet.Write(owners.Count, 0);

            packet.Write(wallItems.Count);
            foreach (HWallItem wallItem in wallItems)
            {
                wallItem.WriteTo(packet);
            }

            return(packet);
        }
コード例 #12
0
ファイル: HConnection.cs プロジェクト: dank074/AirLogger
        private async Task InterceptOutgoingAsync(DataInterceptedEventArgs continuedFrom = null)
        {
            HPacket packet = await Local.ReceivePacketAsync().ConfigureAwait(false);

            if (packet != null)
            {
                var args = new DataInterceptedEventArgs(packet, ++_outSteps, true,
                                                        InterceptOutgoingAsync, ServerRelayer);

                try { OnDataOutgoing(args); }
                catch { args.Restore(); }

                if (!args.IsBlocked && !args.WasRelayed)
                {
                    await SendToServerAsync(args.Packet).ConfigureAwait(false);
                }
                if (!args.HasContinued)
                {
                    args.Continue();
                }
            }
            else
            {
                Disconnect();
            }
        }
コード例 #13
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;
            }
            }
        }
コード例 #14
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();
            }
        }
コード例 #15
0
ファイル: HFurniture.cs プロジェクト: Nestor/Tanji-1
        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();
            }
        }
コード例 #16
0
ファイル: HConnection.cs プロジェクト: dank074/AirLogger
        private async Task InterceptIncomingAsync(DataInterceptedEventArgs continuedFrom = null)
        {
            HPacket packet = await Remote.ReceivePacketAsync().ConfigureAwait(false);

            if (packet != null)
            {
                var args = new DataInterceptedEventArgs(packet, ++_inSteps, false,
                                                        InterceptIncomingAsync, ClientRelayer);

                try { OnDataIncoming(args); }
                catch { args.Restore(); }

                if (!args.IsBlocked && !args.WasRelayed)
                {
                    await SendToClientAsync(args.Packet).ConfigureAwait(false);
                }
                if (!args.HasContinued)
                {
                    args.Continue();
                }
            }
            else
            {
                Disconnect();
            }
        }
コード例 #17
0
ファイル: Extension.cs プロジェクト: scottstamp/Geode
 private void Extension_OnDoubleClickEvent(object sender, HPacket e) // G-Earth extension play button clicked.
 {
     if (IsConnected)
     {
         BotShowAndWelcome();
     }
 }
コード例 #18
0
ファイル: HSlideObjectBundle.cs プロジェクト: xnumad/Sulakore
        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);
            }
        }
コード例 #19
0
ファイル: HCatalogPage.cs プロジェクト: scottstamp/HarbleNet
        public override void WriteTo(HPacket packet)
        {
            packet.Write(Id);
            packet.Write(CatalogType);
            packet.Write(LayoutCode);

            packet.Write(Images.Length);
            foreach (string image in Images)
            {
                packet.Write(image);
            }

            packet.Write(Texts.Length);
            foreach (string text in Texts)
            {
                packet.Write(text);
            }

            packet.Write(Offers.Length);
            foreach (HCatalogOffer offer in Offers)
            {
                offer.WriteTo(packet);
            }

            packet.Write(OfferId);
            packet.Write(AcceptSeasonCurrencyAsCredits);

            // TODO: ????????????????????
            // IsFrontPage??
        }
コード例 #20
0
 public virtual void OnDoubleClick(HPacket packet)
 {
     if (DisableEventHandlers == false)
     {
         try { OnDoubleClickEvent.Invoke(this, packet); } catch { }; //Invoke event handler
     }
 }
コード例 #21
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();
            }
        }
コード例 #22
0
        public HEntity(HPacket packet)
            : base(packet)
        {
            Id       = packet.ReadInt32();
            Name     = packet.ReadUTF8();
            Motto    = packet.ReadUTF8();
            FigureId = packet.ReadUTF8();
            Index    = packet.ReadInt32();

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

            Remnants.Enqueue(packet.ReadInt32());
            EntityType = packet.ReadInt32();

            switch (EntityType)
            {
            case 1:
            {
                Gender = (HGender)packet.ReadUTF8().ToLower()[0];
                Remnants.Enqueue(packet.ReadInt32());
                Remnants.Enqueue(packet.ReadInt32());
                FavoriteGroup = packet.ReadUTF8();
                Remnants.Enqueue(packet.ReadUTF8());
                Remnants.Enqueue(packet.ReadInt32());
                Remnants.Enqueue(packet.ReadBoolean());
                break;
            }

            case 2:
            {
                Remnants.Enqueue(packet.ReadInt32());
                Remnants.Enqueue(packet.ReadInt32());
                Remnants.Enqueue(packet.ReadUTF8());
                Remnants.Enqueue(packet.ReadInt32());
                Remnants.Enqueue(packet.ReadBoolean());
                Remnants.Enqueue(packet.ReadBoolean());
                Remnants.Enqueue(packet.ReadBoolean());
                Remnants.Enqueue(packet.ReadBoolean());
                Remnants.Enqueue(packet.ReadBoolean());
                Remnants.Enqueue(packet.ReadBoolean());
                Remnants.Enqueue(packet.ReadInt32());
                Remnants.Enqueue(packet.ReadUTF8());
                break;
            }

            case 4:
            {
                Remnants.Enqueue(packet.ReadUTF8());
                Remnants.Enqueue(packet.ReadInt32());
                Remnants.Enqueue(packet.ReadUTF8());
                for (int j = packet.ReadInt32(); j > 0; j--)
                {
                    Remnants.Enqueue(packet.ReadUInt16());
                }
                break;
            }
            }
        }
コード例 #23
0
ファイル: HWallItem.cs プロジェクト: scottstamp/Geode
        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]);
                }
            }
        }
コード例 #24
0
ファイル: HCatalogNode.cs プロジェクト: xnumad/Sulakore
        public static HCatalogNode Parse(HPacket packet)
        {
            var    root = new HCatalogNode(packet);
            bool   newAdditionsAvailable = packet.ReadBoolean();
            string catalogType           = packet.ReadUTF8();

            return(root);
        }
コード例 #25
0
ファイル: HNode.cs プロジェクト: LilithRainbows/HabboAir-1
 public Task <int> SendPacketAsync(string signature)
 {
     if (OutFormat == null)
     {
         throw new NullReferenceException("Outgoing format cannot be null.");
     }
     return(SendAsync(HPacket.ToBytes(OutFormat, signature)));
 }
コード例 #26
0
        public override void WriteTo(HPacket packet)
        {
            packet.Write((int)Remnants.Dequeue());

            string unknown1 = (string)Remnants.Dequeue();

            packet.Write(unknown1);
        }
コード例 #27
0
        public HData(HPacket packet)
        {
            _remnantQueue = new Dictionary <int, object>();

            PacketId = packet.Id;
            Format   = packet.Format;
            Remnants = new Queue <object>();
        }
コード例 #28
0
        /// <summary>Gets a histogram of the specified channel. The histogram contains 28 bins each holding the number of pixels that occurred within that bin's range of color values. So bin 0 contains the number of red pixels that were between 16 and 23 in value. The value returned in each bin is the number of pixels in that bin divided by the total number of pixels multiplied 256 and capped at 255.</summary>
        public HPacket GetHistogram(Channel channel)
        {
            HPacketReader rdr = new HPacketReader();

            HPacket hpak = _c.SendCommandGetPacket(rdr, "GH", (byte)channel);

            return(hpak);
        }
コード例 #29
0
ファイル: HEntityAction.cs プロジェクト: Nestor/Tanji-1
        public static IEnumerable <HEntityAction> Parse(HPacket packet)
        {
            int entityActionCount = packet.ReadInt32();

            for (int i = 0; i < entityActionCount; i++)
            {
                yield return(new HEntityAction(packet));
            }
        }
コード例 #30
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);
        }