您的位置首页百科知识

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

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

的有关信息介绍如下:

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

有些游戏会检测到鼠标动作.频繁相同的点击很容易让游戏检测到我们使用了按键,这样的情况下,我们需要模拟鼠标移动,让鼠标像真是手动操作一样,慢慢的移动到终点。论坛里的一位大牛:we似曾相识曾经开展了"老鼠慢慢跑"的比赛征集帖,收集了各式各样模拟鼠标移动的代码,我们一起来看看~~~

内容提要

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

场景

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

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

代码1作者:林家铺子

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

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

MoveTox2,y2

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

b=y2-k*x2

Forx=x2Tox1Stepsgn(x1-x2)

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

LeftDown1

MoveTox,(k*x+b)

LeftUp1

Delay1

Next

代码2作者:_雪狼

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

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

Dima,x,y,i

x=x1:y=y1

a=x2/y2

MoveTox1,y1

Fori=yToy2-1

y=y+1

x=y*a

LeftDown1

MoveTox,y

Delaytime1

Next

EndSub

代码3-变速作者:playandhappy

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

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

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

MoveTox1,y1

Whileabs(x1-x2)>5orabs(y1-y2)>5

GetCursorPosx1,y1

LeftDown1

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

LeftUp1

Delaytimes

Wend

LeftDown1

MoveTox2,y2

LeftUp1

EndSub

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

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

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

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

//匀速直线移动

UserVarn=100"多少次移动到位"

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

Call老鼠慢慢跑()

Sub老鼠慢慢跑

MoveToa,b

Delayt

Forn

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

LeftDown1

MoveRx,y

LeftUp1

Delayt

Next

EndSub

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

MoveTo100,100

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

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

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

DimXstep,Ystep

Dimcurx,cury,PianYiX,PianYiY

GetCursorPoscurx,cury

Ifabs(curx-x)

LeftDown1

MoveTox,y

LeftUp1

ExitSub

EndIf

Xstep=(x-curx)/mousestep

Ystep=(y-cury)/mousestep

Ifabs(Xstep)>abs(Ystep)Then

PianYiX=mousestep*sgn(Xstep)

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

Else

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

PianYiY=mousestep*sgn(Ystep)

EndIf

LeftDown1

MoveRPianYiX,PianYiY

LeftUp1

DelaymouseDelay

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

EndSub

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

代码1作者:VBS技术者

//tD几毫秒移动一点

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

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

Dimxl,yl,xc,yc,endx,endy,sx,sy

DimFORC,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

Ifclng(X1)>=clng(X2)Then

EndX=X1

xc=-1

EndIf

Ifclng(Y1)>=clng(Y2)Then

EndY=Y1

yc=-1

EndIf

Ifxl>ylThen

FORC=xl

Else

FORC=yl

EndIf

Fori=1ToFORC+1

LeftDown1

MoveTosx,sy

LeftUp1

Delayclng(tD)

sx=sx+xc

sy=sy+yc

Ifsx=endxThen

xc=0

EndIf

Ifsy=endyThen

yc=0

EndIf

Next

EndSub

代码2作者:dinwidi

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

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

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

MoveTox1,y1

i=0

Forabs(x1-x2)

LeftDown1

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

Delayt

LeftUp1

i=i+1

Next

i=0

Forabs(y1-y2)+1

LeftDown1

MoveTox2,y1+(y2-y1)/abs(y2-y1)*i

LeftUp1

Delayt

i=i+1

Next

EndSub

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

代码作者:lucky619486332

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

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

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

MoveTox1,y1

Whilex2-x1<>0andy2-y1<>0

d1=x2-x1:d2=y2-y1

Ifabs(d1)>=abs(d2)Then

xt=int(abs(d1/d2))

Forxt

LeftDown1

MoveRd1/abs(d1),0

LeftUp1

Delayt

Next

LeftDown1

MoveR0,d2/abs(d2)

LeftUp1

Delayt

Else

yt=int(abs(d2/d1))

Foryt

LeftDown1

MoveR0,d2/abs(d2)

LeftUp1

Delayt

Next

LeftDown1

MoveRd1/abs(d1),0

LeftUp1

Delayt

EndIf

GetCursorPosx1,y1

Wend

EndSub

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

代码作者:xxx_mail

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

Dimx0,y0,x,y,距离,q0,q1,r,t,a

x0=100

y0=100

MoveTox0,y0

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

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

pi=Atn(1)*8

a=距离/pi

t=周期/pi

Fori=0Topistep0.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))

LeftDown1

MoveTox,y

LeftUp1

Delayt

Next

EndSub

Function角度计算(x,y)

Ifx=0Then

x=0.0001

EndIf

Ifx>0andy>=0Then

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

ElseIfx>0andy<0Then

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

ElseIfx<0Then

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

EndIf

EndFunction