您现在的位置是:首页 > 互联网 > 正文

qq游戏对对碰道具是什么意思(QQ游戏对对碰外挂教程)

发布时间:2022-06-13 14:15:46来源:

导读 大家好,小太来为大家解答以上问题。qq游戏对对碰道具是什么意思,QQ游戏对对碰外挂教程这个很多人还不知道,现在让我们一起来看看吧!这些

大家好,小太来为大家解答以上问题。qq游戏对对碰道具是什么意思,QQ游戏对对碰外挂教程这个很多人还不知道,现在让我们一起来看看吧!

这些日子,QQ游戏外挂是风光了一阵。

俄罗斯方块,连连看,对对碰这些游戏的外挂层出不穷。

其实这一类外挂的原理大体都是一样的。

下面我就以即时通信软件游戏对对碰外挂作为例子阐述一下即时通信软件外挂的制作原理。

观察即时通信软件游戏对对碰的游戏界面及游戏规则,发现玩家是在固定的一个游戏区内寻找复合要求的方块然后点击两次鼠标消去方块从而达到得分的目的。

因此,我们可以通过模拟人的观察,和鼠标点击来实现外挂自动消除方块,完成全局。

取得可消方块(模拟人观察):要判断哪个方块可以消,我们可以通过获取方块某点的颜色来判断方块的类型,然后建立方块矩阵,然后在矩阵中选择出适合消去的方块。

关于取颜色,我们用到几个应用程序接口函数GetPixel、GetDC、ReleaseDC。

(详细的介绍请参考微软官方或各种应用程序接口相关资料)模拟鼠标击:在此我们使用鼠标_事件来模拟鼠标的移动,点击,弹起。

个人认为用邮件是更好的,在此使用鼠标_事件只是为了阐述简单。

下面是动词实现代码(带详细注释):'模块中'*************模块:modMain**************作者:西里尔'Email:terry6394@126.com网站:加州州立大学。

'com/其他'书写日期:2004.10.23'编辑日期:2002.10.23'转载请保留此信息'版权所有西里尔405工作室************************************************选项显式应用程序接口声明公共声明函数FindWindow库'user32'别名FindWindowA'(ByVallpClassName为字符串,ByVallpWindowName为字符串)作为长的公共声明函数SetWindowPos库“用户32”(ByValhwnd为ByValhWndInsertAfter长为ByValx为ByValy为ByValcx长为龙,ByValcy为长,ByValwFlags一样长)私有声明函数screento客户端库“用户32”(ByValhwnd为Long,lpPoint为POINTAPI)为Long私有声明submouse_eventLib'user32'(ByValdw标志为Long,ByValdx为Long,ByValdy为Long,ByValcButtons为Long,ByValdwExtraInfo为Long)私有声明函数ReleaseDC库“用户32”(ByValhwndAsLong,ByValhdc一样长)私有声明函数GetCursorPos库“用户32”(LP点作为POINTAPI)一样长私有声明函数SetCursorPosLib“用户32”(ByValx一样长,ByValy一样长)一样长私有声明函数GetPixelLib'GDI32'(ByValhdcAsLong,ByValxAsLong,ByValyAsLong)AsLong私有声明函数getwindowrectLib“用户32”(ByValhwnd为Long,lpRect为rect)为Long私有声明函数GetDC库“用户32”(ByValhwndAsLong)AsLongAPI类型定义私有类型点APIx与长y一样长末端类型私有类型矩形左与长顶部一样长右与长底部一样长末端类型'方块类型定义公共枚举框_类型Ox=0狗=1熊猫=2鸡=3猫=4Frog=5Monkey=6EndEnum'自定义方块数据类型x,y位方块坐标,type为方块类型.'在Easy对对碰1.5版中还加如了一些其他属性,例如是否带道具属性.PublicTypeBOXxAsIntegeryAsIntegertypeAsBOX_TYPEEndType'Api常量'鼠标事件常量PrivateConstMOUSEEVENTF_LEFTDOWN=&H2PrivateConstMOUSEEVENTF_LEFTUP=&H4PrivateConstMOUSEEVENTF_MOVE=&H1PrivateConstMOUSEEVENTF_ABSOLUTE=&H8000PublicConstHWND_TOPMOST=-1PublicConstSWP_NOSIZE=&H1PublicConstSWP_NOMOVE=&H2'自定义常量'游戏区左上角坐标ConstGAME_LEFTAsInteger=176ConstGAME_TOPAsInteger=102'每个方块的长宽ConstBOX_WIDTHAsInteger=48ConstBOX_HEIGHTAsInteger=48'游戏窗口句柄Publicg_WindowHwndAsLong'方块矩阵(8*8)Publicboxs(7,7)AsBOX**********过程名:DelayTime******************'作者:Cyril'书写日期:2004.10.23'编辑日期:2002.10.23'目的:获取当前场景,建立方块矩阵'方法:killBox'应用于:MainMod模块'********************************************PublicFunctiongetBoxs()DimiAsInteger'矩阵行DimjAsInteger'矩阵列Dimcolor1AsLong'颜色(22,22)处Dimcolor2AsLong'颜色(22,17)处Fori=0To7Forj=0To7Withboxs(i,j).x=GAME_LEFT22BOX_WIDTH*j.y=GAME_TOP22BOX_HEIGHT*i'取每个方块坐标(22,22)和(22,17)位置的颜色color1=getColor(.x,.y)color2=getColor(.x,.y-5)'用两点颜色确定一个方块类型.Ifcolor1=16777215Andcolor2=16777215Then.type=PandaIfcolor1=2097151Andcolor2=1353909Then.type=ChickenIfcolor1=4473924Andcolor2=14209230Then.type=DogIfcolor1=13828048Andcolor2=3862322Then.type=FrogIfcolor1=8623264Andcolor2=5805536Then.type=MonkeyIfcolor1=10921638Andcolor2=9408399Then.type=CatIfcolor1=15398649Andcolor2=1655140Then.type=OxEndWithNextjNextiEndFunction为了方便理解,这里用了一种比较简单的算法--穷举法.(这也是Easy对对碰最初版本的算法).'其主要思想是列举16种消除方块的可能。

