diff --git a/DX11-Base.sln b/DX11-Base.sln
index 0c8f69b..5de8613 100644
--- a/DX11-Base.sln
+++ b/DX11-Base.sln
@@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.32802.440
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DX11-Base", "DX11-Base.vcxproj", "{EB52DDF1-EFC4-4222-9D86-6918D4D891A5}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NetCrack-PalWorld", "DX11-Base.vcxproj", "{EB52DDF1-EFC4-4222-9D86-6918D4D891A5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PalworldSDK", "libs\SDKLibrary\PalworldSDK.vcxproj", "{202F0C63-0183-4CE5-AAB4-4ABD2EA773D9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -21,6 +23,14 @@ Global
{EB52DDF1-EFC4-4222-9D86-6918D4D891A5}.Release|x64.Build.0 = Release|x64
{EB52DDF1-EFC4-4222-9D86-6918D4D891A5}.Release|x86.ActiveCfg = Release|Win32
{EB52DDF1-EFC4-4222-9D86-6918D4D891A5}.Release|x86.Build.0 = Release|Win32
+ {202F0C63-0183-4CE5-AAB4-4ABD2EA773D9}.Debug|x64.ActiveCfg = Debug|x64
+ {202F0C63-0183-4CE5-AAB4-4ABD2EA773D9}.Debug|x64.Build.0 = Debug|x64
+ {202F0C63-0183-4CE5-AAB4-4ABD2EA773D9}.Debug|x86.ActiveCfg = Debug|Win32
+ {202F0C63-0183-4CE5-AAB4-4ABD2EA773D9}.Debug|x86.Build.0 = Debug|Win32
+ {202F0C63-0183-4CE5-AAB4-4ABD2EA773D9}.Release|x64.ActiveCfg = Release|x64
+ {202F0C63-0183-4CE5-AAB4-4ABD2EA773D9}.Release|x64.Build.0 = Release|x64
+ {202F0C63-0183-4CE5-AAB4-4ABD2EA773D9}.Release|x86.ActiveCfg = Release|Win32
+ {202F0C63-0183-4CE5-AAB4-4ABD2EA773D9}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/DX11-Base.vcxproj.filters b/DX11-Base.vcxproj.filters
index ae247de..cf1847c 100644
--- a/DX11-Base.vcxproj.filters
+++ b/DX11-Base.vcxproj.filters
@@ -120,6 +120,9 @@
Header Files
+
+ Header Files
+
diff --git a/config.cpp b/config.cpp
index 5087091..3854bf0 100644
--- a/config.cpp
+++ b/config.cpp
@@ -164,6 +164,19 @@ bool config::GetTAllPals(SDK::TArray* outResult)
return true;
}
+// @TODO:
+bool config::GetPartyPals(std::vector* outResult)
+{
+ return false;
+}
+
+// @TODO:
+bool config::GetPlayerDeathChests(std::vector* outLocations)
+{
+ return false;
+}
+
+// credit: xCENTx
bool config::GetAllActorsofType(SDK::UClass* mType, std::vector* outArray, bool bLoopAllLevels, bool bSkipLocalPlayer)
{
SDK::UWorld* pWorld = Config.gWorld;
diff --git a/config.h b/config.h
index 6013b65..0c84b3d 100644
--- a/config.h
+++ b/config.h
@@ -15,6 +15,9 @@ public:
//check
bool IsESP = false;
bool IsFullbright = false;
+ bool IsForgeMode = false;
+ bool IsTeleportAllToXhair = false;
+ bool IsDeathAura = false;
bool IsAimbot = false;
bool IsSpeedHack = false;
bool IsAttackModiler = false;
@@ -36,6 +39,9 @@ public:
float SpeedModiflers = 1.0f;
//def and value
float mDebugESPDistance = 5.0f;
+ float mDebugEntCapDistance = 10.0f;
+ float mDeathAuraDistance = 10.f;
+ int mDeathAuraAmount = 1.f;
int DamageUp = 0;
int DefuseUp = 0;
int EXP = 0;
@@ -62,6 +68,24 @@ public:
};
//Filtered Items
std::vector db_filteredItems;
+
+
+
+ struct SWaypoint
+ {
+ std::string waypointName;
+ SDK::FVector waypointLocation;
+ SDK::FRotator waypointRotation;
+
+ bool bIsShown = true;
+ float* mColor[4];
+
+ SWaypoint() {};
+ SWaypoint(std::string wpName, SDK::FVector wpLocation, SDK::FRotator wpRotation) { waypointName = wpName; waypointLocation = wpLocation; waypointRotation = wpRotation; }
+ };
+ std::vector db_waypoints;
+ std::vector> db_filteredEnts;
+
//static function
static SDK::UWorld* GetUWorld();
@@ -76,6 +100,8 @@ public:
static bool GetTAllImpNPC(SDK::TArray* outResult);
static bool GetTAllNPC(SDK::TArray* outResult);
static bool GetTAllPals(SDK::TArray* outResult);
+ static bool GetPartyPals(std::vector* outResult);
+ static bool GetPlayerDeathChests(std::vector* outLocations);
static bool GetAllActorsofType(SDK::UClass* mType, std::vector* outArray, bool bLoopAllLevels = false, bool bSkipLocalPlayer = false);
static void Init();
static void Update(const char* filterText);
diff --git a/feature.cpp b/feature.cpp
index 887137a..571e3d7 100644
--- a/feature.cpp
+++ b/feature.cpp
@@ -29,6 +29,7 @@ void ESP()
ImGui::GetBackgroundDrawList()->AddText(nullptr, 16, ImVec2(10, 10 + (i * 30)), ImColor(128,0,0), T[i]->GetFullName().c_str());
}
+// credit: xCENTx
// draws debug information for the input actor array
// should only be called from a GUI thread with ImGui context
void ESP_DEBUG(float mDist, ImVec4 color, UClass* mEntType)
@@ -235,7 +236,7 @@ void ExploitFly(bool IsFly)
IsFly ? pPalPlayerController->StartFlyToServer() : pPalPlayerController->EndFlyToServer();
}
-// credit: nknights23
+// credit: xCENTx
void SetFullbright(bool bIsSet)
{
ULocalPlayer* pLocalPlayer = Config.GetLocalPlayer();
@@ -335,6 +336,24 @@ void ResetStamina()
return;
pParams->ResetSP();
+
+
+ // Reset Pal Stamina ??
+ TArray outPals;
+ Config.GetTAllPals(&outPals);
+ DWORD palsSize = outPals.Count();
+ for (int i = 0; i < palsSize; i++)
+ {
+ APalCharacter* cPal = outPals[i];
+ if (!cPal || cPal->IsA(APalMonsterCharacter::StaticClass()))
+ continue;
+
+ UPalCharacterParameterComponent* pPalParams = pPalCharacter->CharacterParameterComponent;
+ if (!pPalParams)
+ return;
+
+ pPalParams->ResetSP();
+ }
}
//
@@ -472,6 +491,7 @@ void RemoveAncientTechPoint(__int32 mPoints)
pTechData->bossTechnologyPoint -= mPoints;
}
+// credit: xCENTx
float GetDistanceToActor(AActor* pLocal, AActor* pTarget)
{
if (!pLocal || !pTarget)
@@ -484,6 +504,157 @@ float GetDistanceToActor(AActor* pLocal, AActor* pTarget)
return distance / 100.0f;
}
+// credit xCENTx
+void ForgeActor(SDK::AActor* pTarget, float mDistance, float mHeight, float mAngle)
+{
+ APalPlayerCharacter* pPalPlayerCharacter = Config.GetPalPlayerCharacter();
+ APlayerController* pPlayerController = Config.GetPalPlayerController();
+ if (!pTarget || !pPalPlayerCharacter || !pPlayerController)
+ return;
+
+ APlayerCameraManager* pCamera = pPlayerController->PlayerCameraManager;
+ if (!pCamera)
+ return;
+
+ FVector playerLocation = pPalPlayerCharacter->K2_GetActorLocation();
+ FVector camFwdDir = pCamera->GetActorForwardVector() * ( mDistance * 100.f );
+ FVector targetLocation = playerLocation + camFwdDir;
+
+ if (mHeight != 0.0f)
+ targetLocation.Y += mHeight;
+
+ FRotator targetRotation = pTarget->K2_GetActorRotation();
+ if (mAngle != 0.0f)
+ targetRotation.Roll += mAngle;
+
+ pTarget->K2_SetActorLocation(targetLocation, false, nullptr, true);
+ pTarget->K2_SetActorRotation(targetRotation, true);
+}
+
+// credit:
+void SendDamageToActor(APalCharacter* pTarget, int32 damage, bool bSpoofAttacker)
+{
+ APalPlayerState* pPalPlayerState = Config.GetPalPlayerState();
+ APalPlayerCharacter* pPalPlayerCharacter = Config.GetPalPlayerCharacter();
+ if (!pPalPlayerState || !pPalPlayerCharacter)
+ return;
+
+ FPalDamageInfo info = FPalDamageInfo();
+ info.AttackElementType = EPalElementType::Normal;
+ info.Attacker = pPalPlayerCharacter; // @TODO: spoof attacker
+ info.AttackerGroupID = Config.GetPalPlayerState()->IndividualHandleId.PlayerUId;
+ info.AttackerLevel = 50;
+ info.AttackType = EPalAttackType::Weapon;
+ info.bApplyNativeDamageValue = true;
+ info.bAttackableToFriend = true;
+ info.IgnoreShield = true;
+ info.NativeDamageValue = damage;
+ pPalPlayerState->SendDamage_ToServer(pTarget, info);
+}
+
+// NOTE: only targets pals
+void DeathAura(__int32 dmgAmount, float mDistance, bool bIntensityEffect, bool bVisualAffect, EPalVisualEffectID visID)
+{
+ APalCharacter* pPalCharacter = Config.GetPalPlayerCharacter();
+ if (!pPalCharacter)
+ return;
+
+ UPalCharacterParameterComponent* pParams = pPalCharacter->CharacterParameterComponent;
+ if (!pParams)
+ return;
+
+ APalCharacter* pPlayerPal = pParams->OtomoPal;
+
+ TArray outPals;
+ if (!Config.GetTAllPals(&outPals))
+ return;
+
+ DWORD palsCount = outPals.Count();
+ for (auto i = 0; i < palsCount; i++)
+ {
+ APalCharacter* cEnt = outPals[i];
+
+ if (!cEnt || !cEnt->IsA(APalMonsterCharacter::StaticClass()) || cEnt == pPlayerPal)
+ continue;
+
+ float distanceTo = GetDistanceToActor(pPalCharacter, cEnt);
+ if (distanceTo > mDistance)
+ continue;
+
+ float dmgScalar = dmgAmount * (1.0f - distanceTo / mDistance);
+ if (bIntensityEffect)
+ dmgAmount = dmgScalar;
+
+ UPalVisualEffectComponent* pVisComp = cEnt->VisualEffectComponent;
+ if (bVisualAffect && pVisComp)
+ {
+ FPalVisualEffectDynamicParameter fvedp;
+ if (!pVisComp->ExecutionVisualEffects.Count())
+ pVisComp->AddVisualEffect_ToServer(visID, fvedp, 1); // uc: killer1478
+ }
+ SendDamageToActor(cEnt, dmgAmount);
+ }
+}
+
+// credit: xCENTx
+void TeleportAllPalsToCrosshair(float mDistance)
+{
+ TArray outPals;
+ Config.GetTAllPals(&outPals);
+ DWORD palsCount = outPals.Count();
+ for (int i = 0; i < palsCount; i++)
+ {
+ APalCharacter* cPal = outPals[i];
+
+ if (!cPal || !cPal->IsA(APalMonsterCharacter::StaticClass()))
+ continue;
+
+ // @TODO: displace with entity width for true distance, right now it is distance from origin
+ // FVector palOrigin;
+ // FVector palBounds;
+ // cPal->GetActorBounds(true, &palOrigin, &palBounds, false);
+ // float adj = palBounds.X * .5 + mDistance;
+
+ ForgeActor(cPal, mDistance);
+ }
+}
+
+// credit: xCENTx
+void AddWaypointLocation(std::string wpName)
+{
+ APalCharacter* pPalCharacater = Config.GetPalPlayerCharacter();
+ if (!pPalCharacater)
+ return;
+
+ FVector wpLocation = pPalCharacater->K2_GetActorLocation();
+ FRotator wpRotation = pPalCharacater->K2_GetActorRotation();
+ config::SWaypoint newWaypoint = config::SWaypoint("[WAYPOINT]" + wpName, wpLocation, wpRotation);
+ Config.db_waypoints.push_back(newWaypoint);
+}
+
+// credit: xCENTx
+// must be called from a rendering thread with imgui context
+void RenderWaypointsToScreen()
+{
+ APalCharacter* pPalCharacater = Config.GetPalPlayerCharacter();
+ APalPlayerController* pPalController = Config.GetPalPlayerController();
+ if (!pPalCharacater || !pPalController)
+ return;
+
+ ImDrawList* draw = ImGui::GetWindowDrawList();
+
+ for (auto waypoint : Config.db_waypoints)
+ {
+ FVector2D vScreen;
+ if (!pPalController->ProjectWorldLocationToScreen(waypoint.waypointLocation, &vScreen, false))
+ continue;
+
+ auto color = ImColor(1.0f, 1.0f, 1.0f, 1.0f);
+
+ draw->AddText(ImVec2( vScreen.X, vScreen.Y ), color, waypoint.waypointName.c_str());
+ }
+}
+
/// OLDER METHODS
//SDK::FPalDebugOtomoPalInfo palinfo = SDK::FPalDebugOtomoPalInfo();
//SDK::TArray EA = { 0U };
diff --git a/feature.h b/feature.h
index 279323a..fdf8fa3 100644
--- a/feature.h
+++ b/feature.h
@@ -51,4 +51,16 @@ void RemoveTechPoints(__int32 mPoints);
void RemoveAncientTechPoint(__int32 mPoints);
-float GetDistanceToActor(SDK::AActor* pLocal, SDK::AActor* pTarget);
\ No newline at end of file
+float GetDistanceToActor(SDK::AActor* pLocal, SDK::AActor* pTarget);
+
+void ForgeActor(SDK::AActor* pTarget, float mDistance, float mHeight = 0.0f, float mAngle = 0.0f);
+
+void SendDamageToActor(SDK::APalCharacter* pTarget, int32 damage, bool bSpoofAttacker = false);
+
+void DeathAura(__int32 dmgAmount, float mDistance, bool bIntensityEffect = false, bool bVisualEffect = false, SDK::EPalVisualEffectID visID = SDK::EPalVisualEffectID::None);
+
+void TeleportAllPalsToCrosshair(float mDistance);
+
+void AddWaypointLocation(std::string wpName);
+
+void RenderWaypointsToScreen();
\ No newline at end of file
diff --git a/initialize.hpp b/initialize.hpp
index daf1379..cb9598d 100644
--- a/initialize.hpp
+++ b/initialize.hpp
@@ -7,6 +7,18 @@
#include "include/Hooking.hpp"
using namespace DX11_Base;
+// please dont remove , this is useful for a variety of things
+void ClientBGThread()
+{
+ while (g_Running)
+ {
+ // test cache runners
+
+ std::this_thread::sleep_for(1ms);
+ std::this_thread::yield();
+ }
+}
+
DWORD WINAPI MainThread_Initialize()
{
g_Console = std::make_unique();
@@ -29,7 +41,9 @@ DWORD WINAPI MainThread_Initialize()
#endif
/// RENDER LOOP
- g_Running = TRUE;
+ g_Running = TRUE;
+
+ std::thread WCMUpdate(ClientBGThread); // Initialize Loops Thread
while (g_Running)
{
if (GetAsyncKeyState(VK_INSERT) & 1)
@@ -38,9 +52,17 @@ DWORD WINAPI MainThread_Initialize()
g_GameVariables->m_ShowHud = !g_GameVariables->m_ShowMenu;
}
+
+
+ if (g_KillSwitch)
+ {
+ g_KillSwitch = false;
+ g_Hooking->Unhook();
+ }
}
/// EXIT
+ WCMUpdate.join(); // Exit Loops Thread
FreeLibraryAndExitThread(g_hModule, EXIT_SUCCESS);
return EXIT_SUCCESS;
}
\ No newline at end of file
diff --git a/src/D3D11Window.cpp b/src/D3D11Window.cpp
index 4427d5a..8fa296d 100644
--- a/src/D3D11Window.cpp
+++ b/src/D3D11Window.cpp
@@ -41,6 +41,7 @@ bool HookCursor()
namespace DX11_Base {
static uint64_t* MethodsTable = NULL;
+ // @TODO: boolean for active window
LRESULT D3D11Window::WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (g_GameVariables->m_ShowMenu) {
@@ -224,12 +225,6 @@ namespace DX11_Base {
///
HRESULT APIENTRY D3D11Window::HookPresent(IDXGISwapChain* pSwapChain, UINT SyncInterval, UINT Flags)
{
- if (g_KillSwitch) {
- g_Hooking->Unhook();
- g_D3D11Window->oIDXGISwapChainPresent(pSwapChain, SyncInterval, Flags);
- g_Running = FALSE;
- return 0;
- }
g_D3D11Window->Overlay(pSwapChain);
return g_D3D11Window->oIDXGISwapChainPresent(pSwapChain, SyncInterval, Flags);
}
diff --git a/src/Hooking.cpp b/src/Hooking.cpp
index 37b084d..992a945 100644
--- a/src/Hooking.cpp
+++ b/src/Hooking.cpp
@@ -31,8 +31,10 @@ namespace DX11_Base {
void Hooking::Unhook()
{
g_D3D11Window->Unhook();
- MH_RemoveHook(MH_ALL_HOOKS);
+ MH_DisableHook((Tick)(Config.ClientBase + Config.offset_Tick));
+ MH_RemoveHook((Tick)(Config.ClientBase + Config.offset_Tick));
g_Console->DestroyConsole();
+ g_Running = FALSE;
return;
}
}
diff --git a/src/Menu.cpp b/src/Menu.cpp
index 77b3481..20e5ed4 100644
--- a/src/Menu.cpp
+++ b/src/Menu.cpp
@@ -15,20 +15,6 @@ std::string rand_str(const int len)
}
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;
@@ -42,6 +28,8 @@ namespace DX11_Base
{
// helper variables
char inputBuffer_getFnAddr[100];
+ char inputBuffer_getClass[100];
+ char inputBuffer_setWaypoint[32];
namespace Styles
{
@@ -377,7 +365,8 @@ namespace DX11_Base
void TABDebug()
{
- ImGui::Checkbox("DEBUG ESP", &Config.isDebugESP);
+ if (ImGui::Checkbox("DEBUG ESP", &Config.isDebugESP) && !Config.isDebugESP)
+ Config.mDebugESPDistance = 10.f;
if (Config.isDebugESP)
{
ImGui::SameLine();
@@ -385,15 +374,56 @@ namespace DX11_Base
ImGui::SliderFloat("##DISTANCE", &Config.mDebugESPDistance, 1.0f, 100.f, "%.0f", ImGuiSliderFlags_AlwaysClamp);
}
- // @TODO: print additional debug information
- if (ImGui::Button("PrintPlayerAddr", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
+ if (ImGui::Checkbox("TELEPORT PALS TO XHAIR", &Config.IsTeleportAllToXhair) && !Config.IsTeleportAllToXhair)
+ Config.mDebugEntCapDistance = 10.f;
+ if (Config.IsTeleportAllToXhair)
{
- SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
- if (p_appc)
- g_Console->printdbg("\n\n[+] APalPlayerCharacter: 0x%llX\n", Console::Colors::green, p_appc);
+ ImGui::SameLine();
+ ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
+ ImGui::SliderFloat("##ENT_CAP_DISTANCE", &Config.mDebugEntCapDistance, 1.0f, 100.f, "%.0f", ImGuiSliderFlags_AlwaysClamp);
+ }
+
+ if (ImGui::Checkbox("DEATH AURA", &Config.IsDeathAura) && !Config.IsDeathAura)
+ {
+ Config.mDeathAuraDistance = 10.0f;
+ Config.mDeathAuraAmount = 1;
+ }
+ if (Config.IsDeathAura)
+ {
+ ImGui::SameLine();
+ ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x * .7);
+ ImGui::SliderFloat("##AURA_DISTANCE", &Config.mDeathAuraDistance, 1.0f, 100.f, "%.0f", ImGuiSliderFlags_AlwaysClamp);
+ ImGui::SameLine();
+ ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
+ ImGui::SliderInt("##AURA_DMG", &Config.mDeathAuraAmount, 1, 10, "%d", ImGuiSliderFlags_AlwaysClamp);
+ }
+
+ if (ImGui::Button("PRINT ENGINE GLOBALS", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
+ {
+
+ g_Console->printdbg("[+] [UNREAL ENGINE GLOBALS]\n"
+ "UWorld:\t\t\t0x%llX\n"
+ "ULocalPlayer:\t\t0x%llX\n"
+ "APalPlayerController:\t0x%llX\n"
+ "APalPlayerCharacter:\t0x%llX\n"
+ "APalPlayerState:\t0x%llX\n"
+ "UCharacterImpMan:\t0x%llX\n"
+ "UPalPlayerInventory:\t0x%llX\n"
+ "APalWeaponBase:\t\t0x%llX\n",
+ Console::Colors::yellow,
+ Config.gWorld,
+ Config.GetLocalPlayer(),
+ Config.GetPalPlayerController(),
+ Config.GetPalPlayerCharacter(),
+ Config.GetPalPlayerState(),
+ Config.GetCharacterImpManager(),
+ Config.GetInventoryComponent(),
+ Config.GetPlayerEquippedWeapon()
+ );
}
+ // Get Function Pointer Offset
ImGui::InputTextWithHint("##INPUT", "INPUT GOBJECT fn NAME", inputBuffer_getFnAddr, 100);
ImGui::SameLine();
if (ImGui::Button("GET fn", ImVec2(ImGui::GetContentRegionAvail().x, 20)))
@@ -412,6 +442,55 @@ namespace DX11_Base
memset(inputBuffer_getFnAddr, 0, 100);
}
+
+ // Get Class pointer by name
+ ImGui::InputTextWithHint("##INPUT_GETCLASS", "INPUT OBJECT CLASS NAME", inputBuffer_getClass, 100);
+ ImGui::SameLine();
+ if (ImGui::Button("GET CLASS", ImVec2(ImGui::GetContentRegionAvail().x, 20)))
+ {
+ std::string input = inputBuffer_getClass;
+ SDK::UClass* czClass = SDK::UObject::FindObject(input.c_str());
+ if (czClass)
+ {
+ static __int64 dwHandle = reinterpret_cast<__int64>(GetModuleHandle(0));
+ g_Console->printdbg("[+] Found [%s] -> 0x%llX\n", Console::Colors::yellow, input.c_str(), czClass->Class);
+ }
+ else
+ g_Console->printdbg("[!] CLASS [%s] NOT FOUND!\n", Console::Colors::red, input.c_str());
+
+ }
+
+ // Waypoints
+ ImGui::InputTextWithHint("##INPUT_SETWAYPOINT", "CUSTOM WAYPOINT NAME", inputBuffer_setWaypoint, 32);
+ ImGui::SameLine();
+ if (ImGui::Button("SET", ImVec2(ImGui::GetContentRegionAvail().x, 20)))
+ {
+ std::string wpName = inputBuffer_setWaypoint;
+ if (wpName.size() > 0)
+ {
+ AddWaypointLocation(wpName);
+ memset(inputBuffer_setWaypoint, 0, 32);
+ }
+ }
+ if (Config.db_waypoints.size() > 0)
+ {
+ if (ImGui::BeginChild("##CHILD_WAYPOINTS", { 0.0f, 100.f }))
+ {
+ DWORD index = -1;
+ for (auto waypoint : Config.db_waypoints)
+ {
+ index++;
+ ImGui::PushID(index);
+ // ImGui::Checkbox("SHOW", &waypoint.bIsShown);
+ // ImGui::SameLine();
+ if (ImGui::Button(waypoint.waypointName.c_str(), ImVec2(ImGui::GetContentRegionAvail().x, 20)))
+ AnyWhereTP(waypoint.waypointLocation, false);
+ ImGui::PopID();
+ }
+
+ ImGui::EndChild();
+ }
+ }
}
}
@@ -492,7 +571,7 @@ namespace DX11_Base
if (ImGui::Button("Kill"))
{
if (T[i]->IsA(SDK::APalCharacter::StaticClass()))
- Damage(Character, 99999999999);
+ SendDamageToActor(Character, 99999999999);
}
ImGui::SameLine();
if (ImGui::Button("TP"))
@@ -666,6 +745,9 @@ namespace DX11_Base
if (Config.isDebugESP)
ESP_DEBUG(Config.mDebugESPDistance);
+ if (Config.db_waypoints.size() > 0)
+ RenderWaypointsToScreen();
+
ImGui::End();
}
@@ -685,7 +767,7 @@ namespace DX11_Base
//
if (Config.IsAttackModiler)
- SetPlayerDefenseParam(Config.DamageUp);
+ SetPlayerAttackParam(Config.DamageUp);
//
if (Config.IsDefuseModiler)
@@ -695,6 +777,11 @@ namespace DX11_Base
if (Config.IsInfStamina)
ResetStamina();
+ if (Config.IsTeleportAllToXhair)
+ TeleportAllPalsToCrosshair(Config.mDebugEntCapDistance);
+
+ if (Config.IsDeathAura)
+ DeathAura(Config.mDeathAuraAmount, Config.mDeathAuraDistance, true);
//
// SetDemiGodMode(Config.IsMuteki);