From 43b2d48a081179a13445a213abcf440c7700c8f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BC=9F=E6=9D=B0=20=E7=8E=8B?= <1183233633@qq.com> Date: Tue, 30 Jun 2020 15:28:54 +0800 Subject: [PATCH] upload --- CSS_ESP.sln | 31 +++ CSS_ESP/CSS_ESP.cpp | 425 ++++++++++++++++++++++++++++++++ CSS_ESP/CSS_ESP.h | 62 +++++ CSS_ESP/CSS_ESP.vcxproj | 173 +++++++++++++ CSS_ESP/CSS_ESP.vcxproj.filters | 33 +++ CSS_ESP/pch.cpp | 5 + CSS_ESP/pch.h | 15 ++ 7 files changed, 744 insertions(+) create mode 100644 CSS_ESP.sln create mode 100644 CSS_ESP/CSS_ESP.cpp create mode 100644 CSS_ESP/CSS_ESP.h create mode 100644 CSS_ESP/CSS_ESP.vcxproj create mode 100644 CSS_ESP/CSS_ESP.vcxproj.filters create mode 100644 CSS_ESP/pch.cpp create mode 100644 CSS_ESP/pch.h diff --git a/CSS_ESP.sln b/CSS_ESP.sln new file mode 100644 index 0000000..2ba19a6 --- /dev/null +++ b/CSS_ESP.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.852 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CSS_ESP", "CSS_ESP\CSS_ESP.vcxproj", "{7B0FBC5C-540F-4352-AA63-872E4B436526}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7B0FBC5C-540F-4352-AA63-872E4B436526}.Debug|x64.ActiveCfg = Debug|x64 + {7B0FBC5C-540F-4352-AA63-872E4B436526}.Debug|x64.Build.0 = Debug|x64 + {7B0FBC5C-540F-4352-AA63-872E4B436526}.Debug|x86.ActiveCfg = Debug|Win32 + {7B0FBC5C-540F-4352-AA63-872E4B436526}.Debug|x86.Build.0 = Debug|Win32 + {7B0FBC5C-540F-4352-AA63-872E4B436526}.Release|x64.ActiveCfg = Release|x64 + {7B0FBC5C-540F-4352-AA63-872E4B436526}.Release|x64.Build.0 = Release|x64 + {7B0FBC5C-540F-4352-AA63-872E4B436526}.Release|x86.ActiveCfg = Release|Win32 + {7B0FBC5C-540F-4352-AA63-872E4B436526}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7127E8D5-0BB0-40AA-BBC0-8930CEB93F61} + EndGlobalSection +EndGlobal diff --git a/CSS_ESP/CSS_ESP.cpp b/CSS_ESP/CSS_ESP.cpp new file mode 100644 index 0000000..cf5680d --- /dev/null +++ b/CSS_ESP/CSS_ESP.cpp @@ -0,0 +1,425 @@ +// CSS_ESP.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 +// + +#include "pch.h" +#include +#include +#include +#include +#include +#include "CSS_ESP.h" +#include + +LPDIRECT3D9 g_pD3D = NULL; //Direct3D对象 +LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; //Direct3D设备对象 +LPD3DXLINE g_pLine[MAX_PLAYER] = {0}; //Direct3D线对象 +D3DXVECTOR2* g_pLineArr = NULL; //线段顶点 +CSS_LOCALINFO LocalInfo; +HMODULE g_ModBaseCSS_Client = 0; +HMODULE g_ModBaseCSS_Engine = 0; +HMODULE g_ModBaseCSS_Server = 0; +HANDLE g_hCSS = 0; +HWND g_hwndCSS = 0; +DWORD g_wndWidthCSS = 0; +DWORD g_wndHeightCSS = 0; + + + + +VOID Cleanup() +{ + // 释放Line对象 + for (UINT i = 0; i < MAX_PLAYER; i++) { + if (g_pLine != NULL) + { + g_pLine[i]->Release(); + } + } + + //释放Direct3D设备对象 + if (g_pd3dDevice != NULL) + g_pd3dDevice->Release(); + + //释放Direct3D对象 + if (g_pD3D != NULL) + g_pD3D->Release(); + + delete[] g_pLineArr; +} + +bool InRange(double angle, PCSS_FOVRANGE pAngleRange) { + if (angle > pAngleRange->lfSmallAngle && angle < pAngleRange->lfBigAngle) { + return true; + } + return false; +} + +HRESULT InitD3D(HWND hWnd) +{ + //创建Direct3D对象, 该对象用来创建Direct3D设备对象 + if (NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION))) + return E_FAIL; + + //设置D3DPRESENT_PARAMETERS结构, 准备创建Direct3D设备对象 + D3DPRESENT_PARAMETERS d3dpp; + ZeroMemory(&d3dpp, sizeof(d3dpp)); + d3dpp.Windowed = TRUE; + d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; + d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; + + //创建Direct3D设备对象 + if (FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, + D3DCREATE_SOFTWARE_VERTEXPROCESSING, + &d3dpp, &g_pd3dDevice))) + { + return E_FAIL; + } + + // 创建Direct3D线对象 + for (UINT i = 0; i < MAX_PLAYER; i++) { + if (FAILED(D3DXCreateLine(g_pd3dDevice, &g_pLine[i]))) + { + return E_FAIL; + } + } + + g_pLineArr = new D3DXVECTOR2[5 * MAX_PLAYER]; + + return S_OK; +} + +bool GetGameMem() { + DWORD dwPlayer = 0; + DWORD dwBlood = 0; + DWORD dwRet = 0; + + ReadProcessMemory(g_hCSS, (LPCVOID)((DWORD)g_ModBaseCSS_Server + 0x589868), &LocalInfo.uOtherPlayerCount, 4, &dwRet); + + for (UINT i = 0; i < LocalInfo.uOtherPlayerCount + 1; i++) { + ReadProcessMemory(g_hCSS, (LPCVOID)((DWORD)g_ModBaseCSS_Server + 0x4F3FCC + 0x10 * i), &dwPlayer, 4, &dwRet); + ReadProcessMemory(g_hCSS, (LPCVOID)dwPlayer, &LocalInfo.Player[i], 0x1180, &dwRet); + } + + ReadProcessMemory(g_hCSS, (LPCVOID)((DWORD)g_ModBaseCSS_Engine + 0x47F1B4), &LocalInfo.fMouseAngleY, 4, &dwRet); + ReadProcessMemory(g_hCSS, (LPCVOID)((DWORD)g_ModBaseCSS_Engine + 0x47F1B8), &LocalInfo.fMouseAngleX, 4, &dwRet); + ReadProcessMemory(g_hCSS, (LPCVOID)((DWORD)g_ModBaseCSS_Client + 0x5047C0), &LocalInfo.fFOV, 4, &dwRet); + + return true; +} + +float GetOtherPlayerPosInScreenRadianDiffY(int nIndex) { + + float fTopMouseFOV = LocalInfo.fMouseAngleY + LocalInfo.fFOV / 2; + float fBottomMouseFOV = LocalInfo.fMouseAngleY - LocalInfo.fFOV / 2; + float fDiffX = LocalInfo.Player[nIndex].posVec.x - LocalInfo.Player[0].posVec.x; + float fDiffY = LocalInfo.Player[nIndex].posVec.y - LocalInfo.Player[0].posVec.y; + float fDiffZ = LocalInfo.Player[nIndex].posVec.z - LocalInfo.Player[0].posVec.z; + float fDistanceXY = sqrt(fDiffX * fDiffX + fDiffY * fDiffY); + double lfTargetToWorldAngleY = -atan2(fDiffZ, fDistanceXY) / PI * 180; + + CSS_FOVRANGE RangeMouseY = { 0 }; + RangeMouseY.Y.lfBottomAngle = LocalInfo.fMouseAngleY - LocalInfo.fFOV / 2; + RangeMouseY.Y.lfTopAngle = LocalInfo.fMouseAngleY + LocalInfo.fFOV / 2; + //printf("TargetToWorldAngleY = %f\r\n", lfTargetToWorldAngleY); + + //printf("lfTargetToWorldAngleY %f LocalInfo.fMouseAngleY %f\r\n", lfTargetToWorldAngleY, LocalInfo.fMouseAngleY); + if (InRange(lfTargetToWorldAngleY, &RangeMouseY) == false) { + return ERROR_OUT_OF_SCREEN; + } + float fTargetRadianInScreenY = (lfTargetToWorldAngleY - LocalInfo.fMouseAngleY) / 180 * PI; + + return fTargetRadianInScreenY; +} + +float GetOtherPlayerPosInScreenY(int nIndex) { + + float fTargetRadianInScreenY = GetOtherPlayerPosInScreenRadianDiffY(nIndex); + if (fTargetRadianInScreenY == ERROR_OUT_OF_SCREEN) { + return ERROR_OUT_OF_SCREEN; + } + + float fScreenPosY = tan(fTargetRadianInScreenY) * g_wndHeightCSS / 2 + g_wndHeightCSS / 2; + //printf("fScreenPosY = %f \r\n", fScreenPosY); + return fScreenPosY; +} + +float GetOtherPlayerPosInScreenRadianDiffX(int nIndex) { + float fLeftMouseFOV = LocalInfo.fMouseAngleX + LocalInfo.fFOV / 2; + float fRightMouseFOV = LocalInfo.fMouseAngleX - LocalInfo.fFOV / 2; + float fDiffX = LocalInfo.Player[nIndex].posVec.x - LocalInfo.Player[0].posVec.x; + float fDiffY = LocalInfo.Player[nIndex].posVec.y - LocalInfo.Player[0].posVec.y; + double TargetToWorldAngleX = atan2(fDiffY, fDiffX) / PI * 180; + //printf("angle = %f\r\n", TargetToWorldAngle); + + CSS_FOVRANGE RangeSameSignWithMouseX = { 0 }; + CSS_FOVRANGE RangeUnsameSignWithMouseX = { 0 }; + bool bBeyondPI = false; + if (fLeftMouseFOV > 180) { + bBeyondPI = true; + RangeSameSignWithMouseX.X.lfLeftAngle = 180; + RangeSameSignWithMouseX.X.lfRightAngle = fRightMouseFOV; + RangeUnsameSignWithMouseX.X.lfLeftAngle = fLeftMouseFOV - 360; + RangeUnsameSignWithMouseX.X.lfRightAngle = -180; + } + else if (fRightMouseFOV < -180) { + bBeyondPI = true; + RangeSameSignWithMouseX.X.lfLeftAngle = fLeftMouseFOV; + RangeSameSignWithMouseX.X.lfRightAngle = -180; + RangeUnsameSignWithMouseX.X.lfLeftAngle = 180; + RangeUnsameSignWithMouseX.X.lfRightAngle = 360 + fRightMouseFOV; + } + else { + bBeyondPI = false; + RangeSameSignWithMouseX.X.lfLeftAngle = fLeftMouseFOV; + RangeSameSignWithMouseX.X.lfRightAngle = fRightMouseFOV; + } + + double lfTargetRadianInScreenX = ERROR_OUT_OF_SCREEN; + if (InRange(TargetToWorldAngleX, &RangeSameSignWithMouseX) == true) { + lfTargetRadianInScreenX = (TargetToWorldAngleX - LocalInfo.fMouseAngleX) / 180 * PI; + } + else { + if (bBeyondPI) { + if (InRange(TargetToWorldAngleX, &RangeUnsameSignWithMouseX) == true) { + lfTargetRadianInScreenX = ((LocalInfo.fMouseAngleX < 0 ? -360 : 360) + TargetToWorldAngleX - LocalInfo.fMouseAngleX) / 180 * PI; + } + } + } + //printf("lfTargetAngleInScreen = %lf \r\n", lfTargetRadianInScreenX * 180 / PI); + + return lfTargetRadianInScreenX; +} + + +float GetOtherPlayerPosInScreenX(int nIndex) { + + float lfTargetRadianInScreenX = GetOtherPlayerPosInScreenRadianDiffX(nIndex); + if (lfTargetRadianInScreenX == ERROR_OUT_OF_SCREEN) { + return ERROR_OUT_OF_SCREEN;//error value + } + + float fScreenPosX = -tan(lfTargetRadianInScreenX) * g_wndWidthCSS / 2 + g_wndWidthCSS / 2; + return fScreenPosX; +} + + +float GetOtherPlayerModelHeightInScreen(int nIndex) { + float fDiffX = LocalInfo.Player[nIndex].posVec.x - LocalInfo.Player[0].posVec.x; + float fDiffY = LocalInfo.Player[nIndex].posVec.y - LocalInfo.Player[0].posVec.y; + float fDistanceXY = sqrt(fDiffX * fDiffX + fDiffY * fDiffY); + + return 400 / fDistanceXY * 100; +} + +float GetOtherPlayerModelWidthInScreen(int nIndex) { + float fDiffX = LocalInfo.Player[nIndex].posVec.x - LocalInfo.Player[0].posVec.x; + float fDiffY = LocalInfo.Player[nIndex].posVec.y - LocalInfo.Player[0].posVec.y; + float fDistanceXY = sqrt(fDiffX * fDiffX + fDiffY * fDiffY); + + return 150 / fDistanceXY * 100; +} + + +bool AutoAim() { + + float fMinScreenDistance = 5000.0f; + int nIndex = -1; + + for (UINT i = 1; i < LocalInfo.uOtherPlayerCount + 1; i++) { + if (LocalInfo.Player[i].dwBlood <= 1) { + continue; + } + + if (LocalInfo.Player[i].dwCamp == LocalInfo.Player[0].dwCamp) { + continue; + } + + float fScreenPosDiffX = GetOtherPlayerPosInScreenX(i) - g_wndWidthCSS / 2; + float fScreenPosDiffY = GetOtherPlayerPosInScreenY(i) - g_wndHeightCSS / 2; + if (fScreenPosDiffX != ERROR_OUT_OF_SCREEN && fScreenPosDiffY != ERROR_OUT_OF_SCREEN) { + float fCurDisTance = sqrt(fScreenPosDiffX * fScreenPosDiffX + fScreenPosDiffY * fScreenPosDiffY); + if (fMinScreenDistance >= fCurDisTance) { + fMinScreenDistance = fCurDisTance; + nIndex = i; + } + } + } + + if (nIndex == -1) { + //视角没敌人 + return false; + } + + DWORD dwRet = 0; + float fFixedMouseAngleX = LocalInfo.fMouseAngleX + GetOtherPlayerPosInScreenRadianDiffX(nIndex) * 180 / PI; + float fFixedMouseAngleY = LocalInfo.fMouseAngleY + GetOtherPlayerPosInScreenRadianDiffY(nIndex) * 180 / PI + 0.6; + if (fFixedMouseAngleX == ERROR_OUT_OF_SCREEN || fFixedMouseAngleX == ERROR_OUT_OF_SCREEN) { + return false; + } + + WriteProcessMemory(g_hCSS, (LPVOID)((DWORD)g_ModBaseCSS_Engine + 0x47F1B8), &fFixedMouseAngleX, 4, &dwRet); + WriteProcessMemory(g_hCSS, (LPVOID)((DWORD)g_ModBaseCSS_Engine + 0x47F1B4), &fFixedMouseAngleY, 4, &dwRet); + return true; +} + + +VOID Render() +{ + //清空后台缓冲区 + g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); + memset(g_pLineArr, 0, sizeof(g_pLineArr)); + + //开始在后台缓冲区绘制图形 + if (SUCCEEDED(g_pd3dDevice->BeginScene())) + { + GetGameMem(); + for (UINT i = 1; i < LocalInfo.uOtherPlayerCount + 1; i++) { + if (LocalInfo.Player[i].dwBlood <= 1) { + continue; + } + + if (LocalInfo.Player[i].dwCamp == LocalInfo.Player[0].dwCamp) { + continue; + } + float fScreenPosX = GetOtherPlayerPosInScreenX(i); + float fScreenPosY = GetOtherPlayerPosInScreenY(i); + float fModH = GetOtherPlayerModelHeightInScreen(i); + float fModW = GetOtherPlayerModelWidthInScreen(i); + //printf("fScreenPosX = %f \r\n", fScreenPosX); + if (fScreenPosX != ERROR_OUT_OF_SCREEN && fScreenPosY != ERROR_OUT_OF_SCREEN) { + + g_pLineArr[i * 5 + 0].x = fScreenPosX - fModW / 2; + g_pLineArr[i * 5 + 0].y = fScreenPosY - fModH / 10; + g_pLineArr[i * 5 + 1].x = fScreenPosX + fModW / 2; + g_pLineArr[i * 5 + 1].y = fScreenPosY - fModH / 10; + g_pLineArr[i * 5 + 2].x = fScreenPosX + fModW / 2; + g_pLineArr[i * 5 + 2].y = fScreenPosY + fModH; + g_pLineArr[i * 5 + 3].x = fScreenPosX - fModW / 2; + g_pLineArr[i * 5 + 3].y = fScreenPosY + fModH; + g_pLineArr[i * 5 + 4].x = fScreenPosX - fModW / 2; + g_pLineArr[i * 5 + 4].y = fScreenPosY - fModH / 10; + + //绘制线 + D3DCOLOR color; + g_pLine[i]->SetWidth(0.2f); + g_pLine[i]->SetAntialias(TRUE); + g_pLine[i]->Draw(g_pLineArr + 5 * i, 5, D3DCOLOR_ARGB(255, 255, 0, 0)); + + } + } + Sleep(100); + //结束在后台缓冲区渲染图形 + g_pd3dDevice->EndScene(); + } + //将在后台缓冲区绘制的图形提交到前台缓冲区显示 + g_pd3dDevice->Present(NULL, NULL, NULL, NULL); +} + + + +//----------------------------------------------------------------------------- +// Desc: 消息处理 +//----------------------------------------------------------------------------- +LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_CREATE: + //MARGINS margins; + //DwmExtendFrameIntoClientArea(hWnd, &margins); + + RegisterHotKey(hWnd, 0x2333, 0, VK_F1); + return 0; + case WM_DESTROY: + Cleanup(); + PostQuitMessage(0); + return 0; + + case WM_PAINT: + Render(); + ValidateRect(hWnd, NULL); + return 0; + case WM_HOTKEY: + if ((UINT)HIWORD(lParam) == VK_F1) { + AutoAim(); + } + return 0; + } + + + return DefWindowProc(hWnd, msg, wParam, lParam); +} + +int main() +{ + HMODULE hModAry[256] = { 0 }; + DWORD dwPid = 0; + + g_hwndCSS = FindWindow(L"Valve001", L"Counter-Strike Source"); + GetWindowThreadProcessId(g_hwndCSS, &dwPid); + g_hCSS = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid); + DWORD cbNeeded = 0; + EnumProcessModules(g_hCSS, hModAry, sizeof(hModAry), &cbNeeded); + + for (UINT i = 0; i < cbNeeded / sizeof(HMODULE); i++) { + TCHAR wszModName[MAX_PATH]; + GetModuleFileNameEx(g_hCSS, hModAry[i], wszModName, MAX_PATH); + + if (wcsstr(wszModName, L"server.dll") != 0) { + g_ModBaseCSS_Server = hModAry[i]; + } + else if (wcsstr(wszModName, L"engine.dll") != 0) { + g_ModBaseCSS_Engine = hModAry[i]; + } + else if (wcsstr(wszModName, L"client.dll") != 0) { + g_ModBaseCSS_Client = hModAry[i]; + } + else { + continue; + } + } + + RECT windowRect; + BOOL b = GetWindowRect(g_hwndCSS, &windowRect); + g_wndWidthCSS = windowRect.right - windowRect.left; + g_wndHeightCSS = windowRect.bottom- windowRect.top - 33; + + //注册窗口类 + WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_VREDRAW | CS_HREDRAW, MsgProc, 0L, 0L, + GetModuleHandle(NULL), NULL, NULL, CreateSolidBrush(0), NULL, + L"ClassName", NULL }; + RegisterClassEx(&wc); + + + //创建窗口 + HWND hWnd = CreateWindowEx(WS_EX_LAYERED | WS_EX_TOPMOST, L"ClassName", L"ESP", + WS_POPUP, windowRect.left, windowRect.top + 33, 2000, 2000, 0, 0, 0, 0); + + //初始化Direct3D + if (SUCCEEDED(InitD3D(hWnd))) + { + //显示主窗口 + + SetLayeredWindowAttributes(hWnd, NULL, 1, LWA_ALPHA); + SetLayeredWindowAttributes(hWnd, NULL, 0, LWA_COLORKEY); + ShowWindow(hWnd, SW_SHOW); + + //SetForegroundWindow(); + //进入消息循环 + MSG msg; + ZeroMemory(&msg, sizeof(msg)); + while (msg.message != WM_QUIT) + { + if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + else + { + Render(); //渲染图形 + } + } + } + UnregisterClass(L"ClassName", wc.hInstance); +} \ No newline at end of file diff --git a/CSS_ESP/CSS_ESP.h b/CSS_ESP/CSS_ESP.h new file mode 100644 index 0000000..707b60e --- /dev/null +++ b/CSS_ESP/CSS_ESP.h @@ -0,0 +1,62 @@ +#pragma once +#include "pch.h" + +#define PI (3.14159265) +#define FOV_RANGE_DEVIATION (20) +#define MAX_PLAYER (32) +#define ERROR_OUT_OF_SCREEN (-1000.0f) + +typedef struct CSS_Vector { + float x; + float y; + float z; +}CSS_VECTOR, *PCSS_VECTOR; + + +enum { + NONE_ROLE, + OBSERVER, + TERRORIST, + COUNTER_TERRORIST +}CAMP_TYPE; + +typedef struct CSS_Player { + BYTE dwUnknown0[(0xE4 - 0)]; + DWORD dwBlood; // [[server.dll+4F3FCC] + 0xE4] + BYTE dwUnknown22[(0x1f4 - 0xE8)]; + DWORD dwCamp; // [[server.dll+4F3FCC] + 0x1f4] + BYTE dwUnknown1[(0x280 - 0x1f8)]; + CSS_VECTOR posVec; // [[server.dll+4F3FCC] + 0x280] + BYTE dwUnknown2[(0xd08 - 0x28C)]; + DWORD dwArmor; // [[server.dll+4F3FCC] + 0xD08] + BYTE dwUnknown3[(0x117C - 0xD0C)]; + DWORD dwMoney; // [[server.dll+4F3FCC] + 0x117C] +}PLAYER, *PPLAYER; + + + +typedef struct CSS_LocalInfo { + PLAYER Player[MAX_PLAYER]; + float fFOV; //[client.dll+5047C0] + UINT uOtherPlayerCount; //[server.dll+589868] + float fMouseAngleY; //[[engine.dll+0x47F1B4] + float fMouseAngleX; //[[engine.dll+0x47F1B8] +}CSS_LOCALINFO, *PCSS_LOCALINFO; + + + +typedef union CSS_FOVRange { + struct X{ + double lfRightAngle; //smaller + double lfLeftAngle; //bigger + }X; + struct Y { + double lfBottomAngle; //smaller + double lfTopAngle; //bigger + }Y; + struct{ + double lfSmallAngle; //smaller + double lfBigAngle; //bigger + }; +}CSS_FOVRANGE, *PCSS_FOVRANGE; + diff --git a/CSS_ESP/CSS_ESP.vcxproj b/CSS_ESP/CSS_ESP.vcxproj new file mode 100644 index 0000000..01c3721 --- /dev/null +++ b/CSS_ESP/CSS_ESP.vcxproj @@ -0,0 +1,173 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {7B0FBC5C-540F-4352-AA63-872E4B436526} + Win32Proj + CSSESP + 10.0.17763.0 + + + + Application + true + v141 + Unicode + false + + + Application + false + v141 + true + Unicode + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + D:\Microsoft DirectX SDK (June 2010)\Include;$(IncludePath) + D:\Microsoft DirectX SDK (June 2010)\Lib\x86;$(LibraryPath) + + + true + + + false + + + false + + + + Use + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + pch.h + + + Console + true + d3d9.lib;d3dx9.lib;%(AdditionalDependencies) + + + + + Use + Level3 + Disabled + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + pch.h + + + Console + true + + + + + Use + Level3 + MaxSpeed + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + pch.h + + + Console + true + true + true + + + + + Use + Level3 + MaxSpeed + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + pch.h + + + Console + true + true + true + + + + + + + + + + Create + Create + Create + Create + + + + + + \ No newline at end of file diff --git a/CSS_ESP/CSS_ESP.vcxproj.filters b/CSS_ESP/CSS_ESP.vcxproj.filters new file mode 100644 index 0000000..7c9bdc1 --- /dev/null +++ b/CSS_ESP/CSS_ESP.vcxproj.filters @@ -0,0 +1,33 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 头文件 + + + 头文件 + + + + + 源文件 + + + 源文件 + + + \ No newline at end of file diff --git a/CSS_ESP/pch.cpp b/CSS_ESP/pch.cpp new file mode 100644 index 0000000..8eb50d0 --- /dev/null +++ b/CSS_ESP/pch.cpp @@ -0,0 +1,5 @@ +// pch.cpp: 与预编译标头对应的源文件;编译成功所必需的 + +#include "pch.h" + +// 一般情况下,忽略此文件,但如果你使用的是预编译标头,请保留它。 diff --git a/CSS_ESP/pch.h b/CSS_ESP/pch.h new file mode 100644 index 0000000..253cd97 --- /dev/null +++ b/CSS_ESP/pch.h @@ -0,0 +1,15 @@ +// 入门提示: +// 1. 使用解决方案资源管理器窗口添加/管理文件 +// 2. 使用团队资源管理器窗口连接到源代码管理 +// 3. 使用输出窗口查看生成输出和其他消息 +// 4. 使用错误列表窗口查看错误 +// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 +// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 + +#ifndef PCH_H +#define PCH_H + +// TODO: 添加要在此处预编译的标头 +#include + +#endif //PCH_H