#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 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(pLocalPlayer->Controller); if (!pPlayerController) return; std::vector 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(outScreen.X), static_cast(outScreen.Y)); draw->AddText(screen, ImColor(color), data); } } void DrawUActorComponent(SDK::TArray 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(p_appc->Controller); if (!p_apc) return; SDK::APalPlayerState* p_apps = static_cast(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 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 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(p_appc->Controller); if (!p_apc) return; APalPlayerState* p_apps = static_cast(p_apc->PlayerState); if (!p_apps) return; UPalPlayerInventoryData* InventoryData = p_apps->GetInventoryData(); if (!InventoryData) return; UPalItemContainerMultiHelper* InventoryMultiHelper = InventoryData->InventoryMultiHelper; if (!InventoryMultiHelper) return; TArray 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); }