2024年4月12日发(作者:)

前几天想编写一个QQ斗地主的外挂,在网上找资料,发现这方面的资料太少,为了

方便一些vb初学者,我也把自己摸索出来的一些经验写出来共享吧。

我先以斗地主的记牌器为例,说说原理吧。

1、寻找可用的数据

想写一个斗地主的记牌器,首先就要得到每个人出的牌,在这里有不少人使用了图形

法,也就是分析屏幕上的图形,得到牌面的数字。但是我认为有点累,而且还和屏幕的分

辨率有关系,比较烦琐。所以我采用内存法。

我们可以使用《金山游侠》在内存中找到这样几个数据:

桌右第一张出牌数字4B827D

桌左第一张出牌数字4B8FFD

中位的第一张出牌数字4B893D

桌左剩下几张牌4B8FE8

中位剩下几张牌4B8928

桌右剩下几张牌4B8268

叫了多少分4B7D4C

可能有些初学者看不懂上面的这些数据,我来解释一下。

对照上面列出来的数据,“中位的第一张出牌数字4B893D”就是指在内存地址

4B893D这个位置上存储的是坐在中间位置上的玩家所出的牌面的数字。

在牌面数字的前一个内存地址,也就是4B893D-1这个位置上存储的是牌的花色。

打开内存编辑器可以分析到4B893D+8这个位置上是下一张出牌的牌面数字,这个规

律告诉我们什么呢这个我留给学习的人自己想。

“中位剩下几张牌4B8928”就是指在内存地址4B893D这个位置上存储的是坐在中

间位置的玩家剩下几张牌。

在这里我还要做一个说明

其中牌的表示是1黑桃2红桃3梅花4方块 1-F表示A-王

1梅花2方块3红桃4黑桃

2、确定思路

由上面的数据,我们就可以准确的知道每一个玩家所出的牌面及花色了。现在我讲讲

思路。

首先我们要随时监控这几个内存地址,如果发现哪一个玩家的所剩下的牌的数字变小

了,那么我们就需要读取那个玩家所出牌的花色及牌面数据。至于出了多少张牌,那自然