C++外挂制作第二课【转】

社区服务
高级搜索
猴岛论坛辅助工具C++外挂制作第二课【转】
发帖 回复
正序阅读 最近浏览的帖子最近浏览的版块
2个回复

C++外挂制作第二课【转】

楼层直达
ゅ兔子哥

ZxID:2998095

等级: 上将
配偶: 老白兔。
音速图标啊图标6级7R!

举报 只看楼主 使用道具 楼主   发表于: 2009-06-14 0
继续上节

上节只是讲了最初级的外挂制作,利用工具,我们可以根据游戏的特性,制作出相应的简单外挂。
这一节以 武林外传助手颜色版 为例,分析如何利用颜色判断制作初级外挂。
工具: VB6.0 中文版  环境: Windows XP


先来分析下游戏:
      我们看游戏里的血条和蓝条,很容易看出,在游戏窗口不改变位置和大小时,血条和蓝条的位置是不会改变的,血和蓝减少时,血条和蓝条的背景色改变并不是很大。选定一个怪物,在取消选择,再选择一个怪物,怪物血条和蓝条也是在固定的位置,这就为我们设计颜色挂提供了最有利的条件。

设计思路:
      我们知道了游戏的血值和蓝值条位置后,就可以开始设计算法了,首先,先明确一下思路

      假如我们获取了人物血值的点,蓝值的点,怪物血值的点
      判断人物的血的颜色点是否到达我们取的点,如果低于则吃红药或打坐。
      判断人物的蓝的颜色点是否到达我们取的点,如果低于则吃蓝药或打坐。
      判断血或者蓝的颜色点是否到达人物满血或满蓝 颜色点,如果等于或高于,则继续打怪。
      判断怪物信息部分是否是指定颜色点,如果不是,则选怪,如果是,就打怪。
      判断怪物血值颜色点是否低于我们取的点,如果低于,且怪物信息部分颜色点改变,则怪物死亡。

      来看看武林中我们要取的颜色点:
         
      上面是人物的颜色取点图,图中白色的点,就是我们需要取点的地方
      人物的血减少后,血条会往左边减少,红色变成深黑色,如果背景透明,则颜色改变,不再是红色,我们可以利用此方法检测人物的血值,蓝值也是同样道理。     
      这是怪物取点图,只需要取两个点
      怪物的血减少后,如果红色到达最左边,直到血为空,那么第二个点取到的颜色就不会再是红色,第一个点的颜色也会改变,这就可以用来判断怪物是否死亡。


那么如何取的这几个点的坐标呢。
游戏里的这些小窗口,相对游戏的窗口,位置不会改变,那么我们只要知道游戏窗口在桌面上的绝对坐标,再加上一定的数值,就可以取到这些点的坐标,从而获取点的颜色。
一个Windows的窗口坐标是从左上角的点开始计算的,往右是X 坐标增加,往下是 Y 坐标增加。


开始设计:
这里我们用VB设计这个外挂。所以,你需要先熟悉VB,如果用其他工具,也需要先熟悉工具。
在VB里,获取一个窗口的API函数是:  GetClientRect  ,这个函数的功能就是获取一个窗口的矩形坐标信息,相对桌面的 Left,Top,和自身的宽Right,高 Bottom 。我们只需要获取它的Left和Top 就可以了。
我们先来获取一下游戏的窗口大小信息:

我们定义个全局变量:  GameFormHwnd  '游戏窗口的句柄

GameFormHwnd = FindWindow("QElementClient Window", "Element Client")
利用FindWindow  API函数获取游戏窗口的句柄, QElementClient Window 是游戏窗口的类名,Element Client 是游戏窗口的标题。

我们在一个新的模块里定义一个函数 GetWinRect  ,作用是获取窗口的矩形信息
Public Function GetWinRect() As RECT
On Error Resume Next
    Dim mrect As RECT  '矩形变量
    GetClientRect GameFormHwnd, mrect  '调用API,获取游戏窗口矩形信息
    GetWinRect = mrect    '函数值返回
End Function


我们在外挂的窗口启动代码里加入调用

WinRect=GetWinRect      '获得游戏窗口Rect
假设 WinRect 我们已经定义,是一个全局变量,保存这窗口的矩形信息。

到此,我们已经获取了游戏窗口的 坐标信息。如果窗口不在左上角,那么此时的坐标信息可能是
Left=300,Top=150,Right=800,Bottom=600


这一节暂时到此为止,下一节我们继续。
ゅ兔子哥

ZxID:2998095

等级: 上将
配偶: 老白兔。
音速图标啊图标6级7R!

举报 只看该作者 板凳   发表于: 2009-06-15 0
有6节,都沉了
lijun903

ZxID:6612571

等级: 新兵
举报 只看该作者 沙发   发表于: 2009-06-15 0
感谢了 不过能在详细点就好了        
« 返回列表
发帖 回复