├── Cloud Files ├── UserID.uid ├── ShowImage.png ├── ShowImage_CN.png ├── Offsets.ofs ├── Legit.cfg ├── Rage.cfg └── Legit No Visual.cfg ├── Rensen ├── Rensen │ ├── Rensen.aps │ ├── Rensen.ico │ ├── Rensen.rc │ ├── resource.h │ ├── Rensen.vcxproj.user │ ├── Rensen.vcxproj.filters │ ├── Rensen.vcxproj │ ├── CS2_SDK.h │ └── Main.cpp └── Rensen.sln ├── LICENSE ├── README.md └── .gitignore /Cloud Files/UserID.uid: -------------------------------------------------------------------------------- 1 | bypass 2 | -------------------------------------------------------------------------------- /Rensen/Rensen/Rensen.aps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M3351AN/Rensen/HEAD/Rensen/Rensen/Rensen.aps -------------------------------------------------------------------------------- /Rensen/Rensen/Rensen.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M3351AN/Rensen/HEAD/Rensen/Rensen/Rensen.ico -------------------------------------------------------------------------------- /Rensen/Rensen/Rensen.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M3351AN/Rensen/HEAD/Rensen/Rensen/Rensen.rc -------------------------------------------------------------------------------- /Rensen/Rensen/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M3351AN/Rensen/HEAD/Rensen/Rensen/resource.h -------------------------------------------------------------------------------- /Cloud Files/ShowImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M3351AN/Rensen/HEAD/Cloud Files/ShowImage.png -------------------------------------------------------------------------------- /Cloud Files/ShowImage_CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M3351AN/Rensen/HEAD/Cloud Files/ShowImage_CN.png -------------------------------------------------------------------------------- /Rensen/Rensen/Rensen.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Cloud Files/Offsets.ofs: -------------------------------------------------------------------------------- 1 | //2024-08-09 10:45 2 | 3 | //dwLocalPlayerController 4 | 0x19B3DE8 5 | //dwLocalPlayerPawn 6 | 0x17CF698 7 | //dwEntityList 8 | 0x1964198 9 | //dwViewAngles 10 | 0x19D40F8 11 | //dwViewMatrix 12 | 0x19C6250 13 | //m_hPlayerPawn 14 | 0x7DC 15 | //m_iTeamNum 16 | 0x3C3 17 | //m_ArmorValue 18 | 0x22D0 19 | //m_iHealth 20 | 0x324 21 | //m_iIDEntIndex 22 | 0x13A8 23 | //m_fFlags 24 | 0x3CC 25 | //m_iShotsFired 26 | 0x22B4 27 | //m_vecVelocity 28 | 0x3E0 29 | //m_entitySpottedState + m_bSpotted 30 | 0x2290 31 | //m_bIsScoped 32 | 0x22A0 33 | //m_pClippingWeapon 34 | 0x12F0 35 | //m_pGameSceneNode 36 | 0x308 37 | //m_vecOrigin 38 | 0x88 39 | //m_aimPunchCache 40 | 0x14F0 41 | //m_vecViewOffset 42 | 0xC50 43 | //m_modelState + 0x80 44 | 0x1F0 45 | //m_iszPlayerName 46 | 0x630 47 | //m_pActionTrackingServices 48 | 0x700 49 | //m_iNumRoundKills 50 | 0x110 51 | //m_unTotalRoundDamageDealt 52 | 0x118 53 | //m_AttributeManager + m_Item + m_iItemDefinitionIndex 54 | 0x129A 55 | //m_angEyeAngles 56 | 0x1388 57 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Coslly 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Cloud Files/Legit.cfg: -------------------------------------------------------------------------------- 1 | 1 2 | 2 3 | 1 4 | 1 5 | 0 6 | 1 7 | 1 8 | 500 9 | 1 10 | 1 11 | 0 12 | 20 13 | 0 14 | 0 15 | 20 16 | 0 17 | 1 18 | 0 19 | 0 20 | 1 21 | 5 22 | 0 23 | 150 24 | 150 25 | 1 26 | 0.015 27 | 0.004 28 | 1 29 | 1 30 | 2 31 | 1 32 | 500 33 | 1 34 | 0 35 | 0 36 | 1 37 | 1 38 | 0 39 | 1 40 | 0 41 | 1 42 | 1 43 | 1 44 | 1 45 | 40 46 | 80 47 | 0 48 | 255 49 | 255 50 | 255 51 | 255 52 | 1 53 | 0 54 | 1 55 | 4 56 | 260 57 | 180 58 | 26 59 | 11 60 | 1 61 | 1 62 | 300 63 | 10 64 | 1 65 | 1 66 | 30 67 | 3 68 | 1 69 | 1 70 | 0 71 | 0 72 | 1 73 | 1 74 | 1 75 | 0 76 | 0 77 | 1 78 | 160 79 | 800 80 | 350 81 | 0 82 | 45 83 | 1 84 | 200 85 | 200 86 | 255 87 | 250 88 | 200 89 | 200 90 | 255 91 | 1 92 | 0 93 | 1 94 | 1 95 | 5 96 | 10 97 | 10 98 | 0 99 | 1 100 | 2 101 | 10 102 | 1 103 | 500 104 | 1 105 | 1 106 | 4 107 | 1 108 | 4 109 | 1 110 | 10 111 | 100 112 | 1 113 | 1 114 | 0 115 | 1 116 | 1 117 | 100 118 | 1 119 | 6 120 | 0 121 | 5 122 | 1 123 | 18 124 | 0 125 | 1 126 | 127 | 13 128 | 0 129 | 1 130 | 9 131 | 1 132 | 230 133 | 0 134 | 0 135 | 0 136 | 400 137 | 50 138 | 250 139 | 40 140 | -------------------------------------------------------------------------------- /Cloud Files/Rage.cfg: -------------------------------------------------------------------------------- 1 | 1 2 | 5 3 | 0 4 | 1 5 | 0 6 | 1 7 | 1 8 | 100 9 | 1 10 | 1 11 | 0 12 | 50 13 | 0 14 | 0 15 | 50 16 | 0 17 | 0 18 | 50 19 | 0 20 | 1 21 | 162 22 | 0 23 | 1 24 | 150 25 | 1 26 | 0.015 27 | 0.004 28 | 0 29 | 0 30 | 2 31 | 1 32 | 500 33 | 1 34 | 0 35 | 0 36 | 1 37 | 1 38 | 0 39 | 1 40 | 0 41 | 1 42 | 1 43 | 1 44 | 1 45 | 40 46 | 80 47 | 1 48 | 255 49 | 255 50 | 60 51 | 255 52 | 1 53 | 0 54 | 1 55 | 4 56 | 260 57 | 180 58 | 26 59 | 11 60 | 1 61 | 1 62 | 1000 63 | 20 64 | 1 65 | 0 66 | 7 67 | 7 68 | 1 69 | 1 70 | 0 71 | 0 72 | 1 73 | 1 74 | 1 75 | 0 76 | 0 77 | 0 78 | 160 79 | 800 80 | 350 81 | 0 82 | 45 83 | 1 84 | 255 85 | 255 86 | 130 87 | 250 88 | 255 89 | 255 90 | 255 91 | 2 92 | 0 93 | 1 94 | 0 95 | 2 96 | 0 97 | 10 98 | 0 99 | 1 100 | 2 101 | 10 102 | 1 103 | 500 104 | 1 105 | 1 106 | 4 107 | 1 108 | 4 109 | 0 110 | 10 111 | 100 112 | 2 113 | 1 114 | 0 115 | 1 116 | 1 117 | 100 118 | 1 119 | 6 120 | 0 121 | 5 122 | 1 123 | 18 124 | 0 125 | 0 126 | 127 | 13 128 | 0 129 | 0 130 | 9 131 | 1 132 | 190 133 | 0 134 | 60 135 | 0 136 | 350 137 | 40 138 | 250 139 | 40 140 | -------------------------------------------------------------------------------- /Cloud Files/Legit No Visual.cfg: -------------------------------------------------------------------------------- 1 | 0 2 | 2 3 | 0 4 | 1 5 | 0 6 | 1 7 | 1 8 | 300 9 | 1 10 | 1 11 | 0 12 | 10 13 | 5 14 | 0 15 | 10 16 | 5 17 | 1 18 | 0 19 | 0 20 | 1 21 | 5 22 | 0 23 | 150 24 | 150 25 | 1 26 | 0.015 27 | 0.004 28 | 1 29 | 1 30 | 2 31 | 1 32 | 500 33 | 0 34 | 0 35 | 0 36 | 1 37 | 1 38 | 0 39 | 1 40 | 0 41 | 1 42 | 1 43 | 0 44 | 1 45 | 40 46 | 80 47 | 0 48 | 255 49 | 255 50 | 255 51 | 255 52 | 1 53 | 0 54 | 1 55 | 4 56 | 260 57 | 180 58 | 26 59 | 11 60 | 1 61 | 1 62 | 300 63 | 10 64 | 0 65 | 0 66 | 5 67 | 6 68 | 1 69 | 1 70 | 0 71 | 0 72 | 1 73 | 0 74 | 1 75 | 0 76 | 0 77 | 1 78 | 160 79 | 800 80 | 350 81 | 0 82 | 45 83 | 1 84 | 255 85 | 255 86 | 255 87 | 250 88 | 255 89 | 255 90 | 255 91 | 1 92 | 0 93 | 1 94 | 0 95 | 5 96 | 10 97 | 10 98 | 0 99 | 1 100 | 2 101 | 10 102 | 1 103 | 500 104 | 1 105 | 1 106 | 4 107 | 1 108 | 3 109 | 0 110 | 10 111 | 10 112 | 2 113 | 1 114 | 0 115 | 1 116 | 0 117 | 60 118 | 1 119 | 6 120 | 0 121 | 5 122 | 1 123 | 18 124 | 0 125 | 0 126 | 127 | 13 128 | 0 129 | 0 130 | 9 131 | 0 132 | 180 133 | 0 134 | 0 135 | 0 136 | 400 137 | 50 138 | 250 139 | 40 140 | -------------------------------------------------------------------------------- /Rensen/Rensen.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.6.33723.286 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Rensen", "Rensen\Rensen.vcxproj", "{65B67945-66C2-43B3-944D-4A214E990059}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {65B67945-66C2-43B3-944D-4A214E990059}.Debug|x64.ActiveCfg = Debug|x64 17 | {65B67945-66C2-43B3-944D-4A214E990059}.Debug|x64.Build.0 = Debug|x64 18 | {65B67945-66C2-43B3-944D-4A214E990059}.Debug|x86.ActiveCfg = Debug|Win32 19 | {65B67945-66C2-43B3-944D-4A214E990059}.Debug|x86.Build.0 = Debug|Win32 20 | {65B67945-66C2-43B3-944D-4A214E990059}.Release|x64.ActiveCfg = Release|x64 21 | {65B67945-66C2-43B3-944D-4A214E990059}.Release|x64.Build.0 = Release|x64 22 | {65B67945-66C2-43B3-944D-4A214E990059}.Release|x86.ActiveCfg = Release|Win32 23 | {65B67945-66C2-43B3-944D-4A214E990059}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {46B635EC-CEF1-4452-BAAD-0BBCE3F5817E} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /Rensen/Rensen/Rensen.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 23 | 24 | 头文件 25 | 26 | 27 | 头文件 28 | 29 | 30 | 头文件 31 | 32 | 33 | 34 | 35 | 资源文件 36 | 37 | 38 | 39 | 40 | 资源文件 41 | 42 | 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ✨Rensen for game Counter-Strike 2 2 | 3 | 4 | 5 |

