资源简介

代码全部写了注释方便观看,基本细到每个函数都是本人写的注释,代码是用C++写的gdi附加窗口绘制,基本不闪不卡,就是效果还有一定问题要自己微调。全屏1024*768分辨率运行能 体现最好效果。另外提供了游戏百度网盘的下载链接,和游戏里的一些基址和偏移。

资源截图

代码片段和文件信息



#pragma warning(disable : 4996) 
#include 
#include 
#include 
#include 
#include 

#define TOP_HEIGHT 25
struct PlayerData
{
DWORD baseEntity ; //该人物基地址
float Position[3]; //人物坐标:x为Position[0]y为Position[1]z为Position[2]
int HP; //血量
int TeamFlag;//队伍标志:敌我阵营
char Name[32]; //人物的名字和血量存储在这里
};

HWND  g_hWnd_Overlay;//附加窗口(即透视窗口)的句柄

DWORD __dwServer;
DWORD __dwEngine;
HANDLE g_hProcess;

const DWORD HP_offset = 0xE4;  //血量偏移
const DWORD ID_offset = 0xE24;//名字偏移
const DWORD TeamFlag_offset = 0x1F4; //是否队友标记
const DWORD Player_offset = 0x10;  //相邻两个人的偏移。比如npc1和npc2的偏移差距
const DWORD Pos_offset = 0x308;  //坐标偏移
const DWORD MY_base = 0x4F3FCC;//自己的基地址
const DWORD EL_base = 0x4F3FDC;//敌人的基地址
const DWORD WordMatrix_base = 0x5B3D70;//自己的世界矩阵

const DWORD CursorAngle_X_offset = 0x47F1B8;
const DWORD CursorAngle_Y_offset = 0x47F1B4;

//const DWORD Fick = 0x5AD9E4;//???
float g_Matrix[4][4];
RECT  g_winRect = { 0 };

//自瞄标记。如果按下左键触发为TRUE,开启自瞄的函数
BOOL  IsAuto = FALSE;
/*

鼠标Y  engine.dll + 47F1B4
鼠标X  engine.dll + 47F1B8

*/


DWORD GetModulebaseAddress(const TCHAR* LPSTRModuleName DWORD __DwordProcessId);
float GetDistance3D(float mycoor[3] float enemcoor[3]);
void  ReadDataList(int index PlayerData* MY PlayerData* EL);
void  ReadCursorAngle(float* CursorAngle_X float* CursorAngle_Y);
void  DrawEsp(float Enemy_x float Enemy_y float distance PlayerData* MY PlayerData* EL);//透视画出矩形
void  Esp(PlayerData* MY PlayerData* EL);//计算距离
BOOL  WordToScreen(float from[3] float to[2]);//转化为平面坐标

void Clear();
LRESULT CALLBACK WindowProc_Overlay(HWND hWnd UINT message WPARAM wParam LPARAM lParam);
void CreateOverlayWindow();
BOOL GameIsForegroundWindow();

//自瞄所用到的函数

void AutoCollimation(float MY_Position[3] float EL_Position[3]);//自瞄鼠标移动函数
void GetXYDistance(PlayerData* EL float* XYDistance);
int  GetMinXYDistanceIndex(float xyDistance[32]);
void  __stdcall KeyHandlerThread();

int  main(int argc char* argv[])
{

HWND hWnd = FindWindow(NULL _T(“Counter-Strike Source“));
if (hWnd == NULL)
return -1;
//该函数在主线程的基础上创建一个新线程。
//线程终止运行后,线程对象仍然在系统中,必须通过CloseHandle函数来关闭该线程对象。
//该线程用来一直判断鼠标是否按下了左脚,然后开启自瞄
CreateThread(0 0 (LPTHREAD_START_ROUTINE)KeyHandlerThread 0 0 0);
/*该函数参数解释:0为默认安全性,第二个参数为0则申请调用这个线程的线程同样的栈空间大小,
第三个参数必用,DWORD WINAPI 函数名 (LPVOID lpParam) ,格式不正确将无法调用成功。也可以直接调用void类型,
第四个参数为0表示主线程无参数传递给这个线程,
第五个参数为0表示线程创建后立即激活,第六个参数不想返回线程ID设置值为0或者NULL*/


DWORD dwPid;  
GetWindowThreadProcessId(hWnd &dwPid);//获取的线程pid保存在dwPid中

g_hProcess = OpenProcess(PROCESS_ALL_ACCESS FALSE dwPid);
__dwServer = GetModulebaseAddress(_T(“server.dll“) dwPid);
__dwEngine = GetModulebaseAddress(_T(“engine.dll“) dwPid);

float CursorAngle_X;
float CursorAngle_Y;

int numb = 32;

float xyDistance[32] = { 0 };//敌人距离屏幕中心的坐标
float Position[32][3] = { 0 };//敌人的坐标

PlayerData MY = { 0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      16574  2019-03-15 23:49  CS起源方框透视自瞄.cpp

     文件         71  2019-03-16 15:26  游戏下载链接.txt

     文件        671  2019-03-15 20:53  该游戏一些人物基址信息和偏移.txt

----------- ---------  ---------- -----  ----

                17316                    3


评论

共有 条评论