学习游戏辅助制作:按键精灵模拟鼠标动作防检测

2025-10-27 09:58:01

1、内容提要

    1、点到点模拟鼠标真实移动——直线   2、点到点模拟鼠标真实移动——直线+转折   3、点到点模拟鼠标真实移动——直线+振幅   4、点到点模拟鼠标真实移动——曲线

2、场景

 在mspaint画图工具中,让鼠标从点100,100  移动到点800,600

3、NO.1-点到点模拟鼠标真实移动——直线

代码1 作者:林家铺子

x1 = 800 : y1 = 600 //目标点 

x2 = 100 : y2 = 100//起始点

MoveTo x2,y2

k = (y2 - y1) / (x2 - x1)

b = y2 - k * x2

For x = x2 To x1 Step sgn(x1 - x2)  

    //sgn函数为返回表示数字符号的整数。当(x1 - x2)>0时,返回值为1.当(x1 - x2)<0时,返回值为-1.当=0时,返回值为0

    LeftDown 1

    MoveTo x, (k * x + b)

    LeftUp 1

    Delay 1

Next

4、代码2 作者:_雪狼

Call 鼠标慢慢跑(100,100,800,600,5)

Sub 鼠标慢慢跑(x1, y1, x2, y2,time1)

    Dim a, x, y, i

    x = x1 : y = y1

    a = x2 / y2

    MoveTo x1, y1

    For i = y To y2-1

        y = y + 1

        x = y * a

    LeftDown 1

     MoveTo x, y     

        Delay time1

    Next

End Sub

5、代码3-变速  作者:playandhappy 

//点到点直线移动,鼠标移动速度开始快后来越来越慢

Call 老鼠慢慢跑(100,100,800,600,100)

Sub 老鼠慢慢跑(x1,y1,x2,y2,times)

    MoveTo x1,y1

    While abs(x1-x2)>5 or abs(y1-y2)>5

        GetCursorPos x1, y1

        LeftDown 1

        MoveR (x2 - x1) / 4, (y2 - y1) / 4

        LeftUp 1

        Delay times

    Wend

    LeftDown 1

    MoveTo x2, y2

    LeftUp 1

End Sub

代码4-移动次数  作者:fuyong198010222 

//点到点直线移动,并且可以设置移动几次到达目标地点

Dim a, b, c, d ,n,t //起点(100,100),终点(800,600)

a = 100 : b = 100 : c = 800 : d = 600 

//匀速直线移动

UserVar n=100 "多少次移动到位"

UserVar t=50 "每一次移动相隔多少时间"

Call 老鼠慢慢跑()

Sub 老鼠慢慢跑

    MoveTo a, b

    Delay t

    For n

        x = (c - a) / n : y = (d - b) / n

        LeftDown 1

        MoveR x, y

        LeftUp 1

        Delay t        

    Next        

End Sub

6、代码5-移动间隔 作者:xuyuzui

MoveTo  100,100

Call 老鼠慢慢跑(800, 600, 5, 50)

Sub 老鼠慢慢跑(x, y, mousestep, mouseDelay)

    'x,y : 移动终点坐标 ' mousestep: 移动间距 'mouseDelay : 移动时间间隔(ms)

    

    Dim Xstep, Ystep

    Dim curx, cury, PianYiX, PianYiY

    GetCursorPos curx, cury

    If abs(curx - x) < mousestep And abs(cury - y) < mousestep Then 

         LeftDown 1

         MoveTo x, y

         LeftUp 1

        Exit Sub

    End If

    Xstep = (x - curx) / mousestep

    Ystep = (y - cury) / mousestep

    If abs(Xstep) > abs(Ystep) Then        

        PianYiX = mousestep * sgn(Xstep)

        PianYiY = (y - cury) / abs(Xstep)

    Else 

        PianYiX = (x - curx) / abs(Ystep)

        PianYiY = mousestep * sgn(Ystep)

    End If

     LeftDown 1

    MoveR PianYiX, PianYiY

    LeftUp 1

    Delay mouseDelay

    Call 老鼠慢慢跑(x, y, mousestep, mouseDelay)

End Sub

7、NO.2-点到点模拟鼠标真实移动——直线+转折

代码1 作者:VBS技术者

//tD几毫秒移动一点

call  鼠标慢慢跑(100,100,800,600,5)

