dynamische menschlich aussehende mausbewegungen?

  • hi
    ich moechte eine dynamische mausbewegung von punkt zu punkt machen die menschlich aussieht.
    ich denke gut eignen dafuer wird sich eine mathematische loesung mit kreisen oder besser ovalen die sehr gross sind (5x bildschirm oder so) und daraus einen teil als kurve fuer die maus zu verwenden(vielleicht auch nur einen teil der strecke um es noch "menschlicher" zu machen)
    nur leider finde ich die funktionen dafuer nicht unter maths functions in der autoit help datei.
    bin mir fast sicher dass autoit so etwas kann nur finde ich es nicht.
    vielen dank fuer eure hilfe, mar bobley
    //edit: hab die loesung doch noch hier im forum gefunden: [ gelöst ] Dynamischen Kreis zeichnen bzw mit MouseMove abfahren?
    verstehs zwar noch nicht aber wird schon noch und den rest krieg ich dann auch zusammengebastelt

    Einmal editiert, zuletzt von Mar Bobley (18. August 2009 um 00:08)

    • Offizieller Beitrag

    Hi,

    vielleicht hilft dir aus noch

    Spoiler anzeigen
    [autoit]

    ;WinMinimizeAll()
    ;mousemovereal(0,0,3,0,1)
    ;mousemovereal(200,200,3,0,1)
    ;mouseclickreal("left",50,100,1,1,0,1)
    ;mouseclickdragreal("left",100,100,400,400,1,1,10,0)
    ;mousedownreal("left")
    ;mousemovereal(600,600,1,0,1)
    ;mouseupreal("left")
    ;WinMinimizeAllUndo()
    Testreal2(1, 1);1=X ,2=Y ,3=Speed << How higher , how faster
    ; Note : 1 = x goto.
    ; 2 = y goto.
    ; 3 = Speed behide steps
    ; 4 = The total of steps .. For a nice example use speed 10 and steps 2
    ; 5 = automatic makes a the good step number. 1 to enable , 0 to disable
    ;This is named "Mousemovereal", something which simulates a normally moving mouse cursor. Be honest,
    ;how many times do you draw a straight line from point a to point b?
    ; If you're lucky, that means if blizzard is running a detector you don't want to be making perfect straight lines all the time.
    ;This function moves your mouse to the desired position, but not in a straight line
    ;
    ;dit is mousemovereal dat betekend dat het een echte mousemove na maakt , want zeg zelf , hoe vaak
    ;trek je een rechte lijn van a tot b ? soms als je een keer mazzel hebt , dus als blizzard een
    ;detector heeft draaien moet je niet altijd een perfecte rechte lijn maken , daarom gebruik deze funcie
    ;deze is niet recht maar gaat wel naar gewenste posietie
    ;
    ;This is mouseclickreal , this is the same as mousemovereal but then with click funcion , parameters 1=Button 2=x 3=y 4=speed 5=nubclick 6=steps

    [/autoit] [autoit][/autoit] [autoit]

    Func mousemovereal($x, $y, $speed, $steps, $Auto)
    ; The mousemover , but he dont make a perfect line :)
    Dim $q[2]
    $q[0] = $x
    $q[1] = $y
    $p = MouseGetPos()
    $len = Sqrt(($p[0] + $q[0]) * ($p[0] + $q[0])) + (($p[1] + $q[1]) * ($p[1] + $q[1]))
    If $Auto = 1 Then
    $steps = $len / 2000
    ToolTip("Auto Steps :" & $steps)
    EndIf
    $mousestart = MouseGetPos()
    For $i = 1 To $steps
    MouseMove(($p[0] + ($i * ($q[0] - $p[0]) / $steps)) + Random(Random(-2, 0), Random(0, 2)), $p[1] + ($i * ($q[1] - $p[1]) / $steps) + Random(Random(-2, 0), Random(0, 2)), $speed)
    $Secondmove = MouseGetPos()
    Next
    MouseMove($x, $y, $speed)
    EndFunc ;==>mousemovereal
    Func mouseclickreal($button, $x, $y, $speed, $Nubofclicks, $steps, $Auto)
    ;A mouseclick without a perfect line mouse move :)
    mousemovereal($x, $y, $speed, $steps, $Auto)
    $pos = MouseGetPos()
    MouseClick($button, $pos[0], $pos[1], $Nubofclicks)
    EndFunc ;==>mouseclickreal
    Func mouseclickdragreal($button, $x, $y, $x2, $y2, $speed, $Nubofclicks, $steps, $Auto)
    ;Drag with a real mouse move :) , How mutch time you move your mouse really in a perfect line ? , why you shall do it perfect in drag?
    mousemovereal($x, $y, $speed, $steps, $Auto)
    MouseDown($button)
    mousemovereal($x2, $y2, $speed, $steps, $Auto)
    MouseUp($button)
    EndFunc ;==>mouseclickdragreal
    Func mousedownreal($button)
    ;Maby its sicko , but do you click your mouse without a little mouse move ?
    $pos = MouseGetPos()
    MouseMove($pos[0] - Random(Random(-2, 0), Random(0, 2)), $pos[1] - Random(Random(-2, 0), Random(0, 2)), 1)
    MouseDown($button)
    EndFunc ;==>mousedownreal
    Func mouseupreal($button)
    ;Maby its sicko , but do you click your mouse without a little mouse move ?
    $pos = MouseGetPos()
    MouseMove($pos[0] - Random(Random(-2, 0), Random(0, 2)), $pos[1] - Random(Random(-2, 0), Random(0, 2)), 1)
    MouseUp($button)
    EndFunc ;==>mouseupreal
    ;\/ = beta , alpha
    ; This here under is beta testing , TestReal Works..
    ; \/ = beta , alpha
    Func TestReal($x, $y)
    Dim $q[2]
    $q[0] = $x
    $q[1] = $y
    $p = MouseGetPos()
    $len = Sqrt(($p[0] + $q[0]) * ($p[0] + $q[0])) + (($p[1] + $q[1]) * ($p[1] + $q[1]))
    $steps = $len / 1000
    ToolTip("Auto Steps :" & $steps)
    Sleep(5000)
    $mousestart = MouseGetPos()
    For $i = 1 To $steps
    MouseMove(($p[0] + ($i * ($q[0] - $p[0]) / $steps)) + Random(Random(-2, 0), Random(0, 2)), $p[1] + ($i * ($q[1] - $p[1]) / $steps) + Random(Random(-2, 0), Random(0, 2)), 1)
    $s = MouseGetPos()
    ToolTip("Auto Steps :" & Sqrt(($s[0] + $q[0]) * ($s[0] + $q[0])) + (($s[1] + $q[1]) * ($s[1] + $q[1])) / 1000, 0, 05)
    Next
    MouseMove($x, $y, 1)
    EndFunc ;==>TestReal
    Func TestReal2($x, $y)
    $do = 1
    Dim $q[2]
    $q[0] = $x
    $q[1] = $y
    $p = MouseGetPos()
    $len = Sqrt(($p[0] + $q[0]) * ($p[0] + $q[0])) + (($p[1] + $q[1]) * ($p[1] + $q[1]))
    $steps = $len / 1000
    $Random = Random(0, 1)
    ToolTip("Auto Steps :" & $steps & "|random :" & $Random)
    $do = 0
    If $Random > 1.75 Then
    $do = 1
    EndIf
    ;sleep(5000)
    If $do = 1 Then
    Dim $r[2]
    Dim $s[2]
    $s[0] = $p[0] / (+(Cos($q[1]) * 2))
    $s[1] = $p[1] / (+(Cos($q[0]) * 2))
    $r[0] = $q[0] / (+(Cos($p[1]) * 2))
    $r[1] = $q[1] / (+(Cos($p[0]) * 2))
    $max = Random(-$steps, $steps)
    For $count = 1 To +$max
    $i = $max
    MouseMove(($s[0] + ($i * ($r[0] - $s[0]) / $steps)) + Random(Random(-2, 0), Random(0, 2)), $s[1] + ($i * ($r[1] - $s[1]) / $steps) + Random(Random(-2, 0), Random(0, 2)), 1)
    ToolTip("Auto Steps :" & Sqrt(($s[0] + $q[0]) * ($s[0] + $q[0])) + (($s[1] + $q[1]) * ($s[1] + $q[1])) / 1000, 0, 05)
    Next
    Return TestReal2($q[0], $q[1])
    EndIf
    $mousestart = MouseGetPos()
    For $i = 1 To $steps
    MouseMove(($p[0] + ($i * ($q[0] - $p[0]) / $steps)) + Random(Random(-2, 0), Random(0, 2)), $p[1] + ($i * ($q[1] - $p[1]) / $steps) + Random(Random(-2, 0), Random(0, 2)), 1)
    $s = MouseGetPos()
    ToolTip("Auto Steps :" & Sqrt(($s[0] + $q[0]) * ($s[0] + $q[0])) + (($s[1] + $q[1]) * ($s[1] + $q[1])) / 1000, 0, 05)
    Next
    EndFunc ;==>TestReal2

    [/autoit]

    Mega