Программирование Windows API - PullRequest
1 голос
/ 01 мая 2010

Это я Виджай ..

Я пытаюсь сделать CrossHair (своего рода курсор) на экране во время игры (Counter Strike) ...

так что я сделал это ...

#############################

#include<iostream.h>
#include<windows.h>
#include<conio.h>
#include<dos.h>
#include<stdlib.h>
#include<process.h>
#include <time.h>
int main ()
{
HANDLE hl = OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid); // Здесь pid - идентификатор процесса игры ...
HDC hDC = GetDC(NULL); // Здесь я передаю NULL для всего экрана ...
HBRUSH hb=CreateSolidBrush(RGB(0,255,255)); SelectObject(hDC,hb); POINT p; while(!kbhit())
{
int x=1360/2,y=768/2;
MoveToEx(hDC,x-20,y,&p);
LineTo(hDC,x+20,y);

       SetPixel(hDC,x,y,RGB(255,0,0));
       SetPixel(hDC,x-1,y-1,RGB(255,0,0));
       SetPixel(hDC,x-1,y+1,RGB(255,0,0));
       SetPixel(hDC,x+1,y+1,RGB(255,0,0));
       SetPixel(hDC,x+1,y-1,RGB(255,0,0));

       MoveToEx(hDC,x,y-20,&p);

       LineTo(hDC,x,y+20);                         
}

cin.get();
return 0;

} ####################################

работает нормально .... на рабочем столе я вижу перекрестье ... но моя проблема в том, что когда я запускаю игру ... крест здесь исчез ...

так что я думаю, что не справился с процессом игры ...

поэтому я передаю РУЧКУ в GetDC (гл) ...

Но GetDC принимает только HWND (Handle To Window) ...

так что я приведу это так ...

HWND hl = (HWND) OpenProcess (PROCESS_ALL_ACCESS, TRUE, pid);

и передал hl в GetDC (hl) ...

но это не работает ... Что не так с кодом ...

плз, скажите, как мне сделать простую фигуру на экране процесса или игры ...

PS: (Мой компилятор - DevCPP и ОС WinXP SP3 ....)

Ответы [ 3 ]

3 голосов
/ 01 мая 2010

То, что вы делаете, пытается подключиться к игре, что само по себе является подвигом.

Я не уверен, что Counter-Strike запускает OpenGL или DirectX (может зависеть от вашей версии, я видел ссылки на нее, используя оба), но лучше всего обернуть весь контекст / устройство OpenGL / DirectX и обрабатывать команды. Затем вы можете нарисовать четырехугольник или полоску курсора непосредственно перед отправкой каждого кадра на экран.

Это было сделано много раз прежде, как для законных приложений (Morrowind Graphics Extender и NWShader), так и для читов (wallhacks и тому подобное). У Google есть множество советов по основам игры.

Редактировать: И вы, вероятно, не сможете сделать это, схватив контекст, так как вам нужно рисовать в игре, используя 3d API (или его 2-ю часть). ). Скорее всего, вам придется создать альтернативный файл OpenGL32.dll или d3d8 / d3d9.dll, специально предназначенный для этой игры и того, что вы хотите сделать. Завершение всего этого, будь то OpenGL или D3D, занимает некоторое время, поэтому вы можете поискать код, который уже это делает. Вам нужно будет знать, что вы упаковываете и как работает игра, поэтому такие программы, как GLIntercept или PIX, очень помогут.

0 голосов
/ 20 июля 2010

Боюсь, что это не так просто сделать, Windows GDI не будет работать для этого, но он идеально подходит для 2D-игр, таких как Gunbound.

В компьютерных играх, таких как Counter-Strike, для рисования графики используется API-интерфейс 3D-графики, обычно это OpenGL (например, CS Source для Mac OS X) или DirectX (CS Source для Windows). Это означает, что вам придется использовать один из них, чтобы рисовать прицел в игре.

В образовательных целях я предлагаю прочитать это: http://www.associatepublisher.com/e/w/wa/wallhacking.htm

Существует множество учебных пособий, которые могут помочь вам достичь того, что вы ищете.

0 голосов
/ 01 мая 2010

ОК, просто остановись. Остановись прямо сейчас. Valve крайне раздражительны в отношении людей, подключающихся к своим онлайн-играм, потому что это позволяет использовать читы, такие как wallhacks. Поэтому они затруднили что-то подобное, и вы, вероятно, будете забанены за то, что даже пытались это сделать.

Было бы намного проще просто изменить текстуру для перекрестия и использовать ее - это займет гораздо меньше времени, будет легче сделать и вас не забанят.

Примечание. Существует метод создания хаков, в котором вы заменили файл opengl32.dll собственным файлом (на который ссылается peachykeen), и он широко использовался для Counterstrike 1.6. Тем не менее, Valve стал мудрым и забанил всех, кто его использовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...