mirror of
https://github.com/swordbluesword/PalWorld-NetCrack.git
synced 2025-04-29 19:07:15 +09:00
Merge pull request #60 from xCENTx/AdditionalFeatures
Additional Features & Optimizations
This commit is contained in:
commit
c589936004
@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 16
|
# Visual Studio Version 16
|
||||||
VisualStudioVersion = 16.0.32802.440
|
VisualStudioVersion = 16.0.32802.440
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
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
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
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|x64.Build.0 = Release|x64
|
||||||
{EB52DDF1-EFC4-4222-9D86-6918D4D891A5}.Release|x86.ActiveCfg = Release|Win32
|
{EB52DDF1-EFC4-4222-9D86-6918D4D891A5}.Release|x86.ActiveCfg = Release|Win32
|
||||||
{EB52DDF1-EFC4-4222-9D86-6918D4D891A5}.Release|x86.Build.0 = 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
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
@ -120,6 +120,9 @@
|
|||||||
<ClInclude Include="ItemList.hpp">
|
<ClInclude Include="ItemList.hpp">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="initialize.hpp">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="dllmain.cpp">
|
<ClCompile Include="dllmain.cpp">
|
||||||
|
13
config.cpp
13
config.cpp
@ -164,6 +164,19 @@ bool config::GetTAllPals(SDK::TArray<class SDK::APalCharacter*>* outResult)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @TODO:
|
||||||
|
bool config::GetPartyPals(std::vector<SDK::AActor*>* outResult)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @TODO:
|
||||||
|
bool config::GetPlayerDeathChests(std::vector<SDK::FVector>* outLocations)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// credit: xCENTx
|
||||||
bool config::GetAllActorsofType(SDK::UClass* mType, std::vector<SDK::AActor*>* outArray, bool bLoopAllLevels, bool bSkipLocalPlayer)
|
bool config::GetAllActorsofType(SDK::UClass* mType, std::vector<SDK::AActor*>* outArray, bool bLoopAllLevels, bool bSkipLocalPlayer)
|
||||||
{
|
{
|
||||||
SDK::UWorld* pWorld = Config.gWorld;
|
SDK::UWorld* pWorld = Config.gWorld;
|
||||||
|
26
config.h
26
config.h
@ -15,6 +15,9 @@ public:
|
|||||||
//check
|
//check
|
||||||
bool IsESP = false;
|
bool IsESP = false;
|
||||||
bool IsFullbright = false;
|
bool IsFullbright = false;
|
||||||
|
bool IsForgeMode = false;
|
||||||
|
bool IsTeleportAllToXhair = false;
|
||||||
|
bool IsDeathAura = false;
|
||||||
bool IsAimbot = false;
|
bool IsAimbot = false;
|
||||||
bool IsSpeedHack = false;
|
bool IsSpeedHack = false;
|
||||||
bool IsAttackModiler = false;
|
bool IsAttackModiler = false;
|
||||||
@ -36,6 +39,9 @@ public:
|
|||||||
float SpeedModiflers = 1.0f;
|
float SpeedModiflers = 1.0f;
|
||||||
//def and value
|
//def and value
|
||||||
float mDebugESPDistance = 5.0f;
|
float mDebugESPDistance = 5.0f;
|
||||||
|
float mDebugEntCapDistance = 10.0f;
|
||||||
|
float mDeathAuraDistance = 10.f;
|
||||||
|
int mDeathAuraAmount = 1.f;
|
||||||
int DamageUp = 0;
|
int DamageUp = 0;
|
||||||
int DefuseUp = 0;
|
int DefuseUp = 0;
|
||||||
int EXP = 0;
|
int EXP = 0;
|
||||||
@ -62,6 +68,24 @@ public:
|
|||||||
};
|
};
|
||||||
//Filtered Items
|
//Filtered Items
|
||||||
std::vector<std::string> db_filteredItems;
|
std::vector<std::string> 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<SWaypoint> db_waypoints;
|
||||||
|
std::vector<std::pair<std::string, SDK::UClass*>> db_filteredEnts;
|
||||||
|
|
||||||
|
|
||||||
//static function
|
//static function
|
||||||
static SDK::UWorld* GetUWorld();
|
static SDK::UWorld* GetUWorld();
|
||||||
@ -76,6 +100,8 @@ public:
|
|||||||
static bool GetTAllImpNPC(SDK::TArray<class SDK::APalCharacter*>* outResult);
|
static bool GetTAllImpNPC(SDK::TArray<class SDK::APalCharacter*>* outResult);
|
||||||
static bool GetTAllNPC(SDK::TArray<class SDK::APalCharacter*>* outResult);
|
static bool GetTAllNPC(SDK::TArray<class SDK::APalCharacter*>* outResult);
|
||||||
static bool GetTAllPals(SDK::TArray<class SDK::APalCharacter*>* outResult);
|
static bool GetTAllPals(SDK::TArray<class SDK::APalCharacter*>* outResult);
|
||||||
|
static bool GetPartyPals(std::vector<SDK::AActor*>* outResult);
|
||||||
|
static bool GetPlayerDeathChests(std::vector<SDK::FVector>* outLocations);
|
||||||
static bool GetAllActorsofType(SDK::UClass* mType, std::vector<SDK::AActor*>* outArray, bool bLoopAllLevels = false, bool bSkipLocalPlayer = false);
|
static bool GetAllActorsofType(SDK::UClass* mType, std::vector<SDK::AActor*>* outArray, bool bLoopAllLevels = false, bool bSkipLocalPlayer = false);
|
||||||
static void Init();
|
static void Init();
|
||||||
static void Update(const char* filterText);
|
static void Update(const char* filterText);
|
||||||
|
173
feature.cpp
173
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());
|
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
|
// draws debug information for the input actor array
|
||||||
// should only be called from a GUI thread with ImGui context
|
// should only be called from a GUI thread with ImGui context
|
||||||
void ESP_DEBUG(float mDist, ImVec4 color, UClass* mEntType)
|
void ESP_DEBUG(float mDist, ImVec4 color, UClass* mEntType)
|
||||||
@ -235,7 +236,7 @@ void ExploitFly(bool IsFly)
|
|||||||
IsFly ? pPalPlayerController->StartFlyToServer() : pPalPlayerController->EndFlyToServer();
|
IsFly ? pPalPlayerController->StartFlyToServer() : pPalPlayerController->EndFlyToServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
// credit: nknights23
|
// credit: xCENTx
|
||||||
void SetFullbright(bool bIsSet)
|
void SetFullbright(bool bIsSet)
|
||||||
{
|
{
|
||||||
ULocalPlayer* pLocalPlayer = Config.GetLocalPlayer();
|
ULocalPlayer* pLocalPlayer = Config.GetLocalPlayer();
|
||||||
@ -335,6 +336,24 @@ void ResetStamina()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
pParams->ResetSP();
|
pParams->ResetSP();
|
||||||
|
|
||||||
|
|
||||||
|
// Reset Pal Stamina ??
|
||||||
|
TArray<APalCharacter*> 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;
|
pTechData->bossTechnologyPoint -= mPoints;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// credit: xCENTx
|
||||||
float GetDistanceToActor(AActor* pLocal, AActor* pTarget)
|
float GetDistanceToActor(AActor* pLocal, AActor* pTarget)
|
||||||
{
|
{
|
||||||
if (!pLocal || !pTarget)
|
if (!pLocal || !pTarget)
|
||||||
@ -484,6 +504,157 @@ float GetDistanceToActor(AActor* pLocal, AActor* pTarget)
|
|||||||
return distance / 100.0f;
|
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<APalCharacter*> 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<APalCharacter*> 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
|
/// OLDER METHODS
|
||||||
//SDK::FPalDebugOtomoPalInfo palinfo = SDK::FPalDebugOtomoPalInfo();
|
//SDK::FPalDebugOtomoPalInfo palinfo = SDK::FPalDebugOtomoPalInfo();
|
||||||
//SDK::TArray<SDK::EPalWazaID> EA = { 0U };
|
//SDK::TArray<SDK::EPalWazaID> EA = { 0U };
|
||||||
|
14
feature.h
14
feature.h
@ -51,4 +51,16 @@ void RemoveTechPoints(__int32 mPoints);
|
|||||||
|
|
||||||
void RemoveAncientTechPoint(__int32 mPoints);
|
void RemoveAncientTechPoint(__int32 mPoints);
|
||||||
|
|
||||||
float GetDistanceToActor(SDK::AActor* pLocal, SDK::AActor* pTarget);
|
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();
|
@ -7,6 +7,18 @@
|
|||||||
#include "include/Hooking.hpp"
|
#include "include/Hooking.hpp"
|
||||||
using namespace DX11_Base;
|
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()
|
DWORD WINAPI MainThread_Initialize()
|
||||||
{
|
{
|
||||||
g_Console = std::make_unique<Console>();
|
g_Console = std::make_unique<Console>();
|
||||||
@ -29,7 +41,9 @@ DWORD WINAPI MainThread_Initialize()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// RENDER LOOP
|
/// RENDER LOOP
|
||||||
g_Running = TRUE;
|
g_Running = TRUE;
|
||||||
|
|
||||||
|
std::thread WCMUpdate(ClientBGThread); // Initialize Loops Thread
|
||||||
while (g_Running)
|
while (g_Running)
|
||||||
{
|
{
|
||||||
if (GetAsyncKeyState(VK_INSERT) & 1)
|
if (GetAsyncKeyState(VK_INSERT) & 1)
|
||||||
@ -38,9 +52,17 @@ DWORD WINAPI MainThread_Initialize()
|
|||||||
g_GameVariables->m_ShowHud = !g_GameVariables->m_ShowMenu;
|
g_GameVariables->m_ShowHud = !g_GameVariables->m_ShowMenu;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (g_KillSwitch)
|
||||||
|
{
|
||||||
|
g_KillSwitch = false;
|
||||||
|
g_Hooking->Unhook();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// EXIT
|
/// EXIT
|
||||||
|
WCMUpdate.join(); // Exit Loops Thread
|
||||||
FreeLibraryAndExitThread(g_hModule, EXIT_SUCCESS);
|
FreeLibraryAndExitThread(g_hModule, EXIT_SUCCESS);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
@ -41,6 +41,7 @@ bool HookCursor()
|
|||||||
namespace DX11_Base {
|
namespace DX11_Base {
|
||||||
static uint64_t* MethodsTable = NULL;
|
static uint64_t* MethodsTable = NULL;
|
||||||
|
|
||||||
|
// @TODO: boolean for active window
|
||||||
LRESULT D3D11Window::WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
LRESULT D3D11Window::WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
if (g_GameVariables->m_ShowMenu) {
|
if (g_GameVariables->m_ShowMenu) {
|
||||||
@ -224,12 +225,6 @@ namespace DX11_Base {
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
HRESULT APIENTRY D3D11Window::HookPresent(IDXGISwapChain* pSwapChain, UINT SyncInterval, UINT Flags)
|
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);
|
g_D3D11Window->Overlay(pSwapChain);
|
||||||
return g_D3D11Window->oIDXGISwapChainPresent(pSwapChain, SyncInterval, Flags);
|
return g_D3D11Window->oIDXGISwapChainPresent(pSwapChain, SyncInterval, Flags);
|
||||||
}
|
}
|
||||||
|
@ -31,8 +31,10 @@ namespace DX11_Base {
|
|||||||
void Hooking::Unhook()
|
void Hooking::Unhook()
|
||||||
{
|
{
|
||||||
g_D3D11Window->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_Console->DestroyConsole();
|
||||||
|
g_Running = FALSE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
131
src/Menu.cpp
131
src/Menu.cpp
@ -15,20 +15,6 @@ std::string rand_str(const int len)
|
|||||||
}
|
}
|
||||||
return str;
|
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) {
|
int InputTextCallback(ImGuiInputTextCallbackData* data) {
|
||||||
char inputChar = data->EventChar;
|
char inputChar = data->EventChar;
|
||||||
@ -42,6 +28,8 @@ namespace DX11_Base
|
|||||||
{
|
{
|
||||||
// helper variables
|
// helper variables
|
||||||
char inputBuffer_getFnAddr[100];
|
char inputBuffer_getFnAddr[100];
|
||||||
|
char inputBuffer_getClass[100];
|
||||||
|
char inputBuffer_setWaypoint[32];
|
||||||
|
|
||||||
namespace Styles
|
namespace Styles
|
||||||
{
|
{
|
||||||
@ -377,7 +365,8 @@ namespace DX11_Base
|
|||||||
|
|
||||||
void TABDebug()
|
void TABDebug()
|
||||||
{
|
{
|
||||||
ImGui::Checkbox("DEBUG ESP", &Config.isDebugESP);
|
if (ImGui::Checkbox("DEBUG ESP", &Config.isDebugESP) && !Config.isDebugESP)
|
||||||
|
Config.mDebugESPDistance = 10.f;
|
||||||
if (Config.isDebugESP)
|
if (Config.isDebugESP)
|
||||||
{
|
{
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
@ -385,15 +374,56 @@ namespace DX11_Base
|
|||||||
ImGui::SliderFloat("##DISTANCE", &Config.mDebugESPDistance, 1.0f, 100.f, "%.0f", ImGuiSliderFlags_AlwaysClamp);
|
ImGui::SliderFloat("##DISTANCE", &Config.mDebugESPDistance, 1.0f, 100.f, "%.0f", ImGuiSliderFlags_AlwaysClamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// @TODO: print additional debug information
|
if (ImGui::Checkbox("TELEPORT PALS TO XHAIR", &Config.IsTeleportAllToXhair) && !Config.IsTeleportAllToXhair)
|
||||||
if (ImGui::Button("PrintPlayerAddr", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
Config.mDebugEntCapDistance = 10.f;
|
||||||
|
if (Config.IsTeleportAllToXhair)
|
||||||
{
|
{
|
||||||
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
ImGui::SameLine();
|
||||||
if (p_appc)
|
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
|
||||||
g_Console->printdbg("\n\n[+] APalPlayerCharacter: 0x%llX\n", Console::Colors::green, p_appc);
|
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::InputTextWithHint("##INPUT", "INPUT GOBJECT fn NAME", inputBuffer_getFnAddr, 100);
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("GET fn", ImVec2(ImGui::GetContentRegionAvail().x, 20)))
|
if (ImGui::Button("GET fn", ImVec2(ImGui::GetContentRegionAvail().x, 20)))
|
||||||
@ -412,6 +442,55 @@ namespace DX11_Base
|
|||||||
memset(inputBuffer_getFnAddr, 0, 100);
|
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<SDK::UClass>(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 (ImGui::Button("Kill"))
|
||||||
{
|
{
|
||||||
if (T[i]->IsA(SDK::APalCharacter::StaticClass()))
|
if (T[i]->IsA(SDK::APalCharacter::StaticClass()))
|
||||||
Damage(Character, 99999999999);
|
SendDamageToActor(Character, 99999999999);
|
||||||
}
|
}
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("TP"))
|
if (ImGui::Button("TP"))
|
||||||
@ -666,6 +745,9 @@ namespace DX11_Base
|
|||||||
if (Config.isDebugESP)
|
if (Config.isDebugESP)
|
||||||
ESP_DEBUG(Config.mDebugESPDistance);
|
ESP_DEBUG(Config.mDebugESPDistance);
|
||||||
|
|
||||||
|
if (Config.db_waypoints.size() > 0)
|
||||||
|
RenderWaypointsToScreen();
|
||||||
|
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -685,7 +767,7 @@ namespace DX11_Base
|
|||||||
|
|
||||||
//
|
//
|
||||||
if (Config.IsAttackModiler)
|
if (Config.IsAttackModiler)
|
||||||
SetPlayerDefenseParam(Config.DamageUp);
|
SetPlayerAttackParam(Config.DamageUp);
|
||||||
|
|
||||||
//
|
//
|
||||||
if (Config.IsDefuseModiler)
|
if (Config.IsDefuseModiler)
|
||||||
@ -695,6 +777,11 @@ namespace DX11_Base
|
|||||||
if (Config.IsInfStamina)
|
if (Config.IsInfStamina)
|
||||||
ResetStamina();
|
ResetStamina();
|
||||||
|
|
||||||
|
if (Config.IsTeleportAllToXhair)
|
||||||
|
TeleportAllPalsToCrosshair(Config.mDebugEntCapDistance);
|
||||||
|
|
||||||
|
if (Config.IsDeathAura)
|
||||||
|
DeathAura(Config.mDeathAuraAmount, Config.mDeathAuraDistance, true);
|
||||||
//
|
//
|
||||||
// SetDemiGodMode(Config.IsMuteki);
|
// SetDemiGodMode(Config.IsMuteki);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user