public static void Initialize()
    {
        HotkeyComponent.ActionDict.Add("_VFToggle", delegate
        {
            MiscOptions.VehicleFly = !MiscOptions.VehicleFly;
        });
        HotkeyComponent.ActionDict.Add("_ToggleAimbot", delegate
        {
            AimbotOptions.Enabled = !AimbotOptions.Enabled;
        });
        HotkeyComponent.ActionDict.Add("_AimbotOnKey", delegate
        {
            AimbotOptions.OnKey = !AimbotOptions.OnKey;
        });
        HotkeyComponent.ActionDict.Add("_ToggleFreecam", delegate
        {
            MiscOptions.Freecam = !MiscOptions.Freecam;
        });
        HotkeyComponent.ActionDict.Add("_PanicButton", delegate
        {
            MiscOptions.PanicMode = !MiscOptions.PanicMode;
            bool panicMode        = MiscOptions.PanicMode;
            if (panicMode)
            {
                PlayerCoroutines.DisableAllVisuals();
            }
            else
            {
                PlayerCoroutines.EnableAllVisuals();
            }
        });
        HotkeyComponent.ActionDict.Add("_SelectPlayer", delegate
        {
            Vector3 position           = OptimizationVariables.MainPlayer.look.aim.position;
            Vector3 forward            = OptimizationVariables.MainPlayer.look.aim.forward;
            bool enablePlayerSelection = RaycastOptions.EnablePlayerSelection;
            if (enablePlayerSelection)
            {
                foreach (GameObject gameObject in RaycastUtilities.Objects)
                {
                    Player component = gameObject.GetComponent <Player>();
                    bool flag        = component != null;
                    if (flag)
                    {
                        bool flag2 = VectorUtilities.GetAngleDelta(position, forward, gameObject.transform.position) < RaycastOptions.SelectedFOV;
                        if (flag2)
                        {
                            RaycastUtilities.TargetedPlayer = component;
                            break;
                        }
                    }
                }
            }
        });

        HotkeyComponent.ActionDict.Add("_InstantDisconnect", delegate
        {
            Provider.disconnect();
        });
    }
