AutoIT [RISOLTO] Mousemove fullscreen

Stato
Discussione chiusa ad ulteriori risposte.

xEviiLx

Utente Jade
15 Gennaio 2012
1,634
109
397
814
In sintesi devo far muovere il mouse verso un pixel, ma quando trovo il pixel alle coordinate X Y ed essendo fullscreen quindi le coordinate sono "fisse", la visuale mi fa un giro a 360°
Come risolvo?
 
Sì, mi sono spiegato abbastanza male :asd: .
Il mio problema è il seguente:
Visto che non ho nulla da fare sto tentando di creare un Aimbot/Pexelbot/TriggerBot o come vuoi chiamarlo... Praticamente muovo il mouse verso le coordinate del pixel (quindi verso il coloro che mi serve) e fin qui tutto bene, il codice funziona e tutto; il problema vero è quando sono sul client (fullscreen, ingame), trovato il pixel la visuale mi va verso il cielo o da tutt'altra parte.
 
Quindi il gioco ha un sistema di telecamera principale che si orienta in base alla posizione del mouse?

Per capirci: se muovi il mouse si muove la visuale? Stile Prima persona?



PS: il gioco è S4L?
 
  • Mi piace
Reazioni: xEviiLx
Ultima modifica:
Non so come l'hai pensato ne tantomeno come hai scritto il codice, ma da quanto ho capito sembra che hai problemi di coordinate.
Nel primo caso(non in-game) hai un sistema di riferimento che combacia effettivamente con il tuo schermo(hai quindi un sistema "fisso"). Quindi un pixel della finestra in posizione (x,y) si trova esattamente nella posizione (x,y) del tuo schermo reale.
Nel secondo caso invece hai che un pixel si trova in certa (x,y) posizione rispetto allo schermo, e nel momento che ti muovi un attimo quel pixel assume una posizione diversa poichè il sistema di riferimento si è mosso. Ad esempio, se hai un pixel in posizione (x,y) e muovi il mouse orizzontalmente quel pixel si troverà alla posizione (x+offset,y) dove offset è appunto lo spostamento lungo l'asse x rispetto a una certa posizione. Probabilmente dato che il sistema si muove sempre, il tuo programma continua a cercare il pixel in quella direzione. Motivo per il quale fa un giro di 360°.

Con le informazioni che hai dato si può solo supporre ed immaginare. Senza un minimo di codice è difficile capire quale possa essere il problema. Ad esempio mi viene da pensare che ci possa essere anche un problema nella funzione che usi per muovere il puntatore, poichè S4 ha una telecamera che praticamente segue sempre il tuo mouse
 
  • Mi piace
Reazioni: xEviiLx
Accade esattamente quello che hai descritto.
Ecco il codice:
Codice:
#include <Misc.au3>
#include <WinAPI.au3>

#RequireAdmin

Opt("MouseCoordMode", 2)
Opt("PixelCoordMode", 2)

Global $dll = DllOpen("user32.dll")

HotKeySet("{F1}","start")

while 1
    Sleep(500)
WEnd

func start()
    MsgBox(0,"","")
    $color = 0x000000
    While 1
        $pos = MouseGetPos()
        $pixel = PixelSearch(($pos[0] - 50) , ($pos[1] - 50) , ($pos[0] + 50) , ($pos[1] + 50),$color)
            if IsArray($pixel) = True Then
                if _IsPressed("02",$dll) Then
                    MouseMove($pixel[0],$pixel[1])
                    EndIf
            EndIf
        if _IsPressed("1B",$dll) Then
            Exit
        EndIf

    WEnd
EndFunc
 
Accade esattamente quello che hai descritto.
Ecco il codice:
Codice:
#include <Misc.au3>
#include <WinAPI.au3>

#RequireAdmin

Opt("MouseCoordMode", 2)
Opt("PixelCoordMode", 2)

Global $dll = DllOpen("user32.dll")

HotKeySet("{F1}","start")

while 1
    Sleep(500)
WEnd

func start()
    MsgBox(0,"","")
    $color = 0x000000
    While 1
        $pos = MouseGetPos()
        $pixel = PixelSearch(($pos[0] - 50) , ($pos[1] - 50) , ($pos[0] + 50) , ($pos[1] + 50),$color)
            if IsArray($pixel) = True Then
                if _IsPressed("02",$dll) Then
                    MouseMove($pixel[0],$pixel[1])
                    EndIf
            EndIf
        if _IsPressed("1B",$dll) Then
            Exit
        EndIf

    WEnd
EndFunc
È necessario far riferimento al punto di arrivo dello sparo e al pixel che vuoi raggiungere. Le telecamere in prima persona hanno sempre una direzione prefissata che punta di solito al centro dell schermata. Da quanto ricordo, In s4 ogni volta che spari questo colpo va sempre al centro della posizione assoluta della schermata, correggimi se sbaglio dato che non ci gioco da un paio di anni. L'obiettivo quindi è portare un qualsiasi oggetto(pixel in questo caso) al centro della schermata.

Se il pixel che hai trovato si trova nella posizione (x,y) rispetto all'origine che è il punto in alto a sinistra, significherà che per raggiungere il centro la telecamera dovrà muoversi secondo una certa legge. Questa è la condizione di partenza:
1
|
2__C
dove 1 l'origine assoluta in alto a sx, 2 è la y e C la x(il tutto rispetto all'origine). Quindi il punto C sarebbe il centro della schermata.

A questo punto se trovi un pixel(per semplicità sia nello stesso asse orizzontale del centro) e vuoi che la telecamera si muova, avrai questa condizione:

1
|
|
2___P___C

Dove P è il pixel, avrà una certa posizione(x,y) rispetto all'origine 1. A questo punto lo spostamento da fare è
Sx = -(Cx - Px)
Sy = -(Cy - Py)
 
  • Mi piace
Reazioni: xEviiLx
Ho più o meno capito il ragionamento, mi ero anche informato sulle coordinate assolute, ma ancora non ne vengo a capo. Magari sto sbagliando io qualcosa visto che sistemando il codice come da te suggerito il problema persiste...
Se hai skype puoi aggiungermi? (xevvilx)
 
Ho più o meno capito il ragionamento, mi ero anche informato sulle coordinate assolute, ma ancora non ne vengo a capo. Magari sto sbagliando io qualcosa visto che sistemando il codice come da te suggerito il problema persiste...
Se hai skype puoi aggiungermi? (xevvilx)
Può essere che abbia sbagliato, non ho ben presente la telecamera di s4league

skype: giotti_97
 
Stato
Discussione chiusa ad ulteriori risposte.