mirror of
https://github.com/Bloodysharp/ImGui-Loader.git
synced 2025-06-08 15:59:19 +08:00
556 lines
31 KiB
C++
556 lines
31 KiB
C++
![]() |
#define IMGUI_DEFINE_MATH_OPERATORS
|
||
|
|
||
|
#include "imgui.h"
|
||
|
#include "imgui_impl_dx9.h"
|
||
|
#include "imgui_impl_win32.h"
|
||
|
#include "imgui_internal.h"
|
||
|
#include "imgui_settings.h"
|
||
|
#include <d3d9.h>
|
||
|
#include <tchar.h>
|
||
|
#include "blur.hpp"
|
||
|
#include <d3dx9.h>
|
||
|
#pragma comment (lib, "d3dx9.lib")
|
||
|
|
||
|
#include "image.h"
|
||
|
#include "font.h"
|
||
|
|
||
|
#include <d3d11.h>
|
||
|
#include <tchar.h>
|
||
|
#include <dwmapi.h>
|
||
|
#include <string>
|
||
|
|
||
|
|
||
|
// Data
|
||
|
LPDIRECT3D9 g_pD3D = nullptr;
|
||
|
LPDIRECT3DDEVICE9 g_pd3dDevice = nullptr;
|
||
|
UINT g_ResizeWidth = 0, g_ResizeHeight = 0;
|
||
|
D3DPRESENT_PARAMETERS g_d3dpp = {};
|
||
|
|
||
|
// Forward declarations of helper functions
|
||
|
bool CreateDeviceD3D(HWND hWnd);
|
||
|
void CleanupDeviceD3D();
|
||
|
void ResetDevice();
|
||
|
LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
|
|
||
|
namespace image
|
||
|
{
|
||
|
IDirect3DTexture9* game = nullptr;
|
||
|
IDirect3DTexture9* close_icon = nullptr;
|
||
|
IDirect3DTexture9* user_icon = nullptr;
|
||
|
IDirect3DTexture9* logout_icon = nullptr;
|
||
|
IDirect3DTexture9* subscription_icon = nullptr;
|
||
|
}
|
||
|
|
||
|
namespace font
|
||
|
{
|
||
|
ImFont* default_lexend;
|
||
|
ImFont* lexand_tabs_bold;
|
||
|
ImFont* lexand_name_bold;
|
||
|
ImFont* lexand_info_bold;
|
||
|
|
||
|
ImFont* lexand_notice_bold;
|
||
|
|
||
|
|
||
|
ImFont* lexend_default_semibold = nullptr;
|
||
|
ImFont* lexend_default_bold = nullptr;
|
||
|
ImFont* lexend_child_semibold = nullptr;
|
||
|
}
|
||
|
|
||
|
bool login_page = true;
|
||
|
bool load_succes = true;
|
||
|
bool internet = true;
|
||
|
|
||
|
float opticaly = 0.f;
|
||
|
float opticaly_info = 1.f;
|
||
|
|
||
|
HWND hwnd;
|
||
|
RECT rc;
|
||
|
|
||
|
void TextColoredTAB(ImU32 color, const char* text, ImFont* font)
|
||
|
{
|
||
|
|
||
|
ImGui::PushFont(font);
|
||
|
ImGui::TextColored(ImColor(color), text);
|
||
|
ImGui::PopFont();
|
||
|
|
||
|
}
|
||
|
|
||
|
void move_window() {
|
||
|
|
||
|
ImGui::SetCursorPos(ImVec2(0, 0));
|
||
|
if (ImGui::InvisibleButton("Move_detector", ImVec2(c::background::size.x, c::background::size.y)));
|
||
|
if (ImGui::IsItemActive()) {
|
||
|
|
||
|
GetWindowRect(hwnd, &rc);
|
||
|
MoveWindow(hwnd, rc.left + ImGui::GetMouseDragDelta().x, rc.top + ImGui::GetMouseDragDelta().y, c::background::size.x, c::background::size.y, TRUE);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
float size = 0.f;
|
||
|
bool inject = false;
|
||
|
|
||
|
void RenderBlur(HWND hwnd)
|
||
|
{
|
||
|
struct ACCENTPOLICY
|
||
|
{
|
||
|
int na;
|
||
|
int nf;
|
||
|
int nc;
|
||
|
int nA;
|
||
|
};
|
||
|
struct WINCOMPATTRDATA
|
||
|
{
|
||
|
int na;
|
||
|
PVOID pd;
|
||
|
ULONG ul;
|
||
|
};
|
||
|
|
||
|
const HINSTANCE hm = LoadLibrary(L"user32.dll");
|
||
|
if (hm)
|
||
|
{
|
||
|
typedef BOOL(WINAPI* pSetWindowCompositionAttribute)(HWND, WINCOMPATTRDATA*);
|
||
|
|
||
|
const pSetWindowCompositionAttribute SetWindowCompositionAttribute = (pSetWindowCompositionAttribute)GetProcAddress(hm, "SetWindowCompositionAttribute");
|
||
|
if (SetWindowCompositionAttribute)
|
||
|
{
|
||
|
ACCENTPOLICY policy = { 3, 0, 0, 0 }; // and even works 4,0,155,0 (Acrylic blur)
|
||
|
WINCOMPATTRDATA data = { 19, &policy,sizeof(ACCENTPOLICY) };
|
||
|
SetWindowCompositionAttribute(hwnd, &data);
|
||
|
}
|
||
|
FreeLibrary(hm);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
DWORD win_flags = ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoMove;
|
||
|
|
||
|
namespace ImGui {
|
||
|
|
||
|
void CustomAddText(ImDrawList* list, ImFont* font, float size, ImVec2 pos, ImU32 color, const char* text)
|
||
|
{
|
||
|
list->AddText(font, size, (pos - font->CalcTextSizeA(font->FontSize, FLT_MAX, 0.f, text) / 2), color, text);
|
||
|
}
|
||
|
|
||
|
bool Spinner(const char* label, float radius, int thickness, const ImU32& color) {
|
||
|
ImGuiWindow* window = GetCurrentWindow();
|
||
|
if (window->SkipItems) return false;
|
||
|
|
||
|
ImGuiContext& g = *GImGui;
|
||
|
const ImGuiStyle& style = g.Style;
|
||
|
const ImGuiID id = window->GetID(label);
|
||
|
|
||
|
ImVec2 pos = window->DC.CursorPos;
|
||
|
ImVec2 size((radius) * 2, (radius) * 2);
|
||
|
|
||
|
const ImRect bb(pos, ImVec2(pos.x + size.x, pos.y + size.y));
|
||
|
ItemSize(bb, 0.f);
|
||
|
|
||
|
if (!ItemAdd(bb, id)) return false;
|
||
|
|
||
|
window->DrawList->PathClear();
|
||
|
|
||
|
int num_segments = 2048;
|
||
|
int start = abs(ImSin(g.Time * 1.8f) * (num_segments - 5));
|
||
|
|
||
|
const float a_min = IM_PI * 2.0f * ((float)start) / (float)num_segments;
|
||
|
const float a_max = IM_PI * 2.0f * ((float)num_segments - 3) / (float)num_segments;
|
||
|
|
||
|
const ImVec2 centre = ImVec2(pos.x + radius, pos.y + radius);
|
||
|
|
||
|
for (int i = 0; i < num_segments; i++) {
|
||
|
const float a = a_min + ((float)i / (float)num_segments) * (a_max - a_min);
|
||
|
window->DrawList->PathLineTo(ImVec2(centre.x + ImCos(a + g.Time * 8) * radius,
|
||
|
centre.y + ImSin(a + g.Time * 8) * radius));
|
||
|
}
|
||
|
|
||
|
window->DrawList->PathStroke(color, false, thickness);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
||
|
{
|
||
|
|
||
|
WNDCLASSEXW wc;
|
||
|
wc.cbSize = sizeof(WNDCLASSEXW);
|
||
|
wc.style = CS_CLASSDC;
|
||
|
wc.lpfnWndProc = WndProc;
|
||
|
wc.cbClsExtra = NULL;
|
||
|
wc.cbWndExtra = NULL;
|
||
|
wc.hInstance = nullptr;
|
||
|
wc.hIcon = LoadIcon(0, IDI_APPLICATION);
|
||
|
wc.hCursor = LoadCursor(0, IDC_ARROW);
|
||
|
wc.hbrBackground = nullptr;
|
||
|
wc.lpszMenuName = L"ImGui";
|
||
|
wc.lpszClassName = L"Example";
|
||
|
wc.hIconSm = LoadIcon(0, IDI_APPLICATION);
|
||
|
|
||
|
RegisterClassExW(&wc);
|
||
|
hwnd = CreateWindowExW(NULL, wc.lpszClassName, L"Example", WS_POPUP, (GetSystemMetrics(SM_CXSCREEN) / 2) - (c::background::size.x / 2), (GetSystemMetrics(SM_CYSCREEN) / 2) - (c::background::size.y / 2), c::background::size.x, c::background::size.y, 0, 0, 0, 0);
|
||
|
|
||
|
MARGINS margins = { -1 };
|
||
|
DwmExtendFrameIntoClientArea(hwnd, &margins);
|
||
|
|
||
|
POINT mouse;
|
||
|
rc = { 0 };
|
||
|
GetWindowRect(hwnd, &rc);
|
||
|
|
||
|
if (!CreateDeviceD3D(hwnd))
|
||
|
{
|
||
|
CleanupDeviceD3D();
|
||
|
::UnregisterClassW(wc.lpszClassName, wc.hInstance);
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
// Show the window
|
||
|
::ShowWindow(hwnd, SW_SHOWDEFAULT);
|
||
|
::UpdateWindow(hwnd);
|
||
|
|
||
|
// Setup Dear ImGui context
|
||
|
IMGUI_CHECKVERSION();
|
||
|
ImGui::CreateContext();
|
||
|
ImGuiIO& io = ImGui::GetIO(); (void)io;
|
||
|
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
|
||
|
io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
|
||
|
|
||
|
font::lexend_default_semibold = io.Fonts->AddFontFromMemoryTTF(lexand_semibold, sizeof(lexand_semibold), 15.f, NULL, io.Fonts->GetGlyphRangesCyrillic());
|
||
|
font::lexend_child_semibold = io.Fonts->AddFontFromMemoryTTF(lexand_semibold, sizeof(lexand_semibold), 13.f, NULL, io.Fonts->GetGlyphRangesCyrillic());
|
||
|
font::lexand_notice_bold = io.Fonts->AddFontFromMemoryTTF(lexand_black, sizeof(lexand_black), 40.f, NULL, io.Fonts->GetGlyphRangesCyrillic());
|
||
|
font::lexand_name_bold = io.Fonts->AddFontFromMemoryTTF(lexand_black, sizeof(lexand_black), 20.f, NULL, io.Fonts->GetGlyphRangesCyrillic());
|
||
|
|
||
|
font::lexand_info_bold = io.Fonts->AddFontFromMemoryTTF(lexand_bold, sizeof(lexand_bold), 15.f, NULL, io.Fonts->GetGlyphRangesCyrillic());
|
||
|
font::lexand_tabs_bold = io.Fonts->AddFontFromMemoryTTF(lexand_bold, sizeof(lexand_bold), 18.f, NULL, io.Fonts->GetGlyphRangesCyrillic());
|
||
|
font::default_lexend = io.Fonts->AddFontFromMemoryTTF(lexand_semibold, sizeof(lexand_semibold), 20.f, NULL, io.Fonts->GetGlyphRangesCyrillic());
|
||
|
|
||
|
if (image::game == nullptr) D3DXCreateTextureFromFileInMemoryEx(g_pd3dDevice, &game_image, sizeof(game_image), 510, 90, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, &image::game);
|
||
|
if (image::user_icon == nullptr) D3DXCreateTextureFromFileInMemoryEx(g_pd3dDevice, &user_ico, sizeof(user_ico), 35, 35, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, &image::user_icon);
|
||
|
if (image::close_icon == nullptr) D3DXCreateTextureFromFileInMemoryEx(g_pd3dDevice, &close_icon, sizeof(close_icon), 20, 20, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, &image::close_icon);
|
||
|
if (image::logout_icon == nullptr) D3DXCreateTextureFromFileInMemoryEx(g_pd3dDevice, &logout_ico, sizeof(logout_ico), 20, 20, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, &image::logout_icon);
|
||
|
if (image::subscription_icon == nullptr) D3DXCreateTextureFromFileInMemoryEx(g_pd3dDevice, &subscription_ico, sizeof(subscription_ico), 20, 20, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, &image::subscription_icon);
|
||
|
|
||
|
// Setup Dear ImGui style
|
||
|
ImGui::StyleColorsDark();
|
||
|
|
||
|
ImGui_ImplWin32_Init(hwnd);
|
||
|
ImGui_ImplDX9_Init(g_pd3dDevice);
|
||
|
|
||
|
bool show_demo_window = true;
|
||
|
bool show_another_window = false;
|
||
|
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
|
||
|
|
||
|
// Main loop
|
||
|
bool done = false;
|
||
|
while (!done)
|
||
|
{
|
||
|
// Poll and handle messages (inputs, window resize, etc.)
|
||
|
// See the WndProc() function below for our to dispatch events to the Win32 backend.
|
||
|
MSG msg;
|
||
|
while (::PeekMessage(&msg, nullptr, 0U, 0U, PM_REMOVE))
|
||
|
{
|
||
|
::TranslateMessage(&msg);
|
||
|
::DispatchMessage(&msg);
|
||
|
if (msg.message == WM_QUIT)
|
||
|
done = true;
|
||
|
}
|
||
|
if (done)
|
||
|
break;
|
||
|
|
||
|
// Handle window resize (we don't resize directly in the WM_SIZE handler)
|
||
|
if (g_ResizeWidth != 0 && g_ResizeHeight != 0)
|
||
|
{
|
||
|
g_d3dpp.BackBufferWidth = g_ResizeWidth;
|
||
|
g_d3dpp.BackBufferHeight = g_ResizeHeight;
|
||
|
g_ResizeWidth = g_ResizeHeight = 0;
|
||
|
ResetDevice();
|
||
|
}
|
||
|
|
||
|
// Start the Dear ImGui frame
|
||
|
ImGui_ImplDX9_NewFrame();
|
||
|
ImGui_ImplWin32_NewFrame();
|
||
|
ImGui::NewFrame();
|
||
|
|
||
|
ImGuiStyle* style = &ImGui::GetStyle();
|
||
|
|
||
|
style->WindowBorderSize = 0.f;
|
||
|
style->WindowPadding = ImVec2(0.f, 0.f);
|
||
|
style->ItemSpacing = ImVec2(20.f, 20.f);
|
||
|
|
||
|
ImGui::SetNextWindowSize(ImVec2(c::background::size));
|
||
|
|
||
|
ImGui::SetNextWindowPos(ImVec2(0, 0));
|
||
|
ImGui::Begin("IMGUI", nullptr, win_flags);
|
||
|
{
|
||
|
const ImVec2& pos = ImGui::GetWindowPos();
|
||
|
const ImVec2& region = ImGui::GetContentRegionMax();
|
||
|
const ImVec2& spacing = ImGui::GetStyle().ItemSpacing;
|
||
|
|
||
|
ImGui::GetBackgroundDrawList()->AddRectFilled(pos + ImVec2(0, 0), pos + ImVec2(150, region.y), ImGui::GetColorU32(c::background::tab_list), c::background::rounding, ImDrawCornerFlags_Left);
|
||
|
ImGui::GetBackgroundDrawList()->AddRectFilled(pos + ImVec2(150, 0), pos + ImVec2(region.x, region.y), ImGui::GetColorU32(c::background::background), c::background::rounding, ImDrawCornerFlags_Right);
|
||
|
|
||
|
opticaly = ImLerp(opticaly, login_page ? 0.1f : 1.0f, ImGui::GetIO().DeltaTime * 6.f);
|
||
|
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, opticaly);
|
||
|
|
||
|
ImGui::GetBackgroundDrawList()->AddLine(pos + ImVec2(150, 0), pos + ImVec2(150, region.y), ImGui::GetColorU32(c::background::stoke), 1.f);
|
||
|
ImGui::GetBackgroundDrawList()->AddLine(pos + ImVec2(0, 60), pos + ImVec2(region.x, 60), ImGui::GetColorU32(c::background::stoke), 1.f);
|
||
|
ImGui::GetBackgroundDrawList()->AddLine(pos + ImVec2(region.x - 60, 0), pos + ImVec2(region.x - 60, 60), ImGui::GetColorU32(c::background::stoke), 1.f);
|
||
|
|
||
|
ImGui::CustomAddText(ImGui::GetBackgroundDrawList(), font::lexand_name_bold, 20.f, pos + ImVec2(150, 60) / 2, ImGui::GetColorU32(c::accent_color), "INT PROJECT");
|
||
|
|
||
|
ImGui::GetBackgroundDrawList()->AddImage(image::close_icon, pos + ImVec2(region.x - 40, 20), pos + ImVec2(region.x - 20, 40), ImVec2(0, 0), ImVec2(1, 1), ImGui::GetColorU32(c::text::text));
|
||
|
if (!login_page && GetAsyncKeyState(VK_LBUTTON) && ImGui::IsMouseHoveringRect(pos + ImVec2(region.x - 60, 0), pos + ImVec2(region.x, 60), true)) PostQuitMessage(0);
|
||
|
|
||
|
ImGui::GetBackgroundDrawList()->AddImageRounded(image::user_icon, pos + ImVec2(region.x - (73 + 35), 13), pos + ImVec2(region.x - 73, 47), ImVec2(0, 0), ImVec2(1, 1), ImGui::GetColorU32(c::text::text_active), 30.f);
|
||
|
ImGui::GetBackgroundDrawList()->AddText(pos + ImVec2(region.x - (73 + 47) - ImGui::CalcTextSize("EAX").x, (60 - ImGui::CalcTextSize("EAX").y) / 2), ImGui::GetColorU32(c::accent_color), "EAX");
|
||
|
|
||
|
ImGui::GetBackgroundDrawList()->AddImage(image::subscription_icon, pos + ImVec2(150 + spacing.x, 20), pos + ImVec2(170 + spacing.x, 40), ImVec2(0, 0), ImVec2(1, 1), ImGui::GetColorU32(c::accent_color));
|
||
|
|
||
|
ImGui::PushFont(font::lexand_tabs_bold);
|
||
|
ImGui::GetBackgroundDrawList()->AddText(pos + ImVec2(183 + (spacing.x), (60 - ImGui::CalcTextSize("SUBSCRIPTIONS").y) / 2), ImGui::GetColorU32(c::text::text), "SUBSCRIPTIONS");
|
||
|
ImGui::PopFont();
|
||
|
|
||
|
ImGui::BeginDisabled(login_page);
|
||
|
{
|
||
|
static int tabs;
|
||
|
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(c::tabs::spacing));
|
||
|
|
||
|
ImGui::SetCursorPos(ImVec2(10, 70));
|
||
|
ImGui::BeginGroup();
|
||
|
{
|
||
|
|
||
|
TextColoredTAB(ImGui::GetColorU32(c::accent_color), "MAIN", font::lexand_tabs_bold);
|
||
|
|
||
|
if (ImGui::Tab(0 == tabs, "Subscriptins", ImVec2(122, 20))) tabs = 0;
|
||
|
|
||
|
TextColoredTAB(ImGui::GetColorU32(c::accent_color), "LINKS", font::lexand_tabs_bold);
|
||
|
|
||
|
if (ImGui::Tab(1 == tabs, "Personal area", ImVec2(122, 20))) tabs = 1;
|
||
|
|
||
|
if (ImGui::Tab(2 == tabs, "Webside", ImVec2(122, 20))) tabs = 2;
|
||
|
|
||
|
if (ImGui::Tab(3 == tabs, "FAQ", ImVec2(122, 20))) tabs = 3;
|
||
|
|
||
|
}
|
||
|
ImGui::EndGroup();
|
||
|
ImGui::PopStyleVar();
|
||
|
|
||
|
opticaly_info = ImLerp(opticaly_info, size < 0.99f ? login_page ? 0.1f : 1.0f : 0.0f, ImGui::GetIO().DeltaTime * 6.f);
|
||
|
|
||
|
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, opticaly_info);
|
||
|
|
||
|
ImGui::SetCursorPos(ImVec2(150, 60) + spacing);
|
||
|
ImGui::BeginGroup();
|
||
|
{
|
||
|
|
||
|
static float tab_alpha = 0.f; /* */ static float tab_add; /* */ static int active_tab = 0;
|
||
|
|
||
|
tab_alpha = ImClamp(tab_alpha + (4.f * ImGui::GetIO().DeltaTime * (tabs == active_tab ? 1.f : -1.f)), 0.f, 1.f);
|
||
|
|
||
|
if (tab_alpha == 0.f && tab_add == 0.f) active_tab = tabs;
|
||
|
|
||
|
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, tab_alpha * style->Alpha);
|
||
|
|
||
|
if (active_tab == 0) {
|
||
|
|
||
|
ImGui::GetBackgroundDrawList()->AddImage(image::logout_icon, pos + ImVec2((150 - 20) / 2 - 35, region.y - (80 - 20) / 2), pos + ImVec2((150 + 20) / 2 - 35, region.y - (80 + 20) / 2), ImVec2(0, 0), ImVec2(1, 1), ImGui::GetColorU32(c::accent_color));
|
||
|
if (GetAsyncKeyState(VK_LBUTTON) && ImGui::IsMouseHoveringRect(pos + ImVec2(0, region.y - 50), pos + ImVec2(150, region.y), true)) login_page = true;
|
||
|
|
||
|
ImGui::CustomAddText(ImGui::GetBackgroundDrawList(), font::lexand_info_bold, 15.f, pos + ImVec2((150 / 2) + 20, region.y - 40), ImGui::GetColorU32(c::text::text), "LOG OUT");
|
||
|
|
||
|
ImGui::GetWindowDrawList()->AddImageRounded(image::game, ImGui::GetCursorScreenPos(), ImGui::GetCursorScreenPos() + ImVec2(region.x - (spacing.x * 2 + 150), 90), ImVec2(0, 0), ImVec2(1, 1), ImGui::GetColorU32(c::text::text_active), c::child::rounding);
|
||
|
|
||
|
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 90 + spacing.y);
|
||
|
|
||
|
ImGui::CustomBeginChild("INFO", "Information about our product", ImVec2(region.x - (spacing.x * 2 + 150), 150), false, NULL);
|
||
|
{
|
||
|
|
||
|
ImGui::GetWindowDrawList()->AddText(font::lexand_info_bold, 15.f, ImGui::GetCursorScreenPos() + ImVec2(0, 0), ImGui::GetColorU32(c::text::text_hov), "GAME");
|
||
|
ImGui::GetWindowDrawList()->AddText(font::lexand_info_bold, 15.f, ImGui::GetCursorScreenPos() + ImVec2(0, 30), ImGui::GetColorU32(c::text::text_hov), "STATUS");
|
||
|
ImGui::GetWindowDrawList()->AddText(font::lexand_info_bold, 15.f, ImGui::GetCursorScreenPos() + ImVec2(0, 60), ImGui::GetColorU32(c::text::text_hov), "LAST UPD");
|
||
|
|
||
|
ImGui::GetWindowDrawList()->AddText(font::lexand_info_bold, 15.f, ImGui::GetCursorScreenPos() + ImVec2(ImGui::GetContentRegionMax().x - (style->WindowPadding.x + ImGui::CalcTextSize("Counter-Strike: Global offensive").x), 0), ImGui::GetColorU32(c::text::text_hov), "Counter-Strike: Global offensive");
|
||
|
ImGui::GetWindowDrawList()->AddText(font::lexand_info_bold, 15.f, ImGui::GetCursorScreenPos() + ImVec2(ImGui::GetContentRegionMax().x - (style->WindowPadding.x + ImGui::CalcTextSize("UNDETECTED").x), 30), ImGui::GetColorU32(c::text::text_hov), "UNDETECTED");
|
||
|
ImGui::GetWindowDrawList()->AddText(font::lexand_info_bold, 15.f, ImGui::GetCursorScreenPos() + ImVec2(ImGui::GetContentRegionMax().x - (style->WindowPadding.x + ImGui::CalcTextSize("01.01.2024").x), 60), ImGui::GetColorU32(c::text::text_hov), "01.01.2024");
|
||
|
|
||
|
if (login_page || !internet)
|
||
|
DrawBackgroundBlur(ImGui::GetWindowDrawList(), g_pd3dDevice);
|
||
|
|
||
|
}
|
||
|
ImGui::CustomEndChild();
|
||
|
|
||
|
if (ImGui::Button("INJECT", ImVec2(80, 30))) inject = true;
|
||
|
|
||
|
ImGui::SameLine();
|
||
|
|
||
|
size = ImLerp(size, inject ? 1.f : 0.f, ImGui::GetIO().DeltaTime * 6.f);
|
||
|
ImGui::ProgressBar(1, size, ImVec2(region.x - (spacing.x * 3 + 150) - 80, 30));
|
||
|
|
||
|
}
|
||
|
else if (active_tab == 3)
|
||
|
{
|
||
|
ImGui::CustomBeginChild("FAQ", "Information about our cheat and other", ImVec2(region.x - (spacing.x * 2 + 150), region.y - (spacing.y * 2 + 60)), false, NULL);
|
||
|
{
|
||
|
ImGui::PushTextWrapPos(ImGui::GetContentRegionMax().x);
|
||
|
|
||
|
ImGui::TextColored(ImColor(ImGui::GetColorU32(c::text::text_hov)), "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ac ut consequat semper viverra nam libero. Molestie a iaculis at erat. Nullam ac tortor vitae purus faucibus ornare suspendisse. Commodo viverra maecenas accumsan lacus vel. Nec ullamcorper sit amet risus nullam eget felis eget nunc. Volutpat consequat mauris nunc congue nisi vitae suscipit. Magnis dis parturient montes nascetur ridiculus mus mauris. Potenti nullam ac tortor vitae purus faucibus ornare. Tristique senectus et netus et malesuada fames ac. Netus et malesuada fames ac turpis egestas maecenas. Ut placerat orci nulla pellentesque. Volutpat odio facilisis mauris sit amet massa. A lacus vestibulum sed arcu non. Nibh tortor id aliquet lectus proin nibh nisl condimentum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Et egestas quis ipsum suspendisse ultrices. Tempus imperdiet nulla malesuada pellentesque. Vivamus at augue eget arcu dictum varius duis at consectetur.Nibh praesent tristique magna sit amet purus gravida quis.Sit amet dictum sit amet justo.Quam elementum pulvinar etiam non quam.Sed felis eget velit aliquet sagittis id consectetur purus ut.Vitae elementum curabitur vitae nunc.Donec ultrices tincidunt arcu non sodales neque sodales ut.Purus faucibus ornare suspendisse sed.Venenatis a condimentum vitae sapien pellentesque habitant morbi.Nec ultrices dui sapien eget mi proin.Ipsum dolor sit amet consectetur adipiscing.Vitae ultricies leo integer malesuada nunc vel risus.Mauris commodo quis imperdiet massa tincidunt nunc.Nisl nunc mi ipsum faucibus vitae aliquet. Quis viverra nibh cras pulvinar mattis nunc sed.Semper feugiat nibh sed pulvinar proin gravida hendrerit.Eget magna fermentum iaculis eu non diam phasellus vestibulum.Arcu dictum varius duis at consectetur lorem donec massa sapien.Vel risus commodo viverra maecenas.Elementum eu facilisis sed odio morbi quis commodo odio.Eget gravida cum sociis natoque penatibus et magnis.Ac ut consequat semper viverra nam libero justo laoreet sit.Diam ut venenatis tellus in metus vulputate eu.Eu nisl nunc mi ipsum faucibus vitae. Amet nisl purus in mollis nunc sed.Turpis egestas maecenas pharetra convallis posuere morbi leo.Ultrices mi tempus imperdiet nulla malesuada pellentesque.Orci dapibus ultrices in iaculis nunc sed augue.Magna fermentum iaculis eu non diam phasellus vestibulum lorem sed.Nibh sit amet commodo nulla facilisi nullam vehicula ipsum a.Velit euismod in pellentesque massa placerat.Sit amet aliquam id diam.Vel quam elementum pulvinar etiam non quam lacus suspendisse faucibus.Non quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor.Amet luctus venenatis lectus magna.Maecenas volutpat blandit aliquam etiam erat velit scelerisque in.Nec ultrices dui sapien eget mi. Purus sit amet volutpat consequat mauris nunc congue nisi vitae.Et netus et malesuada fames ac.Nibh ipsum consequat nisl vel pretium lectus quam id.Tellus molestie nunc non blandit massa.Proin nibh nisl condimentum id.Vel pretium lectus quam id leo in.A condimentum vitae sapien pellentesque habitant morbi tristique senectus.Nulla facilisi cras fermentum odio eu feugiat pretium.Eleifend donec pretium vulputate sapien nec.Tellus cras adipiscing enim eu turpis egestas pretium aenean.Non pulvinar neque laoreet suspendisse interdum consectetur.Malesuada bibendum arcu vitae elementum curabitur.Turpis massa sed elementum tempus egestas sed sed risus. Condimentum id venenatis a condimentum vitae.Amet dictum sit amet justo.Vel eros donec ac odio.Dignissim cras tincidunt lobortis feugiat vivamus at augue.Mauris a diam maecenas sed enim ut sem.Mi eget mauris pharetra et ultrices neque.Odio pellentesque diam volutpat commodo sed egestas egestas fringilla phasellus.Vel pretium lectus quam id leo in vitae turpis.Eget mauris pharetra et ultrices.Egestas sed sed risus pretium quam.Ipsum dolor sit amet consectetur adipiscing elit ut aliquam.Pretium quam vulputat
|
||
|
|
||
|
ImGui::PopTextWrapPos();
|
||
|
|
||
|
}
|
||
|
ImGui::CustomEndChild();
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
ImGui::EndGroup();
|
||
|
}
|
||
|
ImGui::PopStyleVar();
|
||
|
|
||
|
}
|
||
|
ImGui::EndDisabled();
|
||
|
|
||
|
ImGui::PopStyleVar(2);
|
||
|
|
||
|
if (size > 0.99f) {
|
||
|
ImGui::CustomAddText(ImGui::GetForegroundDrawList(), font::lexand_notice_bold, 40.f, pos + ImVec2((c::background::size.x + 150) / 2, ((c::background::size.y + 60) / 2) - 25.f), ImGui::GetColorU32(c::text::text_hint, 1.f - opticaly_info), "SUCCESFULLY");
|
||
|
ImGui::CustomAddText(ImGui::GetForegroundDrawList(), font::lexand_notice_bold, 40.f, pos + ImVec2((c::background::size.x + 150) / 2, ((c::background::size.y + 60) / 2) + 25.f), ImGui::GetColorU32(c::text::text_hint, 1.f - opticaly_info), "INJECTED");
|
||
|
}
|
||
|
|
||
|
if (login_page && internet)
|
||
|
{
|
||
|
|
||
|
DrawBackgroundBlur(ImGui::GetWindowDrawList(), g_pd3dDevice);
|
||
|
|
||
|
ImGui::SetCursorPos(ImVec2(c::background::size / 4) + ImVec2(0, 15));
|
||
|
ImGui::CustomBeginChild("LOG IN", "Enter your username and password", ImVec2(c::background::size / 2) - ImVec2(0, 15), true, NULL);
|
||
|
{
|
||
|
|
||
|
std::string login_succes = "user";
|
||
|
static char login[24] = { "" };
|
||
|
ImGui::InputTextEx("##LOGIN", "Enter your login here", login, 24, ImVec2(ImGui::GetContentRegionMax().x - style->WindowPadding.x, 25), NULL);
|
||
|
|
||
|
std::string password_succes = "123";
|
||
|
static char password[24] = { "" };
|
||
|
ImGui::InputTextEx("##PASSWORD", "Enter your password here", password, 24, ImVec2(ImGui::GetContentRegionMax().x - style->WindowPadding.x, 25), NULL);
|
||
|
|
||
|
ImGui::GetWindowDrawList()->AddRectFilled(ImGui::GetCursorScreenPos() + ImVec2(50, 0), ImGui::GetCursorScreenPos() + ImVec2((ImGui::GetContentRegionMax().x - style->WindowPadding.x) - 50, 4), ImGui::GetColorU32(c::input::outline), 30.f);
|
||
|
|
||
|
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 15);
|
||
|
|
||
|
if (ImGui::Button("AUTHORIZATION", ImVec2(ImGui::GetContentRegionMax().x - style->WindowPadding.x, 25)) && login == login_succes && password == password_succes) login_page = false;
|
||
|
|
||
|
|
||
|
}
|
||
|
ImGui::CustomEndChild();
|
||
|
}
|
||
|
|
||
|
if (!internet) {
|
||
|
DrawBackgroundBlur(ImGui::GetWindowDrawList(), g_pd3dDevice);
|
||
|
|
||
|
ImGui::SetCursorPos(ImVec2(c::background::size / 2) - ImVec2(50, 50));
|
||
|
ImGui::Spinner("##SPIN", 50.f, 4.f, ImGui::GetColorU32(c::accent_color));
|
||
|
|
||
|
ImGui::CustomAddText(ImGui::GetWindowDrawList(), font::lexand_info_bold, 15.f, pos + ImVec2(c::background::size.x / 2, region.y - 40), ImGui::GetColorU32(c::text::text), "Check your internet connection");
|
||
|
}
|
||
|
|
||
|
move_window();
|
||
|
}
|
||
|
ImGui::End();
|
||
|
|
||
|
ImGui::EndFrame();
|
||
|
g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, FALSE);
|
||
|
g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
|
||
|
g_pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE);
|
||
|
D3DCOLOR clear_col_dx = 0;
|
||
|
g_pd3dDevice->Clear(0, nullptr, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, clear_col_dx, 1.0f, 0);
|
||
|
if (g_pd3dDevice->BeginScene() >= 0)
|
||
|
{
|
||
|
ImGui::Render();
|
||
|
ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
|
||
|
g_pd3dDevice->EndScene();
|
||
|
}
|
||
|
HRESULT result = g_pd3dDevice->Present(nullptr, nullptr, nullptr, nullptr);
|
||
|
|
||
|
// Handle loss of D3D9 device
|
||
|
if (result == D3DERR_DEVICELOST && g_pd3dDevice->TestCooperativeLevel() == D3DERR_DEVICENOTRESET)
|
||
|
ResetDevice();
|
||
|
}
|
||
|
|
||
|
ImGui_ImplDX9_Shutdown();
|
||
|
ImGui_ImplWin32_Shutdown();
|
||
|
ImGui::DestroyContext();
|
||
|
|
||
|
CleanupDeviceD3D();
|
||
|
::DestroyWindow(hwnd);
|
||
|
::UnregisterClassW(wc.lpszClassName, wc.hInstance);
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
// Helper functions
|
||
|
|
||
|
bool CreateDeviceD3D(HWND hWnd)
|
||
|
{
|
||
|
if ((g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)) == nullptr)
|
||
|
return false;
|
||
|
|
||
|
// Create the D3DDevice
|
||
|
ZeroMemory(&g_d3dpp, sizeof(g_d3dpp));
|
||
|
g_d3dpp.Windowed = TRUE;
|
||
|
g_d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
||
|
g_d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; // Need to use an explicit format with alpha if needing per-pixel alpha composition.
|
||
|
g_d3dpp.EnableAutoDepthStencil = TRUE;
|
||
|
g_d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
|
||
|
g_d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_ONE; // Present with vsync
|
||
|
//g_d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; // Present without vsync, maximum unthrottled framerate
|
||
|
if (g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &g_d3dpp, &g_pd3dDevice) < 0)
|
||
|
return false;
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
void CleanupDeviceD3D()
|
||
|
{
|
||
|
if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = nullptr; }
|
||
|
if (g_pD3D) { g_pD3D->Release(); g_pD3D = nullptr; }
|
||
|
}
|
||
|
|
||
|
void ResetDevice()
|
||
|
{
|
||
|
ImGui_ImplDX9_InvalidateDeviceObjects();
|
||
|
HRESULT hr = g_pd3dDevice->Reset(&g_d3dpp);
|
||
|
if (hr == D3DERR_INVALIDCALL)
|
||
|
IM_ASSERT(0);
|
||
|
ImGui_ImplDX9_CreateDeviceObjects();
|
||
|
}
|
||
|
|
||
|
// Forward declare message handler from imgui_impl_win32.cpp
|
||
|
extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
|
|
||
|
// Win32 message handler
|
||
|
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
|
||
|
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application, or clear/overwrite your copy of the mouse data.
|
||
|
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application, or clear/overwrite your copy of the keyboard data.
|
||
|
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
|
||
|
LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||
|
{
|
||
|
if (ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam))
|
||
|
return true;
|
||
|
|
||
|
switch (msg)
|
||
|
{
|
||
|
case WM_SIZE:
|
||
|
if (wParam == SIZE_MINIMIZED)
|
||
|
return 0;
|
||
|
g_ResizeWidth = (UINT)LOWORD(lParam); // Queue resize
|
||
|
g_ResizeHeight = (UINT)HIWORD(lParam);
|
||
|
return 0;
|
||
|
case WM_SYSCOMMAND:
|
||
|
if ((wParam & 0xfff0) == SC_KEYMENU) // Disable ALT application menu
|
||
|
return 0;
|
||
|
break;
|
||
|
case WM_DESTROY:
|
||
|
::PostQuitMessage(0);
|
||
|
return 0;
|
||
|
}
|
||
|
return ::DefWindowProcW(hWnd, msg, wParam, lParam);
|
||
|
}
|