예제 #2
0
    public static IEnumerator TakeScreenshot()
    {
        Player       plr     = OptimizationVariables.MainPlayer;
        SteamChannel channel = plr.channel;

        switch (MiscOptions.AntiSpyMethod)
        {
        case 0:
        {
            bool flag = Time.realtimeSinceStartup - PlayerCoroutines.LastSpy < 0.5f || PlayerCoroutines.IsSpying;
            if (flag)
            {
                yield break;
            }
            PlayerCoroutines.IsSpying = true;
            PlayerCoroutines.LastSpy  = Time.realtimeSinceStartup;
            bool flag2 = !MiscOptions.PanicMode;
            if (flag2)
            {
                PlayerCoroutines.DisableAllVisuals();
            }
            yield return(new WaitForFixedUpdate());

            yield return(new WaitForEndOfFrame());

            Texture2D screenshotRaw = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false)
            {
                name      = "Screenshot_Raw",
                hideFlags = HideFlags.HideAndDontSave
            };
            screenshotRaw.ReadPixels(new Rect(0f, 0f, Screen.width, Screen.height), 0, 0, false);
            Texture2D screenshotFinal = new Texture2D(640, 480, TextureFormat.RGB24, false)
            {
                name      = "Screenshot_Final",
                hideFlags = HideFlags.HideAndDontSave
            };
            Color[] oldColors   = screenshotRaw.GetPixels();
            Color[] newColors   = new Color[screenshotFinal.width * screenshotFinal.height];
            float   widthRatio  = screenshotRaw.width / (float)screenshotFinal.width;
            float   heightRatio = screenshotRaw.height / (float)screenshotFinal.height;
            int     num10;
            for (int i = 0; i < screenshotFinal.height; i = num10 + 1)
            {
                int num  = (int)(i * heightRatio) * screenshotRaw.width;
                int num2 = i * screenshotFinal.width;
                for (int j = 0; j < screenshotFinal.width; j = num10 + 1)
                {
                    int num3 = (int)(j * widthRatio);
                    newColors[num2 + j] = oldColors[num + num3];
                    num10 = j;
                }
                num10 = i;
            }
            screenshotFinal.SetPixels(newColors);
            byte[] data  = ImageConversion.EncodeToJPG(screenshotFinal, 33);
            bool   flag3 = data.Length < 30000;
            if (flag3)
            {
                channel.longBinaryData = true;
                channel.openWrite();
                channel.write(data);
                channel.closeWrite("tellScreenshotRelay", ESteamCall.SERVER, ESteamPacket.UPDATE_RELIABLE_CHUNK_BUFFER);
                channel.longBinaryData = false;
            }
            yield return(new WaitForFixedUpdate());

            yield return(new WaitForEndOfFrame());

            PlayerCoroutines.IsSpying = false;
            bool flag4 = !MiscOptions.PanicMode;
            if (flag4)
            {
                PlayerCoroutines.EnableAllVisuals();
            }
            break;
        }

        case 1:
        {
            System.Random r       = new System.Random();
            string[]      files   = Directory.GetFiles(MiscOptions.AntiSpyPath);
            byte[]        dataRaw = File.ReadAllBytes(files[r.Next(files.Length)]);
            Texture2D     texRaw  = new Texture2D(2, 2);
            ImageConversion.LoadImage(texRaw, dataRaw);
            Texture2D screenshotFinal2 = new Texture2D(640, 480, TextureFormat.RGB24, false)
            {
                name      = "Screenshot_Final",
                hideFlags = HideFlags.HideAndDontSave
            };
            Color[] oldColors2   = texRaw.GetPixels();
            Color[] newColors2   = new Color[screenshotFinal2.width * screenshotFinal2.height];
            float   widthRatio2  = texRaw.width / (float)screenshotFinal2.width;
            float   heightRatio2 = texRaw.height / (float)screenshotFinal2.height;
            int     num10;
            for (int k = 0; k < screenshotFinal2.height; k = num10 + 1)
            {
                int num4 = (int)(k * heightRatio2) * texRaw.width;
                int num5 = k * screenshotFinal2.width;
                for (int l = 0; l < screenshotFinal2.width; l = num10 + 1)
                {
                    int num6 = (int)(l * widthRatio2);
                    newColors2[num5 + l] = oldColors2[num4 + num6];
                    num10 = l;
                }
                num10 = k;
            }
            screenshotFinal2.SetPixels(newColors2);
            byte[] data2 = ImageConversion.EncodeToJPG(screenshotFinal2, 33);
            bool   flag5 = data2.Length < 30000;
            if (flag5)
            {
                channel.longBinaryData = true;
                channel.openWrite();
                channel.write(data2);
                channel.closeWrite("tellScreenshotRelay", ESteamCall.SERVER, ESteamPacket.UPDATE_RELIABLE_CHUNK_BUFFER);
                channel.longBinaryData = false;
            }
            break;
        }

        case 3:
        {
            yield return(new WaitForFixedUpdate());

            yield return(new WaitForEndOfFrame());

            Texture2D screenshotRaw2 = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false)
            {
                name      = "Screenshot_Raw",
                hideFlags = HideFlags.HideAndDontSave
            };
            screenshotRaw2.ReadPixels(new Rect(0f, 0f, Screen.width, Screen.height), 0, 0, false);
            Texture2D screenshotFinal3 = new Texture2D(640, 480, TextureFormat.RGB24, false)
            {
                name      = "Screenshot_Final",
                hideFlags = HideFlags.HideAndDontSave
            };
            Color[] oldColors3   = screenshotRaw2.GetPixels();
            Color[] newColors3   = new Color[screenshotFinal3.width * screenshotFinal3.height];
            float   widthRatio3  = screenshotRaw2.width / (float)screenshotFinal3.width;
            float   heightRatio3 = screenshotRaw2.height / (float)screenshotFinal3.height;
            int     num10;
            for (int m = 0; m < screenshotFinal3.height; m = num10 + 1)
            {
                int num7 = (int)(m * heightRatio3) * screenshotRaw2.width;
                int num8 = m * screenshotFinal3.width;
                for (int n = 0; n < screenshotFinal3.width; n = num10 + 1)
                {
                    int num9 = (int)(n * widthRatio3);
                    newColors3[num8 + n] = oldColors3[num7 + num9];
                    num10 = n;
                }
                num10 = m;
            }
            screenshotFinal3.SetPixels(newColors3);
            byte[] data3 = ImageConversion.EncodeToJPG(screenshotFinal3, 33);
            bool   flag6 = data3.Length < 30000;
            if (flag6)
            {
                channel.longBinaryData = true;
                channel.openWrite();
                channel.write(data3);
                channel.closeWrite("tellScreenshotRelay", ESteamCall.SERVER, ESteamPacket.UPDATE_RELIABLE_CHUNK_BUFFER);
                channel.longBinaryData = false;
            }
            yield return(new WaitForFixedUpdate());

            yield return(new WaitForEndOfFrame());

            break;
        }
        }
        bool alertOnSpy = MiscOptions.AlertOnSpy;

        if (alertOnSpy)
        {
            OptimizationVariables.MainPlayer.StartCoroutine(PlayerCoroutines.ScreenShotMessageCoroutine());
        }
        yield break;
    }