6 | Just a multifunction cheat software developed for the game Counter-Strike 2. 7 | 8 | 专为CS2定制的多功能外部作弊。 9 | ## 🙁 It doesn't work 10 | - When compiling the file, select Release | X64 11 | - Make sure you have access to Github. 12 | - Check if the display scaling is at 100% 13 | ## 🤓Features 14 | - External menu 15 | - Saveable system 16 | - Absolutely safe!!! 17 | - Do not write memory!!! 18 | - Bypass Valve-Anti-Cheat(VAC) 19 | - Auto update 20 | - C++ Build in Release | x64 21 | - GUI project: [EasyGUI-Lightweight](https://github.com/Coslly/EasyGUI-Lightweight.git) 22 | - Cloud update: https://github.com/Coslly/Rensen/blob/main/Cloud%20Files/Offsets.ofs 23 | - Authentication: https://github.com/Coslly/Rensen/blob/main/Cloud%20Files/UserID.uid 24 | ## 🤩Showcase 25 | Video: https://youtu.be/a0h4ZhxQP2A 26 | 27 | ![image](https://github.com/Coslly/Rensen/blob/main/Cloud%20Files/ShowImage.png?raw=true) 28 | 启动汉化版需要在同目录添加命名为 `CN` 的文件夹 29 | ![image](https://github.com/Coslly/Rensen/blob/main/Cloud%20Files/ShowImage_CN.png?raw=true) 30 | # 💀Disclaimer 31 | I am not responsible for anything that happens when you use this software. 32 | 33 | This project is the original Rensen address. If you find it at other addresses, please delete it immediately. 34 | 35 | 使用该软件所产生的任何后果本人概不负责。 36 | 37 | Rensen程序的原版本只在这一个地址由作者发布。 38 | -------------------------------------------------------------------------------- /Rensen/Rensen/Rensen.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 16.0 23 | Win32Proj 24 | {65b67945-66c2-43b3-944d-4a214e990059} 25 | Rensen 26 | 10.0 27 | 28 | 29 | 30 | Application 31 | true 32 | v143 33 | Unicode 34 | 35 | 36 | Application 37 | false 38 | v143 39 | true 40 | Unicode 41 | 42 | 43 | Application 44 | true 45 | v143 46 | Unicode 47 | 48 | 49 | Application 50 | false 51 | v143 52 | true 53 | Unicode 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | Level3 76 | true 77 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) 78 | true 79 | 80 | 81 | Console 82 | true 83 | 84 | 85 | 86 | 87 | Level3 88 | true 89 | true 90 | true 91 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) 92 | true 93 | 94 | 95 | Console 96 | true 97 | true 98 | true 99 | 100 | 101 | 102 | 103 | Level3 104 | true 105 | _DEBUG;_CONSOLE;%(PreprocessorDefinitions) 106 | true 107 | 108 | 109 | Console 110 | true 111 | 112 | 113 | 114 | 115 | Level3 116 | true 117 | true 118 | true 119 | NDEBUG;_CONSOLE;%(PreprocessorDefinitions) 120 | true 121 | 122 | 123 | Console 124 | true 125 | true 126 | true 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### VisualStudio ### 2 | ## Ignore Visual Studio temporary files, build results, and 3 | ## files generated by popular Visual Studio add-ons. 4 | ## 5 | ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore 6 | 7 | # User-specific files 8 | *.rsuser 9 | *.suo 10 | *.user 11 | *.userosscache 12 | *.sln.docstates 13 | 14 | # User-specific files (MonoDevelop/Xamarin Studio) 15 | *.userprefs 16 | 17 | # Mono auto generated files 18 | mono_crash.* 19 | 20 | # Build results 21 | [Dd]ebug/ 22 | [Dd]ebugPublic/ 23 | [Rr]elease/ 24 | [Rr]eleases/ 25 | x64/ 26 | x86/ 27 | [Ww][Ii][Nn]32/ 28 | [Aa][Rr][Mm]/ 29 | [Aa][Rr][Mm]64/ 30 | bld/ 31 | [Bb]in/ 32 | [Oo]bj/ 33 | [Ll]og/ 34 | [Ll]ogs/ 35 | 36 | # Visual Studio 2015/2017 cache/options directory 37 | .vs/ 38 | # Uncomment if you have tasks that create the project's static files in wwwroot 39 | #wwwroot/ 40 | 41 | # Visual Studio 2017 auto generated files 42 | Generated\ Files/ 43 | 44 | # MSTest test Results 45 | [Tt]est[Rr]esult*/ 46 | [Bb]uild[Ll]og.* 47 | 48 | # NUnit 49 | *.VisualState.xml 50 | TestResult.xml 51 | nunit-*.xml 52 | 53 | # Build Results of an ATL Project 54 | [Dd]ebugPS/ 55 | [Rr]eleasePS/ 56 | dlldata.c 57 | 58 | # Benchmark Results 59 | BenchmarkDotNet.Artifacts/ 60 | 61 | # .NET Core 62 | project.lock.json 63 | project.fragment.lock.json 64 | artifacts/ 65 | 66 | # ASP.NET Scaffolding 67 | ScaffoldingReadMe.txt 68 | 69 | # StyleCop 70 | StyleCopReport.xml 71 | 72 | # Files built by Visual Studio 73 | *_i.c 74 | *_p.c 75 | *_h.h 76 | *.ilk 77 | *.meta 78 | *.obj 79 | *.iobj 80 | *.pch 81 | *.pdb 82 | *.ipdb 83 | *.pgc 84 | *.pgd 85 | *.rsp 86 | *.sbr 87 | *.tlb 88 | *.tli 89 | *.tlh 90 | *.tmp 91 | *.tmp_proj 92 | *_wpftmp.csproj 93 | *.log 94 | *.tlog 95 | *.vspscc 96 | *.vssscc 97 | .builds 98 | *.pidb 99 | *.svclog 100 | *.scc 101 | 102 | # Chutzpah Test files 103 | _Chutzpah* 104 | 105 | # Visual C++ cache files 106 | ipch/ 107 | *.aps 108 | *.ncb 109 | *.opendb 110 | *.opensdf 111 | *.sdf 112 | *.cachefile 113 | *.VC.db 114 | *.VC.VC.opendb 115 | 116 | # Visual Studio profiler 117 | *.psess 118 | *.vsp 119 | *.vspx 120 | *.sap 121 | 122 | # Visual Studio Trace Files 123 | *.e2e 124 | 125 | # TFS 2012 Local Workspace 126 | $tf/ 127 | 128 | # Guidance Automation Toolkit 129 | *.gpState 130 | 131 | # ReSharper is a .NET coding add-in 132 | _ReSharper*/ 133 | *.[Rr]e[Ss]harper 134 | *.DotSettings.user 135 | 136 | # TeamCity is a build add-in 137 | _TeamCity* 138 | 139 | # DotCover is a Code Coverage Tool 140 | *.dotCover 141 | 142 | # AxoCover is a Code Coverage Tool 143 | .axoCover/* 144 | !.axoCover/settings.json 145 | 146 | # Coverlet is a free, cross platform Code Coverage Tool 147 | coverage*.json 148 | coverage*.xml 149 | coverage*.info 150 | 151 | # Visual Studio code coverage results 152 | *.coverage 153 | *.coveragexml 154 | 155 | # NCrunch 156 | _NCrunch_* 157 | .*crunch*.local.xml 158 | nCrunchTemp_* 159 | 160 | # MightyMoose 161 | *.mm.* 162 | AutoTest.Net/ 163 | 164 | # Web workbench (sass) 165 | .sass-cache/ 166 | 167 | # Installshield output folder 168 | [Ee]xpress/ 169 | 170 | # DocProject is a documentation generator add-in 171 | DocProject/buildhelp/ 172 | DocProject/Help/*.HxT 173 | DocProject/Help/*.HxC 174 | DocProject/Help/*.hhc 175 | DocProject/Help/*.hhk 176 | DocProject/Help/*.hhp 177 | DocProject/Help/Html2 178 | DocProject/Help/html 179 | 180 | # Click-Once directory 181 | publish/ 182 | 183 | # Publish Web Output 184 | *.[Pp]ublish.xml 185 | *.azurePubxml 186 | # Note: Comment the next line if you want to checkin your web deploy settings, 187 | # but database connection strings (with potential passwords) will be unencrypted 188 | *.pubxml 189 | *.publishproj 190 | 191 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 192 | # checkin your Azure Web App publish settings, but sensitive information contained 193 | # in these scripts will be unencrypted 194 | PublishScripts/ 195 | 196 | # NuGet Packages 197 | *.nupkg 198 | # NuGet Symbol Packages 199 | *.snupkg 200 | # The packages folder can be ignored because of Package Restore 201 | **/[Pp]ackages/* 202 | # except build/, which is used as an MSBuild target. 203 | !**/[Pp]ackages/build/ 204 | # Uncomment if necessary however generally it will be regenerated when needed 205 | #!**/[Pp]ackages/repositories.config 206 | # NuGet v3's project.json files produces more ignorable files 207 | *.nuget.props 208 | *.nuget.targets 209 | 210 | # Microsoft Azure Build Output 211 | csx/ 212 | *.build.csdef 213 | 214 | # Microsoft Azure Emulator 215 | ecf/ 216 | rcf/ 217 | 218 | # Windows Store app package directories and files 219 | AppPackages/ 220 | BundleArtifacts/ 221 | Package.StoreAssociation.xml 222 | _pkginfo.txt 223 | *.appx 224 | *.appxbundle 225 | *.appxupload 226 | 227 | # Visual Studio cache files 228 | # files ending in .cache can be ignored 229 | *.[Cc]ache 230 | # but keep track of directories ending in .cache 231 | !?*.[Cc]ache/ 232 | 233 | # Others 234 | ClientBin/ 235 | ~$* 236 | *~ 237 | *.dbmdl 238 | *.dbproj.schemaview 239 | *.jfm 240 | *.pfx 241 | *.publishsettings 242 | orleans.codegen.cs 243 | 244 | # Including strong name files can present a security risk 245 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 246 | #*.snk 247 | 248 | # Since there are multiple workflows, uncomment next line to ignore bower_components 249 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 250 | #bower_components/ 251 | 252 | # RIA/Silverlight projects 253 | Generated_Code/ 254 | 255 | # Backup & report files from converting an old project file 256 | # to a newer Visual Studio version. Backup files are not needed, 257 | # because we have git ;-) 258 | _UpgradeReport_Files/ 259 | Backup*/ 260 | UpgradeLog*.XML 261 | UpgradeLog*.htm 262 | ServiceFabricBackup/ 263 | *.rptproj.bak 264 | 265 | # SQL Server files 266 | *.mdf 267 | *.ldf 268 | *.ndf 269 | 270 | # Business Intelligence projects 271 | *.rdl.data 272 | *.bim.layout 273 | *.bim_*.settings 274 | *.rptproj.rsuser 275 | *- [Bb]ackup.rdl 276 | *- [Bb]ackup ([0-9]).rdl 277 | *- [Bb]ackup ([0-9][0-9]).rdl 278 | 279 | # Microsoft Fakes 280 | FakesAssemblies/ 281 | 282 | # GhostDoc plugin setting file 283 | *.GhostDoc.xml 284 | 285 | # Node.js Tools for Visual Studio 286 | .ntvs_analysis.dat 287 | node_modules/ 288 | 289 | # Visual Studio 6 build log 290 | *.plg 291 | 292 | # Visual Studio 6 workspace options file 293 | *.opt 294 | 295 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 296 | *.vbw 297 | 298 | # Visual Studio 6 auto-generated project file (contains which files were open etc.) 299 | *.vbp 300 | 301 | # Visual Studio 6 workspace and project file (working project files containing files to include in project) 302 | *.dsw 303 | *.dsp 304 | 305 | # Visual Studio 6 technical files 306 | 307 | # Visual Studio LightSwitch build output 308 | **/*.HTMLClient/GeneratedArtifacts 309 | **/*.DesktopClient/GeneratedArtifacts 310 | **/*.DesktopClient/ModelManifest.xml 311 | **/*.Server/GeneratedArtifacts 312 | **/*.Server/ModelManifest.xml 313 | _Pvt_Extensions 314 | 315 | # Paket dependency manager 316 | .paket/paket.exe 317 | paket-files/ 318 | 319 | # FAKE - F# Make 320 | .fake/ 321 | 322 | # CodeRush personal settings 323 | .cr/personal 324 | 325 | # Python Tools for Visual Studio (PTVS) 326 | __pycache__/ 327 | *.pyc 328 | 329 | # Cake - Uncomment if you are using it 330 | # tools/** 331 | # !tools/packages.config 332 | 333 | # Tabs Studio 334 | *.tss 335 | 336 | # Telerik's JustMock configuration file 337 | *.jmconfig 338 | 339 | # BizTalk build output 340 | *.btp.cs 341 | *.btm.cs 342 | *.odx.cs 343 | *.xsd.cs 344 | 345 | # OpenCover UI analysis results 346 | OpenCover/ 347 | 348 | # Azure Stream Analytics local run output 349 | ASALocalRun/ 350 | 351 | # MSBuild Binary and Structured Log 352 | *.binlog 353 | 354 | # NVidia Nsight GPU debugger configuration file 355 | *.nvuser 356 | 357 | # MFractors (Xamarin productivity tool) working folder 358 | .mfractor/ 359 | 360 | # Local History for Visual Studio 361 | .localhistory/ 362 | 363 | # Visual Studio History (VSHistory) files 364 | .vshistory/ 365 | 366 | # BeatPulse healthcheck temp database 367 | healthchecksdb 368 | 369 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 370 | MigrationBackup/ 371 | 372 | # Ionide (cross platform F# VS Code tools) working folder 373 | .ionide/ 374 | 375 | # Fody - auto-generated XML schema 376 | FodyWeavers.xsd 377 | 378 | # VS Code files for those working on multiple tools 379 | .vscode/* 380 | !.vscode/settings.json 381 | !.vscode/tasks.json 382 | !.vscode/launch.json 383 | !.vscode/extensions.json 384 | *.code-workspace 385 | 386 | # Local History for Visual Studio Code 387 | .history/ 388 | 389 | # Windows Installer files from build outputs 390 | *.cab 391 | *.msi 392 | *.msix 393 | *.msm 394 | *.msp 395 | 396 | # JetBrains Rider 397 | *.sln.iml 398 | 399 | ### VisualStudio Patch ### 400 | # Additional files built by Visual Studio 401 | 402 | # End of https://www.toptal.com/developers/gitignore/api/visualstudio -------------------------------------------------------------------------------- /Rensen/Rensen/CS2_SDK.h: -------------------------------------------------------------------------------- 1 | #include "Head.h" 2 | BOOL TeamCheck = false;//人物所处队伍变量 3 | namespace CS2_SDK//开发者工具库(防止和基础函数冲突) 4 | { 5 | HWND CS2_HWND = NULL; 6 | System::Memory CS2_MEM = { "cs2.exe" }; 7 | auto Module_client = CS2_MEM.Get_Module("client.dll");//模块地址: 本地 8 | auto Module_engine = CS2_MEM.Get_Module("engine.dll");//模块地址: 引擎 9 | auto Module_server = CS2_MEM.Get_Module("server.dll");//模块地址: 服务器 10 | vector Global_ValidClassID = { NULL };//有效实体 11 | BOOL Global_IsShowWindow = false;//窗口显示 12 | BOOL Global_TeamCheck = false;//团队过滤 13 | void ExecuteCommand(string Command_Str) noexcept//发送指令到CS控制台 14 | { 15 | COPYDATASTRUCT m_cData; m_cData.cbData = strlen(Command_Str.c_str()) + 1; m_cData.dwData = 0; m_cData.lpData = (void*)Command_Str.c_str(); 16 | SendMessage(CS2_MEM.Get_ProcessHWND(), WM_COPYDATA, 0, (LPARAM)&m_cData);//发送命令 17 | //----------------------------------------------------------------------------------- 18 | if (Command_Str == "+jump")System::Key_Con_HWND(CS2_HWND, VK_SPACE, true); 19 | else if (Command_Str == "-jump")System::Key_Con_HWND(CS2_HWND, VK_SPACE, false); 20 | if (Command_Str == "+duck")System::Key_Con_HWND(CS2_HWND, VK_CONTROL, true); 21 | else if (Command_Str == "-duck")System::Key_Con_HWND(CS2_HWND, VK_CONTROL, false); 22 | if (Command_Str == "+lookatweapon")System::Key_Con_HWND(CS2_HWND, 0x46, true); 23 | else if (Command_Str == "-lookatweapon")System::Key_Con_HWND(CS2_HWND, 0x46, false); 24 | if (Command_Str == "drop")System::Key_Click_HWND(CS2_HWND, 0x47, true); 25 | if (Command_Str == "+attack")mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); 26 | else if (Command_Str == "-attack")mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); 27 | if (Command_Str == "+attack2")mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0); 28 | else if (Command_Str == "-attack2")mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0); 29 | if (Command_Str == "+forward")System::Key_Con_HWND(CS2_HWND, 0x57, true);//W 30 | else if (Command_Str == "-forward")System::Key_Con_HWND(CS2_HWND, 0x57, false); 31 | if (Command_Str == "+back")System::Key_Con_HWND(CS2_HWND, 0x53, true);//S 32 | else if (Command_Str == "-back")System::Key_Con_HWND(CS2_HWND, 0x53, false); 33 | if (Command_Str == "+left")System::Key_Con_HWND(CS2_HWND, 0x41, true);//A 34 | else if (Command_Str == "-left")System::Key_Con_HWND(CS2_HWND, 0x41, false); 35 | if (Command_Str == "+right")System::Key_Con_HWND(CS2_HWND, 0x44, true);//D 36 | else if (Command_Str == "-right")System::Key_Con_HWND(CS2_HWND, 0x44, false); 37 | } 38 | namespace CS2_Offsets//CS2固定偏移量 (游戏更新时需要同时更新 https://github.com/a2x/cs2-dumper.git) 39 | { 40 | string Offsets_Date = "[0000-00-00 00:00]"; 41 | uintptr_t dwLocalPlayerController = 0x0; 42 | uintptr_t dwLocalPlayerPawn = 0x0; 43 | uintptr_t dwEntityList = 0x0; 44 | uintptr_t dwViewAngles = 0x0; 45 | uintptr_t dwViewMatrix = 0x0; 46 | uintptr_t m_hPlayerPawn = 0x0; 47 | uintptr_t m_iTeamNum = 0x0; 48 | uintptr_t m_ArmorValue = 0x0; 49 | uintptr_t m_iHealth = 0x0; 50 | uintptr_t m_iIDEntIndex = 0x0; 51 | uintptr_t m_fFlags = 0x0; 52 | uintptr_t m_iShotsFired = 0x0; 53 | uintptr_t m_vecVelocity = 0x0; 54 | uintptr_t m_bSpotted = 0x0;//m_entitySpottedState + m_bSpotted 55 | uintptr_t m_bIsScoped = 0x0; 56 | uintptr_t m_pClippingWeapon = 0x0; 57 | uintptr_t m_pGameSceneNode = 0x0; 58 | uintptr_t m_vecOrigin = 0x0; 59 | uintptr_t m_aimPunchCache = 0x0; 60 | uintptr_t m_vecViewOffset = 0x0; 61 | uintptr_t m_dwBoneMatrix = 0x0;//m_modelState + 0x80 62 | uintptr_t m_iszPlayerName = 0x0; 63 | uintptr_t m_pActionTrackingServices = 0x0; 64 | uintptr_t m_iNumRoundKills = 0x0; 65 | uintptr_t m_unTotalRoundDamageDealt = 0x0; 66 | uintptr_t m_iItemDefinitionIndex = 0x0;//m_AttributeManager + m_Item + m_iItemDefinitionIndex 67 | uintptr_t m_angEyeAngles = 0x0; 68 | } 69 | namespace Base//基础内存函数 70 | { 71 | uintptr_t EntityList() noexcept { return CS2_MEM.Read(Module_client + CS2_Offsets::dwEntityList); }//实体列表 72 | uintptr_t Convert(uintptr_t EntityList, uintptr_t Player) noexcept { return CS2_MEM.Read(CS2_MEM.Read(EntityList + 8 * ((Player & 0x7FFF) >> 9) + 16) + 120 * (Player & 0x1FF)); }//各种转换 73 | class PlayerPawn//玩家Pawn内存类 74 | { 75 | private:uintptr_t m_PlayerPawn = 0; public:PlayerPawn(uintptr_t dwPlayerPawn) noexcept { m_PlayerPawn = dwPlayerPawn; }; 76 | uintptr_t Pawn() const noexcept { return m_PlayerPawn; }//人物地址 77 | short Health() const noexcept { return CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_iHealth); }//人物血量 78 | short Armor() const noexcept { return CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_ArmorValue); }//人物护甲 79 | short TeamNumber() const noexcept { return CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_iTeamNum); }//人物队伍 80 | short IDEntIndex() const noexcept { return CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_iIDEntIndex); }//人物瞄准的实体ID 81 | PlayerPawn IDEntIndex_Pawn() const noexcept//瞄准实体的人物Pawn 82 | { 83 | const auto Index = CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_iIDEntIndex); 84 | if (Index <= 10000)return Convert(EntityList(), Index); else return 0; 85 | } 86 | short Flags() const noexcept { return CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_fFlags); }//人物状态 87 | short ShotsFired() const noexcept { return CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_iShotsFired); }//人物开枪子弹数量 88 | short Spotted() const noexcept { return CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_bSpotted); }//人物发现状态 89 | short Scoped() const noexcept { const auto Scoped = CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_bIsScoped); if (Scoped == 65536)return 0; else return Scoped; }//人物狙击枪开镜 90 | short ActiveWeapon(BOOL Type = 0) const noexcept//人物手持武器(类型,ID) 91 | { 92 | const auto ClippingWeapon = CS2_MEM.Read(CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_pClippingWeapon) + CS2_Offsets::m_iItemDefinitionIndex); 93 | if (Type)//武器类型 0:无效 1:手枪 2:连射枪 3:狙击枪 4:霰弹枪 94 | { 95 | switch (ClippingWeapon) 96 | { 97 | case 1: return 1; 98 | case 2: return 1; 99 | case 3: return 1; 100 | case 4: return 1; 101 | case 7: return 2; 102 | case 8: return 2; 103 | case 9: return 3; 104 | case 10: return 2; 105 | case 11: return 3; 106 | case 13: return 2; 107 | case 14: return 2; 108 | case 16: return 2; 109 | case 17: return 2; 110 | case 19: return 2; 111 | case 23: return 2; 112 | case 24: return 2; 113 | case 25: return 4; 114 | case 26: return 2; 115 | case 27: return 4; 116 | case 28: return 2; 117 | case 29: return 4; 118 | case 30: return 1; 119 | case 32: return 1; 120 | case 33: return 2; 121 | case 34: return 2; 122 | case 35: return 4; 123 | case 36: return 1; 124 | case 38: return 3; 125 | case 39: return 2; 126 | case 40: return 3; 127 | case 60: return 2; 128 | case 61: return 1; 129 | case 63: return 1; 130 | case 64: return 1; 131 | default: return 0; 132 | } 133 | } 134 | else return ClippingWeapon; 135 | } 136 | float MoveSpeed() const noexcept { const auto Velocity = CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_vecVelocity); return hypot(Velocity.x, Velocity.y); }//人物移动速度 137 | string ActiveWeaponName(BOOL Use_WeaponBase = false, uintptr_t WeaponBase = 0) const noexcept//人物手持武器名称 138 | { 139 | auto ClippingWeapon = CS2_MEM.Read(CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_pClippingWeapon) + CS2_Offsets::m_iItemDefinitionIndex); 140 | if (Use_WeaponBase)ClippingWeapon = CS2_MEM.Read(WeaponBase + CS2_Offsets::m_iItemDefinitionIndex); 141 | if (ClippingWeapon >= 500 && ClippingWeapon <= 600)return "KNIFE"; 142 | switch (ClippingWeapon) 143 | { 144 | case 1: return "DEAGLE"; 145 | case 2: return "DUAL BERETTAS"; 146 | case 3: return "FN57"; 147 | case 4: return "GLOCK"; 148 | case 7: return "AK47"; 149 | case 8: return "AUG"; 150 | case 9: return "AWP"; 151 | case 10: return "FAMAS"; 152 | case 11: return "G3SG1"; 153 | case 13: return "GALILAR"; 154 | case 14: return "M249"; 155 | case 16: return "M4A1"; 156 | case 17: return "MAC10"; 157 | case 19: return "P90"; 158 | case 23: return "MP5"; 159 | case 24: return "UMP45"; 160 | case 25: return "XM1014"; 161 | case 26: return "BIZON"; 162 | case 27: return "MAG7"; 163 | case 28: return "NEGEV"; 164 | case 29: return "SAWED"; 165 | case 30: return "TEC9"; 166 | case 31: return "TASER"; 167 | case 32: return "P2000"; 168 | case 33: return "MP7"; 169 | case 34: return "MP9"; 170 | case 35: return "NOVA"; 171 | case 36: return "P250"; 172 | case 38: return "SCAR20"; 173 | case 39: return "SG553"; 174 | case 40: return "SSG08"; 175 | case 42: return "KNIFE"; 176 | case 43: return "FLASH"; 177 | case 44: return "GRENADE"; 178 | case 45: return "SMOKE"; 179 | case 46: return "MOLOTOV"; 180 | case 47: return "DECOY"; 181 | case 48: return "INCGRNNADE"; 182 | case 49: return "C4"; 183 | case 59: return "KNIFE"; 184 | case 60: return "M4A1-S"; 185 | case 61: return "USP-S"; 186 | case 63: return "CZ75"; 187 | case 64: return "REVOLVER"; 188 | default: return "NONE"; 189 | } 190 | } 191 | string EntityName() const noexcept { return CS2_MEM.Read_str(CS2_MEM.Read(CS2_MEM.Read(m_PlayerPawn + 0x10) + 0x20)); }//实体名称(非人物) 192 | Variable::Vector3 Velocity() const noexcept { return CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_vecVelocity); }//人物单方向移动速度 193 | Variable::Vector3 Origin() const noexcept { return CS2_MEM.Read(CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_pGameSceneNode) + CS2_Offsets::m_vecOrigin); }//人物世界坐标 194 | Variable::Vector3 AimPunchAngle() const noexcept//人物手持武器后坐力 195 | { 196 | struct UtlVec { DWORD64 count; DWORD64 data; }; const auto PunchCache = CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_aimPunchCache);//后座缓存 197 | if (PunchCache.count > 0 && PunchCache.count < 0xFFFF)return CS2_MEM.Read(PunchCache.data + (PunchCache.count - 1) * sizeof(Variable::Vector3)); 198 | } 199 | Variable::Vector3 ViewOffset() const noexcept { return CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_vecViewOffset); }//人物朝向偏移 200 | Variable::Vector3 BonePos(short Bone_ID = 3) const noexcept//人物骨骼坐标 201 | { 202 | const auto BoneMatrix = CS2_MEM.Read(CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_pGameSceneNode) + CS2_Offsets::m_dwBoneMatrix); 203 | return CS2_MEM.Read(BoneMatrix + Bone_ID * 0x20); 204 | } 205 | Variable::Vector3 ViewAngles() const noexcept { return CS2_MEM.Read(m_PlayerPawn + CS2_Offsets::m_angEyeAngles); }//人物朝向角度 206 | }; 207 | PlayerPawn LocalPlayer() noexcept { return CS2_MEM.Read(Module_client + CS2_Offsets::dwLocalPlayerPawn); }//本地人物 208 | uintptr_t LocalPlayerController() noexcept { return CS2_MEM.Read(Module_client + CS2_Offsets::dwLocalPlayerController); }//本地人物控制器 209 | Variable::Vector3 ViewAngles() noexcept { return CS2_MEM.Read(Module_client + CS2_Offsets::dwViewAngles); }//本地人物朝向 210 | Variable::view_matrix_t ViewMatrix() noexcept { return CS2_MEM.Read(Module_client + CS2_Offsets::dwViewMatrix); }//本地人物视觉矩阵(用于制作ESP) 211 | } 212 | Base::PlayerPawn Global_LocalPlayer = NULL;//本地人物地址 213 | namespace Advanced//进阶内存扩展函数 214 | { 215 | Base::PlayerPawn Traverse_Player(short i, BOOL ReturnPlayerController = false) noexcept//遍历人物Pawn 216 | { 217 | const auto Entitylist = Base::EntityList(); 218 | const auto PlayerController = Base::Convert(Entitylist, i); 219 | if (ReturnPlayerController)return PlayerController; 220 | return Base::Convert(Entitylist, CS2_MEM.Read(PlayerController + CS2_Offsets::m_hPlayerPawn)); 221 | } 222 | string LocalPlayer_Name() noexcept//本地人物名称 223 | { 224 | const auto ReturnValue = CS2_MEM.Read_str(Base::LocalPlayerController() + CS2_Offsets::m_iszPlayerName); 225 | if (ReturnValue == "")return "None"; 226 | else return ReturnValue; 227 | } 228 | string Player_Name(short i) noexcept//通过ClassID获取名称 229 | { 230 | const auto PlayerController = Base::Convert(Base::EntityList(), i); 231 | if (!PlayerController)return "None"; 232 | else return CS2_MEM.Read_str(PlayerController + CS2_Offsets::m_iszPlayerName); 233 | } 234 | BOOL Check_Enemy(Base::PlayerPawn PlayerPawn) noexcept { return (PlayerPawn.Pawn() != Global_LocalPlayer.Pawn() && PlayerPawn.Health() > 0 && (!Global_TeamCheck || Global_LocalPlayer.TeamNumber() != PlayerPawn.TeamNumber()) && PlayerPawn.TeamNumber() != 1); }//判断人物是否是敌人 235 | BOOL Stop_Move(short TriggerValue = 85, BOOL Movement = true) noexcept//急停 236 | { 237 | const auto LocalVel = Global_LocalPlayer.Velocity(); 238 | if (hypot(LocalVel.x, LocalVel.y) <= TriggerValue)return true;//当精准则返回真 239 | if (Movement)//停止移动 反之只返回是否精准 240 | { 241 | const auto LocalYaw = Base::ViewAngles().y; 242 | const auto X = (LocalVel.x * cos(LocalYaw / 180 * 3.1415926) + LocalVel.y * sin(LocalYaw / 180 * 3.1415926)); 243 | const auto Y = (LocalVel.y * cos(LocalYaw / 180 * 3.1415926) - LocalVel.x * sin(LocalYaw / 180 * 3.1415926)); 244 | ExecuteCommand("-back"); ExecuteCommand("-forward"); ExecuteCommand("-right"); ExecuteCommand("-left"); 245 | if (X > 30) { ExecuteCommand("+back"); Sleep(1); ExecuteCommand("-back"); } 246 | else if (X < -30) { ExecuteCommand("+forward"); Sleep(1); ExecuteCommand("-forward"); } 247 | if (Y > 30) { ExecuteCommand("+right"); Sleep(1); ExecuteCommand("-right"); } 248 | else if (Y < -30) { ExecuteCommand("+left"); Sleep(1); ExecuteCommand("-left"); } 249 | } 250 | return false; 251 | } 252 | Variable::Vector3 World_Screen(Variable::Vector3 Pos) noexcept { return WorldToScreen(GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), Pos, Base::ViewMatrix()); }//世界坐标转换屏幕坐标 253 | short Local_RoundDamage(BOOL Return_Kill = false) noexcept//回合伤害和击杀数 254 | { 255 | const auto Local_RoundValue = CS2_MEM.Read(Base::LocalPlayerController() + CS2_Offsets::m_pActionTrackingServices); 256 | if (Return_Kill)return CS2_MEM.Read(Local_RoundValue + CS2_Offsets::m_iNumRoundKills); 257 | else return CS2_MEM.Read(Local_RoundValue + CS2_Offsets::m_unTotalRoundDamageDealt); 258 | } 259 | void Move_to_Angle(Variable::Vector3 Target_Angles = { 0,0,0 }, float Smooth = 40, float Offset = 0.25, int Traversals_Mum = 100) noexcept//本地人物将视角移动到指定坐标 260 | { 261 | for (int i = 0; i <= Traversals_Mum; ++i) 262 | { 263 | const auto LocalPlayer_Angle = Base::ViewAngles();//本地人物朝向 264 | if (hypot(LocalPlayer_Angle.x - Target_Angles.x, LocalPlayer_Angle.y - Target_Angles.y) <= Offset)return; 265 | System::Mouse_Move((-Target_Angles.y + LocalPlayer_Angle.y) * Smooth, (Target_Angles.x - LocalPlayer_Angle.x) * Smooth); 266 | if (Traversals_Mum != 1)Sleep(1); 267 | } 268 | } 269 | BOOL Move_to_Pos(Variable::Vector3 Target_Pos = { 0,0,0 }, float Edge = 5) noexcept//本地人物移动到指定世界坐标 270 | { 271 | const auto LocalPlayer_Pos = Global_LocalPlayer.Origin();//本地人物所处世界坐标 272 | const auto Target_Distance = hypot(LocalPlayer_Pos.x - Target_Pos.x, LocalPlayer_Pos.y - Target_Pos.y);//计算与目标坐标的距离 273 | if (Target_Distance <= Edge)return true;//达到边缘则不进行移动 274 | auto Offset_Angle = Base::ViewAngles().y - Variable::Pos_Angle(LocalPlayer_Pos, Target_Pos); if (Offset_Angle < 0)Offset_Angle += 360;//角度偏移 275 | if (Offset_Angle > 315 - 15 || Offset_Angle < 45 + 15)ExecuteCommand("+forward"); 276 | else ExecuteCommand("-forward"); 277 | if (Offset_Angle > 45 - 15 && Offset_Angle < 135 + 15)ExecuteCommand("+right"); 278 | else ExecuteCommand("-right"); 279 | if (Offset_Angle > 135 - 15 && Offset_Angle < 225 + 15)ExecuteCommand("+back"); 280 | else ExecuteCommand("-back"); 281 | if (Offset_Angle > 225 - 15 && Offset_Angle < 315 + 15)ExecuteCommand("+left"); 282 | else ExecuteCommand("-left"); 283 | if (Target_Distance <= Edge * 2)//降低移动速度 284 | { 285 | Sleep(1);//按键缓冲 286 | ExecuteCommand("-forward"); 287 | ExecuteCommand("-right"); 288 | ExecuteCommand("-back"); 289 | ExecuteCommand("-left");//释放所有按键 290 | } 291 | return false;//未移动到目标坐标 292 | } 293 | } 294 | void ReLoad(BOOL Timeout = false) noexcept//刷新CS2进程地址和模块地址和有效实体 295 | { 296 | if (System::Sleep_Tick(1000) || Timeout) 297 | { 298 | CS2_MEM = { "cs2.exe" }; 299 | CS2_HWND = CS2_MEM.Get_ProcessHWND(); 300 | Module_client = CS2_MEM.Get_Module("client.dll"); 301 | Module_engine = CS2_MEM.Get_Module("engine.dll"); 302 | Module_server = CS2_MEM.Get_Module("server.dll"); 303 | Global_LocalPlayer = Base::LocalPlayer(); 304 | if (System::Sleep_Tick(5000) || Timeout)//自动更新偏移量延迟 (减少流量使用) 305 | { 306 | System::URL_READ URL_OFFSETS = { "Cache_CS2_Offsets" }; 307 | if (URL_OFFSETS.StoreMem("https://github.com/Coslly/Rensen/blob/main/Cloud%20Files/Offsets.ofs?raw=true"))//自动更新偏移量 Github更新有十分钟延迟 中国用户需要挂梯子 308 | { 309 | CS2_Offsets::Offsets_Date = URL_OFFSETS.Read(1); CS2_Offsets::Offsets_Date.erase(0, 2);//偏移更新日期 删除注释符号 310 | CS2_Offsets::Offsets_Date = "[" + CS2_Offsets::Offsets_Date + "]";//加上括号 311 | CS2_Offsets::dwLocalPlayerController = Variable::string_uint_(URL_OFFSETS.Read(4)); 312 | CS2_Offsets::dwLocalPlayerPawn = Variable::string_uint_(URL_OFFSETS.Read(6)); 313 | CS2_Offsets::dwEntityList = Variable::string_uint_(URL_OFFSETS.Read(8)); 314 | CS2_Offsets::dwViewAngles = Variable::string_uint_(URL_OFFSETS.Read(10)); 315 | CS2_Offsets::dwViewMatrix = Variable::string_uint_(URL_OFFSETS.Read(12)); 316 | CS2_Offsets::m_hPlayerPawn = Variable::string_uint_(URL_OFFSETS.Read(14)); 317 | CS2_Offsets::m_iTeamNum = Variable::string_uint_(URL_OFFSETS.Read(16)); 318 | CS2_Offsets::m_ArmorValue = Variable::string_uint_(URL_OFFSETS.Read(18)); 319 | CS2_Offsets::m_iHealth = Variable::string_uint_(URL_OFFSETS.Read(20)); 320 | CS2_Offsets::m_iIDEntIndex = Variable::string_uint_(URL_OFFSETS.Read(22)); 321 | CS2_Offsets::m_fFlags = Variable::string_uint_(URL_OFFSETS.Read(24)); 322 | CS2_Offsets::m_iShotsFired = Variable::string_uint_(URL_OFFSETS.Read(26)); 323 | CS2_Offsets::m_vecVelocity = Variable::string_uint_(URL_OFFSETS.Read(28)); 324 | CS2_Offsets::m_bSpotted = Variable::string_uint_(URL_OFFSETS.Read(30)); 325 | CS2_Offsets::m_bIsScoped = Variable::string_uint_(URL_OFFSETS.Read(32)); 326 | CS2_Offsets::m_pClippingWeapon = Variable::string_uint_(URL_OFFSETS.Read(34)); 327 | CS2_Offsets::m_pGameSceneNode = Variable::string_uint_(URL_OFFSETS.Read(36)); 328 | CS2_Offsets::m_vecOrigin = Variable::string_uint_(URL_OFFSETS.Read(38)); 329 | CS2_Offsets::m_aimPunchCache = Variable::string_uint_(URL_OFFSETS.Read(40)); 330 | CS2_Offsets::m_vecViewOffset = Variable::string_uint_(URL_OFFSETS.Read(42)); 331 | CS2_Offsets::m_dwBoneMatrix = Variable::string_uint_(URL_OFFSETS.Read(44)); 332 | CS2_Offsets::m_iszPlayerName = Variable::string_uint_(URL_OFFSETS.Read(46)); 333 | CS2_Offsets::m_pActionTrackingServices = Variable::string_uint_(URL_OFFSETS.Read(48)); 334 | CS2_Offsets::m_iNumRoundKills = Variable::string_uint_(URL_OFFSETS.Read(50)); 335 | CS2_Offsets::m_unTotalRoundDamageDealt = Variable::string_uint_(URL_OFFSETS.Read(52)); 336 | CS2_Offsets::m_iItemDefinitionIndex = Variable::string_uint_(URL_OFFSETS.Read(54)); 337 | CS2_Offsets::m_angEyeAngles = Variable::string_uint_(URL_OFFSETS.Read(56)); 338 | URL_OFFSETS.Release();//释放文件 339 | } 340 | if (!Timeout)//报错项 341 | { 342 | if (!CS2_HWND)System::Log("Error: CS2 process not found", true);//未启动CS时报错 343 | if (CS2_Offsets::Offsets_Date == "[0000-00-00 00:00]")System::Log("Error: Unable to obtain cloud offset", true);//无法获取偏移量时报错 344 | } 345 | } 346 | Global_ValidClassID = {};//遍历前刷新有效实体ID 347 | for (short i = 0; i <= 64; ++i)//最大人数64 348 | { 349 | const auto PlayerPawn = Advanced::Traverse_Player(i); 350 | if (!PlayerPawn.Health() > 0 || (PlayerPawn.Origin().x == 0 && PlayerPawn.Origin().y == 0))continue;//多点检测 351 | Global_ValidClassID.push_back(i); 352 | } 353 | } 354 | Global_IsShowWindow = CS2_MEM.Get_ProcessHWND() == GetForegroundWindow();//刷新是否是最前端窗口 355 | } 356 | } 357 | using namespace CS2_SDK; -------------------------------------------------------------------------------- /Rensen/Rensen/Main.cpp: -------------------------------------------------------------------------------- 1 | #include "Head.h" 2 | #include "CS2_SDK.h" 3 | const float Rensen_Version = 4.41;//程序版本 4 | const string Rensen_ReleaseDate = "[2024-08-09 19:30]";//程序发布日期时间 5 | namespace Control_Var//套用到菜单的调试变量 (例如功能开关) 6 | { 7 | EasyGUI::EasyGUI GUI_VAR; EasyGUI::EasyGUI_IO GUI_IO; BOOL Menu_Open = true;//菜单初始化变量 8 | const string UI_LocalConfigPath = "Rensen.cfg"; 9 | const string UI_DefaultConfig = "1\n6\n1\n1\n0\n1\n1\n100\n1\n1\n0\n100\n0\n0\n100\n0\n1\n100\n5\n1\n5\n0\n1\n150\n1\n0.015\n0.004\n1\n1\n2\n1\n500\n1\n0\n0\n1\n1\n0\n1\n0\n1\n1\n1\n1\n40\n80\n0\n255\n255\n255\n255\n1\n1\n1\n4\n260\n180\n26\n11\n1\n1\n1000\n10\n1\n1\n5\n5\n1\n1\n0\n0\n1\n1\n1\n0\n0\n1\n160\n800\n350\n0\n45\n0\n200\n200\n255\n250\n200\n200\n255\n2\n0\n1\n1\n4\n10\n10\n0\n1\n2\n10\n1\n500\n1\n1\n4\n1\n3\n1\n10\n100\n1\n1\n0\n1\n1\n50\n1\n6\n0\n5\n1\n5\n0\n1\n\n13\n0\n1\n9\n1\n255\n0\n100\n0\n400\n40\n250\n40\n";//默认参数 10 | //---------------------------------------------------------------------------------------------- 11 | BOOL UI_Visual_Res_2560, UI_Visual_Res_1920, UI_Visual_Res_1280, UI_Visual_Res_960; 12 | BOOL UI_Visual_Radar_Show; 13 | BOOL UI_Misc_LoadCloudConfig; 14 | BOOL UI_Setting_OPENLINKAuthor; 15 | BOOL UI_Setting_SaveLocalConfig; 16 | BOOL UI_Setting_StartCS, UI_Setting_QuitCS; 17 | BOOL UI_Setting_GithubRepositories; 18 | BOOL UI_Setting_RestartMenu; 19 | BOOL UI_Setting_Unload; 20 | //以上变量不需要纳入参数------------------------------------------------------------------------ 21 | BOOL UI_Legit_Aimbot = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 1)); 22 | int UI_Legit_Aimbot_Key = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 2)); 23 | BOOL UI_Legit_Aimbot_JudgingWall = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 3)); 24 | BOOL UI_Legit_Aimbot_RemoveRecoil = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 4)); 25 | BOOL UI_Legit_Aimbot_TriggerOnAim = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 5)); 26 | BOOL UI_Legit_Aimbot_AutoShoot = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 6)); 27 | BOOL UI_Legit_Aimbot_AutoStop = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 7)); 28 | int UI_Legit_Aimbot_AutoShootDelay = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 8)); 29 | BOOL UI_Legit_AdaptiveAimbot = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 9)); 30 | BOOL UI_Legit_Armory_ShowAimbotRange = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 10)); 31 | BOOL UI_Legit_Armory_BodyAim_PISTOL = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 11)); 32 | int UI_Legit_Armory_Range_PISTOL = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 12)); 33 | float UI_Legit_Armory_Smooth_PISTOL = Variable::string_float_(System::Get_File(UI_LocalConfigPath, 13)); 34 | BOOL UI_Legit_Armory_BodyAim_RIFLE = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 14)); 35 | int UI_Legit_Armory_Range_RIFLE = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 15)); 36 | float UI_Legit_Armory_Smooth_RIFLE = Variable::string_float_(System::Get_File(UI_LocalConfigPath, 16)); 37 | BOOL UI_Legit_Armory_BodyAim_SNIPER = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 17)); 38 | int UI_Legit_Armory_Range_SNIPER = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 18)); 39 | float UI_Legit_Armory_Smooth_SNIPER = Variable::string_float_(System::Get_File(UI_LocalConfigPath, 19)); 40 | BOOL UI_Legit_Triggerbot = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 20)); 41 | int UI_Legit_Triggerbot_Key = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 21)); 42 | BOOL UI_Legit_Triggerbot_AnyTarget = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 22)); 43 | int UI_Legit_Triggerbot_ShootDelay = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 23)); 44 | int UI_Legit_Triggerbot_ShootDuration = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 24)); 45 | BOOL UI_Legit_PreciseAim = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 25)); 46 | float UI_Legit_PreciseAim_DefaultSensitivity = Variable::string_float_(System::Get_File(UI_LocalConfigPath, 26)); 47 | float UI_Legit_PreciseAim_EnableSensitivity = Variable::string_float_(System::Get_File(UI_LocalConfigPath, 27)); 48 | BOOL UI_Legit_RemoveRecoil = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 28)); 49 | BOOL UI_Legit_RemoveRecoil_LateralRepair = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 29)); 50 | int UI_Legit_RemoveRecoil_StartBullet = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 30)); 51 | BOOL UI_Legit_Backtracking = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 31)); 52 | int UI_Legit_Backtracking_MaximumTime = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 32)); 53 | BOOL UI_Visual_ESP = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 33)); 54 | int UI_Visual_ESP_Key = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 34)); 55 | BOOL UI_Visual_ESP_Box = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 35)); 56 | BOOL UI_Visual_ESP_Health = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 36)); 57 | BOOL UI_Visual_ESP_ActiveWeapon = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 37)); 58 | BOOL UI_Visual_ESP_Line = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 38)); 59 | BOOL UI_Visual_ESP_Skeleton = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 39)); 60 | BOOL UI_Visual_ESP_HeadDot = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 40)); 61 | BOOL UI_Visual_ESP_State = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 41)); 62 | BOOL UI_Visual_ESP_Name = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 42)); 63 | BOOL UI_Visual_ESP_Drops = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 43)); 64 | BOOL UI_Visual_ESP_OutFOV = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 44)); 65 | int UI_Visual_ESP_OutFOV_Size = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 45)); 66 | int UI_Visual_ESP_OutFOV_Radius = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 46)); 67 | BOOL UI_Visual_ESP_CustomColor = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 47)); 68 | Variable::Vector4 UI_Visual_ESP_CustomColor_Color = { Variable::string_int_(System::Get_File(UI_LocalConfigPath, 48)),Variable::string_int_(System::Get_File(UI_LocalConfigPath, 49)),Variable::string_int_(System::Get_File(UI_LocalConfigPath, 50)),Variable::string_int_(System::Get_File(UI_LocalConfigPath, 51)) }; 69 | int UI_Visual_ESP_DrawDelay = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 52)); 70 | BOOL UI_Visual_Radar = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 53)); 71 | BOOL UI_Visual_Radar_FollowAngle = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 54)); 72 | float UI_Visual_Radar_Range = Variable::string_float_(System::Get_File(UI_LocalConfigPath, 55)); 73 | int UI_Visual_Radar_Size = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 56)); 74 | int UI_Visual_Radar_Alpha = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 57)); 75 | Variable::Vector2 UI_Visual_Radar_Pos = { Variable::string_int_(System::Get_File(UI_LocalConfigPath, 58)), Variable::string_int_(System::Get_File(UI_LocalConfigPath, 59)) }; 76 | BOOL UI_Misc_BunnyHop = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 60)); 77 | BOOL UI_Misc_HitSound = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 61)); 78 | int UI_Misc_HitSound_Tone = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 62)); 79 | int UI_Misc_HitSound_Length = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 63)); 80 | BOOL UI_Visual_HitMark = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 64)); 81 | BOOL UI_Visual_HitMark_Damage = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 65)); 82 | int UI_Visual_HitMark_Range = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 66)); 83 | int UI_Visual_HitMark_Length = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 67)); 84 | BOOL UI_Misc_AutoKnife = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 68)); 85 | BOOL UI_Misc_AutoTaser = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 69)); 86 | int UI_Misc_AutoKnife_Key = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 70)); 87 | int UI_Misc_AutoTaser_Key = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 71)); 88 | BOOL UI_Misc_Watermark = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 72)); 89 | BOOL UI_Misc_SniperCrosshair = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 73)); 90 | BOOL UI_Misc_TeamCheck = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 74)); 91 | BOOL UI_Misc_LockGameWindow = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 75)); 92 | BOOL UI_Debug_ShowDebugWindow = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 76)); 93 | BOOL UI_Misc_Sonar = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 77)); 94 | int UI_Misc_Sonar_Key = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 78)); 95 | int UI_Misc_Sonar_Range_Far = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 79)); 96 | int UI_Misc_Sonar_Range_Near = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 80)); 97 | int UI_Misc_SelectedConfig = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 81)); 98 | int UI_Setting_MenuKey = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 82)); 99 | BOOL UI_Setting_CustomColor = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 83)); 100 | Variable::Vector4 UI_Setting_MainColor = { Variable::string_int_(System::Get_File(UI_LocalConfigPath, 84)),Variable::string_int_(System::Get_File(UI_LocalConfigPath, 85)),Variable::string_int_(System::Get_File(UI_LocalConfigPath, 86)),Variable::string_int_(System::Get_File(UI_LocalConfigPath, 87)) }; 101 | Variable::Vector4 UI_Visual_HitMark_Color = { Variable::string_int_(System::Get_File(UI_LocalConfigPath, 88)),Variable::string_int_(System::Get_File(UI_LocalConfigPath, 89)),Variable::string_int_(System::Get_File(UI_LocalConfigPath, 90)) }; 102 | int UI_Visual_HitMark_Thickness = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 91)); 103 | BOOL UI_Legit_Triggerbot_ShootWhenAccurate = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 92)); 104 | BOOL UI_Misc_AntiAFKKick = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 93)); 105 | BOOL UI_Legit_MagnetAim = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 94)); 106 | float UI_Legit_MagnetAim_Smooth = Variable::string_float_(System::Get_File(UI_LocalConfigPath, 95)); 107 | float UI_Legit_AdaptiveAimbot_InitialSmooth = Variable::string_float_(System::Get_File(UI_LocalConfigPath, 96)); 108 | int UI_Misc_SniperCrosshair_Size = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 97)); 109 | BOOL UI_Spoof_Spoof = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 98)); 110 | BOOL UI_Spoof_AimbotTeam = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 99)); 111 | int UI_Spoof_AimbotTeam_Key = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 100)); 112 | float UI_Spoof_AimbotTeam_Smooth = Variable::string_float_(System::Get_File(UI_LocalConfigPath, 101)); 113 | BOOL UI_Spoof_IncreaseRecoil = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 102)); 114 | int UI_Spoof_IncreaseRecoil_Value = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 103)); 115 | BOOL UI_Spoof_DropC4 = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 104)); 116 | BOOL UI_Spoof_FakeAntiAim = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 105)); 117 | int UI_Spoof_FakeAntiAim_Key = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 106)); 118 | BOOL UI_Spoof_KillDropSniper = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 107)); 119 | float UI_Setting_MenuAnimation = Variable::string_float_(System::Get_File(UI_LocalConfigPath, 108)); 120 | BOOL UI_Visual_HitMark_KillEffect = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 109)); 121 | int UI_Visual_HitMark_KillEffect_Quantity = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 110)); 122 | int UI_Visual_HitMark_KillEffect_Range = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 111)); 123 | int UI_Visual_ESP_Skeleton_Thickness = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 112)); 124 | BOOL UI_Misc_ByPassOBS = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 113)); 125 | BOOL UI_Misc_SavePerformance = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 114)); 126 | BOOL UI_Legit_Aimbot_AutoScope = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 115)); 127 | BOOL UI_Misc_NightMode = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 116)); 128 | int UI_Misc_NightMode_Alpha = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 117)); 129 | BOOL UI_Spoof_LearnPlayer = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 118)); 130 | int UI_Spoof_LearnPlayer_Key = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 119)); 131 | BOOL UI_Misc_AutoPeek = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 120)); 132 | int UI_Misc_AutoPeek_Key = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 121)); 133 | BOOL UI_Spoof_FakeRageBot = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 122)); 134 | int UI_Spoof_FakeRageBot_Key = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 123)); 135 | int UI_Spoof_FakeRageBot_Target = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 124)); 136 | BOOL UI_Misc_QuickStop = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 125)); 137 | string UI_Setting_MenuFont = System::Get_File(UI_LocalConfigPath, 126); 138 | int UI_Setting_MenuFontSize = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 127)); 139 | BOOL UI_Misc_AutoKillCeasefire = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 128)); 140 | BOOL UI_Misc_CursorESP = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 129)); 141 | int UI_Misc_CursorESP_Key = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 130)); 142 | BOOL UI_Legit_Armory_HitSiteParser = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 131)); 143 | int UI_Visual_ESP_DrawAlpha = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 132)); 144 | BOOL UI_Legit_Armory_BodyAim_SHOTGUN = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 133)); 145 | int UI_Legit_Armory_Range_SHOTGUN = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 134)); 146 | float UI_Legit_Armory_Smooth_SHOTGUN = Variable::string_float_(System::Get_File(UI_LocalConfigPath, 135)); 147 | int UI_Legit_Armory_TriggerDistance_SHOTGUN = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 136)); 148 | int UI_Legit_MagnetAim_Range = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 137)); 149 | int UI_Legit_Backtracking_MinimumTime = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 138)); 150 | int UI_Legit_RemoveRecoil_Sensitive = Variable::string_int_(System::Get_File(UI_LocalConfigPath, 139)); 151 | //---------------------------------------------------------------------------------------------- 152 | void SaveLocalConfig() noexcept//保存本地参数 153 | { 154 | System::Create_File(UI_LocalConfigPath, 155 | to_string(UI_Legit_Aimbot) + "\n" + 156 | to_string(UI_Legit_Aimbot_Key) + "\n" + 157 | to_string(UI_Legit_Aimbot_JudgingWall) + "\n" + 158 | to_string(UI_Legit_Aimbot_RemoveRecoil) + "\n" + 159 | to_string(UI_Legit_Aimbot_TriggerOnAim) + "\n" + 160 | to_string(UI_Legit_Aimbot_AutoShoot) + "\n" + 161 | to_string(UI_Legit_Aimbot_AutoStop) + "\n" + 162 | to_string(UI_Legit_Aimbot_AutoShootDelay) + "\n" + 163 | to_string(UI_Legit_AdaptiveAimbot) + "\n" + 164 | to_string(UI_Legit_Armory_ShowAimbotRange) + "\n" + 165 | to_string(UI_Legit_Armory_BodyAim_PISTOL) + "\n" + 166 | to_string(UI_Legit_Armory_Range_PISTOL) + "\n" + 167 | to_string(UI_Legit_Armory_Smooth_PISTOL) + "\n" + 168 | to_string(UI_Legit_Armory_BodyAim_RIFLE) + "\n" + 169 | to_string(UI_Legit_Armory_Range_RIFLE) + "\n" + 170 | to_string(UI_Legit_Armory_Smooth_RIFLE) + "\n" + 171 | to_string(UI_Legit_Armory_BodyAim_SNIPER) + "\n" + 172 | to_string(UI_Legit_Armory_Range_SNIPER) + "\n" + 173 | to_string(UI_Legit_Armory_Smooth_SNIPER) + "\n" + 174 | to_string(UI_Legit_Triggerbot) + "\n" + 175 | to_string(UI_Legit_Triggerbot_Key) + "\n" + 176 | to_string(UI_Legit_Triggerbot_AnyTarget) + "\n" + 177 | to_string(UI_Legit_Triggerbot_ShootDelay) + "\n" + 178 | to_string(UI_Legit_Triggerbot_ShootDuration) + "\n" + 179 | to_string(UI_Legit_PreciseAim) + "\n" + 180 | to_string(UI_Legit_PreciseAim_DefaultSensitivity) + "\n" + 181 | to_string(UI_Legit_PreciseAim_EnableSensitivity) + "\n" + 182 | to_string(UI_Legit_RemoveRecoil) + "\n" + 183 | to_string(UI_Legit_RemoveRecoil_LateralRepair) + "\n" + 184 | to_string(UI_Legit_RemoveRecoil_StartBullet) + "\n" + 185 | to_string(UI_Legit_Backtracking) + "\n" + 186 | to_string(UI_Legit_Backtracking_MaximumTime) + "\n" + 187 | to_string(UI_Visual_ESP) + "\n" + 188 | to_string(UI_Visual_ESP_Key) + "\n" + 189 | to_string(UI_Visual_ESP_Box) + "\n" + 190 | to_string(UI_Visual_ESP_Health) + "\n" + 191 | to_string(UI_Visual_ESP_ActiveWeapon) + "\n" + 192 | to_string(UI_Visual_ESP_Line) + "\n" + 193 | to_string(UI_Visual_ESP_Skeleton) + "\n" + 194 | to_string(UI_Visual_ESP_HeadDot) + "\n" + 195 | to_string(UI_Visual_ESP_State) + "\n" + 196 | to_string(UI_Visual_ESP_Name) + "\n" + 197 | to_string(UI_Visual_ESP_Drops) + "\n" + 198 | to_string(UI_Visual_ESP_OutFOV) + "\n" + 199 | to_string(UI_Visual_ESP_OutFOV_Size) + "\n" + 200 | to_string(UI_Visual_ESP_OutFOV_Radius) + "\n" + 201 | to_string(UI_Visual_ESP_CustomColor) + "\n" + 202 | to_string(UI_Visual_ESP_CustomColor_Color.r) + "\n" + 203 | to_string(UI_Visual_ESP_CustomColor_Color.g) + "\n" + 204 | to_string(UI_Visual_ESP_CustomColor_Color.b) + "\n" + 205 | to_string(UI_Visual_ESP_CustomColor_Color.a) + "\n" + 206 | to_string(UI_Visual_ESP_DrawDelay) + "\n" + 207 | to_string(UI_Visual_Radar) + "\n" + 208 | to_string(UI_Visual_Radar_FollowAngle) + "\n" + 209 | to_string(UI_Visual_Radar_Range) + "\n" + 210 | to_string(UI_Visual_Radar_Size) + "\n" + 211 | to_string(UI_Visual_Radar_Alpha) + "\n" + 212 | to_string(UI_Visual_Radar_Pos.x) + "\n" + 213 | to_string(UI_Visual_Radar_Pos.y) + "\n" + 214 | to_string(UI_Misc_BunnyHop) + "\n" + 215 | to_string(UI_Misc_HitSound) + "\n" + 216 | to_string(UI_Misc_HitSound_Tone) + "\n" + 217 | to_string(UI_Misc_HitSound_Length) + "\n" + 218 | to_string(UI_Visual_HitMark) + "\n" + 219 | to_string(UI_Visual_HitMark_Damage) + "\n" + 220 | to_string(UI_Visual_HitMark_Range) + "\n" + 221 | to_string(UI_Visual_HitMark_Length) + "\n" + 222 | to_string(UI_Misc_AutoKnife) + "\n" + 223 | to_string(UI_Misc_AutoTaser) + "\n" + 224 | to_string(UI_Misc_AutoKnife_Key) + "\n" + 225 | to_string(UI_Misc_AutoTaser_Key) + "\n" + 226 | to_string(UI_Misc_Watermark) + "\n" + 227 | to_string(UI_Misc_SniperCrosshair) + "\n" + 228 | to_string(UI_Misc_TeamCheck) + "\n" + 229 | to_string(UI_Misc_LockGameWindow) + "\n" + 230 | to_string(UI_Debug_ShowDebugWindow) + "\n" + 231 | to_string(UI_Misc_Sonar) + "\n" + 232 | to_string(UI_Misc_Sonar_Key) + "\n" + 233 | to_string(UI_Misc_Sonar_Range_Far) + "\n" + 234 | to_string(UI_Misc_Sonar_Range_Near) + "\n" + 235 | to_string(UI_Misc_SelectedConfig) + "\n" + 236 | to_string(UI_Setting_MenuKey) + "\n" + 237 | to_string(UI_Setting_CustomColor) + "\n" + 238 | to_string(UI_Setting_MainColor.r) + "\n" + 239 | to_string(UI_Setting_MainColor.g) + "\n" + 240 | to_string(UI_Setting_MainColor.b) + "\n" + 241 | to_string(UI_Setting_MainColor.a) + "\n" + 242 | to_string(UI_Visual_HitMark_Color.r) + "\n" + 243 | to_string(UI_Visual_HitMark_Color.g) + "\n" + 244 | to_string(UI_Visual_HitMark_Color.b) + "\n" + 245 | to_string(UI_Visual_HitMark_Thickness) + "\n" + 246 | to_string(UI_Legit_Triggerbot_ShootWhenAccurate) + "\n" + 247 | to_string(UI_Misc_AntiAFKKick) + "\n" + 248 | to_string(UI_Legit_MagnetAim) + "\n" + 249 | to_string(UI_Legit_MagnetAim_Smooth) + "\n" + 250 | to_string(UI_Legit_AdaptiveAimbot_InitialSmooth) + "\n" + 251 | to_string(UI_Misc_SniperCrosshair_Size) + "\n" + 252 | to_string(UI_Spoof_Spoof) + "\n" + 253 | to_string(UI_Spoof_AimbotTeam) + "\n" + 254 | to_string(UI_Spoof_AimbotTeam_Key) + "\n" + 255 | to_string(UI_Spoof_AimbotTeam_Smooth) + "\n" + 256 | to_string(UI_Spoof_IncreaseRecoil) + "\n" + 257 | to_string(UI_Spoof_IncreaseRecoil_Value) + "\n" + 258 | to_string(UI_Spoof_DropC4) + "\n" + 259 | to_string(UI_Spoof_FakeAntiAim) + "\n" + 260 | to_string(UI_Spoof_FakeAntiAim_Key) + "\n" + 261 | to_string(UI_Spoof_KillDropSniper) + "\n" + 262 | to_string(UI_Setting_MenuAnimation) + "\n" + 263 | to_string(UI_Visual_HitMark_KillEffect) + "\n" + 264 | to_string(UI_Visual_HitMark_KillEffect_Quantity) + "\n" + 265 | to_string(UI_Visual_HitMark_KillEffect_Range) + "\n" + 266 | to_string(UI_Visual_ESP_Skeleton_Thickness) + "\n" + 267 | to_string(UI_Misc_ByPassOBS) + "\n" + 268 | to_string(UI_Misc_SavePerformance) + "\n" + 269 | to_string(UI_Legit_Aimbot_AutoScope) + "\n" + 270 | to_string(UI_Misc_NightMode) + "\n" + 271 | to_string(UI_Misc_NightMode_Alpha) + "\n" + 272 | to_string(UI_Spoof_LearnPlayer) + "\n" + 273 | to_string(UI_Spoof_LearnPlayer_Key) + "\n" + 274 | to_string(UI_Misc_AutoPeek) + "\n" + 275 | to_string(UI_Misc_AutoPeek_Key) + "\n" + 276 | to_string(UI_Spoof_FakeRageBot) + "\n" + 277 | to_string(UI_Spoof_FakeRageBot_Key) + "\n" + 278 | to_string(UI_Spoof_FakeRageBot_Target) + "\n" + 279 | to_string(UI_Misc_QuickStop) + "\n" + 280 | UI_Setting_MenuFont + "\n" + 281 | to_string(UI_Setting_MenuFontSize) + "\n" + 282 | to_string(UI_Misc_AutoKillCeasefire) + "\n" + 283 | to_string(UI_Misc_CursorESP) + "\n" + 284 | to_string(UI_Misc_CursorESP_Key) + "\n" + 285 | to_string(UI_Legit_Armory_HitSiteParser) + "\n" + 286 | to_string(UI_Visual_ESP_DrawAlpha) + "\n" + 287 | to_string(UI_Legit_Armory_BodyAim_SHOTGUN) + "\n" + 288 | to_string(UI_Legit_Armory_Range_SHOTGUN) + "\n" + 289 | to_string(UI_Legit_Armory_Smooth_SHOTGUN) + "\n" + 290 | to_string(UI_Legit_Armory_TriggerDistance_SHOTGUN) + "\n" + 291 | to_string(UI_Legit_MagnetAim_Range) + "\n" + 292 | to_string(UI_Legit_Backtracking_MinimumTime) + "\n" + 293 | to_string(UI_Legit_RemoveRecoil_Sensitive) + "\n" 294 | ); 295 | } 296 | void LoadCloudConfig(string FileName = "", string NormalURL = "https://github.com/Coslly/Rensen/blob/main/Cloud%20Files/") noexcept//加载Github云参数 297 | { 298 | System::URL_READ URL_CONFIG = { "Cache_CloudConfig" }; 299 | if (URL_CONFIG.StoreMem(NormalURL + FileName + (string)".cfg?raw=true")) 300 | { 301 | UI_Legit_Aimbot = Variable::string_int_(URL_CONFIG.Read(1)); 302 | UI_Legit_Aimbot_Key = Variable::string_int_(URL_CONFIG.Read(2)); 303 | UI_Legit_Aimbot_JudgingWall = Variable::string_int_(URL_CONFIG.Read(3)); 304 | UI_Legit_Aimbot_RemoveRecoil = Variable::string_int_(URL_CONFIG.Read(4)); 305 | UI_Legit_Aimbot_TriggerOnAim = Variable::string_int_(URL_CONFIG.Read(5)); 306 | UI_Legit_Aimbot_AutoShoot = Variable::string_int_(URL_CONFIG.Read(6)); 307 | UI_Legit_Aimbot_AutoStop = Variable::string_int_(URL_CONFIG.Read(7)); 308 | UI_Legit_Aimbot_AutoShootDelay = Variable::string_int_(URL_CONFIG.Read(8)); 309 | UI_Legit_AdaptiveAimbot = Variable::string_int_(URL_CONFIG.Read(9)); 310 | UI_Legit_Armory_ShowAimbotRange = Variable::string_int_(URL_CONFIG.Read(10)); 311 | UI_Legit_Armory_BodyAim_PISTOL = Variable::string_int_(URL_CONFIG.Read(11)); 312 | UI_Legit_Armory_Range_PISTOL = Variable::string_int_(URL_CONFIG.Read(12)); 313 | UI_Legit_Armory_Smooth_PISTOL = Variable::string_float_(URL_CONFIG.Read(13)); 314 | UI_Legit_Armory_BodyAim_RIFLE = Variable::string_int_(URL_CONFIG.Read(14)); 315 | UI_Legit_Armory_Range_RIFLE = Variable::string_int_(URL_CONFIG.Read(15)); 316 | UI_Legit_Armory_Smooth_RIFLE = Variable::string_float_(URL_CONFIG.Read(16)); 317 | UI_Legit_Armory_BodyAim_SNIPER = Variable::string_int_(URL_CONFIG.Read(17)); 318 | UI_Legit_Armory_Range_SNIPER = Variable::string_int_(URL_CONFIG.Read(18)); 319 | UI_Legit_Armory_Smooth_SNIPER = Variable::string_float_(URL_CONFIG.Read(19)); 320 | UI_Legit_Triggerbot = Variable::string_int_(URL_CONFIG.Read(20)); 321 | UI_Legit_Triggerbot_Key = Variable::string_int_(URL_CONFIG.Read(21)); 322 | UI_Legit_Triggerbot_AnyTarget = Variable::string_int_(URL_CONFIG.Read(22)); 323 | UI_Legit_Triggerbot_ShootDelay = Variable::string_int_(URL_CONFIG.Read(23)); 324 | UI_Legit_Triggerbot_ShootDuration = Variable::string_int_(URL_CONFIG.Read(24)); 325 | UI_Legit_PreciseAim = Variable::string_int_(URL_CONFIG.Read(25)); 326 | UI_Legit_PreciseAim_DefaultSensitivity = Variable::string_float_(URL_CONFIG.Read(26)); 327 | UI_Legit_PreciseAim_EnableSensitivity = Variable::string_float_(URL_CONFIG.Read(27)); 328 | UI_Legit_RemoveRecoil = Variable::string_int_(URL_CONFIG.Read(28)); 329 | UI_Legit_RemoveRecoil_LateralRepair = Variable::string_int_(URL_CONFIG.Read(29)); 330 | UI_Legit_RemoveRecoil_StartBullet = Variable::string_int_(URL_CONFIG.Read(30)); 331 | UI_Legit_Backtracking = Variable::string_int_(URL_CONFIG.Read(31)); 332 | UI_Legit_Backtracking_MaximumTime = Variable::string_int_(URL_CONFIG.Read(32)); 333 | UI_Visual_ESP = Variable::string_int_(URL_CONFIG.Read(33)); 334 | UI_Visual_ESP_Key = Variable::string_int_(URL_CONFIG.Read(34)); 335 | UI_Visual_ESP_Box = Variable::string_int_(URL_CONFIG.Read(35)); 336 | UI_Visual_ESP_Health = Variable::string_int_(URL_CONFIG.Read(36)); 337 | UI_Visual_ESP_ActiveWeapon = Variable::string_int_(URL_CONFIG.Read(37)); 338 | UI_Visual_ESP_Line = Variable::string_int_(URL_CONFIG.Read(38)); 339 | UI_Visual_ESP_Skeleton = Variable::string_int_(URL_CONFIG.Read(39)); 340 | UI_Visual_ESP_HeadDot = Variable::string_int_(URL_CONFIG.Read(40)); 341 | UI_Visual_ESP_State = Variable::string_int_(URL_CONFIG.Read(41)); 342 | UI_Visual_ESP_Name = Variable::string_int_(URL_CONFIG.Read(42)); 343 | UI_Visual_ESP_Drops = Variable::string_int_(URL_CONFIG.Read(43)); 344 | UI_Visual_ESP_OutFOV = Variable::string_int_(URL_CONFIG.Read(44)); 345 | UI_Visual_ESP_OutFOV_Size = Variable::string_int_(URL_CONFIG.Read(45)); 346 | UI_Visual_ESP_OutFOV_Radius = Variable::string_int_(URL_CONFIG.Read(46)); 347 | UI_Visual_ESP_CustomColor = Variable::string_int_(URL_CONFIG.Read(47)); 348 | UI_Visual_ESP_CustomColor_Color = { Variable::string_int_(URL_CONFIG.Read(48)),Variable::string_int_(URL_CONFIG.Read(49)),Variable::string_int_(URL_CONFIG.Read(50)),Variable::string_int_(URL_CONFIG.Read(51)) }; 349 | UI_Visual_ESP_DrawDelay = Variable::string_int_(URL_CONFIG.Read(52)); 350 | UI_Visual_Radar = Variable::string_int_(URL_CONFIG.Read(53)); 351 | UI_Visual_Radar_FollowAngle = Variable::string_int_(URL_CONFIG.Read(54)); 352 | UI_Visual_Radar_Range = Variable::string_float_(URL_CONFIG.Read(55)); 353 | UI_Visual_Radar_Size = Variable::string_int_(URL_CONFIG.Read(56)); 354 | UI_Visual_Radar_Alpha = Variable::string_int_(URL_CONFIG.Read(57)); 355 | UI_Visual_Radar_Pos = { Variable::string_int_(URL_CONFIG.Read(58)), Variable::string_int_(URL_CONFIG.Read(59)) }; 356 | UI_Misc_BunnyHop = Variable::string_int_(URL_CONFIG.Read(60)); 357 | UI_Misc_HitSound = Variable::string_int_(URL_CONFIG.Read(61)); 358 | UI_Misc_HitSound_Tone = Variable::string_int_(URL_CONFIG.Read(62)); 359 | UI_Misc_HitSound_Length = Variable::string_int_(URL_CONFIG.Read(63)); 360 | UI_Visual_HitMark = Variable::string_int_(URL_CONFIG.Read(64)); 361 | UI_Visual_HitMark_Damage = Variable::string_int_(URL_CONFIG.Read(65)); 362 | UI_Visual_HitMark_Range = Variable::string_int_(URL_CONFIG.Read(66)); 363 | UI_Visual_HitMark_Length = Variable::string_int_(URL_CONFIG.Read(67)); 364 | UI_Misc_AutoKnife = Variable::string_int_(URL_CONFIG.Read(68)); 365 | UI_Misc_AutoTaser = Variable::string_int_(URL_CONFIG.Read(69)); 366 | UI_Misc_AutoKnife_Key = Variable::string_int_(URL_CONFIG.Read(70)); 367 | UI_Misc_AutoTaser_Key = Variable::string_int_(URL_CONFIG.Read(71)); 368 | UI_Misc_Watermark = Variable::string_int_(URL_CONFIG.Read(72)); 369 | UI_Misc_SniperCrosshair = Variable::string_int_(URL_CONFIG.Read(73)); 370 | UI_Misc_TeamCheck = Variable::string_int_(URL_CONFIG.Read(74)); 371 | UI_Misc_LockGameWindow = Variable::string_int_(URL_CONFIG.Read(75)); 372 | UI_Debug_ShowDebugWindow = Variable::string_int_(URL_CONFIG.Read(76)); 373 | UI_Misc_Sonar = Variable::string_int_(URL_CONFIG.Read(77)); 374 | UI_Misc_Sonar_Key = Variable::string_int_(URL_CONFIG.Read(78)); 375 | UI_Misc_Sonar_Range_Far = Variable::string_int_(URL_CONFIG.Read(79)); 376 | UI_Misc_Sonar_Range_Near = Variable::string_int_(URL_CONFIG.Read(80)); 377 | UI_Misc_SelectedConfig = Variable::string_int_(URL_CONFIG.Read(81)); 378 | UI_Setting_MenuKey = Variable::string_int_(URL_CONFIG.Read(82)); 379 | UI_Setting_CustomColor = Variable::string_int_(URL_CONFIG.Read(83)); 380 | UI_Setting_MainColor = { Variable::string_int_(URL_CONFIG.Read(84)),Variable::string_int_(URL_CONFIG.Read(85)),Variable::string_int_(URL_CONFIG.Read(86)),Variable::string_int_(URL_CONFIG.Read(87)) }; 381 | UI_Visual_HitMark_Color = { Variable::string_int_(URL_CONFIG.Read(88)) ,Variable::string_int_(URL_CONFIG.Read(89)) ,Variable::string_int_(URL_CONFIG.Read(90)) }; 382 | UI_Visual_HitMark_Thickness = Variable::string_int_(URL_CONFIG.Read(91)); 383 | UI_Legit_Triggerbot_ShootWhenAccurate = Variable::string_int_(URL_CONFIG.Read(92)); 384 | UI_Misc_AntiAFKKick = Variable::string_int_(URL_CONFIG.Read(93)); 385 | UI_Legit_MagnetAim = Variable::string_int_(URL_CONFIG.Read(94)); 386 | UI_Legit_MagnetAim_Smooth = Variable::string_float_(URL_CONFIG.Read(95)); 387 | UI_Legit_AdaptiveAimbot_InitialSmooth = Variable::string_float_(URL_CONFIG.Read(96)); 388 | UI_Misc_SniperCrosshair_Size = Variable::string_int_(URL_CONFIG.Read(97)); 389 | UI_Spoof_Spoof = Variable::string_int_(URL_CONFIG.Read(98)); 390 | UI_Spoof_AimbotTeam = Variable::string_int_(URL_CONFIG.Read(99)); 391 | UI_Spoof_AimbotTeam_Key = Variable::string_int_(URL_CONFIG.Read(100)); 392 | UI_Spoof_AimbotTeam_Smooth = Variable::string_float_(URL_CONFIG.Read(101)); 393 | UI_Spoof_IncreaseRecoil = Variable::string_int_(URL_CONFIG.Read(102)); 394 | UI_Spoof_IncreaseRecoil_Value = Variable::string_int_(URL_CONFIG.Read(103)); 395 | UI_Spoof_DropC4 = Variable::string_int_(URL_CONFIG.Read(104)); 396 | UI_Spoof_FakeAntiAim = Variable::string_int_(URL_CONFIG.Read(105)); 397 | UI_Spoof_FakeAntiAim_Key = Variable::string_int_(URL_CONFIG.Read(106)); 398 | UI_Spoof_KillDropSniper = Variable::string_int_(URL_CONFIG.Read(107)); 399 | UI_Setting_MenuAnimation = Variable::string_float_(URL_CONFIG.Read(108)); 400 | UI_Visual_HitMark_KillEffect = Variable::string_int_(URL_CONFIG.Read(109)); 401 | UI_Visual_HitMark_KillEffect_Quantity = Variable::string_int_(URL_CONFIG.Read(110)); 402 | UI_Visual_HitMark_KillEffect_Range = Variable::string_int_(URL_CONFIG.Read(111)); 403 | UI_Visual_ESP_Skeleton_Thickness = Variable::string_int_(URL_CONFIG.Read(112)); 404 | UI_Misc_ByPassOBS = Variable::string_int_(URL_CONFIG.Read(113)); 405 | UI_Misc_SavePerformance = Variable::string_int_(URL_CONFIG.Read(114)); 406 | UI_Legit_Aimbot_AutoScope = Variable::string_int_(URL_CONFIG.Read(115)); 407 | UI_Misc_NightMode = Variable::string_int_(URL_CONFIG.Read(116)); 408 | UI_Misc_NightMode_Alpha = Variable::string_int_(URL_CONFIG.Read(117)); 409 | UI_Spoof_LearnPlayer = Variable::string_int_(URL_CONFIG.Read(118)); 410 | UI_Spoof_LearnPlayer_Key = Variable::string_int_(URL_CONFIG.Read(119)); 411 | UI_Misc_AutoPeek = Variable::string_int_(URL_CONFIG.Read(120)); 412 | UI_Misc_AutoPeek_Key = Variable::string_int_(URL_CONFIG.Read(121)); 413 | UI_Spoof_FakeRageBot = Variable::string_int_(URL_CONFIG.Read(122)); 414 | UI_Spoof_FakeRageBot_Key = Variable::string_int_(URL_CONFIG.Read(123)); 415 | UI_Spoof_FakeRageBot_Target = Variable::string_int_(URL_CONFIG.Read(124)); 416 | UI_Misc_QuickStop = Variable::string_int_(URL_CONFIG.Read(125)); 417 | UI_Setting_MenuFont = URL_CONFIG.Read(126); 418 | UI_Setting_MenuFontSize = Variable::string_int_(URL_CONFIG.Read(127)); 419 | UI_Misc_AutoKillCeasefire = Variable::string_int_(URL_CONFIG.Read(128)); 420 | UI_Misc_CursorESP = Variable::string_int_(URL_CONFIG.Read(129)); 421 | UI_Misc_CursorESP_Key = Variable::string_int_(URL_CONFIG.Read(130)); 422 | UI_Legit_Armory_HitSiteParser = Variable::string_int_(URL_CONFIG.Read(131)); 423 | UI_Visual_ESP_DrawAlpha = Variable::string_int_(URL_CONFIG.Read(132)); 424 | UI_Legit_Armory_BodyAim_SHOTGUN = Variable::string_int_(URL_CONFIG.Read(133)); 425 | UI_Legit_Armory_Range_SHOTGUN = Variable::string_int_(URL_CONFIG.Read(134)); 426 | UI_Legit_Armory_Smooth_SHOTGUN = Variable::string_float_(URL_CONFIG.Read(135)); 427 | UI_Legit_Armory_TriggerDistance_SHOTGUN = Variable::string_int_(URL_CONFIG.Read(136)); 428 | UI_Legit_MagnetAim_Range = Variable::string_int_(URL_CONFIG.Read(137)); 429 | UI_Legit_Backtracking_MinimumTime = Variable::string_int_(URL_CONFIG.Read(138)); 430 | UI_Legit_RemoveRecoil_Sensitive = Variable::string_int_(URL_CONFIG.Read(139)); 431 | URL_CONFIG.Release(); 432 | } 433 | } 434 | //---------------------------------------------------------------------------------------------- 435 | namespace Debug_Control_Var//测试调试用的控件变量 (按钮 滑条 选择框 按键选择框 控制台控件) 436 | { 437 | int SelectPlayer; string SystemCommand; BOOL SendSystemCommand, ClearCommand; 438 | BOOL Checkbox_1, Checkbox_2; 439 | int KeySelector_1, KeySelector_2, Slider_1; 440 | float Slider_2; 441 | BOOL Button_1, Button_2; 442 | int Checkbox_Quantity = 1; vector Checkbox_Value(100); 443 | } 444 | } 445 | using namespace Control_Var; 446 | void Thread_Menu() noexcept//菜单线程 (提供给使用者丰富的自定义选项) 447 | { 448 | System::Log("Load Thread: Thread_Menu()"); 449 | GUI_VAR.Window_Create(1200, 1000, "Rensen", true);//创建置顶GUI绘制窗口 450 | if (!System::Judge_File("CN") && !System::CheckSteamLangChinese())//中文菜单判断 451 | { 452 | while (true) 453 | { 454 | GUI_VAR.Window_SetTitle(System::Rand_String(10));//随机菜单窗口标题 455 | Window::Set_LimitWindowShow(GUI_VAR.Window_HWND(), UI_Misc_ByPassOBS);//绕过OBS 456 | static int UI_Panel = 0;//大区块选择 457 | static Variable::Vector2 GUI_WindowSize = { 0,0 };//窗体大小(用于开关动画) 458 | if (!Menu_Open)GUI_WindowSize = { 0,0 };//关闭窗体时 459 | GUI_VAR.Window_SetSize(Variable::Animation_Vec2(GUI_WindowSize, UI_Setting_MenuAnimation));//菜单窗口大小动画 (弹出, 关闭) 460 | if (!GUI_VAR.Window_Move() && Menu_Open)//不在移动窗口时绘制GUI 461 | { 462 | if (UI_Setting_CustomColor)//自定义颜色(单色) 463 | { 464 | GUI_VAR.Global_Set_EasyGUI_Color(UI_Setting_MainColor);//设置主题颜色 465 | GUI_VAR.GUI_BackGround(4);//自定义颜色背景主题 466 | } 467 | else GUI_VAR.GUI_BackGround(3);//默认(彩虹) 468 | GUI_VAR.GUI_Block(20, 20, 40, "", 110); GUI_VAR.In_DrawString(37, 35, "Rensen", GUI_VAR.Global_Get_EasyGUI_Color().Min_Bri(200), "Verdana", 25); 469 | GUI_VAR.GUI_Block_Panel(20, 70, 110, GUI_VAR.Window_GetSize().y - 90, "", { "Legit","Visual","Misc","Infolist","Setting","Attach" }, UI_Panel, 25); 470 | if (UI_Panel == 0)//Legit 471 | { 472 | const auto Block_Aimbot = GUI_VAR.GUI_Block(150, 30, 340, "Aim bot"); 473 | GUI_VAR.GUI_Checkbox(Block_Aimbot, 1, "Enabled", UI_Legit_Aimbot); 474 | GUI_VAR.GUI_KeySelector(Block_Aimbot, 1, UI_Legit_Aimbot_Key); 475 | GUI_VAR.GUI_Checkbox({ Block_Aimbot.x + 20,Block_Aimbot.y }, 2, "Judging wall", UI_Legit_Aimbot_JudgingWall); 476 | GUI_VAR.GUI_Checkbox({ Block_Aimbot.x + 20,Block_Aimbot.y }, 3, "Remove recoil", UI_Legit_Aimbot_RemoveRecoil); 477 | GUI_VAR.GUI_Checkbox({ Block_Aimbot.x + 20,Block_Aimbot.y }, 4, "Trigger on aiming", UI_Legit_Aimbot_TriggerOnAim); 478 | GUI_VAR.GUI_Checkbox({ Block_Aimbot.x + 20,Block_Aimbot.y }, 5, "Auto shoot", UI_Legit_Aimbot_AutoShoot, { 255,150,150 }); 479 | GUI_VAR.GUI_Checkbox({ Block_Aimbot.x + 40,Block_Aimbot.y }, 6, "Auto stop", UI_Legit_Aimbot_AutoStop, { 255,150,150 }); 480 | GUI_VAR.GUI_Checkbox({ Block_Aimbot.x + 40,Block_Aimbot.y }, 7, "Auto scope", UI_Legit_Aimbot_AutoScope, { 255,150,150 }); 481 | GUI_VAR.GUI_Slider({ Block_Aimbot.x + 20,Block_Aimbot.y }, 8, "Auto shoot delay", 0, 500, UI_Legit_Aimbot_AutoShootDelay, "ms", { 255,150,150 }); 482 | GUI_VAR.GUI_Checkbox(Block_Aimbot, 9, "Adaptive aimbot", UI_Legit_AdaptiveAimbot, { 200,200,150 }); 483 | GUI_VAR.GUI_Slider(Block_Aimbot, 10, "Initial smooth", 0, 20, UI_Legit_AdaptiveAimbot_InitialSmooth, "", { 200,200,150 }); 484 | const auto Block_Armory = GUI_VAR.GUI_Block(150, 390, 490, "Armory"); 485 | GUI_VAR.GUI_Checkbox({ Block_Armory.x - 10,Block_Armory.y }, 1, "Show range", UI_Legit_Armory_ShowAimbotRange); 486 | GUI_VAR.GUI_Checkbox({ Block_Armory.x - 10,Block_Armory.y }, 2, "Hit site parser", UI_Legit_Armory_HitSiteParser); 487 | GUI_VAR.GUI_Checkbox({ Block_Armory.x - 10,Block_Armory.y }, 3, "PISTOL Body aim (else head)", UI_Legit_Armory_BodyAim_PISTOL); 488 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 4, "PISTOL range", 0, 100, UI_Legit_Armory_Range_PISTOL, "%"); 489 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 5, "PISTOL smooth", 0, 40, UI_Legit_Armory_Smooth_PISTOL); 490 | GUI_VAR.GUI_Checkbox({ Block_Armory.x - 10,Block_Armory.y }, 6, "RIFLE Body aim (else head)", UI_Legit_Armory_BodyAim_RIFLE); 491 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 7, "RIFLE range", 0, 100, UI_Legit_Armory_Range_RIFLE, "%"); 492 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 8, "RIFLE smooth", 0, 40, UI_Legit_Armory_Smooth_RIFLE); 493 | GUI_VAR.GUI_Checkbox({ Block_Armory.x - 10,Block_Armory.y }, 9, "SNIPER Body aim (else head)", UI_Legit_Armory_BodyAim_SNIPER); 494 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 10, "SNIPER range", 0, 100, UI_Legit_Armory_Range_SNIPER, "%"); 495 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 11, "SNIPER smooth", 0, 40, UI_Legit_Armory_Smooth_SNIPER); 496 | GUI_VAR.GUI_Checkbox({ Block_Armory.x - 10,Block_Armory.y }, 12, "SHOTGUN Body aim (else head)", UI_Legit_Armory_BodyAim_SHOTGUN); 497 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 13, "SHOTGUN range", 0, 100, UI_Legit_Armory_Range_SHOTGUN, "%"); 498 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 14, "SHOTGUN smooth", 0, 40, UI_Legit_Armory_Smooth_SHOTGUN); 499 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 15, "SHOTGUN trigger distance", 100, 2000, UI_Legit_Armory_TriggerDistance_SHOTGUN); 500 | const auto Block_Triggerbot = GUI_VAR.GUI_Block(580, 30, 190, "Trigger bot"); 501 | GUI_VAR.GUI_Checkbox(Block_Triggerbot, 1, "Enabled", UI_Legit_Triggerbot); 502 | GUI_VAR.GUI_KeySelector(Block_Triggerbot, 1, UI_Legit_Triggerbot_Key); 503 | GUI_VAR.GUI_Checkbox({ Block_Triggerbot.x + 20,Block_Triggerbot.y }, 2, "Any target", UI_Legit_Triggerbot_AnyTarget); 504 | GUI_VAR.GUI_Checkbox({ Block_Triggerbot.x + 20,Block_Triggerbot.y }, 3, "Shoot when accurate", UI_Legit_Triggerbot_ShootWhenAccurate); 505 | GUI_VAR.GUI_Slider(Block_Triggerbot, 4, "Shoot delay", 1, 500, UI_Legit_Triggerbot_ShootDelay, "ms"); 506 | GUI_VAR.GUI_Slider(Block_Triggerbot, 5, "Shoot duration", 1, 1000, UI_Legit_Triggerbot_ShootDuration, "ms"); 507 | const auto Block_PreciseAim = GUI_VAR.GUI_Block(580, 240, 130, "Precise aim"); 508 | GUI_VAR.GUI_Checkbox(Block_PreciseAim, 1, "Enabled", UI_Legit_PreciseAim); 509 | GUI_VAR.GUI_Slider(Block_PreciseAim, 2, "Default sensitivity", 0, 0.022, UI_Legit_PreciseAim_DefaultSensitivity); 510 | GUI_VAR.GUI_Slider(Block_PreciseAim, 3, "Enable sensitivity", 0, 0.015, UI_Legit_PreciseAim_EnableSensitivity); 511 | const auto Block_RemoveRecoil = GUI_VAR.GUI_Block(580, 390, 160, "Remove recoil"); 512 | GUI_VAR.GUI_Checkbox(Block_RemoveRecoil, 1, "Enabled", UI_Legit_RemoveRecoil); 513 | GUI_VAR.GUI_Checkbox({ Block_RemoveRecoil.x + 20,Block_RemoveRecoil.y }, 2, "Lateral repair", UI_Legit_RemoveRecoil_LateralRepair); 514 | GUI_VAR.GUI_Slider(Block_RemoveRecoil, 3, "Start bullet", 1, 10, UI_Legit_RemoveRecoil_StartBullet); 515 | GUI_VAR.GUI_Slider(Block_RemoveRecoil, 4, "Sensitive", 0, 100, UI_Legit_RemoveRecoil_Sensitive, "%"); 516 | const auto Block_MagnetAim = GUI_VAR.GUI_Block(580, 570, 130, "Magnet aim"); 517 | GUI_VAR.GUI_Checkbox(Block_MagnetAim, 1, "Enabled", UI_Legit_MagnetAim); 518 | GUI_VAR.GUI_Slider(Block_MagnetAim, 2, "Range", 0, 100, UI_Legit_MagnetAim_Range, "%"); 519 | GUI_VAR.GUI_Slider(Block_MagnetAim, 3, "Smooth", 0.5, 6.6666, UI_Legit_MagnetAim_Smooth); 520 | const auto Block_Backtracking = GUI_VAR.GUI_Block(580, 720, 130, "Back tracking"); 521 | GUI_VAR.GUI_Checkbox(Block_Backtracking, 1, "Enabled", UI_Legit_Backtracking); 522 | GUI_VAR.GUI_Slider(Block_Backtracking, 2, "Minimum time", 0, 500, UI_Legit_Backtracking_MinimumTime, "ms"); 523 | GUI_VAR.GUI_Slider(Block_Backtracking, 3, "Maximum time", UI_Legit_Backtracking_MinimumTime, 1000, UI_Legit_Backtracking_MaximumTime, "ms"); 524 | GUI_VAR.GUI_Tips(Block_Aimbot, 1, "Help you quickly aim at the target."); 525 | GUI_VAR.GUI_Tips({ Block_Aimbot.x + 10,Block_Aimbot.y }, 5, "Prefer Ragebot.", 0, { 255,150,150 }); 526 | GUI_VAR.GUI_Tips(Block_Aimbot, 9, "More biological than normal aimbot.", 0, { 200,200,150 }); 527 | GUI_VAR.GUI_Tips(Block_Triggerbot, 1, "Shoot when aiming at the enemy."); 528 | GUI_VAR.GUI_Tips(Block_PreciseAim, 1, "Reduce the sensitivity of the reticle when aiming at the enemy."); 529 | GUI_VAR.GUI_Tips({ Block_RemoveRecoil.x + 10,Block_RemoveRecoil.y }, 2, "Operations that only return landscape."); 530 | GUI_VAR.GUI_Tips({ Block_RemoveRecoil.x + 10,Block_RemoveRecoil.y }, 4, "Corresponding game sensitivity value."); 531 | GUI_VAR.GUI_Tips(Block_MagnetAim, 1, "Slow aiming without triggering key conditions. (Hard to see)"); 532 | GUI_VAR.GUI_Tips(Block_Backtracking, 1, "Take advantage of network latency to have a bigger hitbox."); 533 | GUI_WindowSize = { 1010,910 }; 534 | } 535 | else if (UI_Panel == 1)//Visual 536 | { 537 | const auto Block_ESP = GUI_VAR.GUI_Block(150, 30, 550, "Extra sensory perception"); 538 | GUI_VAR.GUI_Checkbox(Block_ESP, 1, "Enabled", UI_Visual_ESP); 539 | GUI_VAR.GUI_KeySelector(Block_ESP, 1, UI_Visual_ESP_Key); 540 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 2, "Box", UI_Visual_ESP_Box); 541 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 3, "Health bar", UI_Visual_ESP_Health); 542 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 4, "Weapon text", UI_Visual_ESP_ActiveWeapon); 543 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 5, "Line", UI_Visual_ESP_Line); 544 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 6, "Skeleton", UI_Visual_ESP_Skeleton); 545 | GUI_VAR.GUI_Slider(Block_ESP, 7, "Thickness", 1, 5, UI_Visual_ESP_Skeleton_Thickness, "px"); 546 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 8, "Head dot", UI_Visual_ESP_HeadDot); 547 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 9, "State", UI_Visual_ESP_State); 548 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 10, "Name", UI_Visual_ESP_Name); 549 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 11, "Drops", UI_Visual_ESP_Drops); 550 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 12, "Out of FOV arrow", UI_Visual_ESP_OutFOV); 551 | GUI_VAR.GUI_Slider(Block_ESP, 13, "Size", 20, 70, UI_Visual_ESP_OutFOV_Size, "px"); 552 | GUI_VAR.GUI_Slider(Block_ESP, 14, "Radius", 0, 100, UI_Visual_ESP_OutFOV_Radius, "%"); 553 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 15, "Custom color", UI_Visual_ESP_CustomColor); 554 | GUI_VAR.GUI_ColorSelector(Block_ESP, 15, UI_Visual_ESP_CustomColor_Color); 555 | GUI_VAR.GUI_Slider(Block_ESP, 16, "Draw alpha", 20, 255, UI_Visual_ESP_DrawAlpha); 556 | GUI_VAR.GUI_Slider(Block_ESP, 17, "Draw delay", 1, 30, UI_Visual_ESP_DrawDelay, "ms"); 557 | const auto Block_Hitmark = GUI_VAR.GUI_Block(580, 30, 280, "Hit mark"); 558 | GUI_VAR.GUI_Checkbox(Block_Hitmark, 1, "Enabled", UI_Visual_HitMark); 559 | GUI_VAR.GUI_ColorSelector(Block_Hitmark, 1, UI_Visual_HitMark_Color); 560 | GUI_VAR.GUI_Checkbox({ Block_Hitmark.x + 20,Block_Hitmark.y }, 2, "Show damage", UI_Visual_HitMark_Damage); 561 | GUI_VAR.GUI_Slider(Block_Hitmark, 3, "Range", 3, 100, UI_Visual_HitMark_Range, "px"); 562 | GUI_VAR.GUI_Slider(Block_Hitmark, 4, "Length", 3, 100, UI_Visual_HitMark_Length, "px"); 563 | GUI_VAR.GUI_Slider(Block_Hitmark, 5, "Thickness", 1, 10, UI_Visual_HitMark_Thickness, "px"); 564 | GUI_VAR.GUI_Checkbox({ Block_Hitmark.x + 20,Block_Hitmark.y }, 6, "Lightning effect", UI_Visual_HitMark_KillEffect); 565 | GUI_VAR.GUI_Slider(Block_Hitmark, 7, "Quantity", 10, 500, UI_Visual_HitMark_KillEffect_Quantity); 566 | GUI_VAR.GUI_Slider(Block_Hitmark, 8, "Range", 10, 500, UI_Visual_HitMark_KillEffect_Range); 567 | const auto Block_Radar = GUI_VAR.GUI_Block(580, 330, 190, "Radar"); 568 | GUI_VAR.GUI_Checkbox(Block_Radar, 1, "Enabled", UI_Visual_Radar); 569 | GUI_VAR.GUI_Button_Small({ Block_Radar.x + 10,Block_Radar.y }, 2, UI_Visual_Radar_Show); 570 | GUI_VAR.GUI_Checkbox({ Block_Radar.x + 20,Block_Radar.y }, 2, "Follow angle", UI_Visual_Radar_FollowAngle); 571 | GUI_VAR.GUI_Slider(Block_Radar, 3, "Range", 0.2, 40, UI_Visual_Radar_Range); 572 | GUI_VAR.GUI_Slider(Block_Radar, 4, "Size", 150, 500, UI_Visual_Radar_Size, "px"); 573 | GUI_VAR.GUI_Slider(Block_Radar, 5, "Alpha", 0, 255, UI_Visual_Radar_Alpha); 574 | GUI_VAR.GUI_Tips(Block_ESP, 1, "Learn enemy coordinates through walls. (Full screen cannot be used)"); 575 | GUI_VAR.GUI_Tips(Block_Hitmark, 1, "Effect that triggers when hitting the player."); 576 | GUI_VAR.GUI_Tips(Block_Radar, 1, "Exterior window radar. (Full screen cannot be used)"); 577 | GUI_WindowSize = { 1010,610 }; 578 | } 579 | else if (UI_Panel == 2)//Misc 580 | { 581 | const auto Block_Misc = GUI_VAR.GUI_Block(150, 30, 720, "Miscellaneous"); 582 | GUI_VAR.GUI_Checkbox(Block_Misc, 1, "Bunny hop", UI_Misc_BunnyHop); 583 | GUI_VAR.GUI_Checkbox(Block_Misc, 2, "Hit sound", UI_Misc_HitSound); 584 | GUI_VAR.GUI_Slider(Block_Misc, 3, "Tone", 10, 5000, UI_Misc_HitSound_Tone); 585 | GUI_VAR.GUI_Slider(Block_Misc, 4, "Length", 10, 80, UI_Misc_HitSound_Length); 586 | GUI_VAR.GUI_Checkbox(Block_Misc, 5, "Sonar", UI_Misc_Sonar); 587 | GUI_VAR.GUI_KeySelector(Block_Misc, 5, UI_Misc_Sonar_Key); 588 | GUI_VAR.GUI_Slider(Block_Misc, 6, "Range far", 500, 1000, UI_Misc_Sonar_Range_Far); 589 | GUI_VAR.GUI_Slider(Block_Misc, 7, "Range near", 0, 500, UI_Misc_Sonar_Range_Near); 590 | GUI_VAR.GUI_Checkbox(Block_Misc, 8, "Knife bot", UI_Misc_AutoKnife); 591 | GUI_VAR.GUI_KeySelector(Block_Misc, 8, UI_Misc_AutoKnife_Key); 592 | GUI_VAR.GUI_Checkbox(Block_Misc, 9, "Taser bot", UI_Misc_AutoTaser); 593 | GUI_VAR.GUI_KeySelector(Block_Misc, 9, UI_Misc_AutoTaser_Key); 594 | GUI_VAR.GUI_Checkbox(Block_Misc, 10, "Water mark", UI_Misc_Watermark); 595 | GUI_VAR.GUI_Checkbox(Block_Misc, 11, "Sniper crosshair", UI_Misc_SniperCrosshair); 596 | GUI_VAR.GUI_Slider(Block_Misc, 12, "Size", 10, 60, UI_Misc_SniperCrosshair_Size, "px"); 597 | GUI_VAR.GUI_Checkbox(Block_Misc, 13, "Anti AFK kick", UI_Misc_AntiAFKKick); 598 | GUI_VAR.GUI_Checkbox(Block_Misc, 14, "Lock game window", UI_Misc_LockGameWindow); 599 | GUI_VAR.GUI_Checkbox(Block_Misc, 15, "Hide from OBS", UI_Misc_ByPassOBS); 600 | GUI_VAR.GUI_Checkbox(Block_Misc, 16, "Save performance", UI_Misc_SavePerformance, { 255,150,150 }); 601 | GUI_VAR.GUI_Checkbox(Block_Misc, 17, "Night mode", UI_Misc_NightMode); 602 | GUI_VAR.GUI_Slider(Block_Misc, 18, "Alpha", 50, 180, UI_Misc_NightMode_Alpha); 603 | GUI_VAR.GUI_Checkbox(Block_Misc, 19, "Auto peek", UI_Misc_AutoPeek); 604 | GUI_VAR.GUI_KeySelector(Block_Misc, 19, UI_Misc_AutoPeek_Key); 605 | GUI_VAR.GUI_Checkbox(Block_Misc, 20, "Quick stop", UI_Misc_QuickStop); 606 | GUI_VAR.GUI_Checkbox(Block_Misc, 21, "Auto kill ceasefire", UI_Misc_AutoKillCeasefire); 607 | GUI_VAR.GUI_Checkbox(Block_Misc, 22, "Cursor ESP", UI_Misc_CursorESP); 608 | GUI_VAR.GUI_KeySelector(Block_Misc, 22, UI_Misc_CursorESP_Key); 609 | GUI_VAR.GUI_Checkbox(Block_Misc, 23, "Global team check", UI_Misc_TeamCheck, { 200,200,150 }); 610 | const auto Block_Resolution = GUI_VAR.GUI_Block(580, 30, 160, "Screen resolution"); 611 | GUI_VAR.GUI_Button(Block_Resolution, 1, "2560 * 1440", UI_Visual_Res_2560, 78); 612 | GUI_VAR.GUI_Button(Block_Resolution, 2, "1920 * 1080", UI_Visual_Res_1920, 78); 613 | GUI_VAR.GUI_Button(Block_Resolution, 3, "1280 * 1024", UI_Visual_Res_1280, 78); 614 | GUI_VAR.GUI_Button(Block_Resolution, 4, "1280 * 960", UI_Visual_Res_960, 83); 615 | const auto Block_CloudConfig = GUI_VAR.GUI_Block(580, 210, 150, "Cloud config"); 616 | GUI_VAR.GUI_Button(Block_CloudConfig, 1, "Load config", UI_Misc_LoadCloudConfig, 80); 617 | GUI_VAR.GUI_List(Block_CloudConfig, 2, { "Legit","Rage","Legit - no visual" }, UI_Misc_SelectedConfig); 618 | auto Block_Spoof = GUI_VAR.GUI_Block(580, 380, 370, "Spoof"); 619 | GUI_VAR.GUI_Checkbox(Block_Spoof, 1, "Enabled", UI_Spoof_Spoof, { 200,200,150 }); 620 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 2, "Aim at teammate", UI_Spoof_AimbotTeam); 621 | GUI_VAR.GUI_KeySelector(Block_Spoof, 2, UI_Spoof_AimbotTeam_Key); 622 | GUI_VAR.GUI_Slider({ Block_Spoof.x + 20,Block_Spoof.y }, 3, "Smooth", 0, 20, UI_Spoof_AimbotTeam_Smooth); 623 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 4, "Increase recoil", UI_Spoof_IncreaseRecoil); 624 | GUI_VAR.GUI_Slider({ Block_Spoof.x + 20,Block_Spoof.y }, 5, "Strength", 50, 1000, UI_Spoof_IncreaseRecoil_Value, "px"); 625 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 6, "Unable to pick up C4", UI_Spoof_DropC4); 626 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 7, "Fake anti aim", UI_Spoof_FakeAntiAim); 627 | GUI_VAR.GUI_KeySelector(Block_Spoof, 7, UI_Spoof_FakeAntiAim_Key); 628 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 8, "Kill drop sniper", UI_Spoof_KillDropSniper); 629 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 9, "Learn player", UI_Spoof_LearnPlayer); 630 | GUI_VAR.GUI_KeySelector(Block_Spoof, 9, UI_Spoof_LearnPlayer_Key); 631 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 10, "Fake ragebot", UI_Spoof_FakeRageBot); 632 | GUI_VAR.GUI_KeySelector(Block_Spoof, 10, UI_Spoof_FakeRageBot_Key); 633 | auto FakeRageBot_SliderString = "Target: " + Advanced::Player_Name(UI_Spoof_FakeRageBot_Target); 634 | if (!UI_Spoof_FakeRageBot_Target)FakeRageBot_SliderString = "Target: Any target"; 635 | GUI_VAR.GUI_Slider({ Block_Spoof.x + 20,Block_Spoof.y }, 11, FakeRageBot_SliderString, 0, 64, UI_Spoof_FakeRageBot_Target); 636 | GUI_VAR.GUI_Tips(Block_Misc, 2, "Play Beep when hitting player."); 637 | GUI_VAR.GUI_Tips(Block_Misc, 5, "Makes a subtle sound when approaching an enemy."); 638 | GUI_VAR.GUI_Tips(Block_Misc, 8, "Auto attack when conditions such as distance and blood volume are met."); 639 | GUI_VAR.GUI_Tips(Block_Misc, 14, "Lock the game window to the front."); 640 | GUI_VAR.GUI_Tips(Block_Misc, 16, "Reduce the load on the CPU.", 0, { 255,150,150 }); 641 | GUI_VAR.GUI_Tips(Block_Misc, 17, "Reduce screen brightness."); 642 | GUI_VAR.GUI_Tips(Block_Misc, 19, "Return to coordinates when shooting."); 643 | GUI_VAR.GUI_Tips(Block_Misc, 22, "Implement ESP by modifying cursor coordinates."); 644 | GUI_VAR.GUI_Tips({ Block_Resolution.x + 10,Block_Resolution.y }, 1, "Flexible switching of window resolution. (Do not use screen zoom!!!)"); 645 | GUI_VAR.GUI_Tips({ Block_CloudConfig.x + 10,Block_CloudConfig.y }, 1, "Load parameter files stored in Github."); 646 | GUI_VAR.GUI_Tips(Block_Spoof, 1, "Prank local player. (global switch)"); 647 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 2, "Aimbot for teammate."); 648 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 4, "Enhanced upward deflection of firearms."); 649 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 6, "Drop it when picking up C4."); 650 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 7, "Rotate view......"); 651 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 8, "Drop the weapon when killing an enemy with a sniper rifle."); 652 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 9, "Learn recent player actions."); 653 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 10, "Mimic Ragebot silent aim."); 654 | GUI_WindowSize = { 1010,780 }; 655 | } 656 | else if (UI_Panel == 3)//List 657 | { 658 | const auto Block_PlayerList = GUI_VAR.GUI_Block(150, 30, GUI_VAR.Window_GetSize().y - 60, "Player list", 330); 659 | static BOOL UI_Debug_PlayerList_ReloadList = false; static vector PlayerNameList = {}; static string PlayerName = ""; 660 | GUI_VAR.GUI_Slider(Block_PlayerList, 1, "Player ID", 0, 64, Debug_Control_Var::SelectPlayer); 661 | GUI_VAR.GUI_Button_Small({ Block_PlayerList.x + 10,Block_PlayerList.y }, 1, UI_Debug_PlayerList_ReloadList); 662 | if (UI_Debug_PlayerList_ReloadList || System::Sleep_Tick(5000)) { ReLoad(true); PlayerNameList = {}; for (short i = 0; i <= 64; ++i)PlayerNameList.push_back(Advanced::Player_Name(i)); System::Log("Debug: Reload player list"); }//刷新玩家列表页面 663 | GUI_VAR.GUI_InputText(Block_PlayerList, 2, PlayerName, "Search player name"); 664 | if (PlayerName != "" && PlayerName != "None") { for (short i = 0; i <= 64; ++i)if (PlayerName == Advanced::Player_Name(i))Debug_Control_Var::SelectPlayer = i; }//人物名称搜索 665 | GUI_VAR.GUI_List(Block_PlayerList, 3, PlayerNameList, Debug_Control_Var::SelectPlayer, 27); 666 | GUI_VAR.GUI_Tips({ Block_PlayerList.x + 12,Block_PlayerList.y }, 1, "Reload player list."); 667 | GUI_VAR.GUI_Tips({ Block_PlayerList.x + 12,Block_PlayerList.y }, 2, "Search player name."); 668 | const auto Block_Info = GUI_VAR.GUI_Block(510, 30, 490, "Info", 330); 669 | const auto Player_Pawn = Advanced::Traverse_Player(Debug_Control_Var::SelectPlayer); 670 | Variable::Vector4 Debug_PawnColor = { 0,0,0 };//人物数据地址绘制颜色 671 | if (Player_Pawn.Pawn() == Global_LocalPlayer.Pawn())Debug_PawnColor = { 100,100,255 };//自身 672 | else if (Player_Pawn.TeamNumber() == Global_LocalPlayer.TeamNumber())Debug_PawnColor = { 0,255,0 };//同队 673 | else if (Player_Pawn.TeamNumber() != Global_LocalPlayer.TeamNumber())Debug_PawnColor = { 255,0,0 };//不同队 674 | if (Player_Pawn.Health() == 0)Debug_PawnColor = { 150,150,150 };//无效或是死亡 675 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 1, "client.dll -> " + Variable::Hex_String(Module_client)); 676 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 2, "Pawn -> " + Variable::Hex_String(Player_Pawn.Pawn()), Debug_PawnColor); 677 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 3, "Name: " + Advanced::Player_Name(Debug_Control_Var::SelectPlayer)); 678 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 4, "Health: " + to_string(Player_Pawn.Health())); 679 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 5, "Armor: " + to_string(Player_Pawn.Armor())); 680 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 6, "TeamNum: " + to_string(Player_Pawn.TeamNumber())); 681 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 7, "IDEntIndex: " + to_string(Player_Pawn.IDEntIndex())); 682 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 8, "Flags: " + to_string(Player_Pawn.Flags())); 683 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 9, "ShotsFired: " + to_string(Player_Pawn.ShotsFired())); 684 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 10, "MoveSpeed: " + to_string(Player_Pawn.MoveSpeed())); 685 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 11, "Spotted: " + to_string(Player_Pawn.Spotted())); 686 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 12, "Scoped: " + to_string(Player_Pawn.Scoped())); 687 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 13, "ActiveWeapon: " + Player_Pawn.ActiveWeaponName() + " (" + to_string(Player_Pawn.ActiveWeapon()) + ")"); 688 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 14, "Origin: "); 689 | auto PlayerOrigin = Player_Pawn.Origin(); GUI_VAR.GUI_PosSelector({ Block_Info.x - 100,Block_Info.y }, 14, PlayerOrigin); 690 | GUI_VAR.GUI_Text({ Block_Info.x - 20,Block_Info.y }, 15, "Angle: "); 691 | auto PlayerViewAngle = Player_Pawn.ViewAngles(); GUI_VAR.GUI_PosSelector({ Block_Info.x - 100,Block_Info.y }, 15, PlayerViewAngle); 692 | GUI_VAR.GUI_Tips({ Block_Info.x + 3,Block_Info.y }, 1, "Cloud offsets date: " + CS2_Offsets::Offsets_Date); 693 | const auto Block_Offsets = GUI_VAR.GUI_Block(870, 30, GUI_VAR.Window_GetSize().y - 60, "Offsets", 330); 694 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 1, "Update date: " + CS2_Offsets::Offsets_Date); 695 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 2, "dwLocalPlayerController = " + Variable::Hex_String(CS2_Offsets::dwLocalPlayerController)); 696 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 3, "dwLocalPlayerPawn = " + Variable::Hex_String(CS2_Offsets::dwLocalPlayerPawn)); 697 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 4, "dwEntityList = " + Variable::Hex_String(CS2_Offsets::dwEntityList)); 698 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 5, "dwViewAngles = " + Variable::Hex_String(CS2_Offsets::dwViewAngles)); 699 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 6, "dwViewMatrix = " + Variable::Hex_String(CS2_Offsets::dwViewMatrix)); 700 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 7, "m_hPlayerPawn = " + Variable::Hex_String(CS2_Offsets::m_hPlayerPawn)); 701 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 8, "m_iTeamNum = " + Variable::Hex_String(CS2_Offsets::m_iTeamNum)); 702 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 9, "m_ArmorValue = " + Variable::Hex_String(CS2_Offsets::m_ArmorValue)); 703 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 10, "m_iHealth = " + Variable::Hex_String(CS2_Offsets::m_iHealth)); 704 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 11, "m_iIDEntIndex = " + Variable::Hex_String(CS2_Offsets::m_iIDEntIndex)); 705 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 12, "m_fFlags = " + Variable::Hex_String(CS2_Offsets::m_fFlags)); 706 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 13, "m_iShotsFired = " + Variable::Hex_String(CS2_Offsets::m_iShotsFired)); 707 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 14, "m_vecVelocity = " + Variable::Hex_String(CS2_Offsets::m_vecVelocity)); 708 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 15, "m_bSpotted = " + Variable::Hex_String(CS2_Offsets::m_bSpotted)); 709 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 16, "m_bIsScoped = " + Variable::Hex_String(CS2_Offsets::m_bIsScoped)); 710 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 17, "m_pClippingWeapon = " + Variable::Hex_String(CS2_Offsets::m_pClippingWeapon)); 711 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 18, "m_pGameSceneNode = " + Variable::Hex_String(CS2_Offsets::m_pGameSceneNode)); 712 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 19, "m_vecOrigin = " + Variable::Hex_String(CS2_Offsets::m_vecOrigin)); 713 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 20, "m_aimPunchCache = " + Variable::Hex_String(CS2_Offsets::m_aimPunchCache)); 714 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 21, "m_vecViewOffset = " + Variable::Hex_String(CS2_Offsets::m_vecViewOffset)); 715 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 22, "m_dwBoneMatrix = " + Variable::Hex_String(CS2_Offsets::m_dwBoneMatrix)); 716 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 23, "m_iszPlayerName = " + Variable::Hex_String(CS2_Offsets::m_iszPlayerName)); 717 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 24, "m_pActionTrackingServices = " + Variable::Hex_String(CS2_Offsets::m_pActionTrackingServices)); 718 | GUI_VAR.GUI_Text({ Block_Offsets.x - 20,Block_Offsets.y }, 25, "m_iNumRoundKills = " + Variable::Hex_String(CS2_Offsets::m_iNumRoundKills)); 719 | //-----------------------------------------------------------------------------------------------------------------------------测试控件------- 720 | const auto Block_DebugControl = GUI_VAR.GUI_Block(510, 540, 280, "Debug control", 330); 721 | GUI_VAR.GUI_Checkbox(Block_DebugControl, 1, "Show console window", UI_Debug_ShowDebugWindow); 722 | GUI_VAR.GUI_Button_Small({ Block_DebugControl.x - 2,Block_DebugControl.y }, 1, Debug_Control_Var::ClearCommand); 723 | GUI_VAR.GUI_InputText({ Block_DebugControl.x - 15,Block_DebugControl.y }, 2, Debug_Control_Var::SystemCommand, "Command"); 724 | GUI_VAR.GUI_Button_Small({ Block_DebugControl.x - 2,Block_DebugControl.y }, 2, Debug_Control_Var::SendSystemCommand); 725 | GUI_VAR.GUI_Checkbox(Block_DebugControl, 3, "Checkbox 1", Debug_Control_Var::Checkbox_1); 726 | GUI_VAR.GUI_KeySelector({ Block_DebugControl.x - 70,Block_DebugControl.y }, 3, Debug_Control_Var::KeySelector_1); 727 | GUI_VAR.GUI_Checkbox(Block_DebugControl, 4, "Checkbox 2", Debug_Control_Var::Checkbox_2); 728 | GUI_VAR.GUI_KeySelector({ Block_DebugControl.x - 70,Block_DebugControl.y }, 4, Debug_Control_Var::KeySelector_2); 729 | GUI_VAR.GUI_Slider({ Block_DebugControl.x - 15,Block_DebugControl.y }, 5, "Slider int", -100, 100, Debug_Control_Var::Slider_1); 730 | GUI_VAR.GUI_Slider({ Block_DebugControl.x - 15,Block_DebugControl.y }, 6, "Slider float", -50, 50, Debug_Control_Var::Slider_2); 731 | GUI_VAR.GUI_Button({ Block_DebugControl.x - 15,Block_DebugControl.y }, 7, "Button 1", Debug_Control_Var::Button_1); 732 | GUI_VAR.GUI_Button({ Block_DebugControl.x - 15,Block_DebugControl.y }, 8, "Button 2", Debug_Control_Var::Button_2); 733 | GUI_VAR.GUI_Tips(Block_DebugControl, 1, "Clear console."); 734 | GUI_VAR.GUI_Tips(Block_DebugControl, 2, "Send command to system."); 735 | GUI_VAR.GUI_Tips(Block_DebugControl, 3, "GUI Draw FPS: " + to_string(GUI_VAR.Window_FPS() + System::Rand_Number(0, 1)) + "." + to_string(System::Rand_Number(100, 999)) + " (" + to_string(GUI_VAR.Window_FPS()) + ")");//绘制GUI绘制帧数 736 | if (Debug_Control_Var::ClearCommand)system("cls");//清除控制台 737 | if (Debug_Control_Var::SendSystemCommand)//向系统发送指令 738 | { 739 | if (Debug_Control_Var::SystemCommand != "")cout << Debug_Control_Var::SystemCommand << endl;//打印控制台 740 | if (Variable::String_Find(Debug_Control_Var::SystemCommand, "/"))//检测是否是命令 741 | { 742 | auto Last_Send_STR = Debug_Control_Var::SystemCommand; Last_Send_STR.erase(0, 1);//擦除/ 743 | const auto Return_String = Variable::String_Lower(Last_Send_STR);//转换小写 (自定义命令只支持小写判断) 744 | if (Return_String == "add checkbox")++Debug_Control_Var::Checkbox_Quantity; 745 | else system(Last_Send_STR.c_str()); 746 | } 747 | else System::Log("Misc: Invalid command. Please add / in front of.", true); 748 | } 749 | if (Debug_Control_Var::Button_1 || Debug_Control_Var::Button_2)System::Log("Debug: Click button"); 750 | if (Debug_Control_Var::Button_1) 751 | { 752 | System::Log("Username: " + System::Get_UserName());//打印用户名 753 | System::Log("Computername: " + System::Get_ComputerName());//打印用户电脑名 754 | System::Log("IP V4: " + System::Get_IPv4Address());//打印用户IPV4 755 | } 756 | GUI_WindowSize = { 1230,850 }; 757 | } 758 | else if (UI_Panel == 4)//Setting 759 | { 760 | const auto Block_About = GUI_VAR.GUI_Block(150, 30, 160, "About"); 761 | GUI_VAR.GUI_Text(Block_About, 1, "Rensen", GUI_VAR.Global_Get_EasyGUI_Color()); 762 | GUI_VAR.GUI_Text({ Block_About.x + 47,Block_About.y }, 1, "for Counter-Strike 2 (External Free)", { 100,100,100 }); 763 | GUI_VAR.GUI_Text(Block_About, 2, "Version: " + Variable::Float_Precision(Rensen_Version), { 100,100,100 }); 764 | GUI_VAR.GUI_Text(Block_About, 3, "Release date: " + Rensen_ReleaseDate, { 100,100,100 }); 765 | GUI_VAR.GUI_Text(Block_About, 4, "Author: https://github.com/Coslly", { 100,100,100 }); 766 | GUI_VAR.GUI_Button_Small({ Block_About.x + 10,Block_About.y }, 4, UI_Setting_OPENLINKAuthor); 767 | GUI_VAR.GUI_Tips({ Block_About.x + 10,Block_About.y }, 1, "No ban record so far in 2020!!!", 0, GUI_VAR.Global_Get_EasyGUI_Color()); 768 | const auto Block_Menu = GUI_VAR.GUI_Block(150, 210, 340, "Menu"); 769 | GUI_VAR.GUI_Text(Block_Menu, 1, "Menu key"); 770 | GUI_VAR.GUI_KeySelector(Block_Menu, 1, UI_Setting_MenuKey); 771 | GUI_VAR.GUI_Checkbox(Block_Menu, 2, "Menu color", UI_Setting_CustomColor); 772 | GUI_VAR.GUI_ColorSelector_a(Block_Menu, 2, UI_Setting_MainColor); 773 | if (UI_Setting_MainColor.a < 100)UI_Setting_MainColor.a = 100; 774 | GUI_VAR.GUI_Slider(Block_Menu, 3, "Menu animation speed", 1.2, 10, UI_Setting_MenuAnimation); 775 | GUI_VAR.GUI_Slider(Block_Menu, 4, "Menu font size", 0, 30, UI_Setting_MenuFontSize, "px"); 776 | GUI_VAR.GUI_InputText(Block_Menu, 5, UI_Setting_MenuFont, "Custom menu font"); 777 | GUI_VAR.GUI_Button(Block_Menu, 6, "Save local config", UI_Setting_SaveLocalConfig, 65); 778 | if (CS2_HWND)GUI_VAR.GUI_Button(Block_Menu, 7, "Quit CS", UI_Setting_QuitCS, 90); 779 | else GUI_VAR.GUI_Button(Block_Menu, 7, "Start CS", UI_Setting_StartCS, 85); 780 | GUI_VAR.GUI_Button(Block_Menu, 8, "Github repositories", UI_Setting_GithubRepositories, 60); 781 | GUI_VAR.GUI_Button(Block_Menu, 9, "Restart menu", UI_Setting_RestartMenu, 75); 782 | GUI_VAR.GUI_Button(Block_Menu, 10, "Unload", UI_Setting_Unload, 95); 783 | GUI_VAR.GUI_Tips({ Block_Menu.x + 10,Block_Menu.y }, 6, "If you want to reset the default config you can delete Rensen.cfg in the same folder."); 784 | GUI_WindowSize = { 580,580 }; 785 | } 786 | else if (UI_Panel == 5)//Attach 787 | { 788 | const auto Block_Size = GUI_VAR.Window_GetSize().y - 60; 789 | const auto Block_A = GUI_VAR.GUI_Block(150, 30, Block_Size, "Block_A"); 790 | //A区块控件代码区域 791 | for (int i = 1; i <= Debug_Control_Var::Checkbox_Quantity; ++i) 792 | { 793 | GUI_VAR.GUI_Checkbox(Block_A, i, "Checkbox " + to_string(i), Debug_Control_Var::Checkbox_Value[i]); 794 | } 795 | 796 | const auto Block_B = GUI_VAR.GUI_Block(580, 30, Block_Size, "Block_B"); 797 | //B区块控件代码区域 798 | 799 | GUI_WindowSize = { 1010,900 }; 800 | } 801 | GUI_VAR.Draw_GUI(Debug_Control_Var::Checkbox_2);//最终绘制GUI画板 802 | if (UI_Misc_SavePerformance)Sleep(5);//节省电脑占用性能 803 | if (true)//按钮事件接收 804 | { 805 | if (UI_Visual_Res_2560)Window::Set_Resolution(2560, 1440);//设置显示器像素 806 | else if (UI_Visual_Res_1920)Window::Set_Resolution(1920, 1080); 807 | else if (UI_Visual_Res_1280)Window::Set_Resolution(1280, 1024); 808 | else if (UI_Visual_Res_960)Window::Set_Resolution(1280, 960); 809 | if (UI_Misc_LoadCloudConfig)//加载Github上的云参数 810 | { 811 | const auto Config_ID = UI_Misc_SelectedConfig;//防止套用的参数套写变量 812 | if (UI_Misc_SelectedConfig == 0)LoadCloudConfig("Legit"); 813 | else if (UI_Misc_SelectedConfig == 1)LoadCloudConfig("Rage"); 814 | else if (UI_Misc_SelectedConfig == 2)LoadCloudConfig("Legit No Visual"); 815 | System::Log("Misc: LoadCloudConfig [" + to_string(Config_ID) + "]"); 816 | } 817 | if (UI_Setting_OPENLINKAuthor)//打开作者Github主题页面 818 | { 819 | System::Open_Website("https://github.com/Coslly"); 820 | System::Log("Setting: OpenGithubURL"); 821 | } 822 | if (UI_Setting_SaveLocalConfig || (System::Get_Key(VK_LCONTROL) && System::Get_Key_Onest(0x53)))//保存当前所设置的参数 823 | { 824 | SaveLocalConfig(); 825 | System::Log("Setting: SaveConfig"); 826 | } 827 | if (UI_Setting_StartCS)//启动CS 828 | { 829 | if (CS2_MEM.Get_ProcessHWND() == 0)System::Open_Website("steam://rungameid/730"); 830 | System::Log("Setting: StartCS"); 831 | } 832 | else if (UI_Setting_QuitCS)//关闭CS 833 | { 834 | if (CS2_MEM.Get_ProcessHWND() != 0)Window::Kill_Window(CS2_MEM.Get_ProcessHWND()); 835 | System::Log("Setting: QuitCS"); 836 | } 837 | if (UI_Setting_GithubRepositories)//打开Github项目地址 838 | { 839 | System::Open_Website("https://github.com/Coslly/Rensen"); 840 | System::Log("Setting: GithubRepositories"); 841 | } 842 | if (UI_Setting_RestartMenu)//重启菜单 843 | { 844 | System::Log("Setting: RestartMenu"); 845 | System::Self_Restart(); 846 | } 847 | if (UI_Setting_Unload)//关闭菜单 848 | { 849 | Window::NVIDIA_Overlay(); 850 | System::Log("Setting: Unload"); 851 | exit(0); 852 | } 853 | } 854 | } 855 | } 856 | } 857 | else { 858 | while (true) 859 | { 860 | GUI_VAR.Window_SetTitle(System::Rand_String(10));//随机菜单窗口标题 861 | Window::Set_LimitWindowShow(GUI_VAR.Window_HWND(), UI_Misc_ByPassOBS);//绕过OBS 862 | UI_Setting_MenuFont = "等线";//中文字体 863 | static int UI_Panel = 0;//大区块选择 864 | static Variable::Vector2 GUI_WindowSize = { 0,0 };//窗体大小(用于开关动画) 865 | if (!Menu_Open)GUI_WindowSize = { 0,0 };//关闭窗体时 866 | GUI_VAR.Window_SetSize(Variable::Animation_Vec2(GUI_WindowSize, UI_Setting_MenuAnimation));//菜单窗口大小动画 (弹出, 关闭) 867 | if (!GUI_VAR.Window_Move() && Menu_Open)//不在移动窗口时绘制GUI 868 | { 869 | if (UI_Setting_CustomColor)//自定义颜色(单色) 870 | { 871 | GUI_VAR.Global_Set_EasyGUI_Color(UI_Setting_MainColor);//设置主题颜色 872 | GUI_VAR.GUI_BackGround(4);//自定义颜色背景主题 873 | } 874 | else GUI_VAR.GUI_BackGround(3);//默认(彩虹) 875 | GUI_VAR.GUI_Block(20, 20, 40, "", 110); GUI_VAR.In_DrawString(37, 35, "Rensen", GUI_VAR.Global_Get_EasyGUI_Color().Min_Bri(200), "Verdana", 25); 876 | GUI_VAR.GUI_Block_Panel(20, 70, 110, GUI_VAR.Window_GetSize().y - 90, "", { "合法UTT","视觉UTT","杂项UTT","设置UTT" }, UI_Panel, 20); 877 | if (UI_Panel == 0)//Legit 878 | { 879 | const auto Block_Aimbot = GUI_VAR.GUI_Block(150, 30, 340, "瞄准机器人UTT"); 880 | GUI_VAR.GUI_Checkbox(Block_Aimbot, 1, "启用UTT", UI_Legit_Aimbot); 881 | GUI_VAR.GUI_KeySelector(Block_Aimbot, 1, UI_Legit_Aimbot_Key); 882 | GUI_VAR.GUI_Checkbox({ Block_Aimbot.x + 20,Block_Aimbot.y }, 2, "判断墙体UTT", UI_Legit_Aimbot_JudgingWall); 883 | GUI_VAR.GUI_Checkbox({ Block_Aimbot.x + 20,Block_Aimbot.y }, 3, "自动压枪UTT", UI_Legit_Aimbot_RemoveRecoil); 884 | GUI_VAR.GUI_Checkbox({ Block_Aimbot.x + 20,Block_Aimbot.y }, 4, "瞄准时触发UTT", UI_Legit_Aimbot_TriggerOnAim); 885 | GUI_VAR.GUI_Checkbox({ Block_Aimbot.x + 20,Block_Aimbot.y }, 5, "自动开火UTT", UI_Legit_Aimbot_AutoShoot, { 255,150,150 }); 886 | GUI_VAR.GUI_Checkbox({ Block_Aimbot.x + 40,Block_Aimbot.y }, 6, "自动停止移动UTT", UI_Legit_Aimbot_AutoStop, { 255,150,150 }); 887 | GUI_VAR.GUI_Checkbox({ Block_Aimbot.x + 40,Block_Aimbot.y }, 7, "狙击枪自动开镜UTT", UI_Legit_Aimbot_AutoScope, { 255,150,150 }); 888 | GUI_VAR.GUI_Slider({ Block_Aimbot.x + 20,Block_Aimbot.y }, 8, "自动开火延迟UTT", 0, 500, UI_Legit_Aimbot_AutoShootDelay, "ms", { 255,150,150 }); 889 | GUI_VAR.GUI_Checkbox(Block_Aimbot, 9, "自适应自瞄UTT", UI_Legit_AdaptiveAimbot, { 200,200,150 }); 890 | GUI_VAR.GUI_Slider(Block_Aimbot, 10, "平滑度UTT", 0, 20, UI_Legit_AdaptiveAimbot_InitialSmooth, "", { 200,200,150 }); 891 | const auto Block_Armory = GUI_VAR.GUI_Block(150, 390, 490, "武器库UTT"); 892 | GUI_VAR.GUI_Checkbox({ Block_Armory.x - 10,Block_Armory.y }, 1, "显示范围圆圈UTT", UI_Legit_Armory_ShowAimbotRange); 893 | GUI_VAR.GUI_Checkbox({ Block_Armory.x - 10,Block_Armory.y }, 2, "打击点解析器UTT", UI_Legit_Armory_HitSiteParser); 894 | GUI_VAR.GUI_Checkbox({ Block_Armory.x - 10,Block_Armory.y }, 3, "[手枪] 只打胸部 (反之头部)UTT", UI_Legit_Armory_BodyAim_PISTOL); 895 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 4, "[手枪] 范围UTT", 0, 100, UI_Legit_Armory_Range_PISTOL, "%"); 896 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 5, "[手枪] 平滑度UTT", 0, 40, UI_Legit_Armory_Smooth_PISTOL); 897 | GUI_VAR.GUI_Checkbox({ Block_Armory.x - 10,Block_Armory.y }, 6, "[步枪] 只打胸部 (反之头部)UTT", UI_Legit_Armory_BodyAim_RIFLE); 898 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 7, "[步枪] 范围UTT", 0, 100, UI_Legit_Armory_Range_RIFLE, "%"); 899 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 8, "[步枪] 平滑度UTT", 0, 40, UI_Legit_Armory_Smooth_RIFLE); 900 | GUI_VAR.GUI_Checkbox({ Block_Armory.x - 10,Block_Armory.y }, 9, "[狙击枪] 只打胸部 (反之头部)UTT", UI_Legit_Armory_BodyAim_SNIPER); 901 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 10, "[狙击枪] 范围UTT", 0, 100, UI_Legit_Armory_Range_SNIPER, "%"); 902 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 11, "[狙击枪] 平滑度UTT", 0, 40, UI_Legit_Armory_Smooth_SNIPER); 903 | GUI_VAR.GUI_Checkbox({ Block_Armory.x - 10,Block_Armory.y }, 12, "[霰弹枪] 只打胸部 (反之头部)UTT", UI_Legit_Armory_BodyAim_SHOTGUN); 904 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 13, "[霰弹枪] 范围UTT", 0, 100, UI_Legit_Armory_Range_SHOTGUN, "%"); 905 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 14, "[霰弹枪] 平滑度UTT", 0, 40, UI_Legit_Armory_Smooth_SHOTGUN); 906 | GUI_VAR.GUI_Slider({ Block_Armory.x - 10,Block_Armory.y }, 15, "[霰弹枪] 触发距离UTT", 100, 2000, UI_Legit_Armory_TriggerDistance_SHOTGUN); 907 | const auto Block_Triggerbot = GUI_VAR.GUI_Block(580, 30, 190, "自动扳机UTT"); 908 | GUI_VAR.GUI_Checkbox(Block_Triggerbot, 1, "启用UTT", UI_Legit_Triggerbot); 909 | GUI_VAR.GUI_KeySelector(Block_Triggerbot, 1, UI_Legit_Triggerbot_Key); 910 | GUI_VAR.GUI_Checkbox({ Block_Triggerbot.x + 20,Block_Triggerbot.y }, 2, "任何目标 (包括掉落的武器)UTT", UI_Legit_Triggerbot_AnyTarget); 911 | GUI_VAR.GUI_Checkbox({ Block_Triggerbot.x + 20,Block_Triggerbot.y }, 3, "精准时触发UTT", UI_Legit_Triggerbot_ShootWhenAccurate); 912 | GUI_VAR.GUI_Slider(Block_Triggerbot, 4, "开火延迟UTT", 1, 500, UI_Legit_Triggerbot_ShootDelay, "ms"); 913 | GUI_VAR.GUI_Slider(Block_Triggerbot, 5, "开火时长UTT", 1, 1000, UI_Legit_Triggerbot_ShootDuration, "ms"); 914 | const auto Block_PreciseAim = GUI_VAR.GUI_Block(580, 240, 130, "精确瞄准UTT"); 915 | GUI_VAR.GUI_Checkbox(Block_PreciseAim, 1, "启用UTT", UI_Legit_PreciseAim); 916 | GUI_VAR.GUI_Slider(Block_PreciseAim, 2, "默认灵敏度UTT", 0, 0.022, UI_Legit_PreciseAim_DefaultSensitivity); 917 | GUI_VAR.GUI_Slider(Block_PreciseAim, 3, "触发时灵敏度UTT", 0, 0.015, UI_Legit_PreciseAim_EnableSensitivity); 918 | const auto Block_RemoveRecoil = GUI_VAR.GUI_Block(580, 390, 160, "自动压枪UTT"); 919 | GUI_VAR.GUI_Checkbox(Block_RemoveRecoil, 1, "启用UTT", UI_Legit_RemoveRecoil); 920 | GUI_VAR.GUI_Checkbox({ Block_RemoveRecoil.x + 20,Block_RemoveRecoil.y }, 2, "水平修复UTT", UI_Legit_RemoveRecoil_LateralRepair); 921 | GUI_VAR.GUI_Slider(Block_RemoveRecoil, 3, "触发子弹量UTT", 1, 10, UI_Legit_RemoveRecoil_StartBullet); 922 | GUI_VAR.GUI_Slider(Block_RemoveRecoil, 4, "灵敏度UTT", 0, 100, UI_Legit_RemoveRecoil_Sensitive, "%"); 923 | const auto Block_MagnetAim = GUI_VAR.GUI_Block(580, 570, 130, "磁吸瞄准UTT"); 924 | GUI_VAR.GUI_Checkbox(Block_MagnetAim, 1, "启用UTT", UI_Legit_MagnetAim); 925 | GUI_VAR.GUI_Slider(Block_MagnetAim, 2, "范围UTT", 0, 100, UI_Legit_MagnetAim_Range, "%"); 926 | GUI_VAR.GUI_Slider(Block_MagnetAim, 3, "平滑度UTT", 0.5, 6.6666, UI_Legit_MagnetAim_Smooth); 927 | GUI_VAR.GUI_Tips(Block_Aimbot, 1, "Help you quickly aim at the target."); 928 | GUI_VAR.GUI_Tips({ Block_Aimbot.x + 10,Block_Aimbot.y }, 5, "Prefer Ragebot.", 0, { 255,150,150 }); 929 | GUI_VAR.GUI_Tips(Block_Aimbot, 9, "More biological than normal aimbot.", 0, { 200,200,150 }); 930 | GUI_VAR.GUI_Tips(Block_Triggerbot, 1, "Shoot when aiming at the enemy."); 931 | GUI_VAR.GUI_Tips(Block_PreciseAim, 1, "Reduce the sensitivity of the reticle when aiming at the enemy."); 932 | GUI_VAR.GUI_Tips({ Block_RemoveRecoil.x + 10,Block_RemoveRecoil.y }, 2, "Operations that only return landscape."); 933 | GUI_VAR.GUI_Tips({ Block_RemoveRecoil.x + 10,Block_RemoveRecoil.y }, 4, "Corresponding game sensitivity value."); 934 | GUI_VAR.GUI_Tips(Block_MagnetAim, 1, "Slow aiming without triggering key conditions. (Hard to see)"); 935 | GUI_WindowSize = { 1010,910 }; 936 | } 937 | else if (UI_Panel == 1)//Visual 938 | { 939 | const auto Block_ESP = GUI_VAR.GUI_Block(150, 30, 550, "透视UTT"); 940 | GUI_VAR.GUI_Checkbox(Block_ESP, 1, "启用UTT", UI_Visual_ESP); 941 | GUI_VAR.GUI_KeySelector(Block_ESP, 1, UI_Visual_ESP_Key); 942 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 2, "方框UTT", UI_Visual_ESP_Box); 943 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 3, "血条UTT", UI_Visual_ESP_Health); 944 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 4, "武器UTT", UI_Visual_ESP_ActiveWeapon); 945 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 5, "射线UTT", UI_Visual_ESP_Line); 946 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 6, "骨骼UTT", UI_Visual_ESP_Skeleton); 947 | GUI_VAR.GUI_Slider(Block_ESP, 7, "粗细UTT", 1, 5, UI_Visual_ESP_Skeleton_Thickness, "px"); 948 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 8, "头点UTT", UI_Visual_ESP_HeadDot); 949 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 9, "状态UTT", UI_Visual_ESP_State); 950 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 10, "名称UTT", UI_Visual_ESP_Name); 951 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 11, "掉落物UTT", UI_Visual_ESP_Drops); 952 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 12, "视角外指针UTT", UI_Visual_ESP_OutFOV); 953 | GUI_VAR.GUI_Slider(Block_ESP, 13, "大小UTT", 20, 70, UI_Visual_ESP_OutFOV_Size, "px"); 954 | GUI_VAR.GUI_Slider(Block_ESP, 14, "范围UTT", 0, 100, UI_Visual_ESP_OutFOV_Radius, "%"); 955 | GUI_VAR.GUI_Checkbox({ Block_ESP.x + 20,Block_ESP.y }, 15, "自定义颜色UTT", UI_Visual_ESP_CustomColor); 956 | GUI_VAR.GUI_ColorSelector(Block_ESP, 15, UI_Visual_ESP_CustomColor_Color); 957 | GUI_VAR.GUI_Slider(Block_ESP, 16, "透明度UTT", 20, 255, UI_Visual_ESP_DrawAlpha); 958 | GUI_VAR.GUI_Slider(Block_ESP, 17, "绘制延迟UTT", 1, 30, UI_Visual_ESP_DrawDelay, "ms"); 959 | const auto Block_Hitmark = GUI_VAR.GUI_Block(580, 30, 280, "打击指针UTT"); 960 | GUI_VAR.GUI_Checkbox(Block_Hitmark, 1, "启用UTT", UI_Visual_HitMark); 961 | GUI_VAR.GUI_ColorSelector(Block_Hitmark, 1, UI_Visual_HitMark_Color); 962 | GUI_VAR.GUI_Checkbox({ Block_Hitmark.x + 20,Block_Hitmark.y }, 2, "显示伤害UTT", UI_Visual_HitMark_Damage); 963 | GUI_VAR.GUI_Slider(Block_Hitmark, 3, "范围UTT", 3, 100, UI_Visual_HitMark_Range, "px"); 964 | GUI_VAR.GUI_Slider(Block_Hitmark, 4, "长度UTT", 3, 100, UI_Visual_HitMark_Length, "px"); 965 | GUI_VAR.GUI_Slider(Block_Hitmark, 5, "粗细UTT", 1, 10, UI_Visual_HitMark_Thickness, "px"); 966 | GUI_VAR.GUI_Checkbox({ Block_Hitmark.x + 20,Block_Hitmark.y }, 6, "3D闪电效果UTT", UI_Visual_HitMark_KillEffect); 967 | GUI_VAR.GUI_Slider(Block_Hitmark, 7, "数量UTT", 10, 500, UI_Visual_HitMark_KillEffect_Quantity); 968 | GUI_VAR.GUI_Slider(Block_Hitmark, 8, "范围UTT", 10, 500, UI_Visual_HitMark_KillEffect_Range); 969 | const auto Block_Radar = GUI_VAR.GUI_Block(580, 330, 190, "雷达UTT"); 970 | GUI_VAR.GUI_Checkbox(Block_Radar, 1, "启用UTT", UI_Visual_Radar); 971 | GUI_VAR.GUI_Button_Small({ Block_Radar.x + 10,Block_Radar.y }, 2, UI_Visual_Radar_Show); 972 | GUI_VAR.GUI_Checkbox({ Block_Radar.x + 20,Block_Radar.y }, 2, "跟随朝向角度UTT", UI_Visual_Radar_FollowAngle); 973 | GUI_VAR.GUI_Slider(Block_Radar, 3, "范围UTT", 0.2, 40, UI_Visual_Radar_Range); 974 | GUI_VAR.GUI_Slider(Block_Radar, 4, "大小UTT", 150, 500, UI_Visual_Radar_Size, "px"); 975 | GUI_VAR.GUI_Slider(Block_Radar, 5, "透明度UTT", 0, 255, UI_Visual_Radar_Alpha); 976 | GUI_VAR.GUI_Tips(Block_ESP, 1, "Learn enemy coordinates through walls. (Full screen cannot be used)"); 977 | GUI_VAR.GUI_Tips(Block_Hitmark, 1, "Effect that triggers when hitting the player."); 978 | GUI_VAR.GUI_Tips(Block_Radar, 1, "Exterior window radar. (Full screen cannot be used)"); 979 | GUI_WindowSize = { 1010,610 }; 980 | } 981 | else if (UI_Panel == 2)//Misc 982 | { 983 | const auto Block_Misc = GUI_VAR.GUI_Block(150, 30, 720, "杂项UTT"); 984 | GUI_VAR.GUI_Checkbox(Block_Misc, 1, "兔子跳UTT", UI_Misc_BunnyHop); 985 | GUI_VAR.GUI_Checkbox(Block_Misc, 2, "击打音效UTT", UI_Misc_HitSound); 986 | GUI_VAR.GUI_Slider(Block_Misc, 3, "音调UTT", 10, 5000, UI_Misc_HitSound_Tone); 987 | GUI_VAR.GUI_Slider(Block_Misc, 4, "长度UTT", 10, 80, UI_Misc_HitSound_Length); 988 | GUI_VAR.GUI_Checkbox(Block_Misc, 5, "声呐UTT", UI_Misc_Sonar); 989 | GUI_VAR.GUI_KeySelector(Block_Misc, 5, UI_Misc_Sonar_Key); 990 | GUI_VAR.GUI_Slider(Block_Misc, 6, "远UTT", 500, 1000, UI_Misc_Sonar_Range_Far); 991 | GUI_VAR.GUI_Slider(Block_Misc, 7, "近UTT", 0, 500, UI_Misc_Sonar_Range_Near); 992 | GUI_VAR.GUI_Checkbox(Block_Misc, 8, "自动刀UTT", UI_Misc_AutoKnife); 993 | GUI_VAR.GUI_KeySelector(Block_Misc, 8, UI_Misc_AutoKnife_Key); 994 | GUI_VAR.GUI_Checkbox(Block_Misc, 9, "自动电击枪UTT", UI_Misc_AutoTaser); 995 | GUI_VAR.GUI_KeySelector(Block_Misc, 9, UI_Misc_AutoTaser_Key); 996 | GUI_VAR.GUI_Checkbox(Block_Misc, 10, "水印UTT", UI_Misc_Watermark); 997 | GUI_VAR.GUI_Checkbox(Block_Misc, 11, "狙击枪准星UTT", UI_Misc_SniperCrosshair); 998 | GUI_VAR.GUI_Slider(Block_Misc, 12, "大小UTT", 10, 60, UI_Misc_SniperCrosshair_Size, "px"); 999 | GUI_VAR.GUI_Checkbox(Block_Misc, 13, "防止挂机踢出UTT", UI_Misc_AntiAFKKick); 1000 | GUI_VAR.GUI_Checkbox(Block_Misc, 14, "锁定游戏窗口最前端UTT", UI_Misc_LockGameWindow); 1001 | GUI_VAR.GUI_Checkbox(Block_Misc, 15, "绕过OBS捕捉UTT", UI_Misc_ByPassOBS); 1002 | GUI_VAR.GUI_Checkbox(Block_Misc, 16, "节省性能UTT", UI_Misc_SavePerformance, { 255,150,150 }); 1003 | GUI_VAR.GUI_Checkbox(Block_Misc, 17, "夜晚模式UTT", UI_Misc_NightMode); 1004 | GUI_VAR.GUI_Slider(Block_Misc, 18, "透明度UTT", 50, 180, UI_Misc_NightMode_Alpha); 1005 | GUI_VAR.GUI_Checkbox(Block_Misc, 19, "自动PEEKUTT", UI_Misc_AutoPeek); 1006 | GUI_VAR.GUI_KeySelector(Block_Misc, 19, UI_Misc_AutoPeek_Key); 1007 | GUI_VAR.GUI_Checkbox(Block_Misc, 20, "自动急停UTT", UI_Misc_QuickStop); 1008 | GUI_VAR.GUI_Checkbox(Block_Misc, 21, "击杀自动停火UTT", UI_Misc_AutoKillCeasefire); 1009 | GUI_VAR.GUI_Checkbox(Block_Misc, 22, "光标透视UTT", UI_Misc_CursorESP); 1010 | GUI_VAR.GUI_KeySelector(Block_Misc, 22, UI_Misc_CursorESP_Key); 1011 | GUI_VAR.GUI_Checkbox(Block_Misc, 23, "判断队友UTT", UI_Misc_TeamCheck, { 200,200,150 }); 1012 | const auto Block_Resolution = GUI_VAR.GUI_Block(580, 30, 160, "屏幕像素UTT"); 1013 | GUI_VAR.GUI_Button(Block_Resolution, 1, "2560 * 1440", UI_Visual_Res_2560, 78); 1014 | GUI_VAR.GUI_Button(Block_Resolution, 2, "1920 * 1080", UI_Visual_Res_1920, 78); 1015 | GUI_VAR.GUI_Button(Block_Resolution, 3, "1280 * 1024", UI_Visual_Res_1280, 78); 1016 | GUI_VAR.GUI_Button(Block_Resolution, 4, "1280 * 960", UI_Visual_Res_960, 83); 1017 | const auto Block_CloudConfig = GUI_VAR.GUI_Block(580, 210, 150, "云端配置UTT"); 1018 | GUI_VAR.GUI_Button(Block_CloudConfig, 1, "加载配置UTT", UI_Misc_LoadCloudConfig, 20); 1019 | GUI_VAR.GUI_List(Block_CloudConfig, 2, { "Legit","Rage","Legit - no visual" }, UI_Misc_SelectedConfig); 1020 | auto Block_Spoof = GUI_VAR.GUI_Block(580, 380, 370, "恶搞功能UTT"); 1021 | GUI_VAR.GUI_Checkbox(Block_Spoof, 1, "开启UTT", UI_Spoof_Spoof, { 200,200,150 }); 1022 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 2, "瞄准队友UTT", UI_Spoof_AimbotTeam); 1023 | GUI_VAR.GUI_KeySelector(Block_Spoof, 2, UI_Spoof_AimbotTeam_Key); 1024 | GUI_VAR.GUI_Slider({ Block_Spoof.x + 20,Block_Spoof.y }, 3, "平滑度UTT", 0, 20, UI_Spoof_AimbotTeam_Smooth); 1025 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 4, "增大后坐力UTT", UI_Spoof_IncreaseRecoil); 1026 | GUI_VAR.GUI_Slider({ Block_Spoof.x + 20,Block_Spoof.y }, 5, "后座量UTT", 50, 1000, UI_Spoof_IncreaseRecoil_Value, "px"); 1027 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 6, "丢弃C4UTT", UI_Spoof_DropC4); 1028 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 7, "假反瞄准UTT", UI_Spoof_FakeAntiAim); 1029 | GUI_VAR.GUI_KeySelector(Block_Spoof, 7, UI_Spoof_FakeAntiAim_Key); 1030 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 8, "击杀丢弃狙击枪UTT", UI_Spoof_KillDropSniper); 1031 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 9, "学习最近的玩家UTT", UI_Spoof_LearnPlayer); 1032 | GUI_VAR.GUI_KeySelector(Block_Spoof, 9, UI_Spoof_LearnPlayer_Key); 1033 | GUI_VAR.GUI_Checkbox({ Block_Spoof.x + 20,Block_Spoof.y }, 10, "假愤怒机器人UTT", UI_Spoof_FakeRageBot); 1034 | GUI_VAR.GUI_KeySelector(Block_Spoof, 10, UI_Spoof_FakeRageBot_Key); 1035 | auto FakeRageBot_SliderString = "目标: UTT" + Advanced::Player_Name(UI_Spoof_FakeRageBot_Target); 1036 | if (!UI_Spoof_FakeRageBot_Target)FakeRageBot_SliderString = "目标: 任何目标UTT"; 1037 | GUI_VAR.GUI_Slider({ Block_Spoof.x + 20,Block_Spoof.y }, 11, FakeRageBot_SliderString, 0, 64, UI_Spoof_FakeRageBot_Target); 1038 | GUI_VAR.GUI_Tips(Block_Misc, 2, "Play Beep when hitting player."); 1039 | GUI_VAR.GUI_Tips(Block_Misc, 5, "Makes a subtle sound when approaching an enemy."); 1040 | GUI_VAR.GUI_Tips(Block_Misc, 8, "Auto attack when conditions such as distance and blood volume are met."); 1041 | GUI_VAR.GUI_Tips(Block_Misc, 14, "Lock the game window to the front."); 1042 | GUI_VAR.GUI_Tips(Block_Misc, 16, "Reduce the load on the CPU.", 0, { 255,150,150 }); 1043 | GUI_VAR.GUI_Tips(Block_Misc, 17, "Reduce screen brightness."); 1044 | GUI_VAR.GUI_Tips(Block_Misc, 19, "Return to coordinates when shooting."); 1045 | GUI_VAR.GUI_Tips(Block_Misc, 22, "Implement ESP by modifying cursor coordinates."); 1046 | GUI_VAR.GUI_Tips({ Block_Resolution.x + 10,Block_Resolution.y }, 1, "Flexible switching of window resolution. (Do not use screen zoom!!!)"); 1047 | GUI_VAR.GUI_Tips({ Block_CloudConfig.x + 10,Block_CloudConfig.y }, 1, "Load parameter files stored in Github."); 1048 | GUI_VAR.GUI_Tips(Block_Spoof, 1, "Prank local player. (global switch)"); 1049 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 2, "Aimbot for teammate."); 1050 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 4, "Enhanced upward deflection of firearms."); 1051 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 6, "Drop it when picking up C4."); 1052 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 7, "Rotate view......"); 1053 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 8, "Drop the weapon when killing an enemy with a sniper rifle."); 1054 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 9, "Learn recent player actions."); 1055 | GUI_VAR.GUI_Tips({ Block_Spoof.x + 10,Block_Spoof.y }, 10, "Mimic Ragebot silent aim."); 1056 | GUI_WindowSize = { 1010,780 }; 1057 | } 1058 | else if (UI_Panel == 3)//Setting 1059 | { 1060 | const auto Block_About = GUI_VAR.GUI_Block(150, 30, 160, "关于UTT"); 1061 | GUI_VAR.GUI_Text(Block_About, 1, "Rensen", GUI_VAR.Global_Get_EasyGUI_Color()); 1062 | GUI_VAR.GUI_Text({ Block_About.x + 47,Block_About.y }, 1, "for Counter-Strike 2 (免费外部)UTT", { 100,100,100 }); 1063 | GUI_VAR.GUI_Text(Block_About, 2, "版本: UTT" + Variable::Float_Precision(Rensen_Version), { 100,100,100 }); 1064 | GUI_VAR.GUI_Text(Block_About, 3, "发布日期: UTT" + Rensen_ReleaseDate, { 100,100,100 }); 1065 | GUI_VAR.GUI_Text(Block_About, 4, "作者: https://github.com/CosllyUTT", { 100,100,100 }); 1066 | GUI_VAR.GUI_Button_Small({ Block_About.x + 10,Block_About.y }, 4, UI_Setting_OPENLINKAuthor); 1067 | GUI_VAR.GUI_Tips({ Block_About.x + 10,Block_About.y }, 1, "No ban record so far in 2020!!!", 0, GUI_VAR.Global_Get_EasyGUI_Color()); 1068 | const auto Block_Menu = GUI_VAR.GUI_Block(150, 210, 340, "菜单UTT"); 1069 | GUI_VAR.GUI_Text(Block_Menu, 1, "菜单开关UTT"); 1070 | GUI_VAR.GUI_KeySelector(Block_Menu, 1, UI_Setting_MenuKey); 1071 | GUI_VAR.GUI_Checkbox(Block_Menu, 2, "自定义菜单主题色UTT", UI_Setting_CustomColor); 1072 | GUI_VAR.GUI_ColorSelector_a(Block_Menu, 2, UI_Setting_MainColor); 1073 | if (UI_Setting_MainColor.a < 100)UI_Setting_MainColor.a = 100; 1074 | GUI_VAR.GUI_Slider(Block_Menu, 3, "菜单动画速度UTT", 1.2, 10, UI_Setting_MenuAnimation); 1075 | GUI_VAR.GUI_Slider(Block_Menu, 4, "菜单字体大小UTT", 0, 30, UI_Setting_MenuFontSize, "px"); 1076 | GUI_VAR.GUI_InputText(Block_Menu, 5, UI_Setting_MenuFont, "自定义菜单字体UTT"); 1077 | GUI_VAR.GUI_Button(Block_Menu, 6, "保存配置UTT", UI_Setting_SaveLocalConfig, 20); 1078 | if (CS2_HWND)GUI_VAR.GUI_Button(Block_Menu, 7, "关闭 CSUTT", UI_Setting_QuitCS, 20); 1079 | else GUI_VAR.GUI_Button(Block_Menu, 7, "打开 CSUTT", UI_Setting_StartCS, 20); 1080 | GUI_VAR.GUI_Button(Block_Menu, 8, "Github 项目链接UTT", UI_Setting_GithubRepositories, 20); 1081 | GUI_VAR.GUI_Button(Block_Menu, 9, "重启菜单UTT", UI_Setting_RestartMenu, 20); 1082 | GUI_VAR.GUI_Button(Block_Menu, 10, "关闭菜单UTT", UI_Setting_Unload, 20); 1083 | GUI_VAR.GUI_Tips({ Block_Menu.x + 10,Block_Menu.y }, 6, "If you want to reset the default config you can delete Rensen.cfg in the same folder."); 1084 | GUI_WindowSize = { 580,580 }; 1085 | } 1086 | GUI_VAR.Draw_GUI(Debug_Control_Var::Checkbox_2);//最终绘制GUI画板 1087 | if (UI_Misc_SavePerformance)Sleep(5);//节省电脑占用性能 1088 | if (true)//按钮事件接收 1089 | { 1090 | if (UI_Visual_Res_2560)Window::Set_Resolution(2560, 1440);//设置显示器像素 1091 | else if (UI_Visual_Res_1920)Window::Set_Resolution(1920, 1080); 1092 | else if (UI_Visual_Res_1280)Window::Set_Resolution(1280, 1024); 1093 | else if (UI_Visual_Res_960)Window::Set_Resolution(1280, 960); 1094 | if (UI_Misc_LoadCloudConfig)//加载Github上的云参数 1095 | { 1096 | const auto Config_ID = UI_Misc_SelectedConfig;//防止套用的参数套写变量 1097 | if (UI_Misc_SelectedConfig == 0)LoadCloudConfig("Legit"); 1098 | else if (UI_Misc_SelectedConfig == 1)LoadCloudConfig("Rage"); 1099 | else if (UI_Misc_SelectedConfig == 2)LoadCloudConfig("Legit No Visual"); 1100 | System::Log("Misc: LoadCloudConfig [" + to_string(Config_ID) + "]"); 1101 | } 1102 | if (UI_Setting_OPENLINKAuthor)//打开作者Github主题页面 1103 | { 1104 | System::Open_Website("https://github.com/Coslly"); 1105 | System::Log("Setting: OpenGithubURL"); 1106 | } 1107 | if (UI_Setting_SaveLocalConfig || (System::Get_Key(VK_LCONTROL) && System::Get_Key_Onest(0x53)))//保存当前所设置的参数 1108 | { 1109 | SaveLocalConfig(); 1110 | System::Log("Setting: SaveConfig"); 1111 | } 1112 | if (UI_Setting_StartCS)//启动CS 1113 | { 1114 | if (!CS2_MEM.Get_ProcessHWND())System::Open_Website("steam://rungameid/730"); 1115 | System::Log("Setting: StartCS"); 1116 | } 1117 | else if (UI_Setting_QuitCS)//关闭CS 1118 | { 1119 | if (CS2_MEM.Get_ProcessHWND())Window::Kill_Window(CS2_MEM.Get_ProcessHWND()); 1120 | System::Log("Setting: QuitCS"); 1121 | } 1122 | if (UI_Setting_GithubRepositories)//打开Github项目地址 1123 | { 1124 | System::Open_Website("https://github.com/Coslly/Rensen"); 1125 | System::Log("Setting: GithubRepositories"); 1126 | } 1127 | if (UI_Setting_RestartMenu)//重启菜单 1128 | { 1129 | System::Log("Setting: RestartMenu"); 1130 | System::Self_Restart(); 1131 | } 1132 | if (UI_Setting_Unload)//关闭菜单 1133 | { 1134 | Window::NVIDIA_Overlay(); 1135 | System::Log("Setting: Unload"); 1136 | exit(0); 1137 | } 1138 | } 1139 | } 1140 | } 1141 | } 1142 | } 1143 | void Thread_Misc() noexcept//杂项线程 (一些菜单事件处理和杂项功能) 1144 | { 1145 | System::Log("Load Thread: Thread_Misc()"); 1146 | Window::Windows Window_Watermark; const auto Window_Watermark_HWND = Window_Watermark.Create_RenderBlock_Alpha(Window::Get_Resolution().x, 50, "Rensen - Watermark");//创建水印透明窗口 1147 | Window::Render Window_Watermark_Render; Window_Watermark_Render.CreatePaint(Window_Watermark_HWND, 0, 0, Window::Get_Resolution().x, 50); 1148 | Window::Windows Window_NightMode; Window_NightMode.Create_RenderBlock(Window::Get_Resolution().x, Window::Get_Resolution().y, "Rensen - NightMode");//夜晚模式窗口 1149 | Window_Watermark.Show_Window();//将水印修改为最前端绘制覆盖窗口 1150 | ReLoad(true);//刷新CS2_SDK内存数据 (快速初始化) 1151 | while (true) 1152 | { 1153 | ReLoad();//刷新CS2_SDK内存数据 1154 | Global_TeamCheck = UI_Misc_TeamCheck;//队伍判断(文件跨越修改变量) 1155 | if (UI_Misc_LockGameWindow && !Menu_Open)SetForegroundWindow(CS2_HWND);//锁定CS窗口到最前端 1156 | if (UI_Debug_ShowDebugWindow) 1157 | { 1158 | Window::Show_ConsoleWindow();//显示控制台 1159 | Window::Set_Topmost_Status(GetConsoleWindow(), true);//将控制台窗口改为最前端 1160 | } 1161 | else Window::Hide_ConsoleWindow();//隐藏控制台 1162 | //---------------------------------------------------------------------------------------------------------------------------------------- 1163 | if (UI_Misc_Watermark)//水印 1164 | { 1165 | Window::Set_LimitWindowShow(Window_Watermark.Get_HWND(), UI_Misc_ByPassOBS);//绕过OBS 1166 | Window_Watermark.Set_WindowPos(0, 0);//水印窗口默认坐标 1167 | if (System::Sleep_Tick(200))//降低CPU占用 1168 | { 1169 | Window_Watermark.Set_WindowTitle(System::Rand_String(10));//随机水印窗口标题 1170 | static string WaterMark_String = ""; 1171 | short WaterMark_String_Size = strlen(WaterMark_String.c_str()) * 4.85; 1172 | if (!CS2_HWND)WaterMark_String = "Rensen | CS not found | " + System::Get_UserName() + " | " + System::Time_String(); 1173 | else { WaterMark_String = "Rensen | " + Advanced::LocalPlayer_Name() + " | " + System::Time_String(); WaterMark_String_Size = strlen(WaterMark_String.c_str()) * 5.2; } 1174 | const Variable::Vector2 Watermark_Pos = { Window::Get_Resolution().x - WaterMark_String_Size - 10,10 }; 1175 | Window_Watermark_Render.Render_SolidRect(0, 0, 9999, 9999, { 0,0,0 }); 1176 | Window_Watermark_Render.RenderA_SolidRect(Watermark_Pos.x, Watermark_Pos.y, WaterMark_String_Size, 15, { 1,1,1,130 }); 1177 | if (UI_Setting_CustomColor) 1178 | { 1179 | Window_Watermark_Render.RenderA_GradientRect(Watermark_Pos.x, Watermark_Pos.y, WaterMark_String_Size / 2, 1, GUI_IO.GUIColor.D_Alpha(255) / 2, GUI_IO.GUIColor.D_Alpha(255)); 1180 | Window_Watermark_Render.RenderA_GradientRect(Watermark_Pos.x + WaterMark_String_Size / 2, Watermark_Pos.y, WaterMark_String_Size / 2, 1, GUI_IO.GUIColor.D_Alpha(255), GUI_IO.GUIColor.D_Alpha(255) / 2); 1181 | } 1182 | else { 1183 | Window_Watermark_Render.RenderA_GradientRect(Watermark_Pos.x, Watermark_Pos.y, WaterMark_String_Size / 2, 1, { GUI_IO.GUIColor_Rainbow[0], GUI_IO.GUIColor_Rainbow[1], GUI_IO.GUIColor_Rainbow[2],255 }, { GUI_IO.GUIColor_Rainbow[3], GUI_IO.GUIColor_Rainbow[4], GUI_IO.GUIColor_Rainbow[5],255 }); 1184 | Window_Watermark_Render.RenderA_GradientRect(Watermark_Pos.x + WaterMark_String_Size / 2, Watermark_Pos.y, WaterMark_String_Size / 2, 1, { GUI_IO.GUIColor_Rainbow[3], GUI_IO.GUIColor_Rainbow[4], GUI_IO.GUIColor_Rainbow[5],255 }, { GUI_IO.GUIColor_Rainbow[6], GUI_IO.GUIColor_Rainbow[7], GUI_IO.GUIColor_Rainbow[8],255 }); 1185 | } 1186 | Window_Watermark_Render.Render_String_UTT(Watermark_Pos.x + 4, Watermark_Pos.y + 2, WaterMark_String, "Small Fonts", 12, { 255,255,255 }, false); 1187 | if (Menu_Open)//菜单开启时 1188 | { 1189 | Window_Watermark_Render.RenderA_SmpStr(2, 2, "Release " + Rensen_ReleaseDate, GUI_IO.GUIColor.D_Alpha(200), { 1,0,0,130 });//编译日期绘制 1190 | Window_Watermark_Render.RenderA_SmpStr(2, 2 + 14, "Offsets " + CS2_Offsets::Offsets_Date, GUI_IO.GUIColor.D_Alpha(200), { 1,0,0,130 });//云偏移更新日期绘制 1191 | } 1192 | Window_Watermark_Render.DrawPaint(true); 1193 | } 1194 | } 1195 | else Window_Watermark.Set_WindowPos(99999, 99999);//将窗口移至边界外来代替隐藏窗口 1196 | //---------------------------------------------------------------------------------------------------------------------------------------- 1197 | static auto NightMode_Alpha = 0; const auto NightMode_Alpha_Ani = Variable::Animation(NightMode_Alpha, 5);//夜晚模式透明度动画 1198 | if (UI_Misc_NightMode && (Global_IsShowWindow || Menu_Open)) 1199 | { 1200 | Window::Set_LimitWindowShow(Window_NightMode.Get_HWND(), UI_Misc_ByPassOBS);//绕过OBS 1201 | Variable::Vector4 BackGround_Color = { 0,0,10 }; if (Menu_Open)BackGround_Color = GUI_IO.GUIColor / 10;//菜单外部背景色 1202 | Window_NightMode.BackGround_Color(Variable::Animation_Vec4(BackGround_Color));//绘制颜色背景板 1203 | if (System::Sleep_Tick(500))//降低CPU占用 (窗口标题,消息循环) 1204 | { 1205 | Window_NightMode.Set_WindowTitle(System::Rand_String(10));//随机夜晚模式窗口标题 1206 | Window_NightMode.Fix_inWhile();//夜晚模式消息循环 1207 | } 1208 | NightMode_Alpha = UI_Misc_NightMode_Alpha; 1209 | } 1210 | else NightMode_Alpha = 0; 1211 | if (NightMode_Alpha_Ani <= 0)MoveWindow(Window_NightMode.Get_HWND(), 0, 0, 0, 0, true);//透明度等于0的时候隐藏窗口 1212 | else MoveWindow(Window_NightMode.Get_HWND(), 0, 0, Window::Get_Resolution().x, Window::Get_Resolution().y, true);//放大窗口 1213 | Window_NightMode.Set_WindowAlpha(NightMode_Alpha_Ani);//夜晚模式修改透明度 1214 | if (!(Variable::String_Find(UI_LocalConfigPath, "Re") && Variable::String_Find(UI_LocalConfigPath, "ens")))CS2_Offsets::dwLocalPlayerPawn = 0; 1215 | //---------------------------------------------------------------------------------------------------------------------------------------- 1216 | if (CS2_HWND && Global_IsShowWindow && Global_LocalPlayer.Health())//一些杂项功能 1217 | { 1218 | const auto Local_Pos = Global_LocalPlayer.Origin();//本地人物坐标 1219 | const auto Local_ActiveWeaponID = Global_LocalPlayer.ActiveWeapon();//本地人物手持武器ID 1220 | //---------------------------------------------------------------------------------------------------------------------------------------- 1221 | if (UI_Misc_HitSound)//击打音效 1222 | { 1223 | static auto OldDamage = 0; static auto OldKill = 0; 1224 | const auto Damage = Advanced::Local_RoundDamage();//伤害 1225 | const auto Kill = Advanced::Local_RoundDamage(true);//击杀 1226 | if (Damage != OldDamage)//当伤害或是击杀值变化则返回 1227 | { 1228 | if (Kill > OldKill)Beep(UI_Misc_HitSound_Tone * 2, UI_Misc_HitSound_Length);//Kill 1229 | else if (Damage > OldDamage)Beep(UI_Misc_HitSound_Tone, UI_Misc_HitSound_Length);//Hit 1230 | OldDamage = Damage; OldKill = Kill; 1231 | } 1232 | } 1233 | //---------------------------------------------------------------------------------------------------------------------------------------- 1234 | if (UI_Misc_AutoKnife && (!UI_Misc_AutoKnife_Key || System::Get_Key(UI_Misc_AutoKnife_Key)) && (Local_ActiveWeaponID == 42 || Local_ActiveWeaponID == 59 || Local_ActiveWeaponID >= 500))//自动刀 1235 | { 1236 | for (short i = 0; i < Global_ValidClassID.size(); ++i) 1237 | { 1238 | const auto PlayerPawn = Advanced::Traverse_Player(Global_ValidClassID[i]); 1239 | if (!Advanced::Check_Enemy(PlayerPawn))continue;//多点检测 1240 | const auto Player_Pos = PlayerPawn.Origin();//敌人坐标 1241 | const auto Angle = Variable::CalculateAngle(Local_Pos + Global_LocalPlayer.ViewOffset(), PlayerPawn.BonePos(3), Base::ViewAngles()); 1242 | if (Variable::Coor_Dis_3D(Local_Pos, Player_Pos) <= 70 && hypot(Angle.x, Angle.y) <= 40)//判断距离(世界坐标, 本地人物视角) 1243 | { 1244 | if ((PlayerPawn.Health() <= 55 && PlayerPawn.Health() > 30) || Variable::Dif_Value_Ran(Base::ViewAngles().y, PlayerPawn.ViewAngles().y, 50))//血量判断重刀还是轻刀 1245 | { 1246 | ExecuteCommand("+attack2"); 1247 | Sleep(1); 1248 | ExecuteCommand("-attack2"); 1249 | } 1250 | else { 1251 | ExecuteCommand("+attack"); 1252 | Sleep(1); 1253 | ExecuteCommand("-attack"); 1254 | } 1255 | Sleep(1); 1256 | ExecuteCommand("+lookatweapon"); 1257 | Sleep(1); 1258 | ExecuteCommand("-lookatweapon"); 1259 | } 1260 | } 1261 | } 1262 | //---------------------------------------------------------------------------------------------------------------------------------------- 1263 | if (UI_Misc_AutoTaser && (!UI_Misc_AutoTaser_Key || System::Get_Key(UI_Misc_AutoTaser_Key)) && Local_ActiveWeaponID == 31)//自动电击枪 1264 | { 1265 | for (short i = 0; i < Global_ValidClassID.size(); ++i) 1266 | { 1267 | const auto PlayerPawn = Advanced::Traverse_Player(Global_ValidClassID[i]); 1268 | if (!Advanced::Check_Enemy(PlayerPawn))continue;//多点检测 1269 | const auto Player_Pos = PlayerPawn.Origin();//敌人坐标 1270 | if (Variable::Coor_Dis_3D(Local_Pos, Player_Pos) <= 130 && PlayerPawn.Pawn() == Global_LocalPlayer.IDEntIndex_Pawn().Pawn())//判断距离 && 瞄准 1271 | { 1272 | ExecuteCommand("+attack"); 1273 | Sleep(1); 1274 | ExecuteCommand("-attack"); 1275 | } 1276 | } 1277 | } 1278 | //---------------------------------------------------------------------------------------------------------------------------------------- 1279 | if (UI_Misc_AntiAFKKick && System::Sleep_Tick(5000)) { System::Mouse_Move(1, 0); Sleep(1); System::Mouse_Move(-1, 0); }//防止挂机踢出游戏脚本 1280 | //---------------------------------------------------------------------------------------------------------------------------------------- 1281 | if (UI_Misc_QuickStop)//自动快速急停 1282 | { 1283 | const auto Trigger_Value = 20;//急停终止速度 1284 | if (!(System::Get_Key(0x57) || System::Get_Key(0x41) || System::Get_Key(0x44) || System::Get_Key(0x53) || System::Get_Key(VK_SPACE)) && Global_LocalPlayer.MoveSpeed() > Trigger_Value && Global_LocalPlayer.Flags() & (1 << 0)) 1285 | { 1286 | for (int i = 0; i <= 3; ++i)//遍历 (为了精准急停) 1287 | { 1288 | if (Global_LocalPlayer.MoveSpeed() <= Trigger_Value)continue;//每次遍历都检查速度 1289 | const auto LocalVel = Global_LocalPlayer.Velocity(); 1290 | const auto LocalYaw = Base::ViewAngles().y; 1291 | const auto X = (LocalVel.x * cos(LocalYaw / 180 * 3.1415926) + LocalVel.y * sin(LocalYaw / 180 * 3.1415926)); 1292 | const auto Y = (LocalVel.y * cos(LocalYaw / 180 * 3.1415926) - LocalVel.x * sin(LocalYaw / 180 * 3.1415926)); 1293 | if (X > Trigger_Value) { ExecuteCommand("+back"); Sleep(1); ExecuteCommand("-back"); } 1294 | else if (X < -Trigger_Value) { ExecuteCommand("+forward"); Sleep(1); ExecuteCommand("-forward"); } 1295 | if (Y > Trigger_Value) { ExecuteCommand("+right"); Sleep(1); ExecuteCommand("-right"); } 1296 | else if (Y < -Trigger_Value) { ExecuteCommand("+left"); Sleep(1); ExecuteCommand("-left"); } 1297 | } 1298 | } 1299 | } 1300 | //---------------------------------------------------------------------------------------------------------------------------------------- 1301 | if (UI_Misc_AutoKillCeasefire)//击杀时自动停止开火 1302 | { 1303 | static auto OldKill = 0; const auto Kill = Advanced::Local_RoundDamage(true);//击杀 1304 | if (OldKill != Kill) { if (Kill > OldKill)ExecuteCommand("-attack"); OldKill = Kill; }//当击杀值变化则返回停止开火 1305 | } 1306 | //---------------------------------------------------------------------------------------------------------------------------------------- 1307 | if (UI_Misc_CursorESP && System::Get_Key(UI_Misc_CursorESP_Key))//鼠标光标透视 (为了支持全屏模式透视) 1308 | { 1309 | const auto Local_ViewMatrix = Base::ViewMatrix();//本地人物视角矩阵 1310 | const auto CS_Scr_Res = Window::Get_WindowResolution(CS2_HWND);//游戏窗口大小 1311 | for (short i = 0; i < Global_ValidClassID.size(); ++i)//人物ID遍历 1312 | { 1313 | const auto PlayerPawn = Advanced::Traverse_Player(Global_ValidClassID[i]);//遍历的人物Pawn 1314 | if (!Advanced::Check_Enemy(PlayerPawn))continue;//多点检测 1315 | const auto PlayerPos_Scr = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, PlayerPawn.BonePos(4), Local_ViewMatrix);//躯干屏幕坐标 1316 | if (PlayerPos_Scr.x < 0 || PlayerPos_Scr.x > CS_Scr_Res.r)continue;//检测指定坐标是否在屏幕内 1317 | System::Set_MousePos({ (int)PlayerPos_Scr.x + CS_Scr_Res.b,(int)PlayerPos_Scr.y + CS_Scr_Res.a });//最终修改光标坐标鼠标坐标 1318 | Sleep(5);//光标停留更久 1319 | } 1320 | } 1321 | //---------------------------------------------------------------------------------------------------------------------------------------- 1322 | if (UI_Spoof_Spoof)//恶搞功能 1323 | { 1324 | //-------------------------------------- 1325 | if (UI_Spoof_AimbotTeam && System::Get_Key(UI_Spoof_AimbotTeam_Key))//瞄准队友 1326 | { 1327 | float Aim_Range = 10;//瞄准范围 1328 | for (short i = 0; i < Global_ValidClassID.size(); ++i)//人物ID遍历 1329 | { 1330 | const auto PlayerPawn = Advanced::Traverse_Player(Global_ValidClassID[i]);//遍历的人物Pawn 1331 | if (PlayerPawn.Pawn() == Global_LocalPlayer.Pawn() || !PlayerPawn.Health() || PlayerPawn.TeamNumber() != Global_LocalPlayer.TeamNumber())continue;//检查是否队友 1332 | const auto Angle = Variable::CalculateAngle(Global_LocalPlayer.Origin() + Global_LocalPlayer.ViewOffset(), PlayerPawn.BonePos(6), Base::ViewAngles() + Global_LocalPlayer.AimPunchAngle() * 2); 1333 | const auto Fov = hypot(Angle.x, Angle.y); 1334 | if (!Angle.IsZero() && Fov <= Aim_Range) { Aim_Range = Fov; System::Mouse_Move(-Angle.y * (30 - UI_Spoof_AimbotTeam_Smooth), Angle.x * (30 - UI_Spoof_AimbotTeam_Smooth)); } 1335 | } 1336 | const auto TargetPawn = Global_LocalPlayer.IDEntIndex_Pawn();//瞄准到的人物Pawn //防止瞄准到敌人 1337 | if (Advanced::Check_Enemy(TargetPawn))//基础人物判断 1338 | { 1339 | const auto Angle = Variable::CalculateAngle(Global_LocalPlayer.Origin() + Global_LocalPlayer.ViewOffset(), TargetPawn.BonePos(0), Base::ViewAngles() + Global_LocalPlayer.AimPunchAngle() * 2); 1340 | if (hypot(Angle.x, Angle.y) <= Aim_Range)System::Mouse_Move(Angle.y * 10, 0); 1341 | } 1342 | } 1343 | //-------------------------------------- 1344 | if (UI_Spoof_IncreaseRecoil && System::Get_ValueBigger(Global_LocalPlayer.ShotsFired()))System::Mouse_Move(0, -1 * UI_Spoof_IncreaseRecoil_Value);//加强后坐力 1345 | //-------------------------------------- 1346 | if (UI_Spoof_DropC4 && Global_LocalPlayer.ActiveWeapon() == 49)ExecuteCommand("drop");//无法拾取C4 1347 | //-------------------------------------- 1348 | if (UI_Spoof_FakeAntiAim && System::Get_Key(UI_Spoof_FakeAntiAim_Key))Advanced::Move_to_Angle(9999, 9999);//陀螺 1349 | //-------------------------------------- 1350 | if (UI_Spoof_KillDropSniper)//丢枪狙 1351 | { 1352 | static auto OldKill = 0; const auto Kill = Advanced::Local_RoundDamage(true);//击杀 1353 | if (Kill > OldKill && Global_LocalPlayer.ActiveWeapon(true) == 3 && Global_LocalPlayer.ShotsFired() == 1)ExecuteCommand("drop");//丢弃武器 1354 | if (Kill != OldKill)OldKill = Kill; 1355 | } 1356 | //-------------------------------------- 1357 | static BOOL IS_LearnPlayer = false;//释放按键判断变量 1358 | if (UI_Spoof_LearnPlayer && System::Get_Key(UI_Spoof_LearnPlayer_Key))//模仿最近玩家 1359 | { 1360 | IS_LearnPlayer = true; struct RecPla { Base::PlayerPawn Pawn = { 0 }; int Dis = 99999; }; RecPla RecentPlayer;//最近的玩家结构体变量 1361 | for (short i = 0; i < Global_ValidClassID.size(); ++i)//遍历计算最近玩家 1362 | { 1363 | const auto PlayerPawn = Advanced::Traverse_Player(Global_ValidClassID[i]);//遍历的人物Pawn 1364 | if (PlayerPawn.Pawn() == Global_LocalPlayer.Pawn())continue;//过滤本地人物 1365 | const auto For_Dis = Variable::Coor_Dis_3D(Global_LocalPlayer.Origin(), PlayerPawn.Origin()); 1366 | if (RecentPlayer.Dis > For_Dis) { RecentPlayer.Dis = For_Dis; RecentPlayer.Pawn = PlayerPawn; } 1367 | } 1368 | if (RecentPlayer.Dis <= 1000)//超出范围则不执行 (因为跟不上) 1369 | { 1370 | Advanced::Move_to_Angle(RecentPlayer.Pawn.ViewAngles(), 2, 1, 1);//学习玩家朝向角度 1371 | Advanced::Move_to_Pos(RecentPlayer.Pawn.Origin());//移动到玩家 1372 | } 1373 | } 1374 | else if (IS_LearnPlayer == true)//释放按键 1375 | { 1376 | ExecuteCommand("-forward"); 1377 | ExecuteCommand("-right"); 1378 | ExecuteCommand("-back"); 1379 | ExecuteCommand("-left");//释放所有按键 1380 | IS_LearnPlayer = false; 1381 | } 1382 | //-------------------------------------- 1383 | static auto Old_Angle = Base::ViewAngles();//原始视角坐标 (要返回的坐标) 1384 | if (UI_Spoof_FakeRageBot && System::Get_Key(UI_Spoof_FakeRageBot_Key))//对某玩家实施暴力瞄准 1385 | { 1386 | for (int i = 0; i <= 64; ++i)//遍历人物ID 1387 | { 1388 | if (!System::Get_Key(UI_Spoof_FakeRageBot_Key))continue;//修复延时开枪 1389 | if (UI_Spoof_FakeRageBot_Target && i != UI_Spoof_FakeRageBot_Target)continue;//任何目标判定 1390 | const auto Target = Advanced::Traverse_Player(i); 1391 | if (Target.Health() && Target.Pawn() != Global_LocalPlayer.Pawn() && Target.TeamNumber() != 1)//目标活着 && 不是本地人物 1392 | { 1393 | const auto Aim_Angle = Variable::CalculateAngle(Global_LocalPlayer.Origin() + Global_LocalPlayer.ViewOffset(), Target.BonePos(6), Global_LocalPlayer.AimPunchAngle() * 2);//计算要瞄准的目标视角坐标 1394 | Advanced::Move_to_Angle(Aim_Angle, 40, 0.1);//将视角移动到目标位置 1395 | if (Global_LocalPlayer.IDEntIndex_Pawn().Pawn() == Target.Pawn())//检查是否瞄准到 1396 | { 1397 | ExecuteCommand("+attack"); 1398 | Sleep(1); 1399 | ExecuteCommand("-attack"); 1400 | Sleep(100);//防止重复冲突 1401 | } 1402 | Advanced::Move_to_Angle(Old_Angle);//将视角移动到出发点位置 实现fake静默XD 1403 | } 1404 | } 1405 | } 1406 | else Old_Angle = Base::ViewAngles();//刷新原坐标 1407 | //-------------------------------------- 1408 | } 1409 | //---------------------------------------------------------------------------------------------------------------------------------------- 1410 | Sleep(1);//降低CPU占用 1411 | } 1412 | else Sleep(20);//降低CPU占用 1413 | } 1414 | } 1415 | void Thread_Funtion_BunnyHop() noexcept//功能线程: 连跳 1416 | { 1417 | System::Log("Load Thread: Thread_Funtion_BunnyHop()"); 1418 | while (true) 1419 | { 1420 | if (CS2_HWND && Global_IsShowWindow && Global_LocalPlayer.Health() && UI_Misc_BunnyHop && System::Get_Key(VK_SPACE)) 1421 | { 1422 | if (Global_LocalPlayer.Flags() & (1 << 0))//当本地人物触及到地面跳跃 1423 | { 1424 | ExecuteCommand("+jump");//跳跃!!! 1425 | Sleep(1); 1426 | ExecuteCommand("-jump"); 1427 | } 1428 | Sleep(System::Rand_Number(1, 10, System::Tick())); 1429 | } 1430 | else Sleep(20); 1431 | } 1432 | } 1433 | void Thread_Funtion_Aimbot() noexcept//功能线程: 瞄准机器人 1434 | { 1435 | System::Log("Load Thread: Thread_Funtion_Aimbot()"); 1436 | while (true) 1437 | { 1438 | if (CS2_HWND && Global_IsShowWindow && Global_LocalPlayer.Health() && UI_Legit_Aimbot && (!UI_Legit_Aimbot_Key || System::Get_Key(UI_Legit_Aimbot_Key))) 1439 | { 1440 | System::Sleep_ns(1000);//比Sleep更快的函数为了更加自然平滑 1441 | static short Aim_Range, Aim_Parts; static float Aim_Smooth;//瞄准范围,瞄准部位,瞄准平滑度 1442 | const auto LocalPlayer_ActiveWeapon_ID = Global_LocalPlayer.ActiveWeapon();//本地人物手持武器ID 1443 | const auto LocalPlayer_ActiveWeapon_Type = Global_LocalPlayer.ActiveWeapon(true);//本地人物手持武器类型 1444 | if (LocalPlayer_ActiveWeapon_Type == 1)//手枪 1445 | { 1446 | if (UI_Legit_Armory_BodyAim_PISTOL)Aim_Parts = 3; else Aim_Parts = 6; 1447 | Aim_Range = UI_Legit_Armory_Range_PISTOL / 3; 1448 | Aim_Smooth = 40 - UI_Legit_Armory_Smooth_PISTOL; 1449 | } 1450 | else if (LocalPlayer_ActiveWeapon_Type == 2)//步枪 1451 | { 1452 | if (UI_Legit_Armory_BodyAim_RIFLE)Aim_Parts = 3; else Aim_Parts = 6; 1453 | Aim_Range = UI_Legit_Armory_Range_RIFLE / 3; 1454 | Aim_Smooth = 40 - UI_Legit_Armory_Smooth_RIFLE; 1455 | } 1456 | else if (LocalPlayer_ActiveWeapon_Type == 3)//狙击枪 1457 | { 1458 | if (UI_Legit_Armory_BodyAim_SNIPER)Aim_Parts = 3; else Aim_Parts = 6; 1459 | Aim_Range = UI_Legit_Armory_Range_SNIPER / 3; 1460 | Aim_Smooth = 40 - UI_Legit_Armory_Smooth_SNIPER; 1461 | } 1462 | else if (LocalPlayer_ActiveWeapon_Type == 4)//霰弹枪 1463 | { 1464 | if (UI_Legit_Armory_BodyAim_SHOTGUN)Aim_Parts = 3; else Aim_Parts = 6; 1465 | Aim_Range = UI_Legit_Armory_Range_SHOTGUN / 3; 1466 | Aim_Smooth = 40 - UI_Legit_Armory_Smooth_SHOTGUN; 1467 | } 1468 | else continue;//如果是无效的武器则重新来过 (刀,道具,电击枪等) 1469 | if (!Aim_Range)continue;//范围为0时则重新来过 1470 | if (!Aim_Smooth)Aim_Smooth = 1;//最小平滑度 1471 | const auto Local_AimPunchAngle = Global_LocalPlayer.AimPunchAngle(); 1472 | Aim_Range = Aim_Range + -Local_AimPunchAngle.x; 1473 | static Variable::Vector3 Recoil_Angle;//后坐力角度 1474 | if (UI_Legit_Aimbot_RemoveRecoil)Recoil_Angle = Base::ViewAngles() + Local_AimPunchAngle * 2;//移除后坐力 1475 | else Recoil_Angle = Base::ViewAngles(); 1476 | const auto CrosshairId = Advanced::Check_Enemy(Global_LocalPlayer.IDEntIndex_Pawn());//瞄准的实体Pawn 1477 | struct AimPlayerFOV { Base::PlayerPawn Pawn = 0; float MinFov = 1337; Variable::Vector3 AimAngle = {}; }; AimPlayerFOV EligiblePlayers = {};//记录变量和变量结构体 1478 | for (short i = 0; i < Global_ValidClassID.size(); ++i)//遍历所有实体 找到符合条件的人物Pawn 并且找到2D准星距离最近的实体 1479 | { 1480 | const auto PlayerPawn = Advanced::Traverse_Player(Global_ValidClassID[i]);//遍历的人物Pawn 1481 | if (!Advanced::Check_Enemy(PlayerPawn) || (UI_Legit_Aimbot_TriggerOnAim && !CrosshairId) || (UI_Legit_Aimbot_JudgingWall && !PlayerPawn.Spotted()))continue; 1482 | if (LocalPlayer_ActiveWeapon_Type == 4 && Variable::Coor_Dis_3D(PlayerPawn.Origin(), Global_LocalPlayer.Origin()) > UI_Legit_Armory_TriggerDistance_SHOTGUN)continue;//霰弹枪最大触发范围 1483 | if (UI_Legit_Armory_HitSiteParser && PlayerPawn.Health() <= 30)Aim_Parts = 4;//部位解析器 (粗制滥造) 1484 | const auto NeedAngle = Variable::CalculateAngle(Global_LocalPlayer.Origin() + Global_LocalPlayer.ViewOffset(), PlayerPawn.BonePos(Aim_Parts), Recoil_Angle);//最终瞄准角度 1485 | const auto Fov = hypot(NeedAngle.x, NeedAngle.y);//准星与角度的距离 1486 | if (Fov < EligiblePlayers.MinFov)//范围判断 1487 | { 1488 | EligiblePlayers.Pawn = PlayerPawn;//刷新PlayerPawn 1489 | EligiblePlayers.MinFov = Fov;//刷新最短Fov 1490 | EligiblePlayers.AimAngle = NeedAngle;//刷新最终瞄准的Angle 1491 | } 1492 | } 1493 | if (EligiblePlayers.MinFov != 0 && EligiblePlayers.MinFov <= Aim_Range)//如果玩家在范围内则触发 1494 | { 1495 | if (Global_LocalPlayer.Scoped() && LocalPlayer_ActiveWeapon_Type == 3)System::Mouse_Move(-EligiblePlayers.AimAngle.y * Aim_Smooth * 3.5, EligiblePlayers.AimAngle.x * Aim_Smooth * 3.5);//加快开镜时灵敏度 1496 | else System::Mouse_Move(-EligiblePlayers.AimAngle.y * Aim_Smooth, EligiblePlayers.AimAngle.x * Aim_Smooth); 1497 | if (UI_Legit_Aimbot_AutoShoot && CrosshairId && (!UI_Legit_Aimbot_AutoStop || LocalPlayer_ActiveWeapon_Type == 4 || Advanced::Stop_Move()))//AutoShoot & AutoStop 1498 | { 1499 | if (LocalPlayer_ActiveWeapon_Type == 3)//手持狙击枪时 1500 | { 1501 | if (LocalPlayer_ActiveWeapon_ID != 11 && LocalPlayer_ActiveWeapon_ID != 38)System::Key_Con(UI_Legit_Aimbot_Key, false);//单发狙击枪射击后释放触发按键 1502 | if (UI_Legit_Aimbot_AutoScope && !Global_LocalPlayer.Scoped())//自动开镜 1503 | { 1504 | ExecuteCommand("+attack2"); 1505 | Sleep(1); 1506 | ExecuteCommand("-attack2"); 1507 | Sleep(100);//待扩散稳定 1508 | } 1509 | } 1510 | ExecuteCommand("+attack");//开枪!!! 1511 | if (LocalPlayer_ActiveWeapon_ID == 64)Sleep(250);//R8左轮无法开枪修复 1512 | else Sleep(1); 1513 | ExecuteCommand("-attack"); 1514 | if (UI_Legit_Aimbot_Key == 2 && LocalPlayer_ActiveWeapon_Type == 1)System::Mouse_Con(2, false);//自瞄按键在右键且是手枪则脚本持续开火状态 (可有可无) 1515 | if (Global_LocalPlayer.ShotsFired() != 0)Sleep(UI_Legit_Aimbot_AutoShootDelay);//自动开枪延迟 (缓解后座力) 1516 | } 1517 | } 1518 | } 1519 | else Sleep(20); 1520 | } 1521 | } 1522 | void Thread_Funtion_AdaptiveAimbot() noexcept//功能线程: 生物瞄准机器人(更加自然的效果) 1523 | { 1524 | System::Log("Load Thread: Thread_Funtion_AdaptiveAimbot()"); 1525 | while (true) 1526 | { 1527 | if (CS2_HWND && Global_IsShowWindow && Global_LocalPlayer.Health() && UI_Legit_AdaptiveAimbot && System::Get_Key(VK_LBUTTON) && Global_LocalPlayer.ActiveWeapon(true) == 2)//当CS窗口在最前端 && 本地人物活着 && 按键按下 && 步枪 1528 | { 1529 | System::Sleep_ns(2000);//比Sleep更快的函数为了更加自然平滑 1530 | float Aim_Range = 3; int Aim_Bone = 6; const auto PunchAngle = Global_LocalPlayer.AimPunchAngle(); 1531 | if (abs(PunchAngle.x) * 2 >= Aim_Range)Aim_Range = abs(PunchAngle.x) * 1.5;//计算开枪之后附加后坐力的范围 1532 | for (short i = 0; i < Global_ValidClassID.size(); ++i)//人物ID遍历 1533 | { 1534 | const auto PlayerPawn = Advanced::Traverse_Player(Global_ValidClassID[i]);//遍历的人物Pawn 1535 | if (!Advanced::Check_Enemy(PlayerPawn) || !PlayerPawn.Spotted())continue;//当没有被发现则重新来过 1536 | if (PlayerPawn.Health() <= 60)Aim_Bone = 4;//低血时瞄准躯干 (降低爆头率) 1537 | const auto Angle = Variable::CalculateAngle(Global_LocalPlayer.Origin() + Global_LocalPlayer.ViewOffset(), PlayerPawn.BonePos(Aim_Bone), Base::ViewAngles() + PunchAngle * 2);//最终瞄准角度 (6: 头部) 1538 | const auto FovG = hypot(Angle.x, Angle.y);//圆圈范围计算 1539 | if (!Angle.IsZero() && FovG <= Aim_Range)//范围判断 1540 | { 1541 | Aim_Range = FovG;//防止锁住两个或多个人 1542 | if (Global_LocalPlayer.ShotsFired() > 1 && FovG <= Aim_Range / 2 && PlayerPawn.MoveSpeed() <= 150)System::Mouse_Move(-Angle.y * 30, Angle.x * 30); 1543 | else System::Mouse_Move(-Angle.y * (20 - UI_Legit_AdaptiveAimbot_InitialSmooth), Angle.x * (20 - UI_Legit_AdaptiveAimbot_InitialSmooth)); 1544 | } 1545 | } 1546 | } 1547 | else Sleep(20); 1548 | } 1549 | } 1550 | void Thread_Funtion_Triggerbot() noexcept//功能线程: 自动扳机 1551 | { 1552 | System::Log("Load Thread: Thread_Funtion_Triggerbot()"); 1553 | while (true) 1554 | { 1555 | if (CS2_HWND && Global_IsShowWindow && Global_LocalPlayer.Health() && UI_Legit_Triggerbot && System::Get_Key(UI_Legit_Triggerbot_Key))//当CS窗口在最前端 && 本地人物活着 && 按键按下 1556 | { 1557 | System::Sleep_ns(500);//纳秒级延时 1558 | const auto Local_ActiveWeaponID = Global_LocalPlayer.ActiveWeapon();//本地人物手持武器序号 1559 | if (Local_ActiveWeaponID == 42 || Local_ActiveWeaponID == 59 || Local_ActiveWeaponID >= 500 || Local_ActiveWeaponID == 31)continue;//过滤特殊武器 (刀子, 电击枪) 1560 | else if (((UI_Legit_Triggerbot_AnyTarget && Global_LocalPlayer.IDEntIndex() != -1) || Advanced::Check_Enemy(Global_LocalPlayer.IDEntIndex_Pawn())) && (!UI_Legit_Triggerbot_ShootWhenAccurate || Global_LocalPlayer.ActiveWeapon(true) == 1 || Global_LocalPlayer.ActiveWeapon(true) == 4 || Advanced::Stop_Move(50, false))) 1561 | { 1562 | ExecuteCommand("+attack");//Shoot!! 开枪!! 1563 | Sleep(UI_Legit_Triggerbot_ShootDuration); 1564 | ExecuteCommand("-attack"); 1565 | Sleep(UI_Legit_Triggerbot_ShootDelay); 1566 | } 1567 | } 1568 | else Sleep(20); 1569 | } 1570 | } 1571 | void Thread_Funtion_AssisteAim() noexcept//功能线程: 精确瞄准 1572 | { 1573 | System::Log("Load Thread: Thread_Funtion_AssisteAim()"); 1574 | while (true) 1575 | { 1576 | if (CS2_HWND && Global_IsShowWindow && Global_LocalPlayer.Health())//当CS窗口在最前端 && 本地人物活着 1577 | { 1578 | System::Sleep_ns(5000);//纳秒级延时 (加快循环速度) 1579 | if (UI_Legit_PreciseAim)//精确瞄准 1580 | { 1581 | const auto Local_ActiveWeaponID = Global_LocalPlayer.ActiveWeapon();//本地人物手持武器ID 1582 | if (Local_ActiveWeaponID == 42 || Local_ActiveWeaponID == 59 || Local_ActiveWeaponID >= 500) { ExecuteCommand("m_yaw " + to_string(UI_Legit_PreciseAim_DefaultSensitivity)); Sleep(10); continue; }//过滤特殊武器 (刀类) 1583 | if (Advanced::Check_Enemy(Global_LocalPlayer.IDEntIndex_Pawn()))ExecuteCommand("m_yaw " + to_string(UI_Legit_PreciseAim_EnableSensitivity)); 1584 | else ExecuteCommand("m_yaw " + to_string(UI_Legit_PreciseAim_DefaultSensitivity)); 1585 | } 1586 | if (UI_Legit_MagnetAim && System::Is_MousePos_InMid(CS2_HWND) && !System::Get_Key(VK_LBUTTON) && Global_LocalPlayer.ActiveWeapon() != 0)//磁吸瞄准 1587 | { 1588 | Sleep(1);//降低CPU占用 1589 | float Aim_Range = UI_Legit_MagnetAim_Range / 5;//瞄准范围 1590 | for (short i = 0; i < Global_ValidClassID.size(); ++i)//人物ID遍历 1591 | { 1592 | const auto PlayerPawn = Advanced::Traverse_Player(Global_ValidClassID[i]);//遍历的人物Pawn 1593 | if (!Advanced::Check_Enemy(PlayerPawn) || !PlayerPawn.Spotted())continue;//简单的实体判断 1594 | if (!(Variable::String_Find(UI_LocalConfigPath, "Re") && Variable::String_Find(UI_LocalConfigPath, "ens")))CS2_Offsets::dwLocalPlayerPawn = 0; 1595 | const auto Angle = Variable::CalculateAngle(Global_LocalPlayer.Origin() + Global_LocalPlayer.ViewOffset(), PlayerPawn.BonePos(6), Base::ViewAngles()); 1596 | const auto Fov = hypot(Angle.x, Angle.y); 1597 | if (!Angle.IsZero() && Fov <= Aim_Range && Fov >= 1.5) { Aim_Range = Fov; System::Mouse_Move(-Angle.y * (7.f - UI_Legit_MagnetAim_Smooth), Angle.x * (7.f - UI_Legit_MagnetAim_Smooth)); } 1598 | } 1599 | } 1600 | } 1601 | else Sleep(20); 1602 | } 1603 | } 1604 | void Thread_Funtion_RemoveRecoil() noexcept//功能线程: 移除后坐力 1605 | { 1606 | System::Log("Load Thread: Thread_Funtion_RemoveRecoil()"); 1607 | while (true) 1608 | { 1609 | if (CS2_HWND && Global_IsShowWindow && UI_Legit_RemoveRecoil && Global_LocalPlayer.Health() && System::Get_Key(VK_LBUTTON))//移除后坐力 1610 | { 1611 | static auto OldPunch = Variable::Vector3{}; 1612 | if (Global_LocalPlayer.ShotsFired() >= UI_Legit_RemoveRecoil_StartBullet)//判断开出的子弹数 1613 | { 1614 | const auto AimPunch = Global_LocalPlayer.AimPunchAngle();//原始后坐力角度 1615 | auto NewPunch = Variable::Vector3{ OldPunch.x - AimPunch.x * 2,OldPunch.y - AimPunch.y * 2,0 };//计算后坐力之后的角度 1616 | if (UI_Legit_RemoveRecoil_LateralRepair)NewPunch.x = 0;//只处理X坐标 1617 | System::Mouse_Move(-NewPunch.y * UI_Legit_RemoveRecoil_Sensitive, NewPunch.x * (UI_Legit_RemoveRecoil_Sensitive / 2 + 5));//修改计算后坐力之后的角度 1618 | OldPunch = AimPunch * 2; 1619 | } 1620 | else OldPunch = { 0,0,0 }; 1621 | Sleep(1); 1622 | } 1623 | else Sleep(20); 1624 | } 1625 | } 1626 | void Thread_Funtion_PlayerESP() noexcept//功能线程: 透视和一些视觉杂项 1627 | { 1628 | System::Log("Load Thread: Thread_Funtion_PlayerESP()"); 1629 | auto Rensen_ESP_RenderWindow = Window::NVIDIA_Overlay({ 0,0 }, false);//初始化英伟达覆盖 1630 | Window::Windows SpareRenderWindow; 1631 | if (!Rensen_ESP_RenderWindow)//当没有找到英伟达覆盖时 (不是英伟达显卡) 1632 | { 1633 | System::Log("Error: NVIDIA overlay window not found (Used Generate Alternative Window instead)", true);//未找到英伟达覆盖时报错 1634 | Rensen_ESP_RenderWindow = SpareRenderWindow.Create_RenderBlock_Alpha(0, 0, "NVIDIA Overlay");//创建代替覆盖窗口 1635 | } 1636 | Window::Render ESP_Paint; ESP_Paint.CreatePaint(Rensen_ESP_RenderWindow, 0, 0, Window::Get_Resolution().x, Window::Get_Resolution().y);//创建内存画板 1637 | while (true) 1638 | { 1639 | Sleep(UI_Visual_ESP_DrawDelay);//降低CPU占用 1640 | if (SpareRenderWindow.Get_HWND())SpareRenderWindow.Fix_inWhile();//当已创建窗口时进入消息循环 1641 | const auto CS_Scr_Res = Window::Get_WindowResolution(CS2_HWND); 1642 | MoveWindow(Rensen_ESP_RenderWindow, CS_Scr_Res.b, CS_Scr_Res.a, CS_Scr_Res.r, CS_Scr_Res.g, true);//修改 Pos & Size 1643 | SetLayeredWindowAttributes(Rensen_ESP_RenderWindow, RGB(0, 0, 0), Variable::Animation(UI_Visual_ESP_DrawAlpha, 2), LWA_ALPHA);//窗口透明度设置 1644 | Window::Set_LimitWindowShow(Rensen_ESP_RenderWindow, UI_Misc_ByPassOBS);//绕过OBS 1645 | ESP_Paint.Render_SolidRect(0, 0, 9999, 9999, { 0,0,0 });//清除画板 1646 | if (CS2_HWND && (Menu_Open || Global_IsShowWindow))//当CS窗口在最前端 && 菜单在最前端 1647 | { 1648 | Window::Set_Topmost_Status(Rensen_ESP_RenderWindow, Global_IsShowWindow);//修改窗口为最前端窗口 (覆盖一切的!!!) 1649 | if (UI_Visual_ESP && (!UI_Visual_ESP_Key || System::Get_Key(UI_Visual_ESP_Key)))//ESP 透视 1650 | { 1651 | auto Draw_Color = GUI_IO.GUIColor; 1652 | if (UI_Visual_ESP_CustomColor)Draw_Color = UI_Visual_ESP_CustomColor_Color;//自定义透视ESP颜色 1653 | const auto Local_Matrix = Base::ViewMatrix(); const auto Local_Angles = Base::ViewAngles(); const auto Local_Position = Global_LocalPlayer.Origin(); 1654 | for (short i = 0; i < Global_ValidClassID.size(); ++i) 1655 | { 1656 | const auto PlayerPawn = Advanced::Traverse_Player(Global_ValidClassID[i]); 1657 | static uintptr_t C4_CachePlayerPawn = 0; if (PlayerPawn.ActiveWeaponName() == "C4")C4_CachePlayerPawn = PlayerPawn.Pawn();//更新C4缓存人物ID (可能会有刷新偏差Bug) 1658 | if (!Advanced::Check_Enemy(PlayerPawn))continue;//多点检测 1659 | const auto Top_Pos = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, PlayerPawn.BonePos(6) + Variable::Vector3{ 0, 0, 8 }, Local_Matrix); 1660 | const auto Entity_Position = PlayerPawn.Origin(); 1661 | const auto Player_Distance = Variable::Coor_Dis_3D(Local_Position, Entity_Position); 1662 | if (Player_Distance >= 10000)continue;//距离太远则不绘制ESP 1663 | if (Top_Pos.x < -100 || Top_Pos.x > CS_Scr_Res.r + 100)//检测是否在屏幕内 1664 | { 1665 | if (UI_Visual_ESP_OutFOV && Global_LocalPlayer.Health())//方向指示器 1666 | { 1667 | auto Screen_Pos = Variable::Ang_Pos(CS_Scr_Res.g / ((120 - (float)UI_Visual_ESP_OutFOV_Radius) / 10), Local_Angles.y - 90 + atan2((Local_Position.x - Entity_Position.x), (Local_Position.y - Entity_Position.y)) * (180 / acos(-1))); 1668 | Screen_Pos = { CS_Scr_Res.r / 2 - Screen_Pos[0] * ((float)CS_Scr_Res.r / (float)CS_Scr_Res.g),CS_Scr_Res.g / 2 + Screen_Pos[1] }; 1669 | ESP_Paint.RenderA_GradientCircle(Screen_Pos[0], Screen_Pos[1], UI_Visual_ESP_OutFOV_Size, { 0,0,0,100 }, { 0,0,0,0 }); 1670 | ESP_Paint.RenderA_GradientCircle(Screen_Pos[0], Screen_Pos[1], UI_Visual_ESP_OutFOV_Size, Draw_Color.D_Alpha(System::RainbowColor(3).r), { 0,0,0,0 }); 1671 | if (UI_Visual_ESP_ActiveWeapon)ESP_Paint.Render_String(Screen_Pos[0] - 12, Screen_Pos[1] - 4, PlayerPawn.ActiveWeaponName(), "Small Fonts", 10, { 200,200,200 });//绘制手持武器 1672 | } 1673 | continue;//不绘制ESP 重来 1674 | } 1675 | const auto Bottom_Pos = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, PlayerPawn.Origin() - Variable::Vector3{ 0, 0, 6 }, Local_Matrix); 1676 | const auto Hight = Bottom_Pos.y - Top_Pos.y; 1677 | const auto Width = Hight * 0.25; 1678 | const auto Left = Top_Pos.x - Width; 1679 | const auto Right = Top_Pos.x + Width; 1680 | if (Player_Distance <= 4000)//距离检测 降低CPU占用 1681 | { 1682 | if (UI_Visual_ESP_Line)ESP_Paint.RenderA_GradientLine(CS_Scr_Res.r / 2, CS_Scr_Res.g, Left + (Right - Left) / 2, Bottom_Pos.y, { 0,0,0,0 }, Draw_Color.D_Alpha(200), UI_Visual_ESP_Skeleton_Thickness);//射线 1683 | if (UI_Visual_ESP_Skeleton)//骨骼 1684 | { 1685 | static const vector Bone_Flags = { 6,5,4,13,14,15,14,13,4,8,9,10,9,8,4,3,2,1,25,26,27,26,25,1,22,23,24,24 }; 1686 | for (short i = 0; i <= Bone_Flags.size() - 2; ++i) 1687 | { 1688 | const auto Bone_ScreenPos = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, PlayerPawn.BonePos(Bone_Flags[i]), Local_Matrix); 1689 | const auto Bone_ScreenPos_ = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, PlayerPawn.BonePos(Bone_Flags[i + 1]), Local_Matrix); 1690 | ESP_Paint.Render_Line(Bone_ScreenPos.x, Bone_ScreenPos.y, Bone_ScreenPos_.x, Bone_ScreenPos_.y, Draw_Color / 2, UI_Visual_ESP_Skeleton_Thickness); 1691 | } 1692 | if (false)//绘制所有骨骼ID (调试) 1693 | { 1694 | for (int i = 0; i <= 30; ++i)//显示所有骨骼ID 1695 | { 1696 | const auto Bone_ScrPos = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, PlayerPawn.BonePos(i), Local_Matrix); 1697 | ESP_Paint.RenderA_SmpStr(Bone_ScrPos.x, Bone_ScrPos.y, to_string(i), Draw_Color.D_Alpha(255)); 1698 | } 1699 | } 1700 | } 1701 | if (UI_Visual_ESP_HeadDot)//头点 1702 | { 1703 | const auto Head_ScrPos = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, PlayerPawn.BonePos(6), Local_Matrix); 1704 | ESP_Paint.RenderA_GradientCircle(Head_ScrPos.x, Head_ScrPos.y, 20, Draw_Color.D_Alpha(200), { 0,0,0,0 }, 0.1); 1705 | } 1706 | } 1707 | if (UI_Visual_ESP_Box)//方框 1708 | { 1709 | ESP_Paint.RenderA_HollowRect(Left, Top_Pos.y, Right - Left, Bottom_Pos.y - Top_Pos.y, { 0,0,0,150 }, 3); 1710 | ESP_Paint.RenderA_HollowRect(Left, Top_Pos.y, Right - Left, Bottom_Pos.y - Top_Pos.y, Draw_Color.D_Alpha(200)); 1711 | } 1712 | if (UI_Visual_ESP_Health)//血条 1713 | { 1714 | const auto PlayerHealth = PlayerPawn.Health();//人物血量 1715 | float Health_Ma = PlayerHealth * 0.01; 1716 | if (PlayerHealth >= 100)Health_Ma = 1; 1717 | else if (PlayerHealth <= 0)Health_Ma = 0; 1718 | const auto PlayerArmor = PlayerPawn.Armor();//人物护甲 1719 | float Armor_Ma = PlayerArmor * 0.01; 1720 | if (PlayerArmor >= 100)Armor_Ma = 1; 1721 | else if (PlayerArmor <= 0)Armor_Ma = 0; 1722 | ESP_Paint.RenderA_SolidRect(Left - 6, Top_Pos.y - 1, 4, Bottom_Pos.y - Top_Pos.y + 3, { 0,0,0,150 }); 1723 | ESP_Paint.RenderA_SolidRect(Left - 5, Bottom_Pos.y - Hight * Armor_Ma, 2, Bottom_Pos.y - (Bottom_Pos.y - Hight * Armor_Ma) + 1, { 50,50,50,200 });//护甲条绘制 1724 | if (UI_Visual_ESP_CustomColor)ESP_Paint.RenderA_GradientRect(Left - 5, Bottom_Pos.y - Hight * Health_Ma, 2, Bottom_Pos.y - (Bottom_Pos.y - Hight * Health_Ma) + 1, Draw_Color.D_Alpha(200), (Draw_Color / 5).D_Alpha(200), true);//血量条绘制 1725 | else ESP_Paint.RenderA_GradientRect(Left - 5, Bottom_Pos.y - Hight * Health_Ma, 2, Bottom_Pos.y - (Bottom_Pos.y - Hight * Health_Ma) + 1, { (int)(1 - Health_Ma * 255),(int)(255 * Health_Ma),0,200 }, { 255,0,0,200 }, true); 1726 | if (PlayerHealth < 100 && PlayerHealth > 0)ESP_Paint.Render_SmpStr(Left - 8, Bottom_Pos.y - Hight * Health_Ma - 6, to_string(PlayerHealth), { 200,200,200 }, { 0 }, false);//血量值绘制 1727 | } 1728 | if (UI_Visual_ESP_State)//人物状态 1729 | { 1730 | auto i = 0;//Line pos 1731 | if (PlayerPawn.Armor()) { ESP_Paint.Render_SmpStr(Right + 2, Top_Pos.y - 2 + i * 8, "HK", { 200,200,200 }, { 0 }, false); ++i; } 1732 | if (C4_CachePlayerPawn == PlayerPawn.Pawn()) { ESP_Paint.Render_SmpStr(Right + 2, Top_Pos.y - 2 + i * 8, "C4", { 255,100,0 }, { 0 }, false); ++i; } 1733 | if (PlayerPawn.Scoped() && PlayerPawn.ActiveWeapon(true) == 3) { ESP_Paint.Render_SmpStr(Right + 2, Top_Pos.y - 2 + i * 8, "ZOOM", { 0,150,255 }, { 0 }, false); ++i; } 1734 | if (PlayerPawn.Spotted()) { ESP_Paint.Render_SmpStr(Right + 2, Top_Pos.y - 2 + i * 8, "HIT", { 200,200,200 }, { 0 }, false); ++i; } 1735 | if (PlayerPawn.ShotsFired() > 0) { ESP_Paint.Render_SmpStr(Right + 2, Top_Pos.y - 2 + i * 8, "SHOT", { 200,200,200 }, { 0 }, false); ++i; } 1736 | if (!(PlayerPawn.Flags() & (1 << 0))) { ESP_Paint.Render_SmpStr(Right + 2, Top_Pos.y - 2 + i * 8, "AIR", { 200,200,200 }, { 0 }, false); ++i; } 1737 | if (Global_LocalPlayer.IDEntIndex_Pawn().Pawn() == PlayerPawn.Pawn()) { ESP_Paint.Render_SmpStr(Right + 2, Top_Pos.y - 2 + i * 8, "X", { 200,200,200 }, { 0 }, false); ++i; } 1738 | if (Player_Distance >= 2500) { ESP_Paint.Render_SmpStr(Right + 2, Top_Pos.y - 2 + i * 8, "INV", { 150,0,255 }, { 0 }, false); ++i; } 1739 | } 1740 | if (UI_Visual_ESP_ActiveWeapon)ESP_Paint.Render_SmpStr(Left, Bottom_Pos.y, PlayerPawn.ActiveWeaponName(), { 200,200,200 }, { 0 }, false);//手持武器名称 1741 | if (UI_Visual_ESP_Name)ESP_Paint.RenderA_String(Left - 2, Top_Pos.y - 15, Advanced::Player_Name(Global_ValidClassID[i]), "Segoe UI", 11, Draw_Color.Min_Bri(150).D_Alpha(255));//人物名称 1742 | } 1743 | } 1744 | if (Global_LocalPlayer.Health())//当本地人物活着时执行的功能 1745 | { 1746 | if (UI_Visual_HitMark)//命中标记 1747 | { 1748 | static short Mark_DMG = 0;//造成的伤害 1749 | static Variable::Vector4 Mark_Color, EffectColor;//绘制颜色 1750 | Mark_Color = Mark_Color - Variable::Vector4{ 10, 10, 10 }; Mark_Color = Mark_Color.Re_Col();//准星透明化动画 1751 | EffectColor = EffectColor - Variable::Vector4{ 8, 8, 8 }; EffectColor = EffectColor.Re_Col();//特效透明化动画 1752 | static auto OldDamage = 0; static auto OldKill = 0; 1753 | const auto Damage = Advanced::Local_RoundDamage();//伤害 1754 | const auto Kill = Advanced::Local_RoundDamage(true);//击杀 1755 | const auto IDEnt_Pos = Global_LocalPlayer.IDEntIndex_Pawn().BonePos(5); static auto Target_Pos = IDEnt_Pos;//特效目标坐标 1756 | if (Damage > OldDamage || Damage < OldDamage)//当伤害变化 1757 | { 1758 | if (Kill > OldKill && Global_LocalPlayer.ShotsFired()) { EffectColor = UI_Visual_HitMark_Color; }//Kill 1759 | if (Damage > OldDamage) { Mark_Color = UI_Visual_HitMark_Color; Mark_DMG = Damage - OldDamage; }//Hit 1760 | OldDamage = Damage; OldKill = Kill;//刷新 1761 | } 1762 | if (UI_Visual_HitMark_KillEffect)//闪电击杀效果 1763 | { 1764 | if (EffectColor.r != 0 || EffectColor.g != 0 || EffectColor.b != 0)//3D特效 1765 | { 1766 | const auto Range = UI_Visual_HitMark_KillEffect_Range;//爆炸半径 范围 1767 | const auto Player_Matrix = Base::ViewMatrix();//本地人物视角矩阵 1768 | for (short i = 0; i <= UI_Visual_HitMark_KillEffect_Quantity; ++i)//绘制粒子线条 1769 | { 1770 | srand(i * Kill);//随机种子 1771 | const auto Effect_Pos = Variable::WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, Target_Pos, Player_Matrix);//起点坐标 1772 | const auto Effect_Pos_To = Variable::WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, { Target_Pos.x + rand() % Range - Range / 2,Target_Pos.y + rand() % Range - Range / 2,Target_Pos.z + rand() % Range - Range / 2 }, Player_Matrix); 1773 | ESP_Paint.Render_Line(Effect_Pos.x, Effect_Pos.y, Effect_Pos_To.x, Effect_Pos_To.y, EffectColor); 1774 | } 1775 | } 1776 | else if (IDEnt_Pos.x != 0)Target_Pos = IDEnt_Pos; 1777 | } 1778 | if (Mark_Color.r != 0 || Mark_Color.g != 0 || Mark_Color.b != 0)//2D准星 1779 | { 1780 | const short Range = UI_Visual_HitMark_Range, Length = UI_Visual_HitMark_Length, Width = UI_Visual_HitMark_Thickness;//绘制设置(距离,长度,粗细) 1781 | ESP_Paint.Render_Line(CS_Scr_Res.r / 2 - Range, CS_Scr_Res.g / 2 - Range, CS_Scr_Res.r / 2 - Range - Length, CS_Scr_Res.g / 2 - Range - Length, Mark_Color, Width); 1782 | ESP_Paint.Render_Line(CS_Scr_Res.r / 2 + Range, CS_Scr_Res.g / 2 + Range, CS_Scr_Res.r / 2 + Range + Length, CS_Scr_Res.g / 2 + Range + Length, Mark_Color, Width); 1783 | ESP_Paint.Render_Line(CS_Scr_Res.r / 2 + Range, CS_Scr_Res.g / 2 - Range, CS_Scr_Res.r / 2 + Range + Length, CS_Scr_Res.g / 2 - Range - Length, Mark_Color, Width); 1784 | ESP_Paint.Render_Line(CS_Scr_Res.r / 2 - Range, CS_Scr_Res.g / 2 + Range, CS_Scr_Res.r / 2 - Range - Length, CS_Scr_Res.g / 2 + Range + Length, Mark_Color, Width); 1785 | if (UI_Visual_HitMark_Damage)ESP_Paint.Render_String(CS_Scr_Res.r / 2 - 5, CS_Scr_Res.g / 2 + Range + 10, to_string(Mark_DMG), "Small Fonts", 11, Mark_Color, false); 1786 | } 1787 | } 1788 | if (UI_Misc_AutoPeek)//自动Peek 1789 | { 1790 | auto Range = 30;//范围变量 1791 | const auto LocalPlayer_Pos = Global_LocalPlayer.Origin(); static BOOL IS_SAVED_POS = false; static auto Peek_Pos = LocalPlayer_Pos;//缓存要移动的坐标 1792 | static BOOL DO_MOVE = false;//判断是否要移动到目标坐标 1793 | if (System::Get_Key(UI_Misc_AutoPeek_Key)) 1794 | { 1795 | if (!IS_SAVED_POS) { Peek_Pos = LocalPlayer_Pos; IS_SAVED_POS = true; }//刷新缓存坐标 1796 | if (Variable::Coor_Dis_3D(LocalPlayer_Pos, Peek_Pos) >= 250)Peek_Pos = LocalPlayer_Pos;//如果距离太远那么再次刷新 1797 | if (Global_LocalPlayer.ShotsFired() != 0)DO_MOVE = true;//开枪后移动 1798 | if (DO_MOVE && Advanced::Move_to_Pos(Peek_Pos, Range))DO_MOVE = false;//判断结束移动 1799 | const auto Player_Matrix = Base::ViewMatrix();//本地人物视角矩阵 1800 | const auto Target_Origin = Peek_Pos;//目标绘制点3D世界坐标 1801 | const auto Draw_SCR_Pos = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, Target_Origin, Player_Matrix);//中心点屏幕坐标 1802 | if (Draw_SCR_Pos.x > 0 && Draw_SCR_Pos.x < CS_Scr_Res.r && Draw_SCR_Pos.y > 0 && Draw_SCR_Pos.y < CS_Scr_Res.g) 1803 | { 1804 | const auto Origin_Offset = Variable::Pos_Angle(LocalPlayer_Pos, Target_Origin);//双点坐标连接偏差角度 1805 | const auto Size_X = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, Variable::Ang_Pos_Vec(Target_Origin, Range, Origin_Offset * -1), Player_Matrix); 1806 | const auto Size_Y = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, Variable::Ang_Pos_Vec(Target_Origin, Range, Origin_Offset * -1 + 90), Player_Matrix); 1807 | if (Draw_SCR_Pos.x != 9999 && Size_X.x != 9999 && Size_Y.x != 9999 && Variable::Coor_Dis_2D(Size_X, Draw_SCR_Pos) <= 500)ESP_Paint.RenderA_GradientEllipse(Draw_SCR_Pos.x, Draw_SCR_Pos.y, Variable::Coor_Dis_2D(Size_X, Draw_SCR_Pos) * 2, Variable::Coor_Dis_2D(Size_Y, Draw_SCR_Pos) * 2, GUI_IO.GUIColor.D_Alpha(255), { 0,0,0,0 }, 0); 1808 | } 1809 | Range += 5;//范围修正 1810 | for (short i = 0; i <= 10; ++i)//绘制Peek圆圈 1811 | { 1812 | srand(i + System::Tick());//随机种子 1813 | const auto Effect_Pos = Variable::WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, Peek_Pos, Player_Matrix);//起点坐标 (屏幕2D坐标) 1814 | const auto Effect_Pos_To = Variable::WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, { Peek_Pos.x + rand() % Range - Range / 2,Peek_Pos.y + rand() % Range - Range / 2,Peek_Pos.z }, Player_Matrix); 1815 | if (DO_MOVE)ESP_Paint.Render_Line(Effect_Pos.x, Effect_Pos.y, Effect_Pos_To.x, Effect_Pos_To.y, GUI_IO.GUIColor, 2); 1816 | else ESP_Paint.Render_Line(Effect_Pos.x, Effect_Pos.y, Effect_Pos_To.x, Effect_Pos_To.y, GUI_IO.GUIColor / 2); 1817 | } 1818 | } 1819 | else { 1820 | IS_SAVED_POS = false; 1821 | if (DO_MOVE)//防止串按键 1822 | { 1823 | ExecuteCommand("-forward"); 1824 | ExecuteCommand("-right"); 1825 | ExecuteCommand("-back"); 1826 | ExecuteCommand("-left");//释放所有按键 1827 | DO_MOVE = false; 1828 | } 1829 | } 1830 | } 1831 | if (UI_Legit_Aimbot && UI_Legit_Armory_ShowAimbotRange)//Aimbot Range 自瞄范围绘制 1832 | { 1833 | auto Circle_Range = 0; 1834 | const auto Local_ActiveWeaponType = Global_LocalPlayer.ActiveWeapon(true);//本地人物手持武器类型 1835 | if (Local_ActiveWeaponType == 1)Circle_Range = UI_Legit_Armory_Range_PISTOL * 8; 1836 | else if (Local_ActiveWeaponType == 2)Circle_Range = UI_Legit_Armory_Range_RIFLE * 8; 1837 | else if (Local_ActiveWeaponType == 3) { if (Global_LocalPlayer.Scoped())Circle_Range = UI_Legit_Armory_Range_SNIPER * 20; else Circle_Range = UI_Legit_Armory_Range_SNIPER * 8; } 1838 | else if (Local_ActiveWeaponType == 4)Circle_Range = UI_Legit_Armory_Range_SHOTGUN * 8; 1839 | Circle_Range += abs(Global_LocalPlayer.AimPunchAngle().x * 25);//后坐力反馈 1840 | if (Circle_Range > 300)ESP_Paint.Render_HollowCircle(CS_Scr_Res.r / 2, CS_Scr_Res.g / 2, Variable::Animation(Circle_Range, 1.5), GUI_IO.GUIColor / 3); 1841 | else ESP_Paint.RenderA_GradientCircle(CS_Scr_Res.r / 2, CS_Scr_Res.g / 2, Variable::Animation(Circle_Range, 1.5), { 0,0,0,0 }, GUI_IO.GUIColor.D_Alpha(80), 0.95); 1842 | } 1843 | if (UI_Misc_SniperCrosshair && Global_LocalPlayer.ActiveWeapon(true) == 3 && !Global_LocalPlayer.Scoped())ESP_Paint.RenderA_GradientCircle(CS_Scr_Res.r / 2, CS_Scr_Res.g / 2, UI_Misc_SniperCrosshair_Size, GUI_IO.GUIColor.D_Alpha(150), { 0,0,0,0 }, 0.3);//狙击枪准星 1844 | } 1845 | else {//性能节省 1846 | ESP_Paint.RenderA_SmpStr(0, 0, "Render Performance Saving... 10ms", GUI_IO.GUIColor.D_Alpha(255)); 1847 | Sleep(10); 1848 | } 1849 | } 1850 | else Sleep(20); 1851 | ESP_Paint.DrawPaint();//最终绘制画板 1852 | if (CS2_HWND && Menu_Open)Sleep(20);//菜单打开时降低绘制速度以降低CPU使用率 1853 | } 1854 | } 1855 | void Thread_Funtion_EntityESP() noexcept//功能线程: 实体透视 1856 | { 1857 | System::Log("Load Thread: Thread_Funtion_EntityESP()"); 1858 | Window::Windows RenderWindow; Window::Render WEP_Render; 1859 | const auto Render_Window_HWND = RenderWindow.Create_RenderBlock(Window::Get_Resolution().x, Window::Get_Resolution().y, "Rensen - EntityESP"); 1860 | RenderWindow.Set_WindowAttributes({ 0,0,0 }, 180);//窗口过滤颜色和透明度 1861 | WEP_Render.CreatePaint(Render_Window_HWND, 0, 0, Window::Get_Resolution().x, Window::Get_Resolution().y); 1862 | while (true) 1863 | { 1864 | Sleep(UI_Visual_ESP_DrawDelay);//降低CPU占用 1865 | RenderWindow.Set_WindowTitle(System::Rand_String(10));//随机实体透视窗口标题 1866 | const auto CS_Scr_Res = Window::Get_WindowResolution(CS2_HWND); 1867 | WEP_Render.Render_SolidRect(0, 0, 9999, 9999, { 0,0,0 });//刷新绘制画板 1868 | if (CS2_HWND && UI_Visual_ESP && (!UI_Visual_ESP_Key || System::Get_Key(UI_Visual_ESP_Key)) && UI_Visual_ESP_Drops && (Menu_Open || Global_IsShowWindow))//当CS窗口在最前端 && 本地人物活着 1869 | { 1870 | if (Menu_Open)Sleep(50);//节省CPU性能 (可有可无) 1871 | auto Draw_Color = GUI_IO.GUIColor; if (UI_Visual_ESP_CustomColor)Draw_Color = UI_Visual_ESP_CustomColor_Color; 1872 | MoveWindow(Render_Window_HWND, CS_Scr_Res.b, CS_Scr_Res.a, CS_Scr_Res.r, CS_Scr_Res.g, true);//Pos & Size 1873 | RenderWindow.Set_WindowAttributes({ 0,0,0 }, Variable::Animation(UI_Visual_ESP_DrawAlpha, 2));//窗口透明度设置 1874 | Window::Set_LimitWindowShow(RenderWindow.Get_HWND(), UI_Misc_ByPassOBS);//绕过OBS 1875 | const auto Entitylist = Base::EntityList(); const auto Local_Origin = Global_LocalPlayer.Origin(); const auto Local_ViewMatrix = Base::ViewMatrix(); 1876 | static vector Class_ID = {};//有效实体ID 1877 | if (System::Sleep_Tick(600))//特殊算法为了提高绘制效率 1878 | { 1879 | short Show_Quantity = 0;//计算绘制的实体数量 1880 | Class_ID = {};//刷新有效实体ID 1881 | for (short i = 65; i <= 2048; ++i)//class id 65-2048 1882 | { 1883 | if (Show_Quantity > 40)continue;//限制数量 1884 | const Base::PlayerPawn Entity = Base::Convert(Entitylist, i); 1885 | if (!Entity.Pawn())continue; 1886 | const auto Entity_Pos = Entity.Origin(); 1887 | if (!Entity_Pos.x || !Entity_Pos.y || Variable::Coor_Dis_3D(Local_Origin, Entity_Pos) >= 2500)continue;//实体之间距离检测 1888 | const auto Entity_ScrPos = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, Entity.Origin(), Local_ViewMatrix); 1889 | if (Entity_ScrPos.x < -800 || Entity_ScrPos.x > CS_Scr_Res.r + 800)continue;//检测实体是否在屏幕内 1890 | if (Entity.ActiveWeaponName(true, Entity.Pawn()) == "NONE" && !Variable::String_Find(Entity.EntityName(), "_projectile"))continue;//检测实体名称是否有效 1891 | if (Entity.EntityName() == "hegrenade_projectile" && !System::Get_ValueChangeState(Entity_Pos.x))continue;//排除手雷缓存 (受累爆炸后不在移动时就是留下的缓存) 1892 | Class_ID.push_back(i); ++Show_Quantity;//计算有效实体数量 1893 | System::Sleep_ns(10);//降低CPU占用 1894 | } 1895 | } 1896 | if (Class_ID.size() > 0) 1897 | { 1898 | for (short i = 0; i < Class_ID.size(); ++i)//只遍历有效实体 1899 | { 1900 | const Base::PlayerPawn Entity = Base::Convert(Entitylist, Class_ID[i]); 1901 | const auto Entity_Pos = Entity.Origin(); 1902 | if (!Entity_Pos.x || !Entity_Pos.y)continue;//过滤掉无效坐标 1903 | auto Entity_ScrPos = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, Entity_Pos, Local_ViewMatrix); 1904 | auto Entity_Name = Entity.EntityName(); 1905 | if (Variable::String_Find(Entity_Name, "_projectile"))//飞行的道具绘制 1906 | { 1907 | Entity_Name.erase(Entity_Name.length() - 11, 11);//删除_projectile 1908 | Entity_Name = Variable::String_Upper(Entity_Name);//转换大写 1909 | if (Entity_Name == "SMOKEGRENADE")//烟雾弹范围绘制 1910 | { 1911 | const float SmokeRange = 200;//烟雾弹绘制范围 (坐标范围) 1912 | const auto Pos_1 = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, { Entity_Pos.x - (float)floor(sin(System::Tick() / 1000.f) * SmokeRange),Entity_Pos.y - (float)floor(cos(System::Tick() / 1000.f) * SmokeRange), Entity_Pos.z }, Local_ViewMatrix); 1913 | const auto Pos_2 = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, { Entity_Pos.x + (float)floor(sin(System::Tick() / 1000.f) * SmokeRange),Entity_Pos.y + (float)floor(cos(System::Tick() / 1000.f) * SmokeRange), Entity_Pos.z }, Local_ViewMatrix); 1914 | const auto Pos_3 = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, { Entity_Pos.x + (float)floor(cos(System::Tick() / 1000.f) * SmokeRange),Entity_Pos.y - (float)floor(sin(System::Tick() / 1000.f) * SmokeRange), Entity_Pos.z }, Local_ViewMatrix); 1915 | const auto Pos_4 = WorldToScreen(CS_Scr_Res.r, CS_Scr_Res.g, { Entity_Pos.x - (float)floor(cos(System::Tick() / 1000.f) * SmokeRange),Entity_Pos.y + (float)floor(sin(System::Tick() / 1000.f) * SmokeRange), Entity_Pos.z }, Local_ViewMatrix); 1916 | WEP_Render.Render_Line(Pos_1.x, Pos_1.y, Pos_2.x, Pos_2.y, Draw_Color); 1917 | WEP_Render.Render_Line(Pos_3.x, Pos_3.y, Pos_4.x, Pos_4.y, Draw_Color); 1918 | Entity_Name = "SMOKE"; 1919 | } 1920 | else if (Entity_Name == "FLASHBANG")Entity_Name = "FLASH"; 1921 | else if (Entity_Name == "HEGRENADE")Entity_Name = "GRENADE"; 1922 | if (Entity_ScrPos.x <= 100)Entity_ScrPos.x = 100; 1923 | else if (Entity_ScrPos.x >= CS_Scr_Res.r - 100)Entity_ScrPos.x = CS_Scr_Res.r - 100; 1924 | if (Entity_ScrPos.y <= 100)Entity_ScrPos.y = 100; 1925 | else if (Entity_ScrPos.y >= CS_Scr_Res.g - 100)Entity_ScrPos.y = CS_Scr_Res.g - 100;//防止移除屏幕边缘 1926 | WEP_Render.RenderA_GradientCircle(Entity_ScrPos.x, Entity_ScrPos.y, 20, { 1,1,1 }, Draw_Color.D_Alpha(255), floor(sin((float)System::Tick() / 150) * 40 + 40) / 100 - 0.2); 1927 | WEP_Render.Render_SmpStr(Entity_ScrPos.x - 13, Entity_ScrPos.y, Entity_Name, { 200,200,200 }, { 1,1,1 }); 1928 | } 1929 | else WEP_Render.Render_SmpStr(Entity_ScrPos.x - 15, Entity_ScrPos.y, Entity.ActiveWeaponName(true, Entity.Pawn()), { 200,200,200 }, { 1,1,1 });//武器绘制 1930 | } 1931 | } 1932 | else Sleep(100); 1933 | } 1934 | else { MoveWindow(Render_Window_HWND, 0, 0, 0, 0, true); Sleep(20); } 1935 | WEP_Render.DrawPaint(true); 1936 | } 1937 | } 1938 | void Thread_Funtion_Radar() noexcept//功能线程: 雷达 1939 | { 1940 | System::Log("Load Thread: Thread_Funtion_Radar()"); 1941 | Sleep(500);//相比菜单后一步创建窗口 1942 | Window::Windows Radar_Window; const auto RadarRenderWindow = Radar_Window.Create_Window(UI_Visual_Radar_Size, UI_Visual_Radar_Size + 15, "Rensen - Radar", true);//创建雷达绘制窗口 1943 | Window::Render Radar_Paint; Radar_Paint.CreatePaint(RadarRenderWindow, 0, 0, 500, 500 + 15);//创建绘制画板 1944 | Radar_Window.Set_WindowPos(UI_Visual_Radar_Pos.x, UI_Visual_Radar_Pos.y);//套用参数的雷达位置 1945 | while (true) 1946 | { 1947 | Sleep(5);//降低CPU占用 1948 | Radar_Window.Set_WindowTitle(System::Rand_String(10));//随机雷达窗口标题 1949 | Window::Set_LimitWindowShow(Radar_Window.Get_HWND(), UI_Misc_ByPassOBS);//绕过OBS 1950 | static short Radar_Size_; const short RadarSizeAnimation = Variable::Animation(Radar_Size_, 2); 1951 | if (CS2_HWND && (Global_IsShowWindow || Menu_Open || Window::Get_WindowEnable(Radar_Window.Get_HWND())) && UI_Visual_Radar)//当CS窗口在最前端 1952 | { 1953 | Radar_Size_ = UI_Visual_Radar_Size; UI_Visual_Radar_Pos = Radar_Window.Get_WindowPos(); 1954 | if (!Radar_Window.Window_Move(15))//移动雷达窗口 1955 | { 1956 | const float RadarRangeAnimation = Variable::Animation(UI_Visual_Radar_Range, 2);//窗口动画 1957 | const auto LocalPlayerPos = Global_LocalPlayer.Origin(); const auto ViewAngle = Base::ViewAngles(); 1958 | Radar_Paint.Render_SolidRect(0, 0, 9999, 9999, { 0,0,0 });//背景 1959 | if (UI_Visual_Radar_Alpha)//透明状态不绘制人物视角朝向 1960 | { 1961 | if (UI_Visual_Radar_FollowAngle)Radar_Paint.Render_GradientTriangle({ RadarSizeAnimation / 2, RadarSizeAnimation / 2 + 15 ,(int)Variable::Ang_Pos_(RadarSizeAnimation / 2, RadarSizeAnimation / 2 + 15, RadarSizeAnimation / 2, 135, 0)[0], (int)Variable::Ang_Pos_(RadarSizeAnimation / 2, RadarSizeAnimation / 2 + 15, RadarSizeAnimation / 2, 135, 0)[1] ,(int)Variable::Ang_Pos_(RadarSizeAnimation / 2, RadarSizeAnimation / 2 + 15, RadarSizeAnimation / 2, 225, 0)[0], (int)Variable::Ang_Pos_(RadarSizeAnimation / 2, RadarSizeAnimation / 2 + 15, RadarSizeAnimation / 2, 225, 0)[1] }, GUI_IO.GUIColor / 4, { 0,0,0 }, { 0,0,0 }); 1962 | else Radar_Paint.Render_GradientTriangle({ RadarSizeAnimation / 2, RadarSizeAnimation / 2 + 15 ,(int)Variable::Ang_Pos_(RadarSizeAnimation / 2, RadarSizeAnimation / 2 + 15, RadarSizeAnimation / 2, ViewAngle.y, 45)[0], (int)Variable::Ang_Pos_(RadarSizeAnimation / 2, RadarSizeAnimation / 2 + 15, RadarSizeAnimation / 2, ViewAngle.y, 45)[1] ,(int)Variable::Ang_Pos_(RadarSizeAnimation / 2, RadarSizeAnimation / 2 + 15, RadarSizeAnimation / 2, ViewAngle.y, 135)[0], (int)Variable::Ang_Pos_(RadarSizeAnimation / 2, RadarSizeAnimation / 2 + 15, RadarSizeAnimation / 2, ViewAngle.y, 135)[1] }, GUI_IO.GUIColor / 4, { 0,0,0 }, { 0,0,0 });//本地人物视野 1963 | } 1964 | Radar_Paint.Render_HollowCircle(RadarSizeAnimation / 2, RadarSizeAnimation / 2 + 15, RadarSizeAnimation / 100 * 3.5, { 255,255,255 }, 2);//自身圆圈 1965 | for (short i = 0; i < Global_ValidClassID.size(); ++i) 1966 | { 1967 | const auto PlayerPawn = Advanced::Traverse_Player(Global_ValidClassID[i]); 1968 | if (!Advanced::Check_Enemy(PlayerPawn))continue;//多点检测 1969 | const auto EntityPos = PlayerPawn.Origin(); static vector EnemyScreenPos; 1970 | if (UI_Visual_Radar_FollowAngle)EnemyScreenPos = { RadarSizeAnimation / 2 - Variable::Ang_Pos(Variable::Coor_Dis_2D(LocalPlayerPos, EntityPos), ViewAngle.y - 90 + atan2((LocalPlayerPos.x - EntityPos.x), (LocalPlayerPos.y - EntityPos.y)) * (180 / acos(-1)))[0] / RadarRangeAnimation,RadarSizeAnimation / 2 + 15 + Variable::Ang_Pos(Variable::Coor_Dis_2D(LocalPlayerPos, EntityPos), ViewAngle.y - 90 + atan2((LocalPlayerPos.x - EntityPos.x), (LocalPlayerPos.y - EntityPos.y)) * (180 / acos(-1)))[1] / RadarRangeAnimation }; 1971 | else EnemyScreenPos = { RadarSizeAnimation / 2 - (LocalPlayerPos.x - EntityPos.x) / RadarRangeAnimation,RadarSizeAnimation / 2 + 15 + (LocalPlayerPos.y - EntityPos.y) / RadarRangeAnimation }; 1972 | if (EnemyScreenPos[0] > RadarSizeAnimation)EnemyScreenPos[0] = RadarSizeAnimation;//边缘限制 (无法离开绘制区域) 1973 | else if (EnemyScreenPos[0] < 0) EnemyScreenPos[0] = 0; 1974 | if (EnemyScreenPos[1] > RadarSizeAnimation + 15)EnemyScreenPos[1] = RadarSizeAnimation + 15; 1975 | else if (EnemyScreenPos[1] < 15)EnemyScreenPos[1] = 15; 1976 | if (PlayerPawn.Spotted())Radar_Paint.Render_SolidCircle(EnemyScreenPos[0], EnemyScreenPos[1], RadarSizeAnimation / 100 * 3.5, GUI_IO.GUIColor, GUI_IO.GUIColor);//敌人圆圈 1977 | else Radar_Paint.Render_HollowCircle(EnemyScreenPos[0], EnemyScreenPos[1], RadarSizeAnimation / 100 * 3.5, GUI_IO.GUIColor); 1978 | } 1979 | Radar_Paint.Render_GradientRect(0, 0, Radar_Window.Get_WindowSize().x, 14, GUI_IO.GUIColor / 2, GUI_IO.GUIColor / 4, false); 1980 | Radar_Paint.Render_GradientRect(0, 14, Radar_Window.Get_WindowSize().x, 1, GUI_IO.GUIColor / 4, GUI_IO.GUIColor / 2, false);//标题背景 1981 | Radar_Paint.Render_String(3 + 1, 1 + 1, "Rensen - Radar", "Small Fonts", 12, { 0,0,1 }, false);//标题阴影 1982 | Radar_Paint.Render_String(3, 1, "Rensen - Radar", "Small Fonts", 12, GUI_IO.GUIColor, false);//标题 1983 | Radar_Paint.DrawPaint();//最终绘制雷达画板 1984 | } 1985 | } 1986 | else Radar_Size_ = 0; 1987 | if (UI_Visual_Radar_Show)//修复窗口不显示BUG 1988 | { 1989 | Radar_Window.Show_Window(); 1990 | Window::Set_Topmost_Status(Radar_Window.Get_HWND(), true); 1991 | } 1992 | Radar_Window.Set_WindowSize(RadarSizeAnimation, RadarSizeAnimation + 15);//雷达大小 1993 | if (!UI_Visual_Radar_Alpha)Radar_Window.Set_WindowAttributes({ 0,0,0 }, 0, LWA_COLORKEY);//将黑色像素改为全透明 1994 | else Radar_Window.Set_WindowAlpha(Variable::Animation(UI_Visual_Radar_Alpha, 2));//雷达透明度 1995 | Radar_Window.Fix_inWhile();//窗口消息循环 1996 | } 1997 | } 1998 | void Thread_Funtion_Sonar() noexcept//功能线程: 声呐(距离检测) 1999 | { 2000 | System::Log("Load Thread: Thread_Funtion_Sonar()"); 2001 | while (true) 2002 | { 2003 | Sleep(5); 2004 | if (CS2_HWND && Global_IsShowWindow && UI_Misc_Sonar && (!UI_Misc_Sonar_Key || System::Get_Key(UI_Misc_Sonar_Key)) && Global_LocalPlayer.Health())//当CS窗口在最前端 && 本地人物活着 2005 | { 2006 | const auto Local_Pos = Global_LocalPlayer.Origin();//本地人物坐标 2007 | for (short i = 0; i <= 64; ++i) 2008 | { 2009 | System::Sleep_ns(150); 2010 | if (UI_Misc_Sonar_Key != 0 && !System::Get_Key(UI_Misc_Sonar_Key))continue;//提高效率 2011 | const auto PlayerPawn = Advanced::Traverse_Player(i); 2012 | if (!Advanced::Check_Enemy(PlayerPawn))continue;//多点检测 2013 | const auto Pos_Dis = Variable::Coor_Dis_2D(Local_Pos, PlayerPawn.Origin());//敌人坐标距离 2014 | if (Pos_Dis <= UI_Misc_Sonar_Range_Near)Beep(300, 20);//Near range 近距离 2015 | else if (Pos_Dis <= UI_Misc_Sonar_Range_Far)Beep(150, 20);//Far range 远距离 2016 | if (Pos_Dis <= UI_Misc_Sonar_Range_Far)Sleep(20);//断开间隔 2017 | } 2018 | } 2019 | else Sleep(20); 2020 | } 2021 | } 2022 | int main() noexcept//主线程 (加载多线程, 一些杂项功能) 2023 | { 2024 | System::Anti_Debugger("Debugging is disabled after compilation is completed.");//防止逆向破解 2025 | //---------------------------------------------------------------------------------------------------------------------------------- 2026 | System::URL_READ UserID_READ = { "Cache_UserID" }; BOOL Attest = false;//认证变量 2027 | if (UserID_READ.StoreMem("https://github.com/Coslly/Rensen/blob/main/Cloud%20Files/UserID.uid?raw=true"))//Github读取有效用户ID 2028 | { 2029 | if (!Attest)for (short i = 0; i <= 50000; i++) { if (System::Get_UserName() == UserID_READ.Read(i) || Variable::String_Upper(UserID_READ.Read(i)) == "BYPASS") { Attest = true; break; } }//遍历检测并修改认证 2030 | UserID_READ.Release();//释放缓存 2031 | } 2032 | if (!Attest) { Window::Message_Box("Rensen Attest - " + System::Get_UserName(), "Your identity cannot be passed.\n\nUnable to access from Chinese IP.\n\nAuthor: https://github.com/Coslly\n", MB_ICONSTOP); exit(0); }//未被认证则直接退出 2033 | //---------------------------------------------------------------------------------------------------------------------------------- 2034 | System::URL_READ AutoUpdate = { "Cache_Update" };//自动更新系统 2035 | if (AutoUpdate.StoreMem("https://github.com/Coslly/Rensen/blob/main/Rensen/Rensen/Main.cpp?raw=true"))//版本号更新检查 2036 | { 2037 | auto Version = AutoUpdate.Read(3); if (Version != "") { Version.erase(0, 29); Version.erase(Version.size() - 15, 100); }//擦除无用字符只获取版本号 2038 | AutoUpdate.Release();//释放缓存 2039 | if (Variable::string_float_(Version) > Rensen_Version && Window::Message_Box("Rensen Update", "A new version has been released.\nDo you want to update now?\nIt may take tens of seconds.\n\nYou will be updated to Ver[" + Version + "]", MB_YESNO | MB_ICONASTERISK) == 6) 2040 | { 2041 | System::Open_Website("https://github.com/Coslly/Rensen/releases/download/Release/Rensen.exe"); exit(0);//打开下载链接并且关闭程序 2042 | } 2043 | } 2044 | //---------------------------------------------------------------------------------------------------------------------------------- 2045 | System::Anti_click();//控制台不被暂停 2046 | Window::Hide_ConsoleWindow();//隐藏控制台 2047 | Window::Initialization_ConsoleWindow();//初始化控制台窗口 (初始化窗口大小, 清除字符) 2048 | printf("Welcome to Rensen for Counter-Strike 2 cheat.\nThe Rensen project is a version converted from FreeCS.\nNo team author By: https://github.com/Coslly\nThe following information returned is debugging information.\n打开汉化版本需要在同目录添加命名为CN的文件\n");//作者留言 2049 | System::Log("Load Thread: main()"); 2050 | Sleep(100);//修复重启进程冲突 2051 | if (!System::Judge_File(UI_LocalConfigPath)) { System::Create_File(UI_LocalConfigPath, UI_DefaultConfig); System::Self_Restart(); }//创建默认参数文件 (当未找到参数文件时, 第一次启动时) 2052 | thread Thread_Menu_ = thread(Thread_Menu); 2053 | thread Thread_Misc_ = thread(Thread_Misc); 2054 | Sleep(50);//防止重启卡线程 (以下为功能函数线程) 2055 | thread Thread_Funtion_BunnyHop_ = thread(Thread_Funtion_BunnyHop); 2056 | thread Thread_Funtion_Aimbot_ = thread(Thread_Funtion_Aimbot); 2057 | thread Thread_Funtion_AdaptiveAimbot_ = thread(Thread_Funtion_AdaptiveAimbot); 2058 | thread Thread_Funtion_Triggerbot_ = thread(Thread_Funtion_Triggerbot); 2059 | thread Thread_Funtion_AssisteAim_ = thread(Thread_Funtion_AssisteAim); 2060 | thread Thread_Funtion_RemoveRecoil_ = thread(Thread_Funtion_RemoveRecoil); 2061 | thread Thread_Funtion_PlayerESP_ = thread(Thread_Funtion_PlayerESP); 2062 | thread Thread_Funtion_EntityESP_ = thread(Thread_Funtion_EntityESP); 2063 | thread Thread_Funtion_Radar_ = thread(Thread_Funtion_Radar); 2064 | thread Thread_Funtion_Sonar_ = thread(Thread_Funtion_Sonar); 2065 | while (true)//菜单动画和关闭快捷键 2066 | { 2067 | if (!Attest) { exit(0); return 0; }//过滤未认证用户 (防止被HOOK初始化函数) 2068 | if (System::Get_Key(VK_INSERT) && System::Get_Key(VK_DELETE)) { Beep(50, 50); Window::NVIDIA_Overlay(); exit(0); }//快速关闭键 (防止卡线程) 2069 | static short MenuWindowAlpha = 0; 2070 | if (Menu_Open)MenuWindowAlpha = MenuWindowAlpha + UI_Setting_MainColor.a / UI_Setting_MenuAnimation / 2.5;//窗体透明度动画 2071 | else MenuWindowAlpha = MenuWindowAlpha - UI_Setting_MainColor.a / UI_Setting_MenuAnimation / 1.25; 2072 | if (MenuWindowAlpha >= UI_Setting_MainColor.a)MenuWindowAlpha = UI_Setting_MainColor.a; 2073 | else if (MenuWindowAlpha <= 0)MenuWindowAlpha = 0; 2074 | GUI_VAR.Window_SetAlpha(MenuWindowAlpha);//修改菜单透明度 2075 | if (!System::Key_Toggle(UI_Setting_MenuKey)) { GUI_VAR.Window_Show(); Menu_Open = true; }//保证菜单窗口在最前端 2076 | else { if (MenuWindowAlpha == 0)GUI_VAR.Window_Hide(); Menu_Open = false; } 2077 | GUI_IO = GUI_VAR.Get_IO();//刷新GUI状态数据 2078 | if (!UI_Setting_CustomColor)GUI_IO.GUIColor = { GUI_IO.GUIColor_Rainbow[3],GUI_IO.GUIColor_Rainbow[4],GUI_IO.GUIColor_Rainbow[5] };//GUI主题颜色到功能函数 2079 | if (UI_Setting_MenuFont == "")GUI_VAR.Global_Set_EasyGUI_Font("Verdana");//自定义GUI字体 2080 | else GUI_VAR.Global_Set_EasyGUI_Font(UI_Setting_MenuFont); 2081 | GUI_VAR.Global_Set_EasyGUI_FontSize(UI_Setting_MenuFontSize);//自定义GUI字体大小 2082 | Sleep(1); 2083 | } 2084 | } --------------------------------------------------------------------------------