网站首页 > 技术教程 正文
通过 C 语言编写一个外挂,通过 API 函数模拟进行连连看操作,实现自动进行游戏
对象分析
要用的 API 函数简单介绍
编写测试效果
总体评价
对象分析
本次游戏对象为某连连看游戏
试玩发现需要进行棋子确定和模拟鼠标操作
通过 CE 确定棋盘基址获得游戏数据,再利用算法确定目标,执行鼠标操作
要用的 API 函数简单介绍
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
其中 Msg 为 WMLBUTTONDOWN,WMLBUTTONUP,表示对鼠标的软件模拟操作 (虽然兼容性和安全性不如硬件模拟的 mouse_event,但不改变移动鼠标指针)
故一般写作 SendMessage(hwnd, WMLBUTTONUP/WMLBUTTONUP, 0, Y 坐标 <<16+X);
编写测试效果
打开游戏
运行外挂 我用 MFC 将几个函数功能封装为按钮
单消:读取数据并消一对
自动:恢复 / 暂停一个线程,这个线程有消一对和延时的循环功能
秒杀:不延时,直接消 999 对
检测有效
//
// 03自动模拟操作功能(部分).cpp
// C/C++
//
#include<windows.h>
#include<iostream>
usingnamespace std;
HWND gameh;
DWORD processid =0;
HANDLE processh =0;
byte chessdata[11][19];//数据保存缓冲区,假设棋盘为11*19
constchar*gamename ="连连看";//某连连看游戏名称,可通过SPY++查找
struct point {//具体使用和算法见"连连看BFS算法"
int x, y, direct;
int step, hp;
};
void readchess(){//读数据并更新
gameh =::FindWindow(NULL, gamename);
::GetWindowThreadProcessId(gameh,&processid);
processh =::OpenProcess(PROCESS_ALL_ACCESS,false, processid);
LPCVOID pbase =(LPCVOID)棋盘基址;
LPVOID nbuffer =(LPVOID)&chessdata;
::ReadProcessMemory(processh, pbase, nbuffer,11*19,&byread);
}
void click2p(POINT p1, POINT p2){//点击两个点的操作功能
HWND hwnd=FindWindow(NULL, gamename);
int lparam;
lparam=((p1.y*35+192)<<16)+(p1.x*31+21);
SendMessage(hwnd, WM_LBUTTONDOWN,0, lparam);
SendMessage(hwnd, WM_LBUTTONUP,0, lparam);
lparam=((p2.y*35+192)<<16)+(p2.x*31+21);
SendMessage(hwnd, WM_LBUTTONDOWN,0, lparam);
SendMessage(hwnd, WM_LBUTTONUP,0, lparam);
}
void clearapair(){//找到可消去的两个点并点击
POINT p1, p2;
int x1, y1, x2, y2;
for(y1=0; y1<11; y1++)
for(x1=0; x1<19; x1++){
if(!chessdata[y1][x1])
continue;
for(y2=0; y2<11; y2++)
for(x2=0; x2<19; x2++)
if(chessdata[y2][x2]&&(chessdata[y1][x1]==chessdata[y2][x2])&&(x1!=x2 || y1!=y2)){
p1.x=x1; p1.y=y1;
p2.x=x2; p2.y=y2;
readchess();
if(llk_bfs(y1, x1, y2, x2)!=-1){
click2p(p1, p2);
return;
}
}
}
}
猜你喜欢
- 2024-10-06 《寅虎九月运势燃爆!一路开挂逆袭》,好运连连!
- 2024-10-06 又好看,操作又简单 又好看又简单的手工作品
- 2024-10-06 好消息!语文老师、数学老师又有新教学工具可以用,学生会超喜欢
- 2024-10-06 CSGO:正义会迟到,但终究会降临——关于反作弊系统
- 2024-10-06 超方便的 Python 自动唤醒窗口截图脚本
- 2024-10-06 半夜,火车上遇见能“看事”的。 在火车上遇见的奇葩事
- 2024-10-06 新手学Python必看的几个练手小项目,轻松不枯燥哦
- 2024-10-06 腾讯连连小程序发布2.0版本,优化IoT场景使用体验
- 2024-10-06 我以为是个正经程序猿,结果是个中二段子精
- 2024-10-06 C语言项目实战:《连连看》基础项目!460 行源码注释,干货满满
你 发表评论:
欢迎- 07-03收到“老板”QQ指令转账,厦门多名财务人员被骗!
- 07-03手机QQ红包BUG 发送不能被领取的口令红包方法
- 07-03“老板”发QQ指令要求转账 财务被骗42万……最后民警出手了!
- 07-03微信推广引流108式:利用QQ自动强制加好友代码从网站导流
- 07-03围观!有人发现QQ新玩法,一天进账近百万!
- 07-03“领导”QQ发来指令 她就转出16万元
- 07-03如何自定义样式营销qq在线咨询代码
- 07-03利用代码发QQ空消息 只闪动没有消息内容
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)