Code:
#include "Game.h"
#pragma region offsets
DWORD offLocalPlayer;
DWORD offEntityList;
const DWORD offEntityTeam = 0xF0;
DWORD offGlow;
#pragma endregion
#pragma region globalVars
PModule modClient;
PMemory mem;
#pragma endregion
[junk_enable /]
[enc_string_enable /]
#pragma region hotKeys
int whichKeyIsPressed() {
while (true) {
for (int i = 1; i < 255; i++) {
if (GetAsyncKeyState(i) & 0x8000) {
while (GetAsyncKeyState(i) & 0x8000) {
Sleep(50);
}
return i;
}
}
Sleep(10);
}
}
int keyGlowToggle;
#pragma endregion
void ReadData(Player* p) {
p->team = mem.Read<int>(p->dwBase + offEntityTeam);
}
int main() {
std::cout << "PolyHack V2.0 - Made by Merccy\n\n";
std::cout << "Waiting for csgo.exe...";
while (!mem.Attach("csgo.exe")) {
std::cout << ".";
Sleep(500);
}
modClient = mem.GetModule("client.dll");
std::cout << "\nFound\n\n";
std::cout << "Getting offsets...";
// Glow offset
//DWORD gpStart = mem.FindPatternArr(modClient.dwBase, modClient.dwSize, "xxxxxxxxxxxxxx????xxxxxxx", 25, 0x6B, 0xD6, 0x34, 0x89, 0x44, 0x0A, 0x30, 0x8D, 0x8F, 0xE4, 0x1B, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00);
//offGlow = mem.Read<DWORD>(gpStart + 14) - modClient.dwBase;
offGlow = 0x04AFCE94;
// Entity list
//DWORD elStart = mem.FindPatternArr(modClient.dwBase, modClient.dwSize, "x????xx?xxx", 11, 0x5, 0x0, 0x0, 0x0, 0x0, 0xC1, 0xE9, 0x0, 0x39, 0x48, 0x4);
//DWORD elP1 = mem.Read<DWORD>(elStart + 1);
//BYTE elP2 = mem.Read<BYTE>(elStart + 7);
//offEntityList = (elP1 + elP2) - modClient.dwBase;
offEntityList = 0x49EC244;
// Local player
//DWORD lpStart = mem.FindPatternArr(modClient.dwBase, modClient.dwSize, "xxx????xx????xxxxx?", 19, 0x8D, 0x34, 0x85, 0x0, 0x0, 0x0, 0x0, 0x89, 0x15, 0x0, 0x0, 0x0, 0x0, 0x8B, 0x41, 0x8, 0x8B, 0x48, 0x0);
//DWORD lpP1 = mem.Read<DWORD>(lpStart + 3);
//BYTE lpP2 = mem.Read<BYTE>(lpStart + 18);
//offLocalPlayer = (lpP1 + lpP2) - modClient.dwBase;
offLocalPlayer = 0xA4A9BC;
std::cout << "\nDone\n\n";
std::cout << "Hotkeys: \n";
std::cout << "Toggle glow: ";
keyGlowToggle = whichKeyIsPressed();
std::cout << keyGlowToggle << "\n";
std::cout << "\n";
bool glowEnabled = false;
Player me;
Player players[64];
while (!GetAsyncKeyState(VK_END)) {
if (GetAsyncKeyState(keyGlowToggle) & 0x8000) {
while (GetAsyncKeyState(keyGlowToggle) & 0x8000) {
Sleep(50);
}
glowEnabled = !glowEnabled;
std::cout << "Glow ESP is now ";
if (glowEnabled) {
std::cout << "enabled\n";
}
else {
std::cout << "disabled\n";
}
}
if (glowEnabled) {
me.dwBase = mem.Read<DWORD>(modClient.dwBase + offLocalPlayer);
ReadData(&me);
for (int i = 1; i < 64; i++) {
players[i].dwBase = mem.Read<DWORD>(modClient.dwBase + offEntityList + i * 0x10);
ReadData(&players[i]);
}
DWORD pointerGlow = mem.Read<DWORD>(modClient.dwBase + offGlow);
int objectCount = mem.Read<int>(modClient.dwBase + offGlow + 0x4);
if (pointerGlow != NULL) {
for (int i = 0; i < objectCount; i++) {
DWORD mObj = pointerGlow + i * sizeof(GlowObjectDefinition_t);
GlowObjectDefinition_t glowObj = mem.Read<GlowObjectDefinition_t>(mObj);
if (glowObj.pEntity != NULL) {
int f_i = -1;
for (int j = 1; j < 64; j++) {
if (glowObj.pEntity == players[j].dwBase) {
int r = 255, g = 0, b = 0;
if (players[j].team == me.team) {
r = 0;
b = 255;
}
mem.Write<float>(mObj + 0x4, r / 255);
mem.Write<float>(mObj + 0x8, g / 255);
mem.Write<float>(mObj + 0xC, b / 255);
mem.Write<float>(mObj + 0x10, 1.0f);
mem.Write<BOOL>(mObj + 0x24, true);
mem.Write<BOOL>(mObj + 0x25, false);
}
}
}
}
}
}
}
return 0;
}