Eai Galera Da MPGH Hoje Vim Trazer o Codigo Do Aim Correction Por acesso direto na memória (Sem uso de classes) e Otimizado!
Codigo:
Code:
#include <windows.h>
#define ADDR_WEAPONMGR 0x37A39D9C
#define ADDR_GAMESTATUS 0x379EACD0
bool bSetWepData = 1, bStoreWepData = 0, bAimCorrection = 0;
float OgAwepData[20][2000];
DWORD dwOffSets[20] = {
0x2BC, 0x2C0, 0x2C4, 0x2C8, 0x2CC, 0x2D0, 0x310, 0x314, 0x31C, 0x320,
0x328, 0x32C, 0x354, 0x358, 0x364, 0x368, 0x36C, 0x370, 0x3FC, 0x400
};
void vAimCorrection(bool Correct)
{
DWORD WepMgr = *(DWORD *)ADDR_WEAPONMGR;
if(!bStoreWepData)
{
for(int i = 0; i < *((__int32 *)(WepMgr + 0x15E4)) && WepMgr; i++)
{
DWORD Wep = *(DWORD *)(*(DWORD *)(WepMgr + 0x15E0) + 4 * i);
for(int j = 0; j < (sizeof(dwOffSets) / 4) && Wep; j++)
OgAwepData[j][i] = *(float *)(Wep + dwOffSets[j]);
}
bStoreWepData = 1;
}
if(Correct && bSetWepData)
{
for(int i = 0; i < *((__int32 *)(WepMgr + 0x15E4)) && WepMgr; i++)
{
DWORD Wep = *(DWORD *)(*(DWORD *)(WepMgr + 0x15E0) + 4 * i);
for(int j = 0; j < (sizeof(dwOffSets) / 4) && Wep; j++)
*(float *)(Wep + dwOffSets[j]) = 0.0;
}
bSetWepData = 0;
}
else if(!Correct && !bSetWepData)
{
for(int i = 0; i < *((__int32 *)(WepMgr + 0x15E4)) && WepMgr; i++)
{
DWORD Wep = *(DWORD *)(*(DWORD *)(WepMgr + 0x15E0) + 4 * i);
for(int j = 0; j < (sizeof(dwOffSets) / 4) && Wep; j++)
*(float *)(Wep + dwOffSets[j]) = OgAwepData[j][i];
}
bSetWepData = 1;
}
}
VOID WINAPIV THREAD(LPVOID)
{
while(!GetModuleHandleA("ClientFX.fxd"))
Sleep(25);
while(1)
{
if((GetAsyncKeyState(VK_CONTROL)) && (GetAsyncKeyState(VK_NUMPAD9)&1))
bAimCorrection = !bAimCorrection;
if(*(BYTE *)ADDR_GAMESTATUS == 1)
{
vAimCorrection(bAimCorrection);
}
Sleep(25);
}
}
BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
if(fdwReason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hinstDLL);
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)THREAD, 0, 0, 0);
}
return TRUE;
}
Créditos ao m3gadriv3 pela conversão removendo das classes e otimização.