Tôi đã thực hiện .dll mà tôi đang tiêm vào trò chơi. Nó chạy phát hiện điểm ảnh sau khi tôi nhấn alt + s nhưng lag game. Có khả năng sửa chữa nó không?Trò chơi bị lag sau khi tiêm mã của tôi
Phát hiện màu đỏ, nhấn mouse3 và trong trò chơi nó quay nhưng quá chậm và trò chơi bị chậm.
Tôi đã cố xóa Sleep() nhưng nó tụt hậu hơn. Bất kỳ đề xuất?
#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;
}
Gọi theo cách của bạn ít thường xuyên hơn? –