Witam,
Piszę program który znajduje punkty określonego koloru na ekranie i nakierowuje na nie kursor. Generalnie wszystko działa jak powinno w zwykłych aplikacjach, takich jak przeglądarki internetowe, edytory tekstu itp. Problem pojawia się w grach FPC (wykorzystujących widok z pierwszej osoby), w których kursor jest zazwyczaj zablokowany na środku ekranu, a ruch myszką powoduje obrócenie się postaci. W takim wypadku chcę, żeby postać obróciła się tak, żeby punkt znalazł się w centrum ekranu (coś jak aimboty w strzelankach - nakierowywanie celownika na przeciwnika). Jak tego dokonać? Próbowałem wszystkiego co mi wpadło do głowy - Cursor.Position
, SetCursorPos(...)
, SendInput
, mouseevent
, przy czym tylko ta ostatnia funkcja robi cokolwiek (reszta zupełnie nic), tzn. porusza myszkę, ale zupełnie nie tak jak powinna. Nie mam już pomysłów jak rozwiązać ten problem :/ Mój obecny kod:
public static void MoveTo(float x, float y)
{
float min = 0;
float max = UInt16.MaxValue;
int mappedX = (int)Remap(x, 0.0f, Screen.PrimaryScreen.Bounds.Width, min, max);
int mappedY = (int)Remap(y, 0.0f, Screen.PrimaryScreen.Bounds.Height, min, max);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, mappedX, mappedY, 0, 0);
}
public static float Remap(float value, float from1, float to1, float from2, float to2)
{
return (value - from1) / (to1 - from1) * (to2 - from2) + from2;
}
Proszę o pomoc.