C++外挂制作第六课(结束)【转】  整套帖子申精。

社区服务
高级搜索
猴岛论坛辅助工具C++外挂制作第六课(结束)【转】  整套帖子申精。
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
1个回复

C++外挂制作第六课(结束)【转】  整套帖子申精。

楼层直达
ゅ兔子哥

ZxID:2998095

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

举报 只看楼主 使用道具 楼主   发表于: 2009-06-14 0
这一节实现基本的选怪,普通攻击打怪,捡物(不包含过滤)。

我们先来改变一下界面,从控件栏选择复选框,画在窗口相应位置,如图。
 

其他的还是不变,我们主要是实现基本打怪,所以其他的暂时不考虑。

下面先来描述一下算法:

如何选怪:
      在武林里,你选中一个怪物后,都会显示怪物的信息,那么在内存里也会有一个变量来保存是否选中了怪物。我们就利用这个变量判断是否选中怪物,如果没选中,那么调用函数,让其选怪。

如何打怪:
      游戏里有普通攻击,在原来的时候还可以模拟按键来实现打怪,现在不可以了,那么我们只有通过调用游戏的内部函数来实现打怪了。判断选中怪物后,就调用普通攻击函数,直到怪物的血值为0 和 选中怪物变量 为0 ,就代表这个怪物被打死了,就需要开始下一轮选怪打怪。

如何捡物:
      捡物在原来也可以模拟按键,现在也是调用内部函数。因为这一节不牵涉物品过滤,所以有什么我们就捡什么,呵呵。


程序简单流程:
在主进程不断的读取游戏信息,开辟一个新的线程,放置我们的打怪代码。这里已经开始使用多线程了,大家看到多线程也不用怕,其实没什么,在BCB ,多线程就相当于一个模块一样,也是一个单元文件,不同的是它和主线程的代码有点区别,线程代码需要我们用代码开启它的运行。从这里就是使用多线程,也是方便以后编写,后面的将会很多地方用到多线程。因为现在我们只开启了2个线程,并且不会冲突,所以暂时也不用做线程同步。

在新的线程里,写一个循环,并用变量控制循环开始和结束。
将打怪的代码全部写到循环里。
顺序大致如下:
选怪:
判断是否已经选中怪物
如果选中怪物则跳到打怪部分,如果没选中,则过一段时间继续选怪。

打怪:
用普通攻击  攻击怪物,直到怪物死亡。

捡物:怪物死亡一段时间后,开始捡物。


这里只讲如何使用游戏内部函数,分析部分还是需要大家自己到广海看帖子学习,因为一天两天也学不会。如果在写完小秘的帖子后有时间的话,我可能写写分析部分的帖子。

下面是实现代码:
打开我们上次的工程,文件-新建-其他-选择最下面的Thread Object ,Thread Object 就是线程类。
并命名为 ThreadKill ,在工程窗口双击打开 ThreadKill ,进入代码编辑界面。
__fastcall ThreadKill::ThreadKill(bool CreateSuspended)
    : TThread(CreateSuspended)
{
}
将 FreeOnTerminate=true;  插入那对花括号中。
__fastcall ThreadKill::ThreadKill(bool CreateSuspended)
    : TThread(CreateSuspended)
{
    FreeOnTerminate=true;
}
一般用多线程都会写这么一句,为了在线程结束后释放资源。

void __fastcall ThreadKill::Execute()
这里就是线程执行的地方,需要执行的代码都写在里面。
ゅ兔子哥

ZxID:2998095

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

举报 只看该作者 沙发   发表于: 2009-06-15 0
Re:C++外挂制作第六课(结束)【转】 整套帖子申精。
谢谢各位支持了
« 返回列表
发帖 回复