Sub 鼠标慢慢跑(X1,Y1,X2,Y2,tD)

    Dim xl,yl,xc,yc,endx,endy,sx,sy

    Dim FORC,i

    xl=abs(clng(X1)-clng(X2))

    yl=abs(clng(y1)-clng(y2))

    EndX = X2

    EndY = Y2

    XC=1

    YC=1

    sx=x1

    sy=y1

    If clng(X1)>=clng(X2) Then

        EndX = X1

        xc = -1

    End If

    If clng(Y1)>=clng(Y2) Then

        EndY = Y1

        yc = -1

    End If 

    If xl>yl Then

        FORC = xl

    Else 

      FORC = yl

    End If 

    For i = 1 To FORC+1

        LeftDown 1

        MoveTo sx, sy

        LeftUp 1

        Delay clng(tD)

        sx = sx + xc

        sy = sy + yc

        If sx=endx Then

            xc = 0

        End If

        If sy=endy Then

            yc=0

        End If

    Next 

End Sub

8、代码2 作者:dinwidi 

//点到点直线移动,先走x轴横坐标直线,然后转折走y轴纵坐标直线,直至终点 (这是游戏里常用的单步移动的原理)

Call 老鼠慢慢跑(100,100,800,600,5)

Sub 老鼠慢慢跑(x1, y1, x2, y2, t)

   MoveTo x1,y1

    i = 0

    For abs(x1 - x2)

        LeftDown 1

        MoveTo x1+(x2-x1)/abs(x2-x1)*i,y1

        Delay t

        LeftUp 1

        i = i + 1

    Next

    i = 0

    For abs(y1 - y2)+1

        LeftDown 1

        MoveTo x2, y1 + (y2 - y1) / abs(y2 - y1) * i

        LeftUp 1

        Delay t

        i = i + 1

    Next

End Sub

NO.3-点到点模拟鼠标真实移动——直线+振动

代码 作者:lucky619486332

//点到点直线移动,移动中鼠标轻微震动 

Call 老鼠慢慢跑(100,100,800,600,50)

Sub 老鼠慢慢跑(x1, y1, x2, y2, t)

    MoveTo x1,y1

    While x2 - x1 <> 0 and y2 - y1 <> 0        

        d1 = x2 - x1 : d2 = y2 - y1

        If abs(d1) >= abs(d2) Then 

            xt = int(abs(d1 / d2))

            For xt

                LeftDown 1

                MoveR d1 / abs(d1), 0

                LeftUp 1

                Delay t

            Next

            LeftDown 1

            MoveR 0, d2 / abs(d2)

            LeftUp 1

            Delay t

        Else 

            yt=int(abs(d2 / d1))

            For yt

                LeftDown 1

                MoveR 0, d2 / abs(d2)

                LeftUp 1

                Delay t

            Next

                LeftDown 1

                MoveR d1 / abs(d1), 0

                LeftUp 1

            Delay t

        End If

        GetCursorPos x1, y1

    Wend 

End Sub

9、NO.4-点到点模拟鼠标真实移动——曲线

 代码 作者:xxx_mail

Sub 鼠标慢慢跑(x1,y1,振幅,周期)

   

    Dim x0,y0,x,y, 距离,q0,q1,r,t,a

    x0 = 100

    y0 = 100

    MoveTo x0,y0

    距离=sqr((x1-x0)^2+(y1-y0)^2)

    q1 = 角度计算((x1-x0),(y1-y0))

    pi = Atn(1)*8

    a = 距离/pi

    t=周期/pi

    For i=0 To pi step 0.001

        x=x1-距离+i*a

        y =y1+振幅*sin(i)

        q0 = 角度计算(x-x1,y-y1)

        r=sqr((x-x1)^2+(y-y1)^2)

        x =x1+r*Cos((q0+q1))

        y = y1 + r * Sin((q0 + q1))

        LeftDown 1

        MoveTo x, y

        LeftUp 1

        Delay t

    Next

End Sub

Function 角度计算(x, y)

    If x = 0 Then

        x = 0.0001

    End If

    If x > 0 and y >= 0 Then 

        角度计算 = (Atn(y / x))

    ElseIf x > 0 and y < 0 Then

        角度计算 = (Atn(y / x))+pi

    ElseIf x < 0 Then

        角度计算 = (Atn(y / x)) + pi/2

    End If  

End Function

 

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