Я хотел создать «бота», который бы играл в простые 3D-игры. Я начал с Minecraft. Независимо от того, на сколько увеличено / уменьшено значение x или y, это вызывает ужасное движение флик с последующим вращением, когда я использовал петли) в землю и ничего более (я пытался удалить флаг MOUSEEVENTF_ABSOLUTE). Я знаю, что игра центрирует курсор в центре экрана, а затем считывает разницу при его перемещении и снова центрирует курсор. Я хочу знать, что не так с этим методом или как это сделать правильно, спасибо.
int main(){
Sleep(3000);
POINT point = showCoords();
MouseMove(point.x + 0.1, point.y);
Sleep(20);
}
POINT getCords() {
POINT point;
if (GetCursorPos(&point))
std::cout << point.x << "," << point.y << "\n";
return point;
}
void MouseMove(int x, int y){
double fScreenWidth = ::GetSystemMetrics(SM_CXSCREEN) - 1;
double fScreenHeight = ::GetSystemMetrics(SM_CYSCREEN) - 1;
double fx = x * (65535.0f / fScreenWidth);
double fy = y * (65535.0f / fScreenHeight);
INPUT Input = { 0 };
Input.type = INPUT_MOUSE;
Input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
Input.mi.dx = fx;
Input.mi.dy = fy;
::SendInput(1, &Input, sizeof(INPUT));
}