Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Game laggs after injecting my code

Tags:

c++

I made .dll which I am injecting into game. It runs pixel detection after I press alt + s but the game laggs. Is there any possibility to fix it?

It detects red color, presses mouse3 and in-game it shoots but too slow and game is lagging.

I tried to remove Sleep() but it lag more. Any suggestions?

#include <windows.h>
#include <gdiplus.h>

const int SX = GetSystemMetrics(SM_CXSCREEN);
const int SY = GetSystemMetrics(SM_CYSCREEN);

const int SCREEN_X = (SX/2);
const int SCREEN_Y = (SY/2);
const COLORREF red=RGB(255, 0, 0);
const int Sound[]={SND_ALIAS_SYSTEMASTERISK,SND_ALIAS_SYSTEMEXCLAMATION};
const int State[]={MOUSEEVENTF_MIDDLEDOWN,MOUSEEVENTF_MIDDLEUP};

bool PixelCheck(HDC hdc)
{
    time_t stop=GetTickCount()+50;
    bool result=false;
    while(GetTickCount()<stop) if(GetPixel(hdc,SCREEN_X,SCREEN_Y) == red) result=true;
    Sleep(1);
    return result;
}

DWORD WINAPI ThreadFunction(PVOID pvParam)
{
    HDC hdc=GetDC(0);
    bool shotbot=false,isdown=false;
    INPUT ip;
    ip.type=INPUT_MOUSE;
    ip.mi.dx=0;
    ip.mi.dy=0;
    ip.mi.dwExtraInfo=0;
    while(true)
    {
        if(GetAsyncKeyState(0xA4) && GetAsyncKeyState(0x53))
        {
            shotbot=!shotbot;
            PlaySound((LPCSTR)Sound[shotbot],NULL,SND_ALIAS_ID);
        }
        Sleep(1);
        if((shotbot&&PixelCheck(hdc))||isdown)
        {
            ip.mi.dwFlags=State[isdown];
            SendInput(1,&ip,sizeof(INPUT));
            isdown=!isdown;
        }
    }
    ReleaseDC(0, hdc);
    return 0;
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) 
{
    if(fdwReason==DLL_PROCESS_ATTACH) SetThreadPriority(CreateThread(0,0,ThreadFunction,0,0,NULL),THREAD_PRIORITY_NORMAL);
    return TRUE;
}
like image 842
deepspace Avatar asked Dec 03 '12 15:12

deepspace


1 Answers

You're doing nothing but call GetPixel() for 50 milliseconds. That's a 50 millisecond lag right there. What did you expect?

Removing the Sleep call just means you lag more often, and each time still for 50 milliseconds. That too is expected.

like image 98
MSalters Avatar answered Sep 28 '22 07:09

MSalters