PalWorld-NetCrack/feature.cpp
2024-01-27 15:59:23 +08:00

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