Hey everyone, I have finished my code just like fleep has it.
issues, when I run the code, i only have two errors; hdcScreen, unreferenced local variable, and, Aim_bot : not all control paths return a value
but the code will successfully run anyway, I set the code to detect rgb - Windows Photo Viewer, and it does. then nothing...
all it says is press a key to continue.
Code
issues, when I run the code, i only have two errors; hdcScreen, unreferenced local variable, and, Aim_bot : not all control paths return a value
but the code will successfully run anyway, I set the code to detect rgb - Windows Photo Viewer, and it does. then nothing...
all it says is press a key to continue.
Code
C++:
#include "ScanContents.h"
bool TakeScreenShot(std::string WindowToFind, BITMAP &bm, HBITMAP &hbmap, BITMAPINFO &bmi, HDC &hdcShot, HBITMAP &hbitmapOld, HWND &hwnd);
bool Aim_Bot(HWND appWnd, std::string GameWindow);
void SetupBitmapInfo(BITMAPINFO &bmi, int bWidth, int bHeight, int bitsPerPixel);
bool CompareColour(RGBQUAD * pPixels, int height, int width, int x, int y);
void ScanBMP(ScanContents * scan);
MouseCoord CurrentMouseXY(0, 0);
int main()
{
std::string GameWindow = "rgb - Windows Photo Viewer"; //rgb - Windows Photo Viewer, Counter-Strike Scource
HWND appWnd = FindWindow(0, GameWindow.c_str());
while(!appWnd)
{
system("CLS");
appWnd = FindWindow(0, GameWindow.c_str());
std::cout << "Unable to find " << GameWindow.c_str() << std::endl;
Sleep(500);
}
POINT currentPos;
GetCursorPos(& currentPos);
CurrentMouseXY.X = currentPos.x;
CurrentMouseXY.Y = currentPos.y;
Aim_Bot(appWnd, GameWindow);
system("pause");
return 0;
}
bool TakeScreenShot(std::string WindowToFind, BITMAP &bm, HBITMAP &hbmap, BITMAPINFO &bmi, HDC &hdcShot, HBITMAP &hbitmapOld, HWND &hwnd)
{
RECT rc;
GetWindowRect(hwnd, &rc);
hdcShot = CreateCompatibleDC(0);
hbmap = CreateCompatibleBitmap(GetDC(0), rc.right - rc.left, rc.bottom - rc.top);
SelectObject(hdcShot, hbmap);
BitBlt(hdcShot, 0, 0, rc.right - rc.left, rc.bottom - rc.top, GetDC(0), rc.left, rc.top, SRCCOPY);
if(!GetObject(hbmap, sizeof(BITMAP), (LPSTR)&bm))
return false;
int bitsPerPixel = bm.bmBitsPixel;
if(bitsPerPixel != 32 || bm.bmPlanes != 1)
return false;
SetupBitmapInfo(bmi, bm.bmWidth, bm.bmHeight, bitsPerPixel);
return true;
}
bool Aim_Bot(HWND appWnd, std::string GameWindow)
{
RECT rcWindow;
GetWindowRect(appWnd, &rcWindow);
BITMAP bm;
HBITMAP hbmap;
HBITMAP hbmapOld;
BITMAPINFO bmi;
HDC hdcShot;
HDC hdcScreen;
RGBQUAD * pPixels;
int TimeTakenScreenAndScan;
while(true)
{
if(!GetAsyncKeyState('X'))
{
TimeTakenScreenAndScan = clock();
if(TakeScreenShot(GameWindow, bm, hbmap, bmi, hdcShot, hbmapOld, appWnd))
break;
HBITMAP hbmapNew = CreateCompatibleBitmap(hdcShot, rcWindow.right - rcWindow.left, rcWindow.bottom - rcWindow.top);
HDC hdcShotNew = CreateCompatibleDC(hdcShot);
HBITMAP Oldbmp = (HBITMAP) SelectObject(hdcShotNew, hbmapNew);
BitBlt(hdcShotNew, 0, 0, rcWindow.right - rcWindow.left, rcWindow.bottom - rcWindow.top, hdcShot, 0, 0, SRCCOPY);
pPixels = new RGBQUAD[bm.bmWidth * bm.bmHeight];
if(!pPixels)return false;
SelectObject(hdcShotNew, Oldbmp);
if(!GetDIBits(hdcShotNew, hbmapNew, 0, bm.bmHeight, pPixels, &bmi, DIB_RGB_COLORS))
{
ReleaseDC(appWnd, hdcShot);
delete[] pPixels;
return false;
}
ReleaseDC(appWnd, hdcShot);
ScanContents scanContentsMain(bm, rcWindow, pPixels);
ScanBMP(&scanContentsMain);
if(pPixels)
free(pPixels);
SelectObject(hdcShot, hbmapOld);
DeleteObject(hbmap);
DeleteDC(hdcShot);
DeleteObject(hbmapNew);
DeleteObject(Oldbmp);
DeleteDC(hdcShotNew);
}
}
}
void SetupBitmapInfo(BITMAPINFO &bmi, int bWidth, int bHeight, int bitsPerPixel)
{
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth = bWidth;
bmi.bmiHeader.biHeight = bHeight;
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = bitsPerPixel;
bmi.bmiHeader.biCompression = BI_RGB;
bmi.bmiHeader.biSizeImage = 0;
}
void ShootBot(int x, int y)
{
mouse_event(MOUSEEVENTF_LEFTDOWN,x, y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,x, y,0,0);
}
void ScanBMP(ScanContents * scan)
{
for(int y = (scan->RcWindow.bottom - scan->RcWindow.top)/2;
y < ((scan->RcWindow.bottom - scan->RcWindow.top) - (scan->RcWindow.bottom - scan->RcWindow.top)/3.5);
y++)
{
for(int x = (scan->RcWindow.bottom - scan->RcWindow.top)/4;
x < ((scan->RcWindow.bottom - scan->RcWindow.top) - (scan->RcWindow.bottom - scan->RcWindow.top)/4);
x++)
{
SetCursorPos(x+scan->RcWindow.left, (y+4)+scan->RcWindow.top);
if(CompareColour(scan->PPixels, scan->Bm.bmHeight, scan->Bm.bmWidth, x, y))
{
//SetCursorPos(x+scan->RcWindow.left, (y+4)+scan->RcWindow.top);
POINT currentPos;
GetCursorPos(¤tPos);
ShootBot(x+scan->RcWindow.left, y+scan->RcWindow.top);
CurrentMouseXY.X = currentPos.x;
CurrentMouseXY.Y = currentPos.y;
return;
}
}
}
}
bool CompareColour(RGBQUAD * pPixels, int height, int width, int x, int y)
{
int p = (height-y-1)*width+x;
std::cout << (int)pPixels[p].rgbRed << ", " << (int)pPixels[p].rgbGreen << ", " << (int)pPixels[p].rgbBlue <<std::endl;
if((int)pPixels[p].rgbRed < 30 && (int)pPixels[p].rgbGreen < 30 && (int)pPixels[p].rgbBlue > 215)
{
return true;
}
if(GetAsyncKeyState(VK_ESCAPE))
{
exit(0);
}
return false;
}