Skip to content

Commit 154b69c

Browse files
committed
Add Chat Spammer, Recoil Crosshair
Improve Code
1 parent f308d2f commit 154b69c

File tree

13 files changed

+154
-12
lines changed

13 files changed

+154
-12
lines changed

ErScripts/ChatSpammer.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#include "ErScripts.h"
2+
3+
void ErScripts::ChatSpammer() {
4+
std::thread([this]() {
5+
bool state = false;
6+
bool statePrev = false;
7+
8+
while (!globals::finish) {
9+
if (cfg->chatSpammerState) {
10+
bool bindState = GetAsyncKeyState(cfg->chatSpammerBind) & 0x8000;
11+
12+
if (bindState && !statePrev) {
13+
state = !state;
14+
}
15+
16+
statePrev = bindState;
17+
18+
if (state || !cfg->chatSpammerBind) {
19+
CommandsSender(9, std::format("say {}", cfg->chatSpammerText));
20+
}
21+
}
22+
std::this_thread::sleep_for(std::chrono::milliseconds(50));
23+
}
24+
}).detach();
25+
}

ErScripts/Config.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ void Config::load(const std::string& filename) {
3131
/* Sniper Crosshair */
3232
read(json["sniper-crosshair"]["state"], sniperCrosshairState);
3333

34+
/* Recoil Crosshair */
35+
read(json["recoil-crosshair"]["state"], recoilCrosshairState);
36+
3437
/* RGB Crosshair */
3538
read(json["rgb-crosshair"]["state"], rgbCrosshairState);
3639

@@ -83,6 +86,11 @@ void Config::load(const std::string& filename) {
8386
read(json["auto-stop"]["bind"], autoStopBind);
8487
read(json["auto-stop"]["toggle"]["state"], autoStopToggleState);
8588

89+
/* Chat Spammer */
90+
read(json["chat-spammer"]["state"], chatSpammerState);
91+
read(json["chat-spammer"]["bind"], chatSpammerBind);
92+
read(json["chat-spammer"]["text"], chatSpammerText);
93+
8694
/* Watermark */
8795
read(json["watermark"]["state"], watermarkState);
8896
read(json["watermark"]["gradient"]["state"], watermarkGradientState);
@@ -139,6 +147,9 @@ void Config::save(const std::string& filename) const {
139147
/* RGB Crosshair */
140148
json["rgb-crosshair"]["state"] = rgbCrosshairState;
141149

150+
/* Recoil Crosshair */
151+
json["recoil-crosshair"]["state"] = recoilCrosshairState;
152+
142153
/* Keystrokes */
143154
json["keystrokes"]["state"] = keystrokesState;
144155
json["keystrokes"]["scale"] = keystrokesScale;
@@ -188,6 +199,11 @@ void Config::save(const std::string& filename) const {
188199
json["auto-stop"]["bind"] = autoStopBind;
189200
json["auto-stop"]["toggle"]["state"] = autoStopToggleState;
190201

202+
/* Chat Spammer */
203+
json["chat-spammer"]["state"] = chatSpammerState;
204+
json["chat-spammer"]["bind"] = chatSpammerBind;
205+
json["chat-spammer"]["text"] = chatSpammerText;
206+
191207
/* Watermark */
192208
json["watermark"]["state"] = watermarkState;
193209
json["watermark"]["gradient"]["state"] = watermarkGradientState;

ErScripts/Config.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ class Config {
3636
/* RGB Crosshair */
3737
bool rgbCrosshairState{ false };
3838

39+
/* Recoil Crosshair */
40+
bool recoilCrosshairState{ false };
41+
3942
/* Keystrokes */
4043
bool keystrokesState{ false };
4144
float keystrokesScale{ 1.5f };
@@ -86,6 +89,11 @@ class Config {
8689
int autoStopBind{ 0 };
8790
bool autoStopToggleState{ false };
8891

92+
/* Chat Spammer */
93+
bool chatSpammerState{ false };
94+
int chatSpammerBind{ 0 };
95+
std::string chatSpammerText{ "Enhance Your Skills with emp0ry.github.io/cs2-ErScripts/" };
96+
8997
/* Watermark */
9098
bool watermarkState{ true };
9199
bool watermarkGradientState{ true };

ErScripts/Crosshair.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
void ErScripts::Crosshair() {
44
std::thread([this]() {
55
std::vector<int> blackColor = { 0, 0, 0 };
6+
bool oldRecoilCrosshairState = false;
7+
68
while (!globals::finish) {
79
if (ErScripts::GetWindowState() && ErScripts::GetCursorState()) {
810

@@ -22,8 +24,18 @@ void ErScripts::Crosshair() {
2224

2325
//Logger::logInfo(std::format("Color1: RGB({} {} {}) POS({} {}), Color2: RGB({} {} {}) POS({} {})", pixelColor1[0], pixelColor1[1], pixelColor1[2], globals::posX + globals::width / 2, globals::posY, pixelColor2[0], pixelColor2[1], pixelColor2[2], globals::posX + globals::width / 2, globals::posY + globals::height - 1));
2426

25-
globals::isScope = (isColorSimilar(pixelColor1, blackColor, 20) && isColorSimilar(pixelColor2, blackColor, 20)) || (GetAsyncKeyState(VK_TAB) & 0x8000) != 0;
27+
globals::isScope = (isColorSimilar(pixelColor1, blackColor, 20) && isColorSimilar(pixelColor2, blackColor, 20));
28+
}
29+
30+
if (cfg->recoilCrosshairState != oldRecoilCrosshairState) {
31+
if (cfg->recoilCrosshairState) {
32+
CommandsSender(3, "cl_crosshair_recoil true");
33+
}
34+
else {
35+
CommandsSender(3, "cl_crosshair_recoil false");
36+
}
2637

38+
oldRecoilCrosshairState = cfg->recoilCrosshairState;
2739
}
2840

2941
if (globals::crosshairUpdaterState) {

ErScripts/ErScripts.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class ErScripts {
3232
void KillSound();
3333
void RoundStartAlert();
3434
void AutoStop();
35+
void ChatSpammer();
3536
private:
3637
static HWND hwnd;
3738

ErScripts/ErScripts.vcxproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@
152152
<ClCompile Include="AutoAccept.cpp" />
153153
<ClCompile Include="AutoPistol.cpp" />
154154
<ClCompile Include="BombTime.cpp" />
155+
<ClCompile Include="ChatSpammer.cpp" />
155156
<ClCompile Include="Config.cpp" />
156157
<ClCompile Include="Crosshair.cpp" />
157158
<ClCompile Include="CS2Binds.cpp" />

ErScripts/ErScripts.vcxproj.filters

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,9 @@
167167
<ClCompile Include="AutoStop.cpp">
168168
<Filter>Functions\Functions</Filter>
169169
</ClCompile>
170+
<ClCompile Include="ChatSpammer.cpp">
171+
<Filter>Functions\Functions</Filter>
172+
</ClCompile>
170173
</ItemGroup>
171174
<ItemGroup>
172175
<ClInclude Include="Logger.h">

ErScripts/Menu.cpp

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,10 @@ inline const char* erScriptsMenuKeyName = GetKeyName(cfg->erScriptsMenuBind);
7272
inline bool erScriptsMenuButtonState = false;
7373
inline const char* erScriptsExitKeyName = GetKeyName(cfg->erScriptsExitBind);
7474
inline bool erScriptsExitButtonState = false;
75+
inline const char* chatSpammerKeyName = GetKeyName(cfg->chatSpammerBind);
76+
inline bool chatSpammerButtonState = false;
7577
inline char killSayText[256]{};
78+
inline char chatSpammerText[256]{};
7679
inline char killSoundFileName[256]{};
7780
inline char roundStartAlertFileName[256]{};
7881

@@ -140,6 +143,7 @@ void Overlay::Menu() noexcept {
140143
//TriggerMenu();
141144
BombTimerMenu();
142145
SniperCrosshairMenu();
146+
RecoilCrosshairMenu();
143147
RGBCrosshairMenu();
144148
KeystrokesMenu();
145149
KnifeSwitchMenu();
@@ -150,6 +154,7 @@ void Overlay::Menu() noexcept {
150154
KillSoundMenu();
151155
RoundStartAlertMenu();
152156
AutoStopMenu();
157+
ChatSpammerMenu();
153158
GradientManagerMenu();
154159
WatermarkMenu();
155160
FPSLimitMenu();
@@ -175,6 +180,7 @@ void Overlay::Menu() noexcept {
175180
autoStopKeyName = GetKeyName(cfg->autoStopBind);
176181
erScriptsMenuKeyName = GetKeyName(cfg->erScriptsMenuBind);
177182
erScriptsExitKeyName = GetKeyName(cfg->erScriptsExitBind);
183+
chatSpammerKeyName = GetKeyName(cfg->chatSpammerBind);
178184

179185
if (ImGui::FindWindowByName(" Bomb Timer"))
180186
ImGui::SetWindowPos(" Bomb Timer", { cfg->bombTimerPos[0], cfg->bombTimerPos[1] });
@@ -183,6 +189,7 @@ void Overlay::Menu() noexcept {
183189
ImGui::SetWindowPos(" Keystrokes", { cfg->keystrokesPos[0], cfg->keystrokesPos[1] });
184190

185191
strncpy_s(killSayText, cfg->killSayText.c_str(), sizeof(killSayText) - 1);
192+
strncpy_s(chatSpammerText, cfg->chatSpammerText.c_str(), sizeof(chatSpammerText) - 1);
186193
strncpy_s(killSoundFileName, cfg->killSoundFileName.c_str(), sizeof(killSoundFileName) - 1);
187194
strncpy_s(roundStartAlertFileName, cfg->roundStartAlertFileName.c_str(), sizeof(roundStartAlertFileName) - 1);
188195
}
@@ -332,6 +339,16 @@ void Overlay::SniperCrosshairMenu() noexcept {
332339
}
333340
}
334341

342+
void Overlay::RecoilCrosshairMenu() noexcept {
343+
ImGui::TableNextRow();
344+
ImGui::TableSetColumnIndex(0);
345+
ImGui::Checkbox("Recoil Crosshair", &cfg->recoilCrosshairState);
346+
ImGui::TableSetColumnIndex(1);
347+
if (ImageButton("##RecoilCrosshairReloader", (ImTextureID)reloadTexture, { 22, 22 })) {
348+
globals::crosshairUpdaterState = true;
349+
}
350+
}
351+
335352
void Overlay::RGBCrosshairMenu() noexcept {
336353
ImGui::TableNextRow();
337354
ImGui::TableSetColumnIndex(0);
@@ -706,6 +723,53 @@ void Overlay::AutoStopMenu() noexcept {
706723
}
707724
}
708725

726+
void Overlay::ChatSpammerMenu() noexcept {
727+
static bool firstRun = true;
728+
if (firstRun) {
729+
strncpy_s(chatSpammerText, cfg->chatSpammerText.c_str(), sizeof(chatSpammerText) - 1);
730+
firstRun = false;
731+
}
732+
733+
ImGui::TableNextRow();
734+
ImGui::TableSetColumnIndex(0);
735+
ImGui::Checkbox("Chat Spammer", &cfg->chatSpammerState);
736+
ImGui::TableSetColumnIndex(1);
737+
738+
if (ImageButton("##ChatSpammer", (ImTextureID)settingsTexture, { 22, 22 })) {
739+
ImGui::OpenPopup("Chat Spammer Settings");
740+
}
741+
742+
if (ImGui::BeginPopup("Chat Spammer Settings")) {
743+
if (ImGui::BeginTable("Chat Spammer Settings Table", 2, ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_NoPadInnerX)) {
744+
ImGui::TableNextRow();
745+
ImGui::TableSetColumnIndex(0);
746+
ImGui::Text("Chat Message ");
747+
ImGui::TableSetColumnIndex(1);
748+
749+
ImGui::PushItemWidth(150);
750+
751+
ImGui::InputText("##ChatSpammerText", chatSpammerText, sizeof(chatSpammerText), ImGuiInputTextFlags_EnterReturnsTrue);
752+
cfg->chatSpammerText = chatSpammerText;
753+
754+
ImGui::PopItemWidth();
755+
756+
ImGui::TableNextRow();
757+
ImGui::TableSetColumnIndex(0);
758+
ImGui::Text("Hotkey ");
759+
ImGui::TableSetColumnIndex(1);
760+
chatSpammerKeyName = GetKeyName(cfg->chatSpammerBind);
761+
if (ImGui::Button(std::format("{}##ChatSpammerBind", chatSpammerKeyName).c_str(), ImVec2(80.0f, 22.0f))) {
762+
chatSpammerButtonState = !chatSpammerButtonState;
763+
}
764+
Hotkey(&chatSpammerButtonState, &chatSpammerKeyName, &cfg->chatSpammerBind);
765+
766+
ImGui::EndTable();
767+
}
768+
769+
ImGui::EndPopup();
770+
}
771+
}
772+
709773
void Overlay::FPSLimitMenu() noexcept {
710774
ImGui::TableNextRow();
711775
ImGui::TableSetColumnIndex(0);

ErScripts/Overlay.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class Overlay {
5757
void TriggerMenu() noexcept;
5858
void BombTimerMenu() noexcept;
5959
void SniperCrosshairMenu() noexcept;
60+
void RecoilCrosshairMenu() noexcept;
6061
void RGBCrosshairMenu() noexcept;
6162
void KeystrokesMenu() noexcept;
6263
void KnifeSwitchMenu() noexcept;
@@ -67,6 +68,7 @@ class Overlay {
6768
void KillSoundMenu() noexcept;
6869
void RoundStartAlertMenu() noexcept;
6970
void AutoStopMenu() noexcept;
71+
void ChatSpammerMenu() noexcept;
7072
void GradientManagerMenu() noexcept;
7173
void WatermarkMenu() noexcept;
7274
void FPSLimitMenu() noexcept;

ErScripts/RGBCrosshair.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@ void ErScripts::RGBCrosshair() {
44
std::thread([this]() {
55
while (!globals::finish) {
66
if (cfg->rgbCrosshairState) {
7-
if ((ErScripts::GetWindowState() && ErScripts::GetCursorState()) /*|| globals::menuState*/) {
8-
RGBColor color = gradient.getCurrentColor();
9-
CommandsSender(2, std::format("cl_crosshaircolor 5; cl_crosshaircolor_r {}; cl_crosshaircolor_g {}; cl_crosshaircolor_b {}", color.r, color.g, color.b));
10-
}
7+
RGBColor color = gradient.getCurrentColor();
8+
CommandsSender(2, std::format("cl_crosshaircolor 5; cl_crosshaircolor_r {}; cl_crosshaircolor_g {}; cl_crosshaircolor_b {}", color.r, color.g, color.b));
119
}
1210
std::this_thread::sleep_for(std::chrono::milliseconds(10));
1311
}

0 commit comments

Comments
 (0)