From 7200fcf4c114ed15ac07762b7cbeeae855ba3fba Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 9 May 2024 22:05:24 +0200 Subject: [PATCH] Reworked some stuff, and tested an way to Print Steam ids of clients which joined. Also changed that now an Gif is the Background of the Menu for Testing purposes. Looks kinda okay but sketchy --- EscapeTheBackroomsGUiTest/Cheat.h | 68 +++++++++--- .../EscapeTheBackroomsGUiTest.vcxproj | 2 + .../EscapeTheBackroomsGUiTest.vcxproj.filters | 6 ++ EscapeTheBackroomsGUiTest/GUI/ZeroGUI.h | 102 +++++++++++++++++- EscapeTheBackroomsGUiTest/Settings.h | 3 +- EscapeTheBackroomsGUiTest/dllmain.cpp | 52 ++++++--- 6 files changed, 200 insertions(+), 33 deletions(-) diff --git a/EscapeTheBackroomsGUiTest/Cheat.h b/EscapeTheBackroomsGUiTest/Cheat.h index aa446d0..6abb73a 100644 --- a/EscapeTheBackroomsGUiTest/Cheat.h +++ b/EscapeTheBackroomsGUiTest/Cheat.h @@ -72,6 +72,7 @@ namespace Cheat { SDK::UKismetStringLibrary* StringLib = 0x0; SDK::UKismetTextLibrary* TextLib = 0x0; SDK::UGameplayStatics* GPStatics = 0x0; + SDK::UKismetRenderingLibrary* RenderLib = 0x0; SDK::AMP_PlayerController_C* PlayerController = 0x0; SDK::ULocalPlayer* LocalPlayer = 0x0; SDK::ULevel* CurLevel = 0x0; @@ -168,6 +169,8 @@ namespace Cheat { GPStatics = (SDK::UGameplayStatics*)SDK::UObject::FindClassFast("GameplayStatics")->DefaultObject; + RenderLib = (SDK::UKismetRenderingLibrary*)SDK::UObject::FindClassFast("KismetRenderingLibrary")->DefaultObject; + CWINGui::Font = SDK::UObject::FindObject("Font Roboto.Roboto"); StaticConstructObject_Internal = (fStaticConstructObject_Internal)((uintptr_t)GetModuleHandle(0) + Offsets::StaticConstructObject_Internal); @@ -1322,6 +1325,29 @@ namespace Cheat { //Esp shit, World needed obviously else crashes if (Ok || Stages >= 6) { +#ifdef DEBUG //Will have to reverse some shit later. For now wont work + if (Settings::TestEvent_PrintSteamIDS) { + Settings::TestEvent_PrintSteamIDS = false; + + auto Players = PlayerStuff::PlayerList; + + for (size_t i = 0; i < Players.size(); i++) + { + auto Controller = (SDK::APlayerController*)Players[i].Pawn_->Controller; + + if (Controller) { + auto NetConnection = Controller->NetConnection; + + if (NetConnection) { + + } + } + } + } + +#endif + + if (PlayerController->SpectatorPawn) { } @@ -1571,7 +1597,7 @@ namespace Cheat { } -#ifdef Gatekeep +#ifdef DEBUG //Spawn stuff inside your hand, that wasnt supposed to even Spawn in there (Exploit 1, Dangerous Exploit) if (Settings::Spawner) { @@ -1698,7 +1724,7 @@ namespace Cheat { } else { - Message("Couldnt Spawn Rope. Class Not Found"); + Message("Couldnt Spawn Firework. Class Not Found"); } //BPCharacter->CustomTimeDilation = 0.001f; } @@ -1831,10 +1857,9 @@ namespace Cheat { { // Only works as Host - BPCharacter->CanJumpscare = false; - BPCharacter->CanKill = false; + - if (BPCharacter->Climb) { + if (BPCharacter->Climb) { //Fast climb ladder BPCharacter->Climb->TheTimeline.Length = 0.0f; } @@ -1971,7 +1996,7 @@ namespace Cheat { } -#ifdef Gatekeep +#ifdef DEBUG //Spawn ropes anywhere you want, how often you want also. (Exploit 3, severe) if (GetAsyncKeyState(VK_F2)& 1 && BPCharacter->CurrentItem_Rep) { @@ -1985,7 +2010,7 @@ namespace Cheat { } } -#endif // Gatekeep +#endif // No real Frontend implementation for this, for now if (GetAsyncKeyState(VK_F3) & 1) @@ -2226,7 +2251,7 @@ namespace Cheat { } -#ifdef Gatekeep +#ifdef DEBUG //Debugging purposes if (Settings::UnpossePawns) { Settings::UnpossePawns = false; @@ -2377,7 +2402,7 @@ namespace Cheat { PlayerController->AcknowledgedPawn->K2_SetActorLocation(SDK::FVector(PlayerPos.X - UPVector.X, PlayerPos.Y - UPVector.Y, PlayerPos.Z - UPVector.Z), false, 0, true); } -#ifdef Gatekeep +#ifdef DEBUG //no real frontend for this yet if (GetAsyncKeyState(VK_F1)) { BPCharacter->StartPushingActor_SERVER((SDK::ABP_Pushable_C*)PlayerController->AcknowledgedPawn, PlayerController->AcknowledgedPawn->K2_GetActorLocation(), PlayerController->ControlRotation); BPCharacter->StopPushingActor_SERVER((SDK::ABP_Pushable_C*)PlayerController->AcknowledgedPawn); @@ -2523,7 +2548,7 @@ namespace Cheat { } - if (CurrentInteractable->IsUsable && !CurrentInteractable->WasUsed) { + if (CurrentInteractable->IsUsable) { SDK::FVector2D ScreenPos; auto Location = CurrentInteractable->K2_GetActorLocation(); @@ -2556,6 +2581,7 @@ namespace Cheat { SDK::UClass* StaticSkinMf = nullptr; SDK::UClass* StaticBacteriaMf = nullptr; SDK::UClass* StaticHowlerMf = nullptr; + SDK::UClass* StaticABPCharacter = SDK::ABPCharacter_Demo_C::StaticClass(); @@ -2566,15 +2592,15 @@ namespace Cheat { if (Settings::RandomName) srand(time(NULL)); + + for (size_t i = 0; i < EnemyArray.Num(); i++) { if (!EnemyArray.IsValidIndex(i) || !EnemyArray[i] || EnemyArray[i] == PlayerController->Character)continue; auto CurrentEnemy = (SDK::ACharacter*)EnemyArray[i]; - auto Name = CurrentEnemy->Name.ToString(); - - if (Name.find("BPCharacter_Demo_C") != std::string::npos) { + if (CurrentEnemy->Class->IsA(StaticABPCharacter)) { auto CharacterBP = (SDK::ABPCharacter_Demo_C*)CurrentEnemy; auto StateBP = (SDK::AMP_PS_C*)CharacterBP->PlayerState; @@ -2649,6 +2675,14 @@ namespace Cheat { if (Settings::Godmode) { + + if (!Settings::IniShitsPlayer[7]) { + Settings::IniShitsPlayer[7] = true; + BPCharacter->CanJumpscare = false; + BPCharacter->CanKill = false; + } + + auto Name = CurrentEnemy->Class->Name; if (StaticSkinMf && Name == StaticSkinMf->Name) { auto SkinSteala = (SDK::ABP_SkinStealer_C*)CurrentEnemy; @@ -2673,7 +2707,15 @@ namespace Cheat { // Howlerdude->CanAttack = false; } } + else + { + if (Settings::IniShitsPlayer[7]) { + Settings::IniShitsPlayer[7] = false; + BPCharacter->CanJumpscare = true; + BPCharacter->CanKill = true; + } + } if (Settings::EnemyEsp) { UsefullFuncs::DrawBoxOnActor(Canvas, CurrentEnemy, UsefullFuncs::RGBATOFLinear(255, 0, 0, 255)); diff --git a/EscapeTheBackroomsGUiTest/EscapeTheBackroomsGUiTest.vcxproj b/EscapeTheBackroomsGUiTest/EscapeTheBackroomsGUiTest.vcxproj index cf8e40e..6789b81 100644 --- a/EscapeTheBackroomsGUiTest/EscapeTheBackroomsGUiTest.vcxproj +++ b/EscapeTheBackroomsGUiTest/EscapeTheBackroomsGUiTest.vcxproj @@ -91,6 +91,7 @@ C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;$(IncludePath) C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Lib\x64;$(LibraryPath) + C:\Users\sonny\Downloads\backgroundpng\Out;$(ExternalIncludePath) true @@ -183,6 +184,7 @@ + diff --git a/EscapeTheBackroomsGUiTest/EscapeTheBackroomsGUiTest.vcxproj.filters b/EscapeTheBackroomsGUiTest/EscapeTheBackroomsGUiTest.vcxproj.filters index 16166bf..5ab76e9 100644 --- a/EscapeTheBackroomsGUiTest/EscapeTheBackroomsGUiTest.vcxproj.filters +++ b/EscapeTheBackroomsGUiTest/EscapeTheBackroomsGUiTest.vcxproj.filters @@ -22,6 +22,9 @@ {53f1abc9-974e-496b-adbb-45a701a650ce} + + {af4a5384-604f-4524-93cc-ca60a54a5fb4} + @@ -5754,6 +5757,9 @@ Headerdateien + + Headerdateien\Data + diff --git a/EscapeTheBackroomsGUiTest/GUI/ZeroGUI.h b/EscapeTheBackroomsGUiTest/GUI/ZeroGUI.h index 9b162d5..1e53e62 100644 --- a/EscapeTheBackroomsGUiTest/GUI/ZeroGUI.h +++ b/EscapeTheBackroomsGUiTest/GUI/ZeroGUI.h @@ -383,7 +383,38 @@ namespace CWINGui FVector2D dragPos; void DrawThunder(FVector2D Size, FVector2D Pos); - bool Window(const char* name, FVector2D* pos, FVector2D size, bool isOpen) + struct GifData { + std::vector TextureArray; + int CurrentIndex; + ULONGLONG Const_Delay; + ULONGLONG CurrentTickDelay; + + GifData(std::vector Array, ULONGLONG AnimationDelay) { + this->TextureArray = Array; + this->Const_Delay = AnimationDelay; + this->CurrentIndex = 0; + this->CurrentTickDelay = 0; + } + + SDK::UTexture2D* GetCurrentImage() { + SDK::UTexture2D* Texture_ = TextureArray[CurrentIndex]; + + if (GetTickCount64() >= CurrentTickDelay) { + CurrentTickDelay = GetTickCount64() + Const_Delay; + + if (CurrentIndex + 1 >= TextureArray.size()) + CurrentIndex = 0; + else + CurrentIndex++; + } + + return Texture_; + } + }; + + void DrawTexture(SDK::UTexture2D* texture, SDK::FVector2D ScreenPos, SDK::FVector2D ScreenSize, float rotation = 0.0f, SDK::FLinearColor color = {1.0f, 1.0f, 1.0f, 1.0f}, SDK::EBlendMode BlendMode = SDK::EBlendMode::BLEND_Masked); + + bool Window(const char* name, FVector2D* pos, FVector2D size, bool isOpen, GifData* Gif = nullptr) { elements_count = 0; @@ -437,9 +468,21 @@ namespace CWINGui current_element_pos = FVector2D{ 0, 0 }; current_element_size = FVector2D{ 0, 0 }; - //Bg - drawFilledRect(FVector2D{ pos->X, pos->Y }, size.X, size.Y, Colors::Window_Background); - //drawFilledRect(FVector2D{ pos->X, pos->Y }, 122, size.Y, FLinearColor{ 0.006f, 0.006f, 0.006f, 1.0f });//My tabs bg + + if (Gif) { + auto Texture = Gif->GetCurrentImage(); + + drawFilledRect(FVector2D{ pos->X, pos->Y }, size.X, 25.0f, { 49 / 255, 49 / 255, 49 / 255, 1.0f}); + + DrawTexture(Texture, { pos->X, pos->Y }, { size.X, size.Y }); + } + else + { + //Bg + drawFilledRect(FVector2D{ pos->X, pos->Y }, size.X, size.Y, Colors::Window_Background); + //drawFilledRect(FVector2D{ pos->X, pos->Y }, 122, size.Y, FLinearColor{ 0.006f, 0.006f, 0.006f, 1.0f });//My tabs bg + } + //Header drawFilledRect(FVector2D{ pos->X, pos->Y }, size.X, 25.0f, Colors::Window_Header); @@ -740,6 +783,57 @@ namespace CWINGui drawFilledRect(SDK::FVector2D{ RootPosition.X - (Width / 1.5f), RootPosition.Y - 10 + (Height / 6) }, (Width) * (Shield / 100), Height2, ShieldColor); } + SDK::UTexture2D* LoadTexture(const wchar_t* Path) { + UTexture2D* LoadedTexture = nullptr; + + auto RenderClass = SDK::UKismetRenderingLibrary::StaticClass(); + + if (RenderClass) { + auto RenderingLibrary = (SDK::UKismetRenderingLibrary*)RenderClass->DefaultObject; + + if(RenderingLibrary) + LoadedTexture = RenderingLibrary->ImportFileAsTexture2D(SDK::UWorld::GetWorld(), SDK::FString(Path)); + } + + + return LoadedTexture; + } + + SDK::UTexture2D* LoadTexture(std::vector Texture) { + UTexture2D* LoadedTexture = nullptr; + + auto RenderClass = SDK::UKismetRenderingLibrary::StaticClass(); + + if (RenderClass) { + auto RenderingLibrary = (SDK::UKismetRenderingLibrary*)RenderClass->DefaultObject; + + if (RenderingLibrary) { + SDK::TArray BufferArray = SDK::TArray(Texture.size()); + + void** ptr = (void**)&BufferArray; + int* Size = (int*)( (uintptr_t)(&BufferArray) + 0x8); + + std::memcpy(ptr[0], Texture.data(), sizeof(uint8) * Texture.size()); + + *Size = Texture.size(); + + LoadedTexture = RenderingLibrary->ImportBufferAsTexture2D(SDK::UWorld::GetWorld(), BufferArray); + + delete[] ptr[0]; + } + + } + + + return LoadedTexture; + } + + + void DrawTexture(SDK::UTexture2D* texture, SDK::FVector2D ScreenPos, SDK::FVector2D ScreenSize, float rotation, SDK::FLinearColor color, SDK::EBlendMode BlendMode) { + if(texture) + canvas->K2_DrawTexture(texture, ScreenPos, ScreenSize, { 1.0f, 1.0f }, { 1.0f, 1.0f }, color, BlendMode, rotation, { 1.0f, 1.0f }); + } + void Checkbox(const wchar_t* name, bool* value) { elements_count++; diff --git a/EscapeTheBackroomsGUiTest/Settings.h b/EscapeTheBackroomsGUiTest/Settings.h index 8392ef6..2679f91 100644 --- a/EscapeTheBackroomsGUiTest/Settings.h +++ b/EscapeTheBackroomsGUiTest/Settings.h @@ -300,6 +300,7 @@ namespace Settings { //Misc bool ProtectCamServer = true; + bool TestEvent_PrintSteamIDS = false; bool UnlockPlayers = false; bool UnpossePawns = false; bool ChangeNameEvent = false; @@ -340,7 +341,7 @@ namespace Settings { bool AutoRespawnPlayers = true; bool wtf_ = false; bool IniShitsLevel[6]; - bool IniShitsPlayer[7]; + bool IniShitsPlayer[8]; bool SpawnItem = false; Items ItemToSpawn; diff --git a/EscapeTheBackroomsGUiTest/dllmain.cpp b/EscapeTheBackroomsGUiTest/dllmain.cpp index 2a4925f..b2db3be 100644 --- a/EscapeTheBackroomsGUiTest/dllmain.cpp +++ b/EscapeTheBackroomsGUiTest/dllmain.cpp @@ -3,8 +3,8 @@ #include #include "Cheat.h" #include +#include -#define Gatekeep typedef void (*PostRender_t)(SDK::UObject* pObject, SDK::UCanvas* pCanvas); PostRender_t origin_renderer; @@ -13,6 +13,10 @@ typedef void(__stdcall* fnProcessEvent)(SDK::UObject* Object, SDK::UFunction* Fu fnProcessEvent fnProcessEventOrigin; fnProcessEvent fnProcessEventTarget; +std::vector Datas; +CWINGui::GifData* GifBackground; + + std::wstring stringToWideString(const std::string& str) { std::wstring wstr(str.length(), L' '); @@ -177,7 +181,7 @@ void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms) auto obj_ = (SDK::UW_Kicked_C*)Obj; auto params_ = (SDK::Params::UW_Kicked_C_Tick_Params*)Parms; - auto mssg = Cheat::TextLib->Conv_StringToText(SDK::FString(L"Host the Broke ass Nigga kicked you lmao")); + auto mssg = Cheat::TextLib->Conv_StringToText(SDK::FString(L"Host the Broke ass fella kicked you lmao")); obj_->TextBlock_Message->SetText(mssg); @@ -190,6 +194,8 @@ void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms) return fnProcessEventOrigin(Obj, Function, Parms); } +SDK::UTexture2D* ImageTexture = nullptr; + void MainRender(SDK::UObject* object, SDK::UCanvas* Canvas) { @@ -240,6 +246,7 @@ void MainRender(SDK::UObject* object, SDK::UCanvas* Canvas) { int Size = 0; Cheat::DrawTextRGBWithFString(Canvas, SDK::FString(L"Spectator List:"), SDK::FVector2D(10, SpectatorListPositionY), SDK::FLinearColor(0.0f, 1.0f, 0.0f, 1.0f), false, 1.1f); + for (size_t i = 0; i < PlayerStuff::PlayerList.size(); i++) { @@ -252,7 +259,7 @@ void MainRender(SDK::UObject* object, SDK::UCanvas* Canvas) { static SDK::FVector2D WindowSize = { 500.0f, 555.0f }; - if (CWINGui::Window("Escape The Backrooms Internal", &Settings::WindowPos, WindowSize, Settings::Open)) + if (CWINGui::Window("Escape The Backrooms Internal", &Settings::WindowPos, WindowSize, Settings::Open, GifBackground)) { static int tab = 1; if (CWINGui::ButtonTab(L"Game Shit", SDK::FVector2D{ 110, 35 }, tab == 0)) { tab = 0; WindowSize = { 500.0f, 640.0f }; } @@ -297,7 +304,7 @@ void MainRender(SDK::UObject* object, SDK::UCanvas* Canvas) { if (CWINGui::Button(L"Bring Tapes", SDK::FVector2D{ 110, 35 })) { Settings::BringAllItems = true; } -#ifdef Gatekeep +#ifdef DEBUG if (CWINGui::Button(L"Unposses Pawn", SDK::FVector2D{ 110, 35 })) { Settings::UnpossePawns = true; } @@ -311,6 +318,13 @@ void MainRender(SDK::UObject* object, SDK::UCanvas* Canvas) { if (CWINGui::Button(L"Clear Items", SDK::FVector2D{ 110, 35 })) { Settings::ClearItems = true; } + +#ifdef DEBUG + if (CWINGui::Button(L"Test Print", SDK::FVector2D{ 110, 35 })) { + Settings::TestEvent_PrintSteamIDS = true; + } +#endif // DEBUG + if (CWINGui::Button(L"Alloc Console", SDK::FVector2D{ 110, 35 })) { Settings::wtf_ = true; /*auto arrayAudio = Cheat::AudioData(std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}); @@ -346,11 +360,9 @@ void MainRender(SDK::UObject* object, SDK::UCanvas* Canvas) { CWINGui::Checkbox(L"GodMode (Host Only)(Works only on some Enemies)", &Settings::Godmode); CWINGui::Checkbox(L"Speedhack", &Settings::SpeedHack); CWINGui::Checkbox(L"Interactables always on", &Settings::InteractAll); -#ifdef Gatekeep CWINGui::Checkbox(L"NameChanger", &Settings::NameChanger); /*CWINGui::Checkbox(L"NameChanger Random", &Settings::RandomName);*/ CWINGui::Checkbox(L"Spawner", &Settings::Spawner); -#endif CWINGui::Checkbox(L"Fov Changer", &Settings::FovChanger); CWINGui::SliderFloat(L"Fov", &Settings::Fov, 10.0f, 200.0f); CWINGui::SliderFloat(L"Speed", &Settings::Speed, 100, 10000); @@ -375,8 +387,6 @@ void MainRender(SDK::UObject* object, SDK::UCanvas* Canvas) { // } //} - -#ifdef Gatekeep if (Settings::NameChanger) { static bool hasfinishedConsole = false; @@ -402,7 +412,7 @@ void MainRender(SDK::UObject* object, SDK::UCanvas* Canvas) { } } -#endif + break; case 3: CWINGui::Text(L"Item Spawner:"); @@ -512,7 +522,6 @@ void MainRender(SDK::UObject* object, SDK::UCanvas* Canvas) { case 6: -#ifdef Gatekeep CWINGui::Text(std::wstring(L"Spoofed as Player: " + (Settings::PlayerPicked != -1 ? PlayerStuff::PlayerList[Settings::PlayerPicked].name : std::wstring(L"None")) ).c_str()); @@ -588,9 +597,6 @@ void MainRender(SDK::UObject* object, SDK::UCanvas* Canvas) { } - - -#endif break; case 7: @@ -848,12 +854,11 @@ void MainRender(SDK::UObject* object, SDK::UCanvas* Canvas) { Settings::UseItemEventPlayer = true; } -#ifdef Gatekeep if (CWINGui::Button(L"Collect Player info", SDK::FVector2D{ 110, 35 })) { Settings::Event_PlayerID = player.PlayerID; Settings::EventCollectDataPlayer = true; } -#endif + } else { @@ -915,6 +920,8 @@ void MainRender(SDK::UObject* object, SDK::UCanvas* Canvas) { std::cout << "[*] Unhooked Renderfunc\n[*] Freeing Console!\n"; ConsoleExit(); + + delete GifBackground; } } @@ -960,6 +967,21 @@ void MainThread() { std::cout << "Failed to get: " << renderError << processeventError << "" << "!\n"; ConsoleExit(); } + else + { + Datas = GetBytes(); + + std::vector TexturesCopy; + + for (size_t i = 0; i < Datas.size(); i++) + { + std::vector ByteData(Datas[i].ByteSize); std::memcpy(ByteData.data(), Datas[i].DataPointer, Datas[i].ByteSize); + + TexturesCopy.push_back(CWINGui::LoadTexture(ByteData)); + } + + GifBackground = new CWINGui::GifData(TexturesCopy, 100); + } return; }