├── 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 | 
28 | 启动汉化版需要在同目录添加命名为 `CN` 的文件夹
29 | 
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 | }
--------------------------------------------------------------------------------