From f13040f508578cabb50c60be14562e42b84eac92 Mon Sep 17 00:00:00 2001 From: NightFyre <80198020+xCENTx@users.noreply.github.com> Date: Sat, 27 Jan 2024 08:31:08 -0500 Subject: [PATCH 1/3] Updated offsets Update SDK.hpp - Gobjects - AppendString - ProcessEvent Update config.h - APalPlayerCharacter::Tick --- SDK.hpp | 6 +++--- config.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SDK.hpp b/SDK.hpp index ecce257..1e71daf 100644 --- a/SDK.hpp +++ b/SDK.hpp @@ -24,10 +24,10 @@ typedef unsigned __int64 uint64; namespace Offsets { - constexpr int32 GObjects = 0x0879E000; - constexpr int32 AppendString = 0x02CC8CA0; + constexpr int32 GObjects = 0x087B9000; + constexpr int32 AppendString = 0x02CDD8E0; constexpr int32 GNames = 0x00000000; - constexpr int32 ProcessEvent = 0x02E4AE30; + constexpr int32 ProcessEvent = 0x02E5FF50; constexpr int32 ProcessEventIdx = 0x0000004C; } diff --git a/config.h b/config.h index 1721cde..323e855 100644 --- a/config.h +++ b/config.h @@ -12,7 +12,7 @@ class config public: //offsets DWORD64 ClientBase = 0; - DWORD64 offset_Tick = 0x2A9E9D0;//APalPlayerCharacter::Tick + DWORD64 offset_Tick = 0x2AB1DC0;//APalPlayerCharacter::Tick // 48 89 5C 24 ? 57 48 83 EC 60 48 8B F9 E8 ? ? ? ? 48 8B | [IDA NOTE]: 2ND RESULT DWORD64 offset_AddStatus = 0x2B0E960; //UPalNetworkIndividualComponent::AddPlayerCharacterStatusPoint_ToServer //check bool IsESP = false; From a113baaddac9a9865ab1cf6c21b5b4aec7b3d047 Mon Sep 17 00:00:00 2001 From: 2200151533 <2200151533@qq.com> Date: Sun, 28 Jan 2024 07:46:52 +0800 Subject: [PATCH 2/3] added Manager,damage and RandomName --- config.cpp | 14 ++-- config.h | 23 +++--- include/Menu.hpp | 1 + src/Menu.cpp | 196 +++++++++++++++++++++++++++++++++++++---------- 4 files changed, 175 insertions(+), 59 deletions(-) diff --git a/config.cpp b/config.cpp index 3d02219..dbe1fa6 100644 --- a/config.cpp +++ b/config.cpp @@ -20,9 +20,9 @@ void config::Update(const char* filterText) } std::sort(Config.db_filteredItems.begin(), Config.db_filteredItems.end()); } -const std::vector& config::GetFilteredItems(){ return Config.db_filteredItems; } +const std::vector& config::GetFilteredItems() { return Config.db_filteredItems; } -bool DetourTick(SDK::APalPlayerCharacter* m_this,float DeltaSecond) +bool DetourTick(SDK::APalPlayerCharacter* m_this, float DeltaSecond) { if (m_this->GetPalPlayerController() != NULL) { @@ -31,7 +31,7 @@ bool DetourTick(SDK::APalPlayerCharacter* m_this,float DeltaSecond) Config.localPlayer = m_this; } } - return OldTickFunc(m_this, DeltaSecond); + return OldTickFunc(m_this, DeltaSecond); } SDK::UWorld* config::GetUWorld() { @@ -52,8 +52,8 @@ SDK::UPalCharacterImportanceManager* config::GetCharacterImpManager() if (!pWorld) return nullptr; - SDK::UGameInstance* pGameInstance = pWorld->OwningGameInstance; - if (!pGameInstance) + SDK::UGameInstance* pGameInstance = pWorld->OwningGameInstance; + if (!pGameInstance) return nullptr; return static_cast(pGameInstance)->CharacterImportanceManager; @@ -172,7 +172,7 @@ bool config::GetAllActorsofType(SDK::UClass* mType, std::vector* o if (!pActor || !pActor->RootComponent || (pActor == pLocalPlayer && bSkipLocalPlayer)) continue; - if (!pActor->IsA(mType)) + if (!pActor->IsA(mType)) continue; result.push_back(pActor); @@ -191,7 +191,7 @@ void config::Init() { //register hook Config.ClientBase = (DWORD64)GetModuleHandleA("PalWorld-Win64-Shipping.exe"); - + TickFunc = (Tick)(Config.ClientBase + Config.offset_Tick); MH_CreateHook(TickFunc, DetourTick, reinterpret_cast(&OldTickFunc)); diff --git a/config.h b/config.h index 323e855..f4772c1 100644 --- a/config.h +++ b/config.h @@ -4,16 +4,14 @@ #include "database.h" #include "SDK.hpp" -typedef bool(*Tick)(SDK::APalPlayerCharacter* m_this,float DeltaSecond); -typedef void(*AddStatus)(SDK::UPalNetworkIndividualComponent* p_this, SDK::FPalInstanceID* ID, SDK::TArray* AddStatusPointArray); +typedef bool(*Tick)(SDK::APalPlayerCharacter* m_this, float DeltaSecond); class config { public: //offsets DWORD64 ClientBase = 0; - DWORD64 offset_Tick = 0x2AB1DC0;//APalPlayerCharacter::Tick // 48 89 5C 24 ? 57 48 83 EC 60 48 8B F9 E8 ? ? ? ? 48 8B | [IDA NOTE]: 2ND RESULT - DWORD64 offset_AddStatus = 0x2B0E960; //UPalNetworkIndividualComponent::AddPlayerCharacterStatusPoint_ToServer + DWORD64 offset_Tick = 0x2AB1DC0;//APalPlayerCharacter::Tick //check bool IsESP = false; bool IsAimbot = false; @@ -28,20 +26,20 @@ public: bool IsMonster = false; bool IsQuick = false; bool matchDbItems = true; - bool isEq = false; bool isDebugESP = false; - float mDebugESPDistance = 5.0f; - - //def and value + bool bisOpenManager = false; + bool filterPlayer = false; + bool bisRandomName = false; float SpeedModiflers = 1.0f; + //def and value + float mDebugESPDistance = 5.0f; int DamageUp = 0; int DefuseUp = 0; int EXP = 0; int Item = 0; - float Pos[3] = {0,0,0}; + float Pos[3] = { 0,0,0 }; char ItemName[255]; char inputTextBuffer[255] = ""; - int EqModifiler = 1; SDK::UWorld* gWorld = nullptr; SDK::APalPlayerCharacter* localPlayer = NULL; SDK::TArray AllPlayers = {}; @@ -53,7 +51,7 @@ public: enum QuickItemSet { basic_items_stackable, - basic_items_single, + basic_items_single, pal_unlock_skills, spheres, tools @@ -69,12 +67,11 @@ public: static SDK::APalPlayerState* GetPalPlayerState(); static SDK::UPalPlayerInventoryData* GetInventoryComponent(); static SDK::APalWeaponBase* GetPlayerEquippedWeapon(); - static SDK::TArray GetTAllPlayers(); static bool GetTAllPlayers(SDK::TArray* outResult); static bool GetTAllImpNPC(SDK::TArray* outResult); static bool GetTAllNPC(SDK::TArray* outResult); static bool GetTAllPals(SDK::TArray* outResult); - static bool GetAllActorsofType(SDK::UClass* mType, std::vector* outArray, bool bLoopAllLevels = false , bool bSkipLocalPlayer = false); + static bool GetAllActorsofType(SDK::UClass* mType, std::vector* outArray, bool bLoopAllLevels = false, bool bSkipLocalPlayer = false); static void Init(); static void Update(const char* filterText); static const std::vector& GetFilteredItems(); diff --git a/include/Menu.hpp b/include/Menu.hpp index 6565f79..cb06b17 100644 --- a/include/Menu.hpp +++ b/include/Menu.hpp @@ -23,6 +23,7 @@ namespace DX11_Base { // FORWARD DECLARE FUNCTIONS void Draw(); void MainMenu(); + void ManagerMenu(); void HUD(bool* p_open); void Loops(); diff --git a/src/Menu.cpp b/src/Menu.cpp index 37c8880..ca7d694 100644 --- a/src/Menu.cpp +++ b/src/Menu.cpp @@ -2,48 +2,39 @@ #include "../include/Menu.hpp" #include "SDK.hpp" #include "config.h" - -AddStatus Equi; -AddStatus OldEqui; - -void DetourEqui(SDK::UPalNetworkIndividualComponent* p_this, SDK::FPalInstanceID* ID, SDK::TArray* AddStatusPointArray) +std::string rand_str(const int len) { - if(AddStatusPointArray->IsValid()) + std::string str; + char c; + int idx; + for (idx = 0; idx < len; idx++) { - for (int i = 0; i < AddStatusPointArray->Count(); i++) - { - (*AddStatusPointArray)[i].StatusPoint = -1 * Config.EqModifiler; - } + c = 'a' + rand() % 26; + str.push_back(c); } - return; + return str; } +void Damage(SDK::APalCharacter* character, int32 damage) +{ + SDK::FPalDamageInfo info = SDK::FPalDamageInfo(); + info.AttackElementType = SDK::EPalElementType::Normal; + info.Attacker = Config.GetPalPlayerCharacter(); + info.AttackerGroupID = Config.GetPalPlayerState()->IndividualHandleId.PlayerUId; + info.AttackerLevel = 50; + info.AttackType = SDK::EPalAttackType::Weapon; + info.bApplyNativeDamageValue = true; + info.bAttackableToFriend = true; + info.IgnoreShield = true; + info.NativeDamageValue = damage; + Config.GetPalPlayerState()->SendDamage_ToServer(character, info); +} + int InputTextCallback(ImGuiInputTextCallbackData* data) { char inputChar = data->EventChar; Config.Update(Config.inputTextBuffer); return 0; -} -void ToggleEqui(bool isEq) -{ - if (isEq) - { - if (Equi = NULL) - { - Equi = (AddStatus)(Config.ClientBase + Config.offset_AddStatus); - MH_CreateHook(Equi, DetourEqui, reinterpret_cast(OldEqui)); - MH_EnableHook(Equi); - return; - } - MH_EnableHook(Equi); - return; - } - else - { - MH_DisableHook(Equi); - } - - } //SDK::FPalDebugOtomoPalInfo palinfo = SDK::FPalDebugOtomoPalInfo(); //SDK::TArray EA = { 0U }; @@ -203,6 +194,24 @@ namespace DX11_Base { ImGui::Checkbox("InfStamina", &Config.IsInfStamina); + + if (ImGui::Button("RandomName", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) + { + if (Config.GetPalPlayerCharacter() != NULL) + { + if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL) + { + SDK::UKismetStringLibrary* lib = SDK::UKismetStringLibrary::GetDefaultObj(); + std::string s = rand_str(20); + + wchar_t ws[255]; + swprintf(ws, 255, L"%hs", s.c_str()); + + Config.GetPalPlayerCharacter()->GetPalPlayerController()->Transmitter->NetworkIndividualComponent->UpdateCharacterNickName_ToServer(Config.GetPalPlayerCharacter()->CharacterParameterComponent->IndividualHandle->ID, SDK::FString(ws)); + } + } + } + //Creadit Mokobake //ImGui::Checkbox("MuteKiGodmode", &Config.IsMuteki); @@ -234,6 +243,7 @@ namespace DX11_Base { { //Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->RequestSpawnMonsterForPlayer(name, 5, 1); ImGui::Checkbox("IsQuick", &Config.IsQuick); + ImGui::Checkbox("Open Manager", &Config.bisOpenManager); ImGui::Checkbox("SafeTeleport", &Config.IsSafe); //creadit //ImGui::Checkbox("PalIsMonster", &Config.IsMonster); @@ -392,17 +402,11 @@ namespace DX11_Base { } } } - if (ImGui::Button("Equivalent", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) - { - Config.isEq = !Config.isEq; - ToggleEqui(Config.isEq); - } - ImGui::InputInt("EquiModifiler", &Config.EqModifiler); } void TABConfig() { ImGui::Text("PalWorld Menu"); - ImGui::Text("VERSION: v1.1"); + ImGui::Text("VERSION: v1.2.3"); ImGui::Spacing(); ImGui::Separator(); @@ -463,6 +467,10 @@ namespace DX11_Base { } if (g_GameVariables->m_ShowMenu) MainMenu(); + if (Config.bisOpenManager && g_GameVariables->m_ShowMenu) + { + ManagerMenu(); + } if (g_GameVariables->m_ShowHud) HUD(&g_GameVariables->m_ShowHud); @@ -473,7 +481,117 @@ namespace DX11_Base { if (Config.isDebugESP) ESP_DEBUG(Config.mDebugESPDistance, ImVec4(0,1,0,1)); } + void Menu::ManagerMenu() + { + if (ImGui::Begin("Manager", &g_GameVariables->m_ShowMenu, 96)) + { + if (Config.GetUWorld() != NULL) + { + ImGui::Checkbox("filterPlayer", &Config.filterPlayer); + SDK::TArray T = Config.GetUWorld()->PersistentLevel->Actors; + for (int i = 0; i < T.Count(); i++) + { + if (T[i] != NULL) + { + if (T[i]->IsA(SDK::APalCharacter::StaticClass())) + { + SDK::APalCharacter* Character = (SDK::APalCharacter*)T[i]; + SDK::FString name; + if (Config.filterPlayer) + { + if (!T[i]->IsA(SDK::APalPlayerCharacter::StaticClass())) + { + continue; + } + } + if (T[i]->IsA(SDK::APalPlayerCharacter::StaticClass())) + { + if (!Character) { continue; } + Character->CharacterParameterComponent->GetNickname(&name); + } + else + { + SDK::UKismetStringLibrary* lib = SDK::UKismetStringLibrary::GetDefaultObj(); + if (!Character) { continue; } + std::string s = Character->GetFullName(); + size_t firstUnderscorePos = s.find('_'); + if (firstUnderscorePos != std::string::npos) { + std::string result = s.substr(firstUnderscorePos + 1); + + size_t secondUnderscorePos = result.find('_'); + + if (secondUnderscorePos != std::string::npos) { + result = result.substr(0, secondUnderscorePos); + } + wchar_t ws[255]; + swprintf(ws, 255, L"%hs", result); + name = SDK::FString(ws); + } + } + ImGui::Text(name.ToString().c_str()); + ImGui::SameLine(); + ImGui::PushID(i); + if (ImGui::Button("Kill")) + { + if (T[i]->IsA(SDK::APalCharacter::StaticClass())) + { + Damage(Character, 99999999999); + } + continue; + } + ImGui::SameLine(); + if (ImGui::Button("TP")) + { + if (Config.GetPalPlayerCharacter() != NULL) + { + if (!Character) { continue; } + SDK::FVector vector = Character->K2_GetActorLocation(); + AnyWhereTP(vector, Config.IsSafe); + } + } + + /*if (Character->IsA(SDK::APalPlayerCharacter::StaticClass())) + { + ImGui::SameLine(); + if (ImGui::Button("Boss")) + { + if (Config.GetPalPlayerCharacter() != NULL) + { + auto controller = Config.GetPalPlayerCharacter()->GetPalPlayerController(); + if (controller != NULL) + { + controller->Transmitter->BossBattle->RequestBossBattleEntry_ToServer(SDK::EPalBossType::ElectricBoss, (SDK::APalPlayerCharacter*)Character); + controller->Transmitter->BossBattle->RequestBossBattleStart_ToServer(SDK::EPalBossType::ElectricBoss, (SDK::APalPlayerCharacter*)Character); + } + } + } + }*/ + if (Character->IsA(SDK::APalPlayerCharacter::StaticClass())) + { + ImGui::SameLine(); + if (ImGui::Button("MaskIt")) + { + if (Config.GetPalPlayerCharacter() != NULL) + { + auto controller = Config.GetPalPlayerCharacter()->GetPalPlayerController(); + if (controller != NULL) + { + auto player = (SDK::APalPlayerCharacter*)Character; + SDK::FString fakename; + player->CharacterParameterComponent->GetNickname(&fakename); + Config.GetPalPlayerCharacter()->GetPalPlayerController()->Transmitter->NetworkIndividualComponent->UpdateCharacterNickName_ToServer(Config.GetPalPlayerCharacter()->CharacterParameterComponent->IndividualHandle->ID, fakename); + } + } + } + } + ImGui::PopID(); + } + } + } + } + } + } void Menu::MainMenu() { if (!g_GameVariables->m_ShowDemo) From c0a374c7a830b154599a51000288a8356272656d Mon Sep 17 00:00:00 2001 From: 2200151533 <2200151533@qq.com> Date: Sun, 28 Jan 2024 19:00:51 +0800 Subject: [PATCH 3/3] added Teleporter,Improved layout. --- config.h | 3 +- database.h | 41 +++++++++++++++++++ src/Menu.cpp | 111 +++++++++++++++++++++++---------------------------- 3 files changed, 92 insertions(+), 63 deletions(-) diff --git a/config.h b/config.h index f4772c1..5313629 100644 --- a/config.h +++ b/config.h @@ -1,8 +1,8 @@ #pragma once #include #include "libs/utils/memory.h" -#include "database.h" #include "SDK.hpp" +#include "database.h" typedef bool(*Tick)(SDK::APalPlayerCharacter* m_this, float DeltaSecond); @@ -30,6 +30,7 @@ public: bool bisOpenManager = false; bool filterPlayer = false; bool bisRandomName = false; + bool bisTeleporter = false; float SpeedModiflers = 1.0f; //def and value float mDebugESPDistance = 5.0f; diff --git a/database.h b/database.h index cff4a4d..eeece57 100644 --- a/database.h +++ b/database.h @@ -1,5 +1,6 @@ #pragma once #include "pch.h" +#include namespace database { @@ -1141,4 +1142,44 @@ namespace database "PalSphere_Robbery", "PalSphere_Debug", }; + + static std::map>locationMap = { + {"Anubis", { -170269, 94163.7, -1527.83 }}, + {"Azurobe", { -300596, 136090, -2033.13 }}, + {"Beakon", { -237981, 2559.41, 8413.65 }}, + {"BroncherryAqua", { -330059.98, 81386.99, -1929.8 }}, + {"Broncherry", { -430777.18, 56266.50, -1774.57 }}, + {"Bushi", { -349079.05, 104564.46, -121.11 }}, + {"Chillet", { -315195, 236714, 2452.12 }}, + {"DinossomLux", { 125311, 318722, 266.384 }}, + {"Elizabee", { -197627, 167101, -1964.75 }}, + {"Felbat", { -149024, -30562.7, -1291.73 }}, + {"Fenglope", { -332470, 40256.4, 1333.93 }}, + {"Frostallion", { 111978, -6394.85, 21940.2 }}, + {"Grintale", { -234807, 321166, -1826.19 }}, + {"Gumoss", { -409885.46, 108120.6, -1949.58 }}, + {"Jetragon", { -270762, -205837, 3834.92 }}, + {"Jormuntide2", { -163184, 314483, -2100.13 }}, + {"Jormuntide", { -244207, 74851.5, -1157.08 }}, + {"Katress", { -276223, 268992, -1209.67 }}, + {"Kingpaca", { -336105, 181639, 901.022 }}, + {"Lunaris", { -426589.48, 90677.8, 215.90 }}, + {"Mammorest", { -341702, 243628, -533.76 }}, + {"Menasting", { -77943, 393182, 665.51 }}, + {"MossandaLux", { -208233, 364318, 1167.46 }}, + {"Nitewing", { -157475, 30628.2, -1894.64 }}, + {"Paladius", { 187235, 349924, 2563.07 }}, + {"Penking", { -285343.94, 210129.58, 854.23 }}, + {"Petallia", { -245440, 149098, 913.216 }}, + {"Quivern", { -183795, 40661.4, 8547.3 }}, + {"RelaxasaurusLux", { -282860, 64923.7, 5357.72 }}, + {"Siblex", { -92023.6, 273762, 18967.3 }}, + {"Suzaku", { -4320.07, 340927, 205.005 }}, + {"Univolt", { -372419.57, 102508.29, -392 }}, + {"Vaelet", { -147042, 217357, 2857.45 }}, + {"Verdash", { -119349, 288954, 3186.98 }}, + {"Warsect", { -226359, 231970, -1807.45 }}, + {"WumpoBotan", { -148826, 364859, -1831.33 }}, + }; + } \ No newline at end of file diff --git a/src/Menu.cpp b/src/Menu.cpp index ca7d694..b0214bf 100644 --- a/src/Menu.cpp +++ b/src/Menu.cpp @@ -242,12 +242,11 @@ namespace DX11_Base { void TABExploit() { //Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->RequestSpawnMonsterForPlayer(name, 5, 1); - ImGui::Checkbox("IsQuick", &Config.IsQuick); - ImGui::Checkbox("Open Manager", &Config.bisOpenManager); - ImGui::Checkbox("SafeTeleport", &Config.IsSafe); + ImGui::Checkbox("Show Quick Tab", &Config.IsQuick); + ImGui::Checkbox("Open Manager Menu", &Config.bisOpenManager); + ImGui::Checkbox("Show Teleporter Tab", &Config.bisTeleporter); //creadit //ImGui::Checkbox("PalIsMonster", &Config.IsMonster); - ImGui::InputFloat3("Pos:", Config.Pos); ImGui::InputInt("EXP:", &Config.EXP); ImGui::InputText("Item Name", Config.ItemName,sizeof(Config.ItemName)); ImGui::InputInt("Item Num", &Config.Item); @@ -290,64 +289,6 @@ namespace DX11_Base { { UnlockAllEffigies(); } - - ////ImGui::InputText("Pal Name", Config.PalName, sizeof(Config.PalName)); - // //if (!Config.IsMonster){ImGui::InputInt("Pal Rank", &Config.PalRank);} - // //if (Config.IsMonster) { ImGui::InputInt("Pal Count", &Config.PalNum); } - // ImGui::InputInt("Pal lvl", &Config.PalLvL); - /*if (ImGui::Button("Spawn Pal", ImVec2(ImGui::GetWindowContentRegionWidth() - 3, 20))) - { - if (Config.GetPalPlayerCharacter() != NULL) - { - if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL) - { - if (Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState() != NULL) - { - if (Config.PalName != NULL) - { - g_Console->printdbg("\n\n[+] PalName: %s [+]\n\n", g_Console->color.green, Config.ItemName); - SpawnPal(Config.PalName,Config.IsMonster,Config.PalRank,Config.PalLvL,Config.PalNum); - } - } - } - } - }*/ - if (ImGui::Button("HomeTP", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) - { - SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter(); - if (p_appc != NULL) - { - if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL) - { - if (Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState() != NULL) - { - if (Config.IsSafe) - { - Config.GetPalPlayerCharacter()->GetPalPlayerController()->TeleportToSafePoint_ToServer(); - } - else - { - Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->RequestRespawn(); - } - - } - } - } - } - /* if (ImGui::Button("AnywhereTP", ImVec2(ImGui::GetWindowContentRegionWidth() - 3, 20))) - { - if (Config.GetPalPlayerCharacter()!= NULL) - { - if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL) - { - if (Config.Pos != NULL) - { - SDK::FVector vector = { Config.Pos[0],Config.Pos[1],Config.Pos[2] }; - AnyWhereTP(vector,Config.IsSafe); - } - } - } - }*/ if (ImGui::Button("ToggleFly", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) { Config.IsToggledFly = !Config.IsToggledFly; @@ -405,6 +346,7 @@ namespace DX11_Base { } void TABConfig() { + ImGui::Text("PalWorld Menu"); ImGui::Text("VERSION: v1.2.3"); @@ -439,6 +381,46 @@ namespace DX11_Base { } } } + void TABTeleporter() + { + ImGui::Checkbox("SafeTeleport", &Config.IsSafe); + if (ImGui::Button("Home", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) + { + SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter(); + if (p_appc != NULL) + { + if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL) + { + if (Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState() != NULL) + { + if (Config.IsSafe) + { + Config.GetPalPlayerCharacter()->GetPalPlayerController()->TeleportToSafePoint_ToServer(); + } + else + { + Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->RequestRespawn(); + } + + } + } + } + } + ImGui::InputFloat3("Pos",Config.Pos); + ImGui::SameLine(); + if (ImGui::Button("TP", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) + { + SDK::FVector vector = { Config.Pos[0],Config.Pos[1],Config.Pos[2] }; + AnyWhereTP(vector, Config.IsSafe); + } + for (const auto& pair : database::locationMap) { + const std::string& locationName = pair.first; + if (ImGui::Button(locationName.c_str())) { + SDK::FVector location = SDK::FVector(pair.second[0], pair.second[1], pair.second[2]); + AnyWhereTP(location, Config.IsSafe); + } + } + } void TABQuick()//Creadit:asashi { if (ImGui::Button("Basic Items stack", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) { @@ -644,6 +626,11 @@ namespace DX11_Base { { Tabs::TABQuick(); ImGui::EndTabItem(); + } + if (Config.bisTeleporter && ImGui::BeginTabItem("Teleporter")) + { + Tabs::TABTeleporter(); + ImGui::EndTabItem(); } ImGui::EndTabBar(); }