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; }