mirror of
https://github.com/swordbluesword/PalWorld-NetCrack.git
synced 2025-04-29 02:47:17 +09:00
299 lines
7.8 KiB
C++
299 lines
7.8 KiB
C++
#include "pch.h"
|
|
#include "feature.h"
|
|
using namespace SDK;
|
|
|
|
void ESP()
|
|
{
|
|
APalPlayerCharacter* pPalCharacter = Config.GetPalPlayerCharacter();
|
|
if (!pPalCharacter)
|
|
return;
|
|
|
|
UPalShooterComponent* pShootComponent = pPalCharacter->ShooterComponent;
|
|
if (!pShootComponent)
|
|
return;
|
|
|
|
APalWeaponBase* pWeapon = pShootComponent->HasWeapon;
|
|
if (pWeapon)
|
|
DrawUActorComponent(pWeapon->InstanceComponents, ImColor(128, 0, 0));
|
|
|
|
if (!Config.UCIM)
|
|
return;
|
|
|
|
TArray<SDK::APalCharacter*> T = {};
|
|
Config.UCIM->GetAllPalCharacter(&T);
|
|
if (!T.IsValid())
|
|
return;
|
|
|
|
for (int i = 0; i < T.Count(); i++)
|
|
ImGui::GetBackgroundDrawList()->AddText(nullptr, 16, ImVec2(10, 10 + (i * 30)), ImColor(128,0,0), T[i]->GetFullName().c_str());
|
|
}
|
|
|
|
void ESP_DEBUG(float mDist, ImVec4 color, UClass* mEntType)
|
|
{
|
|
APalPlayerCharacter* pLocalPlayer = Config.GetPalPlayerCharacter();
|
|
if (!pLocalPlayer)
|
|
return;
|
|
|
|
APalPlayerController* pPlayerController = static_cast<APalPlayerController*>(pLocalPlayer->Controller);
|
|
if (!pPlayerController)
|
|
return;
|
|
|
|
std::vector<AActor*> actors;
|
|
if (!config::GetAllActorsofType(mEntType, &actors, true))
|
|
return;
|
|
|
|
auto draw = ImGui::GetWindowDrawList();
|
|
|
|
__int32 actorsCount = actors.size();
|
|
for (AActor* actor : actors)
|
|
{
|
|
FVector actorLocation = actor->K2_GetActorLocation();
|
|
FVector localPlayerLocation = pLocalPlayer->K2_GetActorLocation();
|
|
float distantTo = pLocalPlayer->GetDistanceTo(actor);
|
|
if (distantTo > mDist)
|
|
continue;
|
|
|
|
FVector2D outScreen;
|
|
if (!pPlayerController->ProjectWorldLocationToScreen(actorLocation, &outScreen, true))
|
|
continue;
|
|
|
|
char data[0x256];
|
|
const char* StringData = "OBJECT: [%s]\nCLASS: [%s]\nINDEX: [%d]\nPOSITION: { %0.0f, %0.0f, %0.0f }\nDISTANCE: [%.0fm]";
|
|
if (distantTo >= 1000.f)
|
|
{
|
|
distantTo /= 1000.f;
|
|
StringData = "OBJECT: [%s]\nCLASS: [%s]\nINDEX: [%d]\nPOSITION: { %0.0f, %0.0f, %0.0f }\nDISTANCE: [%.0fkm]";
|
|
}
|
|
sprintf_s(data, StringData, actor->GetName().c_str(), actor->Class->GetFullName().c_str(), actorLocation.X, actorLocation.Y, actorLocation.Z, distantTo);
|
|
|
|
ImVec2 screen = ImVec2(static_cast<float>(outScreen.X), static_cast<float>(outScreen.Y));
|
|
draw->AddText(screen, ImColor(color), data);
|
|
}
|
|
}
|
|
|
|
void DrawUActorComponent(SDK::TArray<SDK::UActorComponent*> Comps,ImColor color)
|
|
{
|
|
ImGui::GetBackgroundDrawList()->AddText(nullptr, 16, ImVec2(ImGui::GetIO().DisplaySize.x / 2, ImGui::GetIO().DisplaySize.y / 2), color, "Drawing...");
|
|
if (Comps.IsValid())
|
|
{
|
|
for (int i = 0; i < Comps.Count(); i++)
|
|
{
|
|
|
|
if (Comps[i] != NULL)
|
|
{
|
|
|
|
ImGui::GetBackgroundDrawList()->AddText(nullptr, 16, ImVec2(10, 10 + (i * 30)), color, Comps[i]->GetFullName().c_str());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void AddToInventoryContainer(__int32 mCount, __int32 mIndex)
|
|
{
|
|
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
|
if (!p_appc != NULL)
|
|
return;
|
|
|
|
SDK::APalPlayerController* p_apc = static_cast<SDK::APalPlayerController*>(p_appc->Controller);
|
|
if (!p_apc)
|
|
return;
|
|
|
|
SDK::APalPlayerState* p_apps = static_cast<SDK::APalPlayerState*>(p_apc->PlayerState);
|
|
if (!p_apps)
|
|
return;
|
|
|
|
SDK::UPalPlayerInventoryData* InventoryData = p_apps->GetInventoryData();
|
|
if (!InventoryData)
|
|
return;
|
|
|
|
SDK::UPalItemContainerMultiHelper* InventoryMultiHelper = InventoryData->InventoryMultiHelper;
|
|
if (!InventoryMultiHelper)
|
|
return;
|
|
|
|
SDK::TArray<class SDK::UPalItemContainer*> Containers = InventoryMultiHelper->Containers;
|
|
if (Containers.Num() <= 0)
|
|
return;
|
|
|
|
SDK::UPalItemSlot* pSelectedSlot = Containers[0]->Get(mIndex);
|
|
|
|
if (!pSelectedSlot != NULL)
|
|
return;
|
|
|
|
SDK::FPalItemId FirstItemId = pSelectedSlot->GetItemId();
|
|
int32 StackCount = pSelectedSlot->GetStackCount();
|
|
__int32 mNewCount = StackCount += mCount;
|
|
InventoryData->RequestAddItem(FirstItemId.StaticId, mNewCount, true);
|
|
}
|
|
|
|
|
|
void UnlockAllEffigies() {
|
|
SDK::APalPlayerCharacter* pPalCharacter = Config.GetPalPlayerCharacter();
|
|
if (!pPalCharacter)
|
|
return;
|
|
|
|
SDK::UWorld* world = Config.GetUWorld();
|
|
if (!world)
|
|
return;
|
|
|
|
SDK::TUObjectArray* objects = world->GObjects;
|
|
|
|
for (int i = 0; i < objects->NumElements; ++i) {
|
|
SDK::UObject* object = objects->GetByIndex(i);
|
|
|
|
if (!object) {
|
|
continue;
|
|
}
|
|
|
|
if (!object->IsA(SDK::APalLevelObjectRelic::StaticClass())) {
|
|
continue;
|
|
}
|
|
|
|
SDK::APalLevelObjectObtainable* relic = (SDK::APalLevelObjectObtainable*)object;
|
|
if (!relic) {
|
|
continue;
|
|
}
|
|
|
|
((SDK::APalPlayerState*)pPalCharacter->PlayerState)->RequestObtainLevelObject_ToServer(relic);
|
|
}
|
|
}
|
|
|
|
void ResetStamina()
|
|
{
|
|
APalPlayerCharacter* pPalCharacter = Config.GetPalPlayerCharacter();
|
|
if (!pPalCharacter)
|
|
return;
|
|
|
|
UPalCharacterParameterComponent* pParams = pPalCharacter->CharacterParameterComponent;
|
|
if (!pParams)
|
|
return;
|
|
|
|
pParams->ResetSP();
|
|
}
|
|
|
|
void SetInfiniteAmmo(bool bInfAmmo)
|
|
{
|
|
APalPlayerCharacter* pPalCharacter = Config.GetPalPlayerCharacter();
|
|
if (!pPalCharacter)
|
|
return;
|
|
|
|
UPalShooterComponent* pShootComponent = pPalCharacter->ShooterComponent;
|
|
if (!pShootComponent)
|
|
return;
|
|
|
|
APalWeaponBase* pWeapon = pShootComponent->HasWeapon;
|
|
if (pWeapon)
|
|
pWeapon->IsRequiredBullet = bInfAmmo ? false : true;
|
|
|
|
}
|
|
|
|
void SetCraftingSpeed(float mNewSpeed, bool bRestoreDefault)
|
|
{
|
|
APalPlayerCharacter* pPalCharacter = Config.GetPalPlayerCharacter();
|
|
if (!pPalCharacter)
|
|
return;
|
|
|
|
UPalCharacterParameterComponent* pParams = pPalCharacter->CharacterParameterComponent;
|
|
if (!pParams)
|
|
return;
|
|
|
|
UPalIndividualCharacterParameter* ivParams = pParams->IndividualParameter;
|
|
if (!ivParams)
|
|
return;
|
|
|
|
FPalIndividualCharacterSaveParameter sParams = ivParams->SaveParameter;
|
|
TArray<FFloatContainer_FloatPair> mCraftSpeedArray = sParams.CraftSpeedRates.Values;
|
|
|
|
if (mCraftSpeedArray.Count() > 0)
|
|
mCraftSpeedArray[0].Value = bRestoreDefault ? 1.0f : mNewSpeed;
|
|
}
|
|
|
|
void AddTechPoints(__int32 mPoints)
|
|
{
|
|
APalPlayerState* mPlayerState = Config.GetPalPlayerState();
|
|
if (!mPlayerState)
|
|
return;
|
|
|
|
UPalTechnologyData* pTechData = mPlayerState->TechnologyData;
|
|
if (!pTechData)
|
|
return;
|
|
|
|
pTechData->TechnologyPoint += mPoints;
|
|
}
|
|
|
|
void AddAncientTechPoints(__int32 mPoints)
|
|
{
|
|
APalPlayerState* mPlayerState = Config.GetPalPlayerState();
|
|
if (!mPlayerState)
|
|
return;
|
|
|
|
UPalTechnologyData* pTechData = mPlayerState->TechnologyData;
|
|
if (!pTechData)
|
|
return;
|
|
|
|
pTechData->bossTechnologyPoint += mPoints;
|
|
}
|
|
|
|
void RemoveTechPoints(__int32 mPoints)
|
|
{
|
|
APalPlayerState* mPlayerState = Config.GetPalPlayerState();
|
|
if (!mPlayerState)
|
|
return;
|
|
|
|
UPalTechnologyData* pTechData = mPlayerState->TechnologyData;
|
|
if (!pTechData)
|
|
return;
|
|
|
|
pTechData->TechnologyPoint -= mPoints;
|
|
}
|
|
|
|
void RemoveAncientTechPoint(__int32 mPoints)
|
|
{
|
|
APalPlayerState* mPlayerState = Config.GetPalPlayerState();
|
|
if (!mPlayerState)
|
|
return;
|
|
|
|
UPalTechnologyData* pTechData = mPlayerState->TechnologyData;
|
|
if (!pTechData)
|
|
return;
|
|
|
|
pTechData->bossTechnologyPoint -= mPoints;
|
|
}
|
|
|
|
// Credit: BennettStaley
|
|
void AddToInventoryContainer(__int32 mCount, __int32 mIndex)
|
|
{
|
|
APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
|
if (!p_appc != NULL)
|
|
return;
|
|
|
|
APalPlayerController* p_apc = static_cast<APalPlayerController*>(p_appc->Controller);
|
|
if (!p_apc)
|
|
return;
|
|
|
|
APalPlayerState* p_apps = static_cast<SDK::APalPlayerState*>(p_apc->PlayerState);
|
|
if (!p_apps)
|
|
return;
|
|
|
|
UPalPlayerInventoryData* InventoryData = p_apps->GetInventoryData();
|
|
if (!InventoryData)
|
|
return;
|
|
|
|
UPalItemContainerMultiHelper* InventoryMultiHelper = InventoryData->InventoryMultiHelper;
|
|
if (!InventoryMultiHelper)
|
|
return;
|
|
|
|
TArray<class SDK::UPalItemContainer*> Containers = InventoryMultiHelper->Containers;
|
|
if (Containers.Count() <= 0)
|
|
return;
|
|
|
|
UPalItemSlot* pSelectedSlot = Containers[0]->Get(mIndex);
|
|
|
|
if (!pSelectedSlot != NULL)
|
|
return;
|
|
|
|
FPalItemId FirstItemId = pSelectedSlot->GetItemId();
|
|
__int32 StackCount = pSelectedSlot->GetStackCount();
|
|
__int32 mNewCount = StackCount += mCount;
|
|
InventoryData->RequestAddItem(FirstItemId.StaticId, mNewCount, true);
|
|
} |