예제 #1
0
 public void WindowLoop()
 {
     Console.WriteLine(@"Enjoy!");
     while (true)
     {
         var marg = new Win32.Margins
         {
             Left   = 0,
             Top    = 0,
             Right  = 2560,
             Bottom = 1440
         };
         Win32.DwmExtendFrameIntoClientArea(_handle, ref marg);
         try
         {
             if (_handle != IntPtr.Zero)
             {
                 Win32.SetWindowPos(_handle, (IntPtr)Win32.SpecialWindowHandles.HWND_TOPMOST, 0, 0, 0, 0,
                                    Win32.SetWindowPosFlags.SWP_NOMOVE | Win32.SetWindowPosFlags.SWP_NOSIZE);
             }
             else
             {
                 break;
             }
         }
         catch
         {
             Thread.Sleep(15);
             continue;
         }
         Thread.Sleep(1000 / 144);
     }
 }
예제 #2
0
        private static int internalExtendGlass(IntPtr windowHandle, int left, int right, int top, int bottom)
        {
            var retVal = -1; // Returning less than zero will indicate that Aero Glass could not be extended

            // Calculate the Aero Glass Margins
            Win32.Margins margins = Win32.GetDpiAdjustedMargins(windowHandle, left, right, top, bottom);

            try
            {
                // Actually Enable Aero Glass
                retVal = Win32.DwmExtendFrameIntoClientArea(windowHandle, ref margins);
            }
            catch (Exception)
            {
                retVal = -1;
            }

            return(retVal);
        }
예제 #3
0
            public static Win32.Margins GetDpiAdjustedMargins(IntPtr windowHandle, int left, int right, int top, int bottom)
            {
                // Get System Dpi
                System.Drawing.Graphics desktop = System.Drawing.Graphics.FromHwnd(windowHandle);
                float DesktopDpiX = desktop.DpiX;
                float DesktopDpiY = desktop.DpiY;

                // Set Margins
                Win32.Margins margins = new Win32.Margins();

                // Note that the default desktop Dpi is 96dpi. The  margins are
                // adjusted for the system Dpi.
                margins.Left   = Convert.ToInt32(left * (DesktopDpiX / 96));
                margins.Right  = Convert.ToInt32(right * (DesktopDpiX / 96));
                margins.Top    = Convert.ToInt32(top * (DesktopDpiX / 96));
                margins.Bottom = Convert.ToInt32(bottom * (DesktopDpiX / 96));

                return(margins);
            }