一旦有匹配的情况出现,则马上执行鼠标点击动作.'如果你要使你的外挂更强大,就必须采更优秀的算法.'**********过程名:DelayTime******************'作者:Cyril'书写日期:2004.10.23'编辑日期:2002.10.23'目的:消去一个方块'方法:killBox'说明:无'返回值:无'应用于:MainMod模块'********************************************PublicFunctionkillBox()DimiAsIntegerDimjAsIntegergetBoxs':'情况Fori=0To4Forj=0To7Ifboxs(i,j).type=boxs(i2,j).typeAndboxs(i,j).type=boxs(i3,j).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i1,j).x,boxs(i1,j).yExitFunctionEndIfNextjNexti'_'情况Fori=0To5Forj=0To6Ifboxs(i,j).type=boxs(i2,j1).typeAndboxs(i,j).type=boxs(i1,j1).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i,j1).x,boxs(i,j1).yExitFunctionEndIfNextjNexti'_'情况Fori=0To5Forj=1To7Ifboxs(i,j).type=boxs(i2,j-1).typeAndboxs(i,j).type=boxs(i1,j-1).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i,j-1).x,boxs(i,j-1).yExitFunctionEndIfNextjNexti'':情况Fori=3To7Forj=0To7Ifboxs(i,j).type=boxs(i-2,j).typeAndboxs(i,j).type=boxs(i-3,j).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i-1,j).x,boxs(i-1,j).yExitFunctionEndIfNextjNexti'_情况Fori=2To7Forj=0To6Ifboxs(i,j).type=boxs(i-1,j1).typeAndboxs(i,j).type=boxs(i-2,j1).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i,j1).x,boxs(i,j1).yExitFunctionEndIfNextjNexti'_情况Fori=2To7Forj=1To7Ifboxs(i,j).type=boxs(i-1,j-1).typeAndboxs(i,j).type=boxs(i-2,j-1).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i,j-1).x,boxs(i,j-1).yExitFunctionEndIfNextjNexti'_--情况Fori=1To7Forj=0To5Ifboxs(i,j).type=boxs(i-1,j2).typeAndboxs(i,j).type=boxs(i-1,j1).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i-1,j).x,boxs(i-1,j).yExitFunctionEndIfNextjNexti'-__情况Fori=0To6Forj=0To5Ifboxs(i,j).type=boxs(i1,j2).typeAndboxs(i,j).type=boxs(i1,j1).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i1,j).x,boxs(i1,j).yExitFunctionEndIfNextjNexti'-_-情况Fori=1To7Forj=1To6Ifboxs(i,j).type=boxs(i-1,j-1).typeAndboxs(i,j).type=boxs(i-1,j1).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i-1,j).x,boxs(i-1,j).yExitFunctionEndIfNextjNexti'_-_情况Fori=0To6Forj=1To6Ifboxs(i,j).type=boxs(i1,j-1).typeAndboxs(i,j).type=boxs(i1,j1).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i1,j).x,boxs(i1,j).yExitFunctionEndIfNextjNexti'<情况Fori=1To6Forj=1To7Ifboxs(i,j).type=boxs(i1,j-1).typeAndboxs(i,j).type=boxs(i-1,j-1).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i,j-1).x,boxs(i,j-1).yExitFunctionEndIfNextjNexti'>情况Fori=1To6Forj=0To6Ifboxs(i,j).type=boxs(i1,j1).typeAndboxs(i,j).type=boxs(i-1,j1).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i,j1).x,boxs(i,j1).yExitFunctionEndIfNextjNexti'--_情况Fori=1To7Forj=2To7Ifboxs(i,j).type=boxs(i-1,j-2).typeAndboxs(i,j).type=boxs(i-1,j-1).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i-1,j).x,boxs(i-1,j).yExitFunctionEndIfNextjNexti'---情况Fori=0To7Forj=3To7Ifboxs(i,j).type=boxs(i,j-2).typeAndboxs(i,j).type=boxs(i,j-3).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i,j-1).x,boxs(i,j-1).yExitFunctionEndIfNextjNexti'__-情况Fori=0To6Forj=2To7Ifboxs(i,j).type=boxs(i1,j-2).typeAndboxs(i,j).type=boxs(i1,j-1).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i1,j).x,boxs(i1,j).yExitFunctionEndIfNextjNexti'---情况Fori=0To7Forj=0To4Ifboxs(i,j).type=boxs(i,j2).typeAndboxs(i,j).type=boxs(i,j3).typeThenmouseClickboxs(i,j).x,boxs(i,j).ymouseClickboxs(i,j1).x,boxs(i,j1).yExitFunctionEndIfNextjNextiEndFunction这里的鼠标模拟用了鼠标事件.你也可以用sendmessage来实现.'**********过程名:DelayTime******************'作者:Cyril'书写日期:2004.10.23'编辑日期:2002.10.23'目的:模拟鼠标单击'方法:mouseClick(ByValxAsLong,ByValyAsLong)'说明:x--方块相对游戏窗口的X;y--方块相对游戏窗口的Y;'返回值:无'应用于:MainMod模块'********************************************PublicSubmouseClick(ByValxAsLong,ByValyAsLong)DimpoAsPOINTAPI'po点击前鼠标位置DimkXAsLong'方块的绝对X坐标DimkYAsLong'方块的绝对Y坐标DimwinRECTAsRECT'游戏窗口的RECT'获得游戏窗口的RECTGetWindowRectg_WindowHwnd,winRECT'绝对坐标=游戏窗口左上角坐标游戏中的相对坐标kX=winRECT.LeftxkY=winRECT.Topy'获得鼠标点击前位置GetCursorPospo'模拟鼠标移动mouse_eventMOUSEEVENTF_MOVEOrMOUSEEVENTF_ABSOLUTE,kX*65535/1024,kY*65535/768,0&,0&'模拟鼠标按下弹起mouse_eventMOUSEEVENTF_LEFTDOWNOrMOUSEEVENTF_LEFTUPOrMOUSEEVENTF_ABSOLUTE,0,0,0&,0&'点击后返回原先位置SetCursorPospo.x,po.yEndSub'**********过程名:DelayTime******************'作者:Cyril'书写日期:2004.10.23'编辑日期:2002.10.23'目的:取游戏中某点颜色'方法:getColor(ByValnewXAsLong,ByValnewYAsLong)AsLong'说明:newX--要取颜色的点的X;newY--要取颜色的点的Y;(X,Y均相对于游戏窗口)'返回值:Long'应用于:MainMod模块'********************************************PublicFunctiongetColor(ByValnewXAsLong,ByValnewYAsLong)AsLongDimwindowDCAsLong'获取游戏场景windowDC=GetDC(g_WindowHwnd)'取场景中(newX,newY)坐标的颜色getColor&n。

本文到此结束,希望对大家有所帮助。

标签:

上一篇
下一篇