Nakierowywanie myszki na odpowiednie punkty na ekranie

Nakierowywanie myszki na odpowiednie punkty na ekranie
GO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 148
0

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:

Kopiuj
        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.

GO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 148
0

Okazało się, że gra używa Raw Input i trzeba było wyłączyć tą opcję w ustawieniach. Chciałbym jednak, żeby program działał nawet kiedy Raw Input jest włączone. Jak to zrobić?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.