예제 #4
0
        public Form1()
        {
            InitializeComponent();
            //Make the window's border completely transparant

            // ANTI BATTLEYE SIG SCAN ;)
            this.Text = Guid.NewGuid().ToString().Replace("-", "");

            // TRANSPARENCY KEY
            this.BackColor = System.Drawing.Color.Black;

            // SETTINGS
            this.FormBorderStyle = FormBorderStyle.None;
            this.ShowIcon        = false;
            this.ShowInTaskbar   = false;
            this.TopMost         = true;
            this.WindowState     = FormWindowState.Maximized;

            // MAKE WINDOW TRANSPARENT
            Win32.SetWindowLong(this.Handle, Win32.GWL_EXSTYLE, (IntPtr)(Win32.GetWindowLong(this.Handle, Win32.GWL_EXSTYLE) ^ Win32.WS_EX_LAYERED ^ Win32.WS_EX_TRANSPARENT));

            // MAKE WINDOW SOLID
            Win32.SetLayeredWindowAttributes(this.Handle, 0, 255, Win32.LWA_ALPHA);

            var targetProperties = new HwndRenderTargetProperties
            {
                Hwnd           = this.Handle,
                PixelSize      = new Size2(this.Bounds.Right - this.Bounds.Left, this.Bounds.Bottom - this.Bounds.Top),
                PresentOptions = PresentOptions.Immediately
            };

            var prop = new RenderTargetProperties(RenderTargetType.Hardware, new PixelFormat(Format.B8G8R8A8_UNorm, SharpDX.Direct2D1.AlphaMode.Premultiplied), 0, 0, RenderTargetUsage.None, FeatureLevel.Level_DEFAULT);

            var d3dFactory = new SharpDX.Direct2D1.Factory();

            var device = new WindowRenderTarget(d3dFactory, prop, targetProperties)
            {
                TextAntialiasMode = TextAntialiasMode.Cleartype,
                AntialiasMode     = AntialiasMode.Aliased
            };

            var url      = "http://127.0.0.1:8888/api/values/5";
            var dxthread = new Thread(() =>
            {
                var brushWhite  = new SolidColorBrush(device, RawColorFromColor(Color.White));
                var brushBlack  = new SolidColorBrush(device, RawColorFromColor(Color.Black));
                var brushGreen  = new SolidColorBrush(device, RawColorFromColor(Color.Green));
                var brushRed    = new SolidColorBrush(device, RawColorFromColor(Color.Red));
                var brushPurple = new SolidColorBrush(device, RawColorFromColor(Color.Purple));


                var fontFactory = new SharpDX.DirectWrite.Factory();

                var fontConsolas = new SharpDX.DirectWrite.TextFormat(fontFactory, "Consolas", 15);
                var fontESP      = new SharpDX.DirectWrite.TextFormat(fontFactory, "Consolas", 12);

                JSON_DATA json_data = null;

                using (var w = new WebClient())
                {
                    while (!w.IsBusy)
                    {
                        // attempt to download JSON data as a string
                        try
                        {
                            var str   = w.DownloadString(url);
                            json_data = JsonConvert.DeserializeObject <JSON_DATA>(str);
                        }
                        catch (Exception)
                        {
                        }
                        finally
                        {
                            device.BeginDraw();
                            device.Clear(null);

                            #region RADAR

                            int radarX          = 20;
                            int radarY          = 140;
                            int radarSize       = 200;
                            int radarBorder     = 1;
                            Vector2 centerpoint = new Vector2(radarX + radarSize / 2, radarY + radarSize / 2);

                            // TODO: INTEGRATE INTO MINIMAP
                            if (false)
                            {
                                var radarOuterRectangle = new RawRectangleF(radarX, radarY, radarX + radarSize,
                                                                            radarY + radarSize);
                                var radarRectangle = new RawRectangleF(radarX + radarBorder, radarY + radarBorder,
                                                                       radarX + radarSize - radarBorder, radarY + radarSize - radarBorder);

                                var radarCenterRectangle = new RoundedRectangle()
                                {
                                    RadiusX = 4,
                                    RadiusY = 4,
                                    Rect    = new RawRectangleF(centerpoint.X, centerpoint.Y, centerpoint.X + 4,
                                                                centerpoint.Y + 4)
                                };

                                device.FillRectangle(radarRectangle, brushBlack);
                                device.DrawRectangle(radarRectangle, brushWhite);

                                device.FillRoundedRectangle(radarCenterRectangle, brushGreen);
                            }

                            #endregion


                            var vecLocalLocation = new Model.Vector3
                            {
                                X = json_data.camera[1].X,
                                Y = json_data.camera[1].Y,
                                Z = json_data.camera[1].Z
                            };

                            var PlayerCameraManager = new APlayerCameraManager
                            {
                                CameraCache = new FCameraCacheEntry
                                {
                                    POV = new FMinimalViewInfo
                                    {
                                        Fov      = json_data.camera[2].X,
                                        Location = new Model.Vector3
                                        {
                                            X = json_data.camera[1].X,
                                            Y = json_data.camera[1].Y,
                                            Z = json_data.camera[1].Z
                                        },
                                        Rotation = new Model.FRotator
                                        {
                                            Pitch = json_data.camera[0].X,
                                            Yaw   = json_data.camera[0].Y,
                                            Roll  = json_data.camera[0].Z
                                        }
                                    }
                                }
                            };

                            #region 车

                            if (false)
                            {
                                foreach (var v in json_data.vehicles)
                                {
                                    var vecActorLocation = new Vector3 {
                                        X = v.rx, Y = v.ry, Z = v.rz
                                    };
                                    var vecRelativePos = vecLocalLocation - vecActorLocation;
                                    var lDeltaInMeters = vecRelativePos.Length / 100;


                                    Vector2 screenlocation;
                                    WorldToScreen(vecActorLocation, PlayerCameraManager, out screenlocation);

                                    DrawText($"[{v.v}] {(int)lDeltaInMeters}m", (int)screenlocation.X,
                                             (int)screenlocation.Y, brushRed, fontFactory, fontESP, device);
                                }
                            }

                            #endregion


                            #region 物品

                            if (false)
                            {
                                foreach (var v in json_data.items)
                                {
                                    var vecActorLocation = new Vector3 {
                                        X = v.rx, Y = v.ry, Z = v.rz
                                    };
                                    var vecRelativePos = vecLocalLocation - vecActorLocation;
                                    var lDeltaInMeters = vecRelativePos.Length / 100;

                                    Vector2 screenlocation;
                                    WorldToScreen(vecActorLocation, PlayerCameraManager, out screenlocation);

                                    DrawText($"{v.n}", (int)screenlocation.X,
                                             (int)screenlocation.Y, brushPurple, fontFactory, fontESP, device);
                                }
                            }

                            #endregion

                            #region 人物
                            var playerList  = json_data.players.OrderBy(z => z.id).ToList();
                            var localPlayer = playerList[0];
                            foreach (var player in playerList)
                            {
                                if (player.health > 0 && player.id != 0 && localPlayer.t != player.t)
                                {
                                    var vecPlayerLocation =
                                        new Vector3 {
                                        X = player.rx, Y = player.ry, Z = player.rz
                                    };
                                    var vecRelativePos = vecLocalLocation - vecPlayerLocation;
                                    var lDeltaInMeters = vecRelativePos.Length / 100;

                                    #region Line ESP

                                    // 线
                                    if (lDeltaInMeters <= 200 && lDeltaInMeters > 5 &&
                                        json_data.players.Count <= 50)
                                    {
                                        Vector2 screenlocation;
                                        WorldToScreen(vecPlayerLocation, PlayerCameraManager, out screenlocation);

                                        device.DrawLine(new RawVector2(2560 / 2, 1440),
                                                        new RawVector2(screenlocation.X, screenlocation.Y), brushWhite);
                                    }
                                    #endregion

                                    #region Distance ESP

                                    // if (CheatSettings.DistanceESP)
                                    if (lDeltaInMeters > 5)
                                    {
                                        Vector2 screenlocation;
                                        WorldToScreen(vecPlayerLocation, PlayerCameraManager, out screenlocation);

                                        DrawText($"HP:{(int)player.health} {(int)lDeltaInMeters}m",
                                                 (int)screenlocation.X,
                                                 (int)screenlocation.Y, lDeltaInMeters >= 200 ? brushGreen : brushRed,
                                                 fontFactory, fontESP, device);
                                    }

                                    #endregion

                                    #region Radar

                                    if (false)
                                    {
                                        if (lDeltaInMeters <= radarSize / 2 /*DISTANCE FROM CENTER TO EDGE*/)
                                        {
                                            Vector2 screenpos = centerpoint + vecRelativePos.To2D() / 100;

                                            var radarPlayerRectangle = new RoundedRectangle()
                                            {
                                                RadiusX = 4,
                                                RadiusY = 4,
                                                Rect    = new RawRectangleF(screenpos.X, screenpos.Y, screenpos.X + 5,
                                                                            screenpos.Y + 5)
                                            };

                                            // DRAW ENEMY
                                            device.FillRoundedRectangle(radarPlayerRectangle, brushRed);
                                        }
                                    }

                                    #endregion
                                }
                            }
                        }

                        #endregion



                        // DRAW END
                        device.EndDraw();

                        Thread.Sleep(1000 / 60);
                    }
                }
            });

            dxthread.IsBackground = true;
            dxthread.Start();

            var marg = new Win32.Margins();

            marg.Left   = 0;
            marg.Top    = 0;
            marg.Right  = this.Width;
            marg.Bottom = this.Height;
            Win32.DwmExtendFrameIntoClientArea(this.Handle, ref marg);
        }
예제 #5
0
        public OverlayForm()
        {
            InitializeComponent();

            // ANTI BATTLEYE SIG SCAN ;)
            this.Text = Guid.NewGuid().ToString().Replace("-", "");

            // TRANSPARENCY KEY
            this.BackColor = System.Drawing.Color.Black;

            // SETTINGS
            this.FormBorderStyle = FormBorderStyle.None;
            this.ShowIcon        = false;
            this.ShowInTaskbar   = false;
            this.TopMost         = true;
            this.WindowState     = FormWindowState.Maximized;

            // MAKE WINDOW TRANSPARENT
            Win32.SetWindowLong(this.Handle, Win32.GWL_EXSTYLE, (IntPtr)(Win32.GetWindowLong(this.Handle, Win32.GWL_EXSTYLE) ^ Win32.WS_EX_LAYERED ^ Win32.WS_EX_TRANSPARENT));

            // MAKE WINDOW SOLID
            Win32.SetLayeredWindowAttributes(this.Handle, 0, 255, Win32.LWA_ALPHA);

            var targetProperties = new HwndRenderTargetProperties
            {
                Hwnd           = this.Handle,
                PixelSize      = new Size2(this.Bounds.Right - this.Bounds.Left, this.Bounds.Bottom - this.Bounds.Top),
                PresentOptions = PresentOptions.Immediately
            };

            var prop = new RenderTargetProperties(RenderTargetType.Hardware, new PixelFormat(Format.B8G8R8A8_UNorm, SharpDX.Direct2D1.AlphaMode.Premultiplied), 0, 0, RenderTargetUsage.None, FeatureLevel.Level_DEFAULT);

            var d3dFactory = new SharpDX.Direct2D1.Factory();

            var device = new WindowRenderTarget(d3dFactory, prop, targetProperties)
            {
                TextAntialiasMode = TextAntialiasMode.Cleartype,
                AntialiasMode     = AntialiasMode.Aliased
            };

            var dxthread = new Thread(() =>
            {
                var brushWhite  = new SolidColorBrush(device, RawColorFromColor(Color.White));
                var brushBlack  = new SolidColorBrush(device, RawColorFromColor(Color.Black));
                var brushGreen  = new SolidColorBrush(device, RawColorFromColor(Color.Green));
                var brushRed    = new SolidColorBrush(device, RawColorFromColor(Color.Red));
                var brushPurple = new SolidColorBrush(device, RawColorFromColor(Color.Purple));

                var fontFactory = new SharpDX.DirectWrite.Factory();

                var fontConsolas = new SharpDX.DirectWrite.TextFormat(fontFactory, "Consolas", 15);
                var fontESP      = new SharpDX.DirectWrite.TextFormat(fontFactory, "Consolas", 10);

                while (true)
                {
                    device.BeginDraw();
                    device.Clear(null);

                    if (CheatSettings.Visuals)
                    {
                        var ulocalplayer     = G.OwningGameInstance.LocalPlayer;
                        var localplayer      = AActor.GetLocalPlayer();
                        var vecLocalLocation = localplayer.Location;

                        //DrawText($"BodyHitImpact: {localplayer.WeaponProcessor.EquippedWeapons.ReadValue(0, true).WeaponConfig.PhysicalBodyHitImpactPower}", 50, 50, brushWhite, fontFactory, fontESP, device);

                        #region RADAR
                        int radarX          = 20;
                        int radarY          = 140;
                        int radarSize       = 200;
                        int radarBorder     = 1;
                        Vector2 centerpoint = new Vector2(radarX + radarSize / 2, radarY + radarSize / 2);

                        // TODO: INTEGRATE INTO MINIMAP
                        if (CheatSettings.RadarESP)
                        {
                            var radarOuterRectangle = new RawRectangleF(radarX, radarY, radarX + radarSize, radarY + radarSize);
                            var radarRectangle      = new RawRectangleF(radarX + radarBorder, radarY + radarBorder, radarX + radarSize - radarBorder, radarY + radarSize - radarBorder);

                            var radarCenterRectangle = new RoundedRectangle()
                            {
                                RadiusX = 4,
                                RadiusY = 4,
                                Rect    = new RawRectangleF(centerpoint.X, centerpoint.Y, centerpoint.X + 4, centerpoint.Y + 4)
                            };

                            device.FillRectangle(radarRectangle, brushBlack);
                            device.DrawRectangle(radarRectangle, brushWhite);

                            device.FillRoundedRectangle(radarCenterRectangle, brushGreen);
                        }
                        #endregion

                        #region DEBUG
                        if (CheatSettings.LogIDs)
                        {
                            foreach (var Actor in G.Entities.ToList())
                            {
                                var vecActorLocation = Actor.Location;
                                var vecRelativePos   = vecLocalLocation - vecActorLocation;

                                Vector2 screenlocation;
                                WorldToScreen(vecActorLocation, ulocalplayer.PlayerController.PlayerCameraManager, out screenlocation);

                                DrawText($"[{Actor.Id}] {G.Names[Actor.Id]}", (int)screenlocation.X, (int)screenlocation.Y, brushWhite, fontFactory, fontESP, device);
                            }
                        }
                        #endregion

                        #region VEHICLE ESP
                        if (CheatSettings.VehicleESP)
                        {
                            foreach (var Actor in G.Vehicles.ToList())
                            {
                                var vecActorLocation = Actor.Location;
                                var vecRelativePos   = vecLocalLocation - vecActorLocation;
                                var lDeltaInMeters   = vecRelativePos.Length / 100;

                                Vector2 screenlocation;
                                WorldToScreen(vecActorLocation, ulocalplayer.PlayerController.PlayerCameraManager, out screenlocation);

                                /*
                                 * UAZ: 76152 - 76156 - 76166 - 76165
                                 * Dacia: 75657 - 75653 - 75665 - 75679
                                 * Buggy: 75371 - 75375 - 75379
                                 * Jeep: 76157
                                 * Motorbike: 75820
                                 * Boat: 75301
                                 */

                                string szVehicleName = string.Empty;

                                switch (Actor.Id)
                                {
                                /*UAZ*/
                                case 76152:
                                case 76156:
                                case 76166:
                                case 76165:
                                case 76169:
                                    szVehicleName = "UAZ";
                                    break;

                                /*Dacia*/
                                case 75657:
                                case 75653:
                                case 75665:
                                case 75679:
                                case 75675:
                                    szVehicleName = "Dacia";
                                    break;

                                /*Buggy*/
                                case 75371:
                                case 75375:
                                case 75379:
                                case 75401:
                                    szVehicleName = "Buggy";
                                    break;

                                /*Jeep*/
                                case 76157:
                                    szVehicleName = "Jeep";
                                    break;

                                /*Boat*/
                                case 75301:
                                    szVehicleName = "Boat";
                                    break;

                                /*Motorbike*/
                                case 75820:
                                    szVehicleName = "Motorbike";
                                    break;
                                }

                                if (szVehicleName != string.Empty)
                                {
                                    DrawText($"[{szVehicleName}] {(int)lDeltaInMeters}m", (int)screenlocation.X, (int)screenlocation.Y, brushRed, fontFactory, fontESP, device);
                                }
                            }
                        }
                        #endregion

                        #region LOOT ESP
                        // Doesnt work
                        if (CheatSettings.LootESP)
                        {
                            foreach (var DroppedItemGroup in G.Entities.ToList().Where(x => x.IsDroppedItemGroup))
                            {
                                TArray <pADroppedItem> array = DroppedItemGroup.DroppedItemArray;

                                for (int nIndex = 0; nIndex < array.Count; nIndex++)
                                {
                                    var item  = array.ReadValue(nIndex, false);
                                    var actor = M.Read <AActor>(item.pActor);

                                    if (actor.IsDroppedItemInteractionComponent)
                                    {
                                        var vecItemLocation = DroppedItemGroup.RootComponent.RelativeLocation + M.Read <Vector3>(actor.BasePointer + 0x0230);
                                        var pUItem          = M.Read <IntPtr>(actor.BasePointer + 0x0220);
                                        string szName       = M.Read <FText>(pUItem + 0x0040).fstring.ToString();

                                        Vector2 screenlocation;
                                        WorldToScreen(vecItemLocation, ulocalplayer.PlayerController.PlayerCameraManager, out screenlocation);
                                        DrawText(szName, (int)screenlocation.X, (int)screenlocation.Y, brushWhite, fontFactory, fontESP, device);
                                        Console.WriteLine($"Drawing {szName}/{G.Names[actor.Id]} at {vecItemLocation}");
                                    }
                                }
                            }
                        }
                        #endregion

                        #region PlAYER LOOP
                        if (CheatSettings.DistanceESP || CheatSettings.RadarESP || CheatSettings.LineESP)
                        {
                            var vecLocalEyeLocation = localplayer.EyeLocation;
                            var myangles            = ulocalplayer.PlayerController.ControlRotation;

                            foreach (var player in G.Players.ToList())
                            {
                                var vecPlayerLocation = player.Location;
                                var vecRelativePos    = vecLocalLocation - vecPlayerLocation;
                                var lDeltaInMeters    = vecRelativePos.Length / 100;

                                #region Line ESP
                                if (CheatSettings.LineESP)
                                {
                                    Vector2 screenlocation;
                                    WorldToScreen(vecPlayerLocation, ulocalplayer.PlayerController.PlayerCameraManager, out screenlocation);

                                    device.DrawLine(new RawVector2(1920 / 2, 1080), new RawVector2(screenlocation.X, screenlocation.Y), brushWhite);
                                }
                                #endregion

                                #region Distance ESP
                                if (CheatSettings.DistanceESP)
                                {
                                    Vector2 screenlocation;
                                    WorldToScreen(vecPlayerLocation, ulocalplayer.PlayerController.PlayerCameraManager, out screenlocation);

                                    DrawText($"[Player] {(int)lDeltaInMeters}m", (int)screenlocation.X, (int)screenlocation.Y, brushPurple, fontFactory, fontESP, device);
                                }
                                #endregion

                                #region Radar
                                if (CheatSettings.RadarESP)
                                {
                                    if (lDeltaInMeters <= radarSize / 2 /*DISTANCE FROM CENTER TO EDGE*/)
                                    {
                                        Vector2 screenpos = centerpoint + vecRelativePos.To2D() / 100;

                                        var radarPlayerRectangle = new RoundedRectangle()
                                        {
                                            RadiusX = 4,
                                            RadiusY = 4,
                                            Rect    = new RawRectangleF(screenpos.X, screenpos.Y, screenpos.X + 5, screenpos.Y + 5)
                                        };

                                        // DRAW ENEMY
                                        device.FillRoundedRectangle(radarPlayerRectangle, brushRed);
                                    }
                                }
                                #endregion
                            }
                        }
                        #endregion
                    }

                    // DRAW END
                    device.EndDraw();

                    Thread.Sleep(1000 / 60);
                }
            });

            dxthread.IsBackground = true;
            dxthread.Start();

            var marg = new Win32.Margins();

            marg.Left   = 0;
            marg.Top    = 0;
            marg.Right  = this.Width;
            marg.Bottom = this.Height;
            Win32.DwmExtendFrameIntoClientArea(this.Handle, ref marg);
        }
예제 #6
0
파일: CPUZ.cs 프로젝트: xzfdsf21/helloworld
        public Cpuz()
        {
            InitializeComponent();
            //Make the window's border completely transparant

            #region D3D初始化
            // ANTI BATTLEYE SIG SCAN ;)
            this.Text = Guid.NewGuid().ToString().Replace("-", "");

            // TRANSPARENCY KEY
            this.BackColor = System.Drawing.Color.Black;

            // SETTINGS
            this.FormBorderStyle = FormBorderStyle.None;
            this.ShowIcon        = false;
            this.ShowInTaskbar   = false;
            this.TopMost         = true;
            this.WindowState     = FormWindowState.Maximized;

            // MAKE WINDOW TRANSPARENT
            Win32.SetWindowLong(this.Handle, Win32.GWL_EXSTYLE, (IntPtr)(Win32.GetWindowLong(this.Handle, Win32.GWL_EXSTYLE) ^ Win32.WS_EX_LAYERED ^ Win32.WS_EX_TRANSPARENT));

            // MAKE WINDOW SOLID
            Win32.SetLayeredWindowAttributes(this.Handle, 0, 255, Win32.LWA_ALPHA);

            var targetProperties = new HwndRenderTargetProperties
            {
                Hwnd           = this.Handle,
                PixelSize      = new Size2(this.Bounds.Right - this.Bounds.Left, this.Bounds.Bottom - this.Bounds.Top),
                PresentOptions = PresentOptions.Immediately
            };

            var prop = new RenderTargetProperties(RenderTargetType.Hardware, new PixelFormat(Format.B8G8R8A8_UNorm, SharpDX.Direct2D1.AlphaMode.Premultiplied), 0, 0, RenderTargetUsage.None, FeatureLevel.Level_DEFAULT);

            var d3dFactory = new SharpDX.Direct2D1.Factory();

            var device = new WindowRenderTarget(d3dFactory, prop, targetProperties)
            {
                TextAntialiasMode = TextAntialiasMode.Cleartype,
                AntialiasMode     = AntialiasMode.Aliased
            };

            #endregion

            var       k         = KReader.readPuBase();
            JSON_DATA json_data = null;
            var       dxthread  = new Thread(() =>
            {
                var brushWhite   = new SolidColorBrush(device, RawColorFromColor(Color.White));
                var brushBlack   = new SolidColorBrush(device, RawColorFromColor(Color.Black));
                var brushGreen   = new SolidColorBrush(device, RawColorFromColor(Color.Green));
                var brushRed     = new SolidColorBrush(device, RawColorFromColor(Color.Red));
                var brushPurple  = new SolidColorBrush(device, RawColorFromColor(Color.Purple));
                var fontFactory  = new SharpDX.DirectWrite.Factory();
                var fontConsolas = new SharpDX.DirectWrite.TextFormat(fontFactory, "Consolas", 15);
                var fontESP      = new SharpDX.DirectWrite.TextFormat(fontFactory, "Consolas", 12);

                while (true)
                {
                    // attempt to download JSON data as a string
                    try
                    {
                        json_data = DoGame.getGameDate();

                        if (json_data != null && json_data.players.Count > 0)
                        {
                            mainFrom.STATE = true;
                            device.BeginDraw();
                            device.Clear(null);

                            #region RADAR

                            int radarSize       = 600;
                            Vector2 centerpoint = new Vector2(2356, 1210);

                            if (Setting.雷达)
                            {
                                Ellipse el3 = new Ellipse(new RawVector2(2356, 1210), 1, 1);
                                device.DrawEllipse(el3, brushRed);
                                device.FillEllipse(el3, brushRed);

                                // TODO: INTEGRATE INTO MINIMAP
                                //if (Setting.雷达)
                                //{
                                //    var radarOuterRectangle = new RawRectangleF(radarX, radarY, radarX + radarSize,
                                //        radarY + radarSize);
                                //    var radarRectangle = new RawRectangleF(radarX + radarBorder, radarY + radarBorder,
                                //        radarX + radarSize - radarBorder, radarY + radarSize - radarBorder);

                                //    var radarCenterRectangle = new RoundedRectangle()
                                //    {
                                //        RadiusX = 4,
                                //        RadiusY = 4,
                                //        Rect = new RawRectangleF(centerpoint.X, centerpoint.Y, centerpoint.X + 4,
                                //            centerpoint.Y + 4)
                                //    };

                                //    device.FillRectangle(radarRectangle, brushBlack);
                                //    device.DrawRectangle(radarRectangle, brushWhite);

                                //    device.FillRoundedRectangle(radarCenterRectangle, brushGreen);

                                //}
                            }

                            #endregion


                            var vecLocalLocation = new Model.Vector3
                            {
                                X = json_data.camera[1].X,
                                Y = json_data.camera[1].Y,
                                Z = json_data.camera[1].Z
                            };

                            var PlayerCameraManager = new PlayerCameraManager
                            {
                                CameraCache = new FCameraCacheEntry
                                {
                                    POV = new FMinimalViewInfo
                                    {
                                        Fov      = json_data.camera[2].X,
                                        Location = new Model.Vector3
                                        {
                                            X = json_data.camera[1].X,
                                            Y = json_data.camera[1].Y,
                                            Z = json_data.camera[1].Z
                                        },
                                        Rotation = new Model.FRotator
                                        {
                                            Pitch = json_data.camera[0].X,
                                            Yaw   = json_data.camera[0].Y,
                                            Roll  = json_data.camera[0].Z
                                        }
                                    }
                                }
                            };

                            #region 车

                            if (Setting.车辆显示)
                            {
                                foreach (var v in json_data.vehicles)
                                {
                                    var vecActorLocation = new Vector3 {
                                        X = v.rx, Y = v.ry, Z = v.rz
                                    };
                                    var vecRelativePos = vecLocalLocation - vecActorLocation;
                                    var lDeltaInMeters = vecRelativePos.Length / 100;
                                    if (lDeltaInMeters <= 400)
                                    {
                                        Vector2 screenlocation;
                                        if (WorldToScreen(vecActorLocation, PlayerCameraManager, out screenlocation))
                                        {
                                            DrawText($"[{v.v}] {(int)lDeltaInMeters}m", (int)screenlocation.X,
                                                     (int)screenlocation.Y, v.v == "Deat" ? brushBlack : brushGreen,
                                                     fontFactory, fontESP, device);
                                        }
                                    }
                                }
                            }

                            #endregion

                            #region 物品

                            //todo:有BUG
                            if (Setting.物品显示)
                            {
                                foreach (var v in json_data.items)
                                {
                                    var vecActorLocation = new Vector3 {
                                        X = v.rx, Y = v.ry, Z = v.rz
                                    };
                                    var vecRelativePos = vecLocalLocation - vecActorLocation;
                                    var lDeltaInMeters = vecRelativePos.Length / 100;

                                    Vector2 screenlocation;
                                    if (WorldToScreen(vecActorLocation, PlayerCameraManager, out screenlocation))
                                    {
                                        DrawText($"{v.n}", (int)screenlocation.X,
                                                 (int)screenlocation.Y, brushWhite, fontFactory, fontESP, device);
                                    }
                                }
                            }

                            #endregion

                            #region 人物

                            var playerList  = json_data.players.OrderBy(z => z.id).ToList();
                            var localPlayer = playerList[0];
                            foreach (var player in playerList)
                            {
                                if (player.health > 0 && player.isInactive > 0 && player.id != 0)
                                {
                                    var vecPlayerLocation = new Vector3 {
                                        X = player.rx, Y = player.ry, Z = player.rz
                                    };
                                    var vecRelativePos = vecLocalLocation - vecPlayerLocation;
                                    //距离
                                    var lDeltaInMeters = vecRelativePos.Length / 100.0f;


                                    if (lDeltaInMeters >= 750)
                                    {
                                        continue;
                                    }
                                    #region 线条
                                    if (Setting.线条)
                                    {
                                        if (lDeltaInMeters > 3)
                                        {
                                            if (
                                                //超过200米不显示线
                                                lDeltaInMeters <= 200
                                                //超过40人不显示线
                                                && json_data.players.Count <= 40
                                                //队友不显示
                                                && player.t != localPlayer.t
                                                )
                                            {
                                                if (WorldToScreen(vecPlayerLocation, PlayerCameraManager,
                                                                  out var screenlocation))
                                                {
                                                    device.DrawLine(new RawVector2(Setting.Screen.Width / 2f, Setting.Screen.Height),
                                                                    new RawVector2(screenlocation.X, screenlocation.Y), lDeltaInMeters <= 100 ? brushRed : brushWhite);
                                                }
                                            }
                                        }
                                    }
                                    #endregion

                                    #region Distance ESP
                                    if (lDeltaInMeters > 3)
                                    {
                                        if (Setting.距离和血量)
                                        {
                                            if (WorldToScreen(vecPlayerLocation, PlayerCameraManager,
                                                              out var screenlocation))
                                            {
                                                SolidColorBrush brush = brushRed;

                                                if (lDeltaInMeters >= 250)
                                                {
                                                    brush = brushPurple;
                                                }
                                                if (lDeltaInMeters >= 500)
                                                {
                                                    brush = brushGreen;
                                                }
                                                if (player.t == localPlayer.t)
                                                {
                                                    brush = brushGreen;
                                                }

                                                DrawText($"[{player.id}]{(int)player.health} {(int)lDeltaInMeters}m",
                                                         (int)screenlocation.X,
                                                         (int)screenlocation.Y,
                                                         brush,
                                                         fontFactory, fontESP, device);
                                            }
                                        }
                                    }

                                    #endregion

                                    #region Radar
                                    if (Setting.雷达)
                                    {
                                        var loclalLocation = new Vector3 {
                                            X = playerList[0].x, Y = playerList[0].y, Z = playerList[0].z
                                        };
                                        var currentActorLocation = new Vector3 {
                                            X = player.x, Y = player.y, Z = player.z
                                        };

                                        var relativePos = loclalLocation - currentActorLocation;

                                        if (relativePos.Length / 100.0f <= radarSize / 2 /*DISTANCE FROM CENTER TO EDGE*/)
                                        {
                                            Vector2 screenpos = centerpoint - relativePos.To2D() / 118f;

                                            Ellipse el22 = new Ellipse(new RawVector2(screenpos.X, screenpos.Y), 3, 3);
                                            device.DrawEllipse(el22, brushRed);
                                            device.FillEllipse(el22, brushRed);
                                        }
                                    }
                                    #endregion

                                    #region 骨骼

                                    if (lDeltaInMeters < 250 && lDeltaInMeters > 5)
                                    {
                                        DrawSkeleton(player.mesh, PlayerCameraManager, device, brushRed, fontESP);
                                    }
                                    #endregion
                                }
                            }
                            #endregion
                            // DRAW END
                            device.EndDraw();
                        }
                        else
                        {
                            mainFrom.STATE = false;
                        }
                    }
                    catch (Exception ex)
                    {
                        System.IO.File.WriteAllText("c:\\log\\bug_json.txt", JsonConvert.SerializeObject(json_data));
                    }
                    Thread.Sleep(10);
                }
            })
            {
                IsBackground = true
            };
            dxthread.Start();

            #region Web端
            var webThread = new Thread(() =>
            {
                while (true)
                {
                    using (var webClient = new WebClient())
                    {
                        if (Setting.Web端 && json_data.players.Count > 0 && !webClient.IsBusy)
                        {
                            try
                            {
                                // 指定 WebClient 編碼
                                webClient.Encoding = Encoding.UTF8;
                                // 指定 WebClient 的 Content-Type header
                                webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json");
                                // 指定 WebClient 的 authorization header
                                //webClient.Headers.Add("authorization", "token {apitoken}");
                                // 執行 PUT 動作
                                var result = webClient.UploadString("http://127.0.0.1:3000/api/5", "PUT", JsonConvert.SerializeObject(json_data));
                            }
                            catch (Exception e)
                            {
                                continue;
                            }
                        }
                    }
                    Thread.Sleep(500);
                }
            });

            webThread.IsBackground = true;
            webThread.Start();
            #endregion


            var marg = new Win32.Margins {
                Left = 0, Top = 0, Right = this.Width, Bottom = this.Height
            };
            Win32.DwmExtendFrameIntoClientArea(this.Handle, ref marg);
        }
예제 #7
0
            public static Win32.Margins GetDpiAdjustedMargins(IntPtr windowHandle, int left, int right, int top, int bottom)
            {
                float DesktopDpiX;
                float DesktopDpiY;
                // Get System Dpi
                using (System.Drawing.Graphics desktop = System.Drawing.Graphics.FromHwnd(windowHandle))
                {
                    DesktopDpiX = desktop.DpiX;
                    DesktopDpiY = desktop.DpiY;
                }

                // Set Margins
                Win32.Margins margins = new Win32.Margins();

                // Note that the default desktop Dpi is 96dpi. The  margins are
                // adjusted for the system Dpi.
                margins.Left = Convert.ToInt32(left * (DesktopDpiX / 96));
                margins.Right = Convert.ToInt32(right * (DesktopDpiX / 96));
                margins.Top = Convert.ToInt32(top * (DesktopDpiX / 96));
                margins.Bottom = Convert.ToInt32(bottom * (DesktopDpiX / 96));

                return margins;
            }