diff --git a/SDK/Basic.hpp b/SDK/Basic.hpp index 2bb63ce..a0e55c1 100644 --- a/SDK/Basic.hpp +++ b/SDK/Basic.hpp @@ -97,7 +97,7 @@ public: return Data[Index]; } - inline int32 Num() + inline int32 Count() { return NumElements; } diff --git a/config.cpp b/config.cpp index 0a7cd5c..958ae91 100644 --- a/config.cpp +++ b/config.cpp @@ -40,10 +40,25 @@ SDK::UWorld* config::GetUWorld() { auto gworld = signature("48 8B 05 ? ? ? ? EB 05").instruction(3).add(7); gworld_ptr = gworld.GetPointer(); + if (gworld_ptr) + gWorld = *(SDK::UWorld**)gworld_ptr; } return (*(SDK::UWorld**)(gworld_ptr)); } +SDK::UPalCharacterImportanceManager* GetCharacterImpManager() +{ + SDK::UWorld* pWorld = config::gWorld; + if (!pWorld) + return; + + SDK::UGameInstance* pGameInstance = pWorld->OwningGameInstance; + if (!pGameInstance) + return nullptr; + + return static_cast(pGameInstance)->CharacterImportanceManager; +} + SDK::APalPlayerCharacter* config::GetPalPlayerCharacter() { @@ -54,6 +69,54 @@ SDK::APalPlayerCharacter* config::GetPalPlayerCharacter() return nullptr; } +SDK::APalPlayerState* config::GetPalPlayerState() +{ + SDK::APalPlayerCharacter* pPlayer = GetPalPlayerCharacter(); + if (!pPlayer) + return nullptr; + + return static_cast(pPlayer->PlayerState); +} + +bool GetTAllPlayers(SDK::TArray* outResult) +{ + SDK::UPalCharacterImportanceManager* mPal = GetCharacterImpManager(); + if (!mPal) + return false; + + mPal->GetAllPlayer(outResult); + return true; +} + +bool GetTAllImpNPC(SDK::TArray* outResult) +{ + SDK::UPalCharacterImportanceManager* mPal = GetCharacterImpManager(); + if (!mPal) + return false; + + mPal->GetImportantNPC(outResult); + return true; +} + +bool GetTAllNPC(SDK::TArray* outResult) +{ + SDK::UPalCharacterImportanceManager* mPal = GetCharacterImpManager(); + if (!mPal) + return false; + + mPal->GetAllNPC(outResult); + return true; +} + +bool GetTAllPals(SDK::TArray* outResult) +{ + SDK::UPalCharacterImportanceManager* mPal = GetCharacterImpManager(); + if (!mPal) + return false; + + mPal->GetAllPalCharacter(outResult); + return true; +} void config::Init() diff --git a/config.h b/config.h index d17412a..5d14a19 100644 --- a/config.h +++ b/config.h @@ -39,6 +39,7 @@ public: char ItemName[255]; char inputTextBuffer[255] = ""; int EqModifiler = 1; + static SDK::UWorld* gWorld; SDK::APalPlayerCharacter* localPlayer = NULL; SDK::TArray AllPlayers = {}; SDK::UPalCharacterImportanceManager* UCIM = NULL; @@ -58,8 +59,14 @@ public: //static function static SDK::UWorld* GetUWorld(); + static SDK::UPalCharacterImportanceManager* GetCharacterImpManager(); static SDK::APalPlayerCharacter* GetPalPlayerCharacter(); + static SDK::APalPlayerState* GetPalPlayerState(); static SDK::TArray GetTAllPlayers(); + static bool GetTAllPlayers(SDK::TArray* outResult); + static bool GetTAllImpNPC(SDK::TArray* outResult); + static bool GetTAllNPC(SDK::TArray* outResult); + static bool GetTAllPals(SDK::TArray* outResult); static void Init(); static void Update(const char* filterText); static const std::vector& GetFilteredItems(); diff --git a/feature.cpp b/feature.cpp index df8ee2c..c0e1a90 100644 --- a/feature.cpp +++ b/feature.cpp @@ -1,37 +1,39 @@ #include "pch.h" #include "feature.h" +using namespace SDK; void ESP() { - if (Config.GetPalPlayerCharacter() != NULL) - { - if (Config.GetPalPlayerCharacter()->ShooterComponent != NULL) - { - if(Config.GetPalPlayerCharacter()->ShooterComponent->GetHasWeapon() != NULL) - { - DrawUActorComponent(Config.GetPalPlayerCharacter()->ShooterComponent->GetHasWeapon()->InstanceComponents, ImColor(128, 0, 0)); - } - } - if (Config.UCIM != NULL) - { - SDK::TArray T = {}; - Config.UCIM->GetAllPalCharacter(&T); - if (T.IsValid()) - { - for (int i = 0; i < T.Num(); i++) - { - ImGui::GetBackgroundDrawList()->AddText(nullptr, 16, ImVec2(10, 10 + (i * 30)), ImColor(128,0,0), T[i]->GetFullName().c_str()); - } - } - } - } + 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 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.Num(); i++) + for (int i = 0; i < Comps.Count(); i++) { if (Comps[i] != NULL) @@ -43,3 +45,105 @@ void DrawUActorComponent(SDK::TArray Comps,ImColor color) } } + +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 = false) +{ + 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; +} \ No newline at end of file diff --git a/feature.h b/feature.h index 54d6ce2..cd0b46a 100644 --- a/feature.h +++ b/feature.h @@ -9,3 +9,17 @@ void DrawUActorComponent(SDK::TArray Comps,ImColor color) void DrawPosition(); + +void ResetStamina(); + +void SetInfiniteAmmo(bool bInfAmmo); + +void SetCraftingSpeed(float mNewSpeed, bool bRestoreDefault = false); + +void AddTechPoints(__int32 mPoints); + +void AddAncientTechPoints(__int32 mPoints); + +void RemoveTechPoints(__int32 mPoints); + +void RemoveAncientTechPoint(__int32 mPoints); \ No newline at end of file diff --git a/src/Menu.cpp b/src/Menu.cpp index 6446db4..771401d 100644 --- a/src/Menu.cpp +++ b/src/Menu.cpp @@ -10,7 +10,7 @@ void DetourEqui(SDK::UPalNetworkIndividualComponent* p_this, SDK::FPalInstanceID { if(AddStatusPointArray->IsValid()) { - for (int i = 0; i < AddStatusPointArray->Num(); i++) + for (int i = 0; i < AddStatusPointArray->Count(); i++) { (*AddStatusPointArray)[i].StatusPoint = -1 * Config.EqModifiler; }