-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
şl
Последнее редактирование:
если не секрет, а зачем нужен такой костыль? Чем обычный аимбот плох?да, я хочу читать пиксели на экране, и если на экране есть заданный мной цветовой код, я хочу, чтобы он автоматически прицеливался, но я не знаю, как это сделать, может ли кто-нибудь мне помочь?
hесли не секрет, а зачем нужен такой костыль? Чем обычный аимбот плох?
check this:Я хочу сделать цветной аимбот, который будет автоматически нацеливаться на цвет ящиков esp, которые я рисую с помощью opengl.
Если ты их рисуешь, в чем проблема по этим координатам и наводиться?Я хочу сделать цветной аимбот, который будет автоматически нацеливаться на цвет ящиков esp, которые я рисую с помощью opengl.
Он их походу не рисует сам, а обводит некие объекты.Если ты их рисуешь, в чем проблема по этим координатам и наводиться?
Если игра на Дх9 то можно почитать пиксели на экране черезОн их походу не рисует сам, а обводит некие объекты.
Привет, как я могу сделать цветной аимбот на C++, который будет автоматически нацеливаться на этот цветовой код 255,0,0? я хочу сделать это как dll
void ScanPixel(int x /*Начало откуда читать пиксели позиция X*/, int y /*Начало откуда читать пиксели позиция Y*/, int maxX /*До какого пикселя читать позиция x*/, int maxY/*До какого пикселя читать позиция y*/) {
for (int i = y; i < maxY + 1; i++) {
for (int ia = x; ia < maxX + 1; ia++) {
COLORREF RGBa = GetPixel(hdc, ia, i);
int _red = GetRValue(RGBa);
int _green = GetGValue(RGBa);
int _blue = GetBValue(RGBa);
if (_red == 255 && _green == 0&& _blue == 0) {
std::cout << "Red " << _red << std::endl;
std::cout << "Green " << _green << std::endl;
std::cout << "Blue " << _blue << std::endl;
std::cout << "===============================" << std::endl;
Sleep(30);
}
ia++;
}
i++;
}
}
зачастую пикселей 1920*1080, неужели нет способа оптимизированей?C++:void ScanPixel(int x /*Начало откуда читать пиксели позиция X*/, int y /*Начало откуда читать пиксели позиция Y*/, int maxX /*До какого пикселя читать позиция x*/, int maxY/*До какого пикселя читать позиция y*/) { for (int i = y; i < maxY + 1; i++) { for (int ia = x; ia < maxX + 1; ia++) { COLORREF RGBa = GetPixel(hdc, ia, i); int _red = GetRValue(RGBa); int _green = GetGValue(RGBa); int _blue = GetBValue(RGBa); if (_red == 255 && _green == 0&& _blue == 0) { std::cout << "Red " << _red << std::endl; std::cout << "Green " << _green << std::endl; std::cout << "Blue " << _blue << std::endl; std::cout << "===============================" << std::endl; Sleep(30); } ia++; } i++; } }
Он всеровно ничего не поймет(C++:void ScanPixel(int x /*Начало откуда читать пиксели позиция X*/, int y /*Начало откуда читать пиксели позиция Y*/, int maxX /*До какого пикселя читать позиция x*/, int maxY/*До какого пикселя читать позиция y*/) { for (int i = y; i < maxY + 1; i++) { for (int ia = x; ia < maxX + 1; ia++) { COLORREF RGBa = GetPixel(hdc, ia, i); int _red = GetRValue(RGBa); int _green = GetGValue(RGBa); int _blue = GetBValue(RGBa); if (_red == 255 && _green == 0&& _blue == 0) { std::cout << "Red " << _red << std::endl; std::cout << "Green " << _green << std::endl; std::cout << "Blue " << _blue << std::endl; std::cout << "===============================" << std::endl; Sleep(30); } ia++; } i++; } }
Это стандартный wingdi, полный метод оптимизированый и быстрый думаю не кто не скинетзачастую пикселей 1920*1080, неужели нет способа оптимизированей?
RGBQUAD* GetScreenshot() {
HWND hDesktopWnd = GetDesktopWindow();
HDC hDesktopDC = GetDC(hDesktopWnd);
HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);
DWORD nScreenWidth = GetSystemMetrics(SM_CXSCREEN), nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
HBITMAP hCaptureBitmap = CreateCompatibleBitmap(hDesktopDC, nScreenWidth, nScreenHeight);
SelectObject(hCaptureDC, hCaptureBitmap);
BitBlt(hCaptureDC, 0, 0, nScreenWidth, nScreenHeight, hDesktopDC, 0, 0, SRCCOPY | CAPTUREBLT);
BITMAPINFO bmi = { 0 };
bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);
bmi.bmiHeader.biWidth = nScreenWidth;
bmi.bmiHeader.biHeight = nScreenHeight;
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biCompression = BI_RGB;
RGBQUAD* pPixels = new RGBQUAD[nScreenWidth * nScreenHeight];
GetDIBits(
hCaptureDC,
hCaptureBitmap,
0,
nScreenHeight,
pPixels,
&bmi,
DIB_RGB_COLORS
);
ReleaseDC(hDesktopWnd, hDesktopDC);
DeleteDC(hCaptureDC);
DeleteObject(hCaptureBitmap);
return pPixels;
}
Жаль реакцию не могу поставитьНу вообще, можно сделать скриншот экрана и на нём уже искать пиксели, это будет быстрее чем использовать GetPixel:
(Главное не забыть delete[] массив после использования, иначе будет мемлик)C++:RGBQUAD* GetScreenshot() { HWND hDesktopWnd = GetDesktopWindow(); HDC hDesktopDC = GetDC(hDesktopWnd); HDC hCaptureDC = CreateCompatibleDC(hDesktopDC); DWORD nScreenWidth = GetSystemMetrics(SM_CXSCREEN), nScreenHeight = GetSystemMetrics(SM_CYSCREEN); HBITMAP hCaptureBitmap = CreateCompatibleBitmap(hDesktopDC, nScreenWidth, nScreenHeight); SelectObject(hCaptureDC, hCaptureBitmap); BitBlt(hCaptureDC, 0, 0, nScreenWidth, nScreenHeight, hDesktopDC, 0, 0, SRCCOPY | CAPTUREBLT); BITMAPINFO bmi = { 0 }; bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader); bmi.bmiHeader.biWidth = nScreenWidth; bmi.bmiHeader.biHeight = nScreenHeight; bmi.bmiHeader.biPlanes = 1; bmi.bmiHeader.biBitCount = 32; bmi.bmiHeader.biCompression = BI_RGB; RGBQUAD* pPixels = new RGBQUAD[nScreenWidth * nScreenHeight]; GetDIBits( hCaptureDC, hCaptureBitmap, 0, nScreenHeight, pPixels, &bmi, DIB_RGB_COLORS ); ReleaseDC(hDesktopWnd, hDesktopDC); DeleteDC(hCaptureDC); DeleteObject(hCaptureBitmap); return pPixels; }
Ну вообще, можно сделать скриншот экрана и на нём уже искать пиксели, это будет быстрее чем использовать GetPixel:
(Главное не забыть delete[] массив после использования, иначе будет мемлик)C++:RGBQUAD* GetScreenshot() { HWND hDesktopWnd = GetDesktopWindow(); HDC hDesktopDC = GetDC(hDesktopWnd); HDC hCaptureDC = CreateCompatibleDC(hDesktopDC); DWORD nScreenWidth = GetSystemMetrics(SM_CXSCREEN), nScreenHeight = GetSystemMetrics(SM_CYSCREEN); HBITMAP hCaptureBitmap = CreateCompatibleBitmap(hDesktopDC, nScreenWidth, nScreenHeight); SelectObject(hCaptureDC, hCaptureBitmap); BitBlt(hCaptureDC, 0, 0, nScreenWidth, nScreenHeight, hDesktopDC, 0, 0, SRCCOPY | CAPTUREBLT); BITMAPINFO bmi = { 0 }; bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader); bmi.bmiHeader.biWidth = nScreenWidth; bmi.bmiHeader.biHeight = nScreenHeight; bmi.bmiHeader.biPlanes = 1; bmi.bmiHeader.biBitCount = 32; bmi.bmiHeader.biCompression = BI_RGB; RGBQUAD* pPixels = new RGBQUAD[nScreenWidth * nScreenHeight]; GetDIBits( hCaptureDC, hCaptureBitmap, 0, nScreenHeight, pPixels, &bmi, DIB_RGB_COLORS ); ReleaseDC(hDesktopWnd, hDesktopDC); DeleteDC(hCaptureDC); DeleteObject(hCaptureBitmap); return pPixels; }
Самый простой вариант, GetPixel(hdc, x, y); , вместо x/y вводишь кординату по которой нужно узнать цвет пикселя. формат будет COLORREF что-бы перевести в RGB используй GetRValue(); GetGValue(); GetBValue();так как я могу найти код цвета, который я хочу
rffСамый простой вариант, GetPixel(hdc, x, y); , вместо x/y вводишь кординату по которой нужно узнать цвет пикселя. формат будет COLORREF что-бы перевести в RGB используй GetRValue(); GetGValue(); GetBValue();
Все экраны имеют разное разрешение.Как я могу вычислить центр экрана каждого по координате x'Y?
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz