mirror of
https://github.com/swordbluesword/PalWorld-NetCrack.git
synced 2025-04-29 02:47:17 +09:00
Project Adjustments
PROJECT SETTINGS - Additional Options "/bigobj" for debug builds - Output directory relocated to solution directory "/bin" - include "ProjDir" as an additional include directory for debug builds FEATURES - adjust params for some functions to include default values - relocate functions from Menu to Features for clarity - included comments ISSUES - SpeedHack is causing a crash if toggled while loading from main menu - Database Tab is causing a crash due to "Config.Update"
This commit is contained in:
parent
c0a374c7a8
commit
9dc8140e59
@ -43,13 +43,13 @@
|
|||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<PlatformToolset>v143</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<PlatformToolset>v143</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@ -79,9 +79,12 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\bin</OutDir>
|
||||||
|
<TargetName>$(ProjectName)_debug</TargetName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\bin</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
@ -131,6 +134,8 @@
|
|||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||||
<LanguageStandard_C>stdc17</LanguageStandard_C>
|
<LanguageStandard_C>stdc17</LanguageStandard_C>
|
||||||
|
<AdditionalOptions>/bigobj</AdditionalOptions>
|
||||||
|
<AdditionalIncludeDirectories>$(ProjectDir);</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
11
config.cpp
11
config.cpp
@ -69,6 +69,15 @@ SDK::APalPlayerCharacter* config::GetPalPlayerCharacter()
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDK::APalPlayerController* config::GetPalPlayerController()
|
||||||
|
{
|
||||||
|
SDK::APalPlayerCharacter* pPlayer = GetPalPlayerCharacter();
|
||||||
|
if (!pPlayer)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
return static_cast<SDK::APalPlayerController*>(pPlayer->GetPalPlayerController());
|
||||||
|
}
|
||||||
|
|
||||||
SDK::APalPlayerState* config::GetPalPlayerState()
|
SDK::APalPlayerState* config::GetPalPlayerState()
|
||||||
{
|
{
|
||||||
SDK::APalPlayerCharacter* pPlayer = GetPalPlayerCharacter();
|
SDK::APalPlayerCharacter* pPlayer = GetPalPlayerCharacter();
|
||||||
@ -194,6 +203,8 @@ void config::Init()
|
|||||||
|
|
||||||
TickFunc = (Tick)(Config.ClientBase + Config.offset_Tick);
|
TickFunc = (Tick)(Config.ClientBase + Config.offset_Tick);
|
||||||
|
|
||||||
|
Config.gWorld = Config.GetUWorld();
|
||||||
|
|
||||||
MH_CreateHook(TickFunc, DetourTick, reinterpret_cast<void**>(&OldTickFunc));
|
MH_CreateHook(TickFunc, DetourTick, reinterpret_cast<void**>(&OldTickFunc));
|
||||||
|
|
||||||
//init database
|
//init database
|
||||||
|
3
config.h
3
config.h
@ -64,7 +64,8 @@ public:
|
|||||||
//static function
|
//static function
|
||||||
static SDK::UWorld* GetUWorld();
|
static SDK::UWorld* GetUWorld();
|
||||||
static SDK::UPalCharacterImportanceManager* GetCharacterImpManager();
|
static SDK::UPalCharacterImportanceManager* GetCharacterImpManager();
|
||||||
static SDK::APalPlayerCharacter* GetPalPlayerCharacter();
|
static SDK::APalPlayerCharacter* GetPalPlayerCharacter();
|
||||||
|
static SDK::APalPlayerController* GetPalPlayerController();
|
||||||
static SDK::APalPlayerState* GetPalPlayerState();
|
static SDK::APalPlayerState* GetPalPlayerState();
|
||||||
static SDK::UPalPlayerInventoryData* GetInventoryComponent();
|
static SDK::UPalPlayerInventoryData* GetInventoryComponent();
|
||||||
static SDK::APalWeaponBase* GetPlayerEquippedWeapon();
|
static SDK::APalWeaponBase* GetPlayerEquippedWeapon();
|
||||||
|
489
feature.cpp
489
feature.cpp
@ -2,6 +2,7 @@
|
|||||||
#include "feature.h"
|
#include "feature.h"
|
||||||
using namespace SDK;
|
using namespace SDK;
|
||||||
|
|
||||||
|
// should only be called from a GUI thread with ImGui context
|
||||||
void ESP()
|
void ESP()
|
||||||
{
|
{
|
||||||
APalPlayerCharacter* pPalCharacter = Config.GetPalPlayerCharacter();
|
APalPlayerCharacter* pPalCharacter = Config.GetPalPlayerCharacter();
|
||||||
@ -28,6 +29,8 @@ 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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// draws debug information for the input actor array
|
||||||
|
// 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)
|
||||||
{
|
{
|
||||||
APalPlayerCharacter* pLocalPlayer = Config.GetPalPlayerCharacter();
|
APalPlayerCharacter* pLocalPlayer = Config.GetPalPlayerCharacter();
|
||||||
@ -42,7 +45,7 @@ void ESP_DEBUG(float mDist, ImVec4 color, UClass* mEntType)
|
|||||||
if (!config::GetAllActorsofType(mEntType, &actors, true))
|
if (!config::GetAllActorsofType(mEntType, &actors, true))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto draw = ImGui::GetWindowDrawList();
|
auto draw = ImGui::GetBackgroundDrawList();
|
||||||
|
|
||||||
__int32 actorsCount = actors.size();
|
__int32 actorsCount = actors.size();
|
||||||
for (AActor* actor : actors)
|
for (AActor* actor : actors)
|
||||||
@ -71,158 +74,57 @@ void ESP_DEBUG(float mDist, ImVec4 color, UClass* mEntType)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawUActorComponent(SDK::TArray<SDK::UActorComponent*> Comps,ImColor color)
|
// should only be called from a GUI thread with ImGui context
|
||||||
|
void DrawUActorComponent(TArray<UActorComponent*> Comps,ImColor color)
|
||||||
{
|
{
|
||||||
ImGui::GetBackgroundDrawList()->AddText(nullptr, 16, ImVec2(ImGui::GetIO().DisplaySize.x / 2, ImGui::GetIO().DisplaySize.y / 2), color, "Drawing...");
|
ImGui::GetBackgroundDrawList()->AddText(nullptr, 16, ImVec2(ImGui::GetIO().DisplaySize.x / 2, ImGui::GetIO().DisplaySize.y / 2), color, "Drawing...");
|
||||||
if (Comps.IsValid())
|
if (!Comps.IsValid())
|
||||||
|
return;
|
||||||
|
for (int i = 0; i < Comps.Count(); i++)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < Comps.Count(); i++)
|
|
||||||
{
|
if (!Comps[i])
|
||||||
|
continue;
|
||||||
if (Comps[i] != NULL)
|
|
||||||
{
|
ImGui::GetBackgroundDrawList()->AddText(nullptr, 16, ImVec2(10, 10 + (i * 30)), color, Comps[i]->GetFullName().c_str());
|
||||||
|
|
||||||
ImGui::GetBackgroundDrawList()->AddText(nullptr, 16, ImVec2(10, 10 + (i * 30)), color, Comps[i]->GetFullName().c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UnlockAllEffigies() {
|
// credit:
|
||||||
SDK::APalPlayerCharacter* pPalCharacter = Config.GetPalPlayerCharacter();
|
void UnlockAllEffigies()
|
||||||
if (!pPalCharacter)
|
{
|
||||||
|
APalPlayerCharacter* pPalCharacter = Config.GetPalPlayerCharacter();
|
||||||
|
APalPlayerState* pPalPlayerState = Config.GetPalPlayerState();
|
||||||
|
if (!pPalCharacter || !pPalPlayerState)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SDK::UWorld* world = Config.GetUWorld();
|
UWorld* world = Config.GetUWorld();
|
||||||
if (!world)
|
if (!world)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SDK::TUObjectArray* objects = world->GObjects;
|
TUObjectArray* objects = world->GObjects;
|
||||||
|
|
||||||
for (int i = 0; i < objects->NumElements; ++i) {
|
for (int i = 0; i < objects->NumElements; ++i)
|
||||||
SDK::UObject* object = objects->GetByIndex(i);
|
{
|
||||||
|
UObject* object = objects->GetByIndex(i);
|
||||||
|
|
||||||
if (!object) {
|
if (!object)
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
if (!object->IsA(SDK::APalLevelObjectRelic::StaticClass())) {
|
if (!object->IsA(APalLevelObjectRelic::StaticClass()))
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
SDK::APalLevelObjectObtainable* relic = (SDK::APalLevelObjectObtainable*)object;
|
APalLevelObjectObtainable* relic = (APalLevelObjectObtainable*)object;
|
||||||
if (!relic) {
|
if (!relic) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
((SDK::APalPlayerState*)pPalCharacter->PlayerState)->RequestObtainLevelObject_ToServer(relic);
|
pPalPlayerState->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
|
// Credit: BennettStaley
|
||||||
void AddToInventoryContainer(__int32 mCount, __int32 mIndex)
|
void IncrementInventoryItemCountByIndex(__int32 mCount, __int32 mIndex)
|
||||||
{
|
{
|
||||||
APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
||||||
if (!p_appc != NULL)
|
if (!p_appc != NULL)
|
||||||
@ -257,4 +159,333 @@ void AddToInventoryContainer(__int32 mCount, __int32 mIndex)
|
|||||||
__int32 StackCount = pSelectedSlot->GetStackCount();
|
__int32 StackCount = pSelectedSlot->GetStackCount();
|
||||||
__int32 mNewCount = StackCount += mCount;
|
__int32 mNewCount = StackCount += mCount;
|
||||||
InventoryData->RequestAddItem(FirstItemId.StaticId, mNewCount, true);
|
InventoryData->RequestAddItem(FirstItemId.StaticId, mNewCount, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void AddItemToInventoryByName(UPalPlayerInventoryData* data, char* itemName, int count)
|
||||||
|
{
|
||||||
|
// obtain lib instance
|
||||||
|
static UKismetStringLibrary* lib = UKismetStringLibrary::GetDefaultObj();
|
||||||
|
|
||||||
|
// Convert FNAME
|
||||||
|
wchar_t ws[255];
|
||||||
|
swprintf(ws, 255, L"%hs", itemName);
|
||||||
|
FName Name = lib->Conv_StringToName(FString(ws));
|
||||||
|
|
||||||
|
// Call
|
||||||
|
data->RequestAddItem(Name, count, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Credit: asashi
|
||||||
|
void SpawnMultiple_ItemsToInventory(config::QuickItemSet Set)
|
||||||
|
{
|
||||||
|
SDK::UPalPlayerInventoryData* InventoryData = Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->GetInventoryData();
|
||||||
|
switch (Set)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
for (int i = 0; i < IM_ARRAYSIZE(database::basic_items_stackable); i++)
|
||||||
|
AddItemToInventoryByName(InventoryData, _strdup(database::basic_items_stackable[i].c_str()), 100);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
for (int i = 0; i < IM_ARRAYSIZE(database::basic_items_single); i++)
|
||||||
|
AddItemToInventoryByName(InventoryData, _strdup(database::basic_items_single[i].c_str()), 1);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
for (int i = 0; i < IM_ARRAYSIZE(database::pal_unlock_skills); i++)
|
||||||
|
AddItemToInventoryByName(InventoryData, _strdup(database::pal_unlock_skills[i].c_str()), 1);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
for (int i = 0; i < IM_ARRAYSIZE(database::spheres); i++)
|
||||||
|
AddItemToInventoryByName(InventoryData, _strdup(database::spheres[i].c_str()), 100);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
for (int i = 0; i < IM_ARRAYSIZE(database::tools); i++)
|
||||||
|
AddItemToInventoryByName(InventoryData, _strdup(database::tools[i].c_str()), 1);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void AnyWhereTP(FVector& vector, bool IsSafe)
|
||||||
|
{
|
||||||
|
APalPlayerState* pPalPlayerState = Config.GetPalPlayerState();
|
||||||
|
APalPlayerController* pPalPlayerController = Config.GetPalPlayerController();
|
||||||
|
if (!pPalPlayerController || !pPalPlayerState)
|
||||||
|
return;
|
||||||
|
|
||||||
|
vector = { vector.X,vector.Y + 100,vector.Z };
|
||||||
|
FGuid guid = pPalPlayerController->GetPlayerUId();
|
||||||
|
pPalPlayerController->Transmitter->Player->RegisterRespawnLocation_ToServer(guid, vector);
|
||||||
|
pPalPlayerState->RequestRespawn();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void ExploitFly(bool IsFly)
|
||||||
|
{
|
||||||
|
SDK::APalPlayerCharacter* pPalPlayerCharacter = Config.GetPalPlayerCharacter();
|
||||||
|
if (!pPalPlayerCharacter)
|
||||||
|
return;
|
||||||
|
|
||||||
|
APalPlayerController* pPalPlayerController = pPalPlayerCharacter->GetPalPlayerController();
|
||||||
|
if (!pPalPlayerController)
|
||||||
|
return;
|
||||||
|
|
||||||
|
IsFly ? pPalPlayerController->StartFlyToServer() : pPalPlayerController->EndFlyToServer();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void SpeedHack(float mSpeed)
|
||||||
|
{
|
||||||
|
UWorld* pWorld = Config.gWorld;
|
||||||
|
if (!pWorld)
|
||||||
|
return;
|
||||||
|
|
||||||
|
AWorldSettings* pWorldSettings = pWorld->K2_GetWorldSettings();
|
||||||
|
if (!pWorldSettings)
|
||||||
|
return;
|
||||||
|
|
||||||
|
pWorldSettings->TimeDilation = mSpeed;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void SetDemiGodMode(bool bIsSet)
|
||||||
|
{
|
||||||
|
auto pCharacter = Config.GetPalPlayerCharacter();
|
||||||
|
if (!pCharacter)
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto pParams = pCharacter->CharacterParameterComponent;
|
||||||
|
if (!pParams)
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto mIVs = pParams->IndividualParameter;
|
||||||
|
if (!mIVs)
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto sParams = mIVs->SaveParameter;
|
||||||
|
|
||||||
|
pParams->bIsEnableMuteki = bIsSet; // Credit: Mokobake
|
||||||
|
if (!bIsSet)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// attempt additional parameters
|
||||||
|
sParams.HP.Value = sParams.MaxHP.Value;
|
||||||
|
sParams.MP.Value = sParams.MaxMP.Value;
|
||||||
|
sParams.FullStomach = sParams.MaxFullStomach;
|
||||||
|
sParams.PhysicalHealth = EPalStatusPhysicalHealthType::Healthful;
|
||||||
|
sParams.SanityValue = 100.f;
|
||||||
|
sParams.HungerType = EPalStatusHungerType::Default;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void RespawnLocalPlayer(bool bIsSafe)
|
||||||
|
{
|
||||||
|
APalPlayerController* pPalPlayerController = Config.GetPalPlayerController();
|
||||||
|
APalPlayerState* pPalPlayerState = Config.GetPalPlayerState();
|
||||||
|
if (!pPalPlayerController || !pPalPlayerState)
|
||||||
|
return;
|
||||||
|
|
||||||
|
bIsSafe ? pPalPlayerController->TeleportToSafePoint_ToServer() : pPalPlayerState->RequestRespawn();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void ReviveLocalPlayer()
|
||||||
|
{
|
||||||
|
APalPlayerCharacter* pPalPlayerCharacter = Config.GetPalPlayerCharacter();
|
||||||
|
if (!pPalPlayerCharacter)
|
||||||
|
return;
|
||||||
|
|
||||||
|
FFixedPoint newHealthPoint = FFixedPoint(99999999);
|
||||||
|
pPalPlayerCharacter->ReviveCharacter_ToServer(newHealthPoint);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void ResetStamina()
|
||||||
|
{
|
||||||
|
APalPlayerCharacter* pPalCharacter = Config.GetPalPlayerCharacter();
|
||||||
|
if (!pPalCharacter)
|
||||||
|
return;
|
||||||
|
|
||||||
|
UPalCharacterParameterComponent* pParams = pPalCharacter->CharacterParameterComponent;
|
||||||
|
if (!pParams)
|
||||||
|
return;
|
||||||
|
|
||||||
|
pParams->ResetSP();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void GiveExperiencePoints(__int32 mXP)
|
||||||
|
{
|
||||||
|
auto pPalPlayerState = Config.GetPalPlayerState();
|
||||||
|
if (!pPalPlayerState)
|
||||||
|
return;
|
||||||
|
|
||||||
|
pPalPlayerState->GrantExpForParty(mXP);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void SetPlayerAttackParam(__int32 mNewAtk)
|
||||||
|
{
|
||||||
|
APalPlayerCharacter* pPalPlayerCharacter = Config.GetPalPlayerCharacter();
|
||||||
|
if (!pPalPlayerCharacter)
|
||||||
|
return;
|
||||||
|
|
||||||
|
UPalCharacterParameterComponent* pParams = pPalPlayerCharacter->CharacterParameterComponent;
|
||||||
|
if (!pParams)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (pParams->AttackUp != mNewAtk)
|
||||||
|
pParams->AttackUp = mNewAtk;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void SetPlayerDefenseParam(__int32 mNewDef)
|
||||||
|
{
|
||||||
|
APalPlayerCharacter* pPalPlayerCharacter = Config.GetPalPlayerCharacter();
|
||||||
|
if (!pPalPlayerCharacter)
|
||||||
|
return;
|
||||||
|
|
||||||
|
UPalCharacterParameterComponent* pParams = pPalPlayerCharacter->CharacterParameterComponent;
|
||||||
|
if (!pParams)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (pParams->DefenseUp != mNewDef)
|
||||||
|
pParams->DefenseUp = mNewDef;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// OLDER METHODS
|
||||||
|
//SDK::FPalDebugOtomoPalInfo palinfo = SDK::FPalDebugOtomoPalInfo();
|
||||||
|
//SDK::TArray<SDK::EPalWazaID> EA = { 0U };
|
||||||
|
//void SpawnPal(char* PalName, bool IsMonster, int rank=1, int lvl = 1, int count=1)
|
||||||
|
//{
|
||||||
|
// SDK::UKismetStringLibrary* lib = SDK::UKismetStringLibrary::GetDefaultObj();
|
||||||
|
//
|
||||||
|
// //Convert FNAME
|
||||||
|
// wchar_t ws[255];
|
||||||
|
// swprintf(ws, 255, L"%hs", PalName);
|
||||||
|
// SDK::FName Name = lib->Conv_StringToName(SDK::FString(ws));
|
||||||
|
// //Call
|
||||||
|
// if (Config.GetPalPlayerCharacter() != NULL)
|
||||||
|
// {
|
||||||
|
// if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL)
|
||||||
|
// {
|
||||||
|
// if (Config.GetPalPlayerCharacter()->GetPalPlayerController())
|
||||||
|
// {
|
||||||
|
// if (Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState())
|
||||||
|
// {
|
||||||
|
// if (IsMonster)
|
||||||
|
// {
|
||||||
|
// Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->RequestSpawnMonsterForPlayer(Name, count, lvl);
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// EA[0] = SDK::EPalWazaID::AirCanon;
|
||||||
|
// palinfo.Level = lvl;
|
||||||
|
// palinfo.Rank = rank;
|
||||||
|
// palinfo.PalName.Key = Name;
|
||||||
|
// palinfo.WazaList = EA;
|
||||||
|
// palinfo.PassiveSkill = NULL;
|
||||||
|
// Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->Debug_CaptureNewMonsterByDebugOtomoInfo_ToServer(palinfo);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
26
feature.h
26
feature.h
@ -5,16 +5,38 @@
|
|||||||
|
|
||||||
void ESP();
|
void ESP();
|
||||||
|
|
||||||
void ESP_DEBUG(float mDist, ImVec4 color, SDK::UClass* mEntType = SDK::AActor::StaticClass());
|
void ESP_DEBUG(float mDist, ImVec4 color = { 1.0f, 0.0f, 0.0f, 01.0f }, SDK::UClass* mEntType = SDK::AActor::StaticClass());
|
||||||
|
|
||||||
void DrawUActorComponent(SDK::TArray<SDK::UActorComponent*> Comps, ImColor color);
|
void DrawUActorComponent(SDK::TArray<SDK::UActorComponent*> Comps, ImColor color);
|
||||||
|
|
||||||
void UnlockAllEffigies();
|
void UnlockAllEffigies();
|
||||||
|
|
||||||
void AddToInventoryContainer(__int32 mCount, __int32 mIndex = 0);
|
void IncrementInventoryItemCountByIndex(__int32 mCount, __int32 mIndex = 0);
|
||||||
|
|
||||||
|
void AddItemToInventoryByName(SDK::UPalPlayerInventoryData* data, char* itemName, int count);
|
||||||
|
|
||||||
|
void SpawnMultiple_ItemsToInventory(config::QuickItemSet Set);
|
||||||
|
|
||||||
|
void AnyWhereTP(SDK::FVector& vector, bool IsSafe);
|
||||||
|
|
||||||
|
void ExploitFly(bool IsFly);
|
||||||
|
|
||||||
|
void SpeedHack(float mSpeed);
|
||||||
|
|
||||||
|
void SetDemiGodMode(bool bIsSet);
|
||||||
|
|
||||||
|
void RespawnLocalPlayer(bool bIsSafe);
|
||||||
|
|
||||||
|
void ReviveLocalPlayer();
|
||||||
|
|
||||||
void ResetStamina();
|
void ResetStamina();
|
||||||
|
|
||||||
|
void GiveExperiencePoints(__int32 mXP);
|
||||||
|
|
||||||
|
void SetPlayerAttackParam(__int32 mNewAtk);
|
||||||
|
|
||||||
|
void SetPlayerDefenseParam(__int32 mNewDef);
|
||||||
|
|
||||||
void SetInfiniteAmmo(bool bInfAmmo);
|
void SetInfiniteAmmo(bool bInfAmmo);
|
||||||
|
|
||||||
void SetCraftingSpeed(float mNewSpeed, bool bRestoreDefault = false);
|
void SetCraftingSpeed(float mNewSpeed, bool bRestoreDefault = false);
|
||||||
|
@ -2,27 +2,30 @@
|
|||||||
#include "helper.h"
|
#include "helper.h"
|
||||||
|
|
||||||
namespace DX11_Base {
|
namespace DX11_Base {
|
||||||
struct Colors {
|
|
||||||
int dark_blue = 1;
|
|
||||||
int dark_green = 2;
|
|
||||||
int dark_teal = 3;
|
|
||||||
int dark_red = 4;
|
|
||||||
int dark_pink = 5;
|
|
||||||
int dark_yellow = 6;
|
|
||||||
int dark_white = 7;
|
|
||||||
int dark_gray = 8;
|
|
||||||
int blue = 9;
|
|
||||||
int green = 10;
|
|
||||||
int teal = 11;
|
|
||||||
int red = 12;
|
|
||||||
int pink = 13;
|
|
||||||
int yellow = 14;
|
|
||||||
int white = 15;
|
|
||||||
int DEFAULT = 15;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Console
|
class Console
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
enum Colors
|
||||||
|
{
|
||||||
|
dark_blue = 1,
|
||||||
|
dark_green,
|
||||||
|
dark_teal,
|
||||||
|
dark_red,
|
||||||
|
dark_pink,
|
||||||
|
dark_yellow,
|
||||||
|
dark_white,
|
||||||
|
dark_gray,
|
||||||
|
blue,
|
||||||
|
green,
|
||||||
|
teal,
|
||||||
|
red,
|
||||||
|
pink,
|
||||||
|
yellow ,
|
||||||
|
white,
|
||||||
|
DEFAULT = white,
|
||||||
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FILE* stream_in{};
|
FILE* stream_in{};
|
||||||
FILE* stream_out{};
|
FILE* stream_out{};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#define DEBUG 1
|
#define DEBUG 0
|
||||||
|
|
||||||
// External Libraries
|
// External Libraries
|
||||||
#include "../libs/ImGui/imgui.h"
|
#include "../libs/ImGui/imgui.h"
|
||||||
@ -7,7 +7,8 @@
|
|||||||
#include "../libs/ImGui/imgui_Impl_dx11.h"
|
#include "../libs/ImGui/imgui_Impl_dx11.h"
|
||||||
#include "../libs/ImGui/imgui_Impl_Win32.h"
|
#include "../libs/ImGui/imgui_Impl_Win32.h"
|
||||||
|
|
||||||
namespace DX11_Base {
|
namespace DX11_Base
|
||||||
|
{
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
inline HMODULE g_hModule{};
|
inline HMODULE g_hModule{};
|
||||||
inline LPCWSTR g_ModuleName{};
|
inline LPCWSTR g_ModuleName{};
|
||||||
|
@ -21,7 +21,7 @@ DWORD WINAPI MainThread_Initialize()
|
|||||||
g_Console = std::make_unique<Console>();
|
g_Console = std::make_unique<Console>();
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->InitializeConsole("Debug Console");
|
g_Console->InitializeConsole("Debug Console");
|
||||||
g_Console->printdbg("ImGui Hook - Initializing . . .\n\n", g_Console->color.DEFAULT);
|
g_Console->printdbg("ImGui Hook - Initializing . . .\n\n", Console::Colors::DEFAULT);
|
||||||
#endif
|
#endif
|
||||||
/// ESTABLISH GAME DATA
|
/// ESTABLISH GAME DATA
|
||||||
g_GameData = std::make_unique<GameData>();
|
g_GameData = std::make_unique<GameData>();
|
||||||
@ -34,7 +34,7 @@ DWORD WINAPI MainThread_Initialize()
|
|||||||
g_Hooking->Hook();
|
g_Hooking->Hook();
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->printdbg("Main::Initialized\n", g_Console->color.green);
|
g_Console->printdbg("Main::Initialized\nUWorld:\t0x%llX\n", Console::Colors::green, Config.gWorld);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::thread WCMUpdate(ClientBGThread); // Initialize Loops Thread
|
std::thread WCMUpdate(ClientBGThread); // Initialize Loops Thread
|
||||||
|
@ -26,7 +26,7 @@ namespace DX11_Base {
|
|||||||
va_start(arg, Color);
|
va_start(arg, Color);
|
||||||
vfprintf(stream_out, Text, arg);
|
vfprintf(stream_out, Text, arg);
|
||||||
va_end(arg);
|
va_end(arg);
|
||||||
SetConsoleTextAttribute(g_Handle, color.DEFAULT);
|
SetConsoleTextAttribute(g_Handle, Colors::DEFAULT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,13 +47,13 @@ namespace DX11_Base {
|
|||||||
switch (FLAG) {
|
switch (FLAG) {
|
||||||
case(TRUE):
|
case(TRUE):
|
||||||
output = " [ON]\n";
|
output = " [ON]\n";
|
||||||
color = g_Console->color.green;
|
color = Colors::green;
|
||||||
append = TEXT + output;
|
append = TEXT + output;
|
||||||
printdbg(append.c_str(), color);
|
printdbg(append.c_str(), color);
|
||||||
break;
|
break;
|
||||||
case(FALSE):
|
case(FALSE):
|
||||||
output = " [OFF]\n";
|
output = " [OFF]\n";
|
||||||
color = g_Console->color.red;
|
color = Colors::red;
|
||||||
append = TEXT + output;
|
append = TEXT + output;
|
||||||
printdbg(append.c_str(), color);
|
printdbg(append.c_str(), color);
|
||||||
break;
|
break;
|
||||||
|
@ -60,12 +60,12 @@ namespace DX11_Base {
|
|||||||
CreateHook(12, (void**)&oID3D11DrawIndexed, MJDrawIndexed);
|
CreateHook(12, (void**)&oID3D11DrawIndexed, MJDrawIndexed);
|
||||||
Sleep(1000);
|
Sleep(1000);
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->printdbg("D3D11Window::Hook Initialized\n", g_Console->color.pink);
|
g_Console->printdbg("D3D11Window::Hook Initialized\n", Console::Colors::pink);
|
||||||
#endif
|
#endif
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->printdbg("[+] D3D11Window::Hook Failed to Initialize\n", g_Console->color.red);
|
g_Console->printdbg("[+] D3D11Window::Hook Failed to Initialize\n", Console::Colors::red);
|
||||||
#endif
|
#endif
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -165,7 +165,7 @@ namespace DX11_Base {
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->printdbg("D3D11Window::Window Created\n", g_Console->color.pink);
|
g_Console->printdbg("D3D11Window::Window Created\n", Console::Colors::pink);
|
||||||
#endif
|
#endif
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -178,7 +178,7 @@ namespace DX11_Base {
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->printdbg("D3D11Window::Window Destroyed\n", g_Console->color.pink);
|
g_Console->printdbg("D3D11Window::Window Destroyed\n", Console::Colors::pink);
|
||||||
#endif
|
#endif
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -209,7 +209,7 @@ namespace DX11_Base {
|
|||||||
m_OldWndProc = (WNDPROC)SetWindowLongPtr(g_GameVariables->g_GameWindow, GWLP_WNDPROC, (__int3264)(LONG_PTR)WndProc);
|
m_OldWndProc = (WNDPROC)SetWindowLongPtr(g_GameVariables->g_GameWindow, GWLP_WNDPROC, (__int3264)(LONG_PTR)WndProc);
|
||||||
b_ImGui_Initialized = TRUE;
|
b_ImGui_Initialized = TRUE;
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->printdbg("D3D11Window::Swapchain Initialized\n", g_Console->color.pink);
|
g_Console->printdbg("D3D11Window::Swapchain Initialized\n", Console::Colors::pink);
|
||||||
#endif
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ namespace DX11_Base {
|
|||||||
GameData::GameData()
|
GameData::GameData()
|
||||||
{
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->printdbg("GameData::Initialized\n", g_Console->color.pink);
|
g_Console->printdbg("GameData::Initialized\n", Console::Colors::pink);
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -12,7 +12,7 @@ namespace DX11_Base {
|
|||||||
GameVariables::GameVariables()
|
GameVariables::GameVariables()
|
||||||
{
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->printdbg("GameVariables::Initialized\n", g_Console->color.pink);
|
g_Console->printdbg("GameVariables::Initialized\n", Console::Colors::pink);
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -41,7 +41,7 @@ namespace DX11_Base {
|
|||||||
GetModuleFileNameExA(g_GameHandle, NULL, tempPath, sizeof(tempPath));
|
GetModuleFileNameExA(g_GameHandle, NULL, tempPath, sizeof(tempPath));
|
||||||
g_GamePath = tempPath;
|
g_GamePath = tempPath;
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->printdbg("GameData::Init - Process Window Info Established\n", g_Console->color.pink);
|
g_Console->printdbg("GameData::Init - Process Window Info Established\n", Console::Colors::pink);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,7 +5,7 @@ namespace DX11_Base {
|
|||||||
{
|
{
|
||||||
MH_Initialize();
|
MH_Initialize();
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->printdbg("Hooking::Initialized\n", g_Console->color.pink);
|
g_Console->printdbg("Hooking::Initialized\n", Console::Colors::pink);
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -23,7 +23,7 @@ namespace DX11_Base {
|
|||||||
Config.Init();
|
Config.Init();
|
||||||
MH_EnableHook(MH_ALL_HOOKS);
|
MH_EnableHook(MH_ALL_HOOKS);
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->printdbg("Hooking::Hook Initialized\n", g_Console->color.pink);
|
g_Console->printdbg("Hooking::Hook Initialized\n", Console::Colors::pink);
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
682
src/Menu.cpp
682
src/Menu.cpp
@ -36,122 +36,14 @@ int InputTextCallback(ImGuiInputTextCallbackData* data) {
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
//SDK::FPalDebugOtomoPalInfo palinfo = SDK::FPalDebugOtomoPalInfo();
|
|
||||||
//SDK::TArray<SDK::EPalWazaID> EA = { 0U };
|
|
||||||
//void SpawnPal(char* PalName, bool IsMonster, int rank=1, int lvl = 1, int count=1)
|
|
||||||
//{
|
|
||||||
// SDK::UKismetStringLibrary* lib = SDK::UKismetStringLibrary::GetDefaultObj();
|
|
||||||
//
|
|
||||||
// //Convert FNAME
|
|
||||||
// wchar_t ws[255];
|
|
||||||
// swprintf(ws, 255, L"%hs", PalName);
|
|
||||||
// SDK::FName Name = lib->Conv_StringToName(SDK::FString(ws));
|
|
||||||
// //Call
|
|
||||||
// if (Config.GetPalPlayerCharacter() != NULL)
|
|
||||||
// {
|
|
||||||
// if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL)
|
|
||||||
// {
|
|
||||||
// if (Config.GetPalPlayerCharacter()->GetPalPlayerController())
|
|
||||||
// {
|
|
||||||
// if (Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState())
|
|
||||||
// {
|
|
||||||
// if (IsMonster)
|
|
||||||
// {
|
|
||||||
// Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->RequestSpawnMonsterForPlayer(Name, count, lvl);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// EA[0] = SDK::EPalWazaID::AirCanon;
|
|
||||||
// palinfo.Level = lvl;
|
|
||||||
// palinfo.Rank = rank;
|
|
||||||
// palinfo.PalName.Key = Name;
|
|
||||||
// palinfo.WazaList = EA;
|
|
||||||
// palinfo.PassiveSkill = NULL;
|
|
||||||
// Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->Debug_CaptureNewMonsterByDebugOtomoInfo_ToServer(palinfo);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
void AddItem(SDK::UPalPlayerInventoryData* data,char* itemName, int count)
|
|
||||||
{
|
|
||||||
SDK::UKismetStringLibrary* lib = SDK::UKismetStringLibrary::GetDefaultObj();
|
|
||||||
|
|
||||||
//Convert FNAME
|
namespace DX11_Base
|
||||||
wchar_t ws[255];
|
|
||||||
swprintf(ws, 255, L"%hs",itemName);
|
|
||||||
SDK::FName Name = lib->Conv_StringToName(SDK::FString(ws));
|
|
||||||
//Call
|
|
||||||
data->RequestAddItem(Name, count, true);
|
|
||||||
}
|
|
||||||
void AnyWhereTP(SDK::FVector& vector,bool IsSafe)
|
|
||||||
{
|
{
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState() != NULL)
|
// helper variables
|
||||||
{
|
char inputBuffer_getFnAddr[100];
|
||||||
|
|
||||||
SDK::FGuid guid = Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPlayerUId();
|
namespace Styles
|
||||||
vector = { vector.X,vector.Y + 100,vector.Z };
|
|
||||||
Config.GetPalPlayerCharacter()->GetPalPlayerController()->Transmitter->Player->RegisterRespawnLocation_ToServer(guid, vector);
|
|
||||||
Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->RequestRespawn();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
void ExploitFly(bool IsFly)
|
|
||||||
{
|
|
||||||
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
|
||||||
if (p_appc != NULL)
|
|
||||||
{
|
{
|
||||||
if (IsFly)
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL)
|
|
||||||
{
|
|
||||||
Config.GetPalPlayerCharacter()->GetPalPlayerController()->StartFlyToServer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL)
|
|
||||||
{
|
|
||||||
Config.GetPalPlayerCharacter()->GetPalPlayerController()->EndFlyToServer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
void Spawn_Multiple(config::QuickItemSet Set)
|
|
||||||
{
|
|
||||||
SDK::UPalPlayerInventoryData * InventoryData = Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->GetInventoryData();
|
|
||||||
switch (Set)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
for (int i = 0; i < IM_ARRAYSIZE(database::basic_items_stackable); i++) {
|
|
||||||
AddItem(InventoryData, _strdup(database::basic_items_stackable[i].c_str()), 100);
|
|
||||||
}
|
|
||||||
case 1:
|
|
||||||
for (int i = 0; i < IM_ARRAYSIZE(database::basic_items_single); i++)
|
|
||||||
{
|
|
||||||
AddItem(InventoryData, _strdup(database::basic_items_single[i].c_str()), 1);
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
for (int i = 0; i < IM_ARRAYSIZE(database::pal_unlock_skills); i++) {
|
|
||||||
AddItem(InventoryData, _strdup(database::pal_unlock_skills[i].c_str()), 1);
|
|
||||||
}
|
|
||||||
case 3:
|
|
||||||
for (int i = 0; i < IM_ARRAYSIZE(database::spheres); i++) {
|
|
||||||
AddItem(InventoryData, _strdup(database::spheres[i].c_str()), 100);
|
|
||||||
}
|
|
||||||
case 4:
|
|
||||||
for (int i = 0; i < IM_ARRAYSIZE(database::tools); i++) {
|
|
||||||
AddItem(InventoryData, _strdup(database::tools[i].c_str()), 1);
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}//Creadit:asashi
|
|
||||||
|
|
||||||
namespace DX11_Base {
|
|
||||||
|
|
||||||
namespace Styles {
|
|
||||||
void InitStyle()
|
void InitStyle()
|
||||||
{
|
{
|
||||||
ImGuiStyle& style = ImGui::GetStyle();
|
ImGuiStyle& style = ImGui::GetStyle();
|
||||||
@ -159,29 +51,26 @@ namespace DX11_Base {
|
|||||||
|
|
||||||
// STYLE PROPERTIES
|
// STYLE PROPERTIES
|
||||||
style.WindowTitleAlign = ImVec2(0.5f, 0.5f);
|
style.WindowTitleAlign = ImVec2(0.5f, 0.5f);
|
||||||
|
|
||||||
// Base ImGui Styling , Aplying a custyom style is left up to you.
|
|
||||||
ImGui::StyleColorsClassic();
|
ImGui::StyleColorsClassic();
|
||||||
|
|
||||||
/// EXAMPLE COLOR
|
if (g_Menu->dbg_RAINBOW_THEME)
|
||||||
//colors[ImGuiCol_FrameBg] = ImVec4(0, 0, 0, 0);
|
{
|
||||||
|
|
||||||
// COLORS
|
|
||||||
if (g_Menu->dbg_RAINBOW_THEME) {
|
|
||||||
// RGB MODE STLYE PROPERTIES
|
// RGB MODE STLYE PROPERTIES
|
||||||
colors[ImGuiCol_Separator] = ImVec4(g_Menu->dbg_RAINBOW);
|
colors[ImGuiCol_Separator] = ImVec4(g_Menu->dbg_RAINBOW);
|
||||||
colors[ImGuiCol_TitleBg] = ImVec4(0, 0, 0, 1.0f);
|
colors[ImGuiCol_TitleBg] = ImVec4(0, 0, 0, 1.0f);
|
||||||
colors[ImGuiCol_TitleBgActive] = ImVec4(0, 0, 0, 1.0f);
|
colors[ImGuiCol_TitleBgActive] = ImVec4(0, 0, 0, 1.0f);
|
||||||
colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0, 0, 0, 1.0f);
|
colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0, 0, 0, 1.0f);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
/// YOUR DEFAULT STYLE PROPERTIES HERE
|
/// YOUR DEFAULT STYLE PROPERTIES HERE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
namespace Tabs {
|
namespace Tabs
|
||||||
|
{
|
||||||
void TABPlayer()
|
void TABPlayer()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -229,16 +118,8 @@ namespace DX11_Base {
|
|||||||
ImGui::SliderFloat("SpeedModifilers", &Config.SpeedModiflers, 1, 10);
|
ImGui::SliderFloat("SpeedModifilers", &Config.SpeedModiflers, 1, 10);
|
||||||
ImGui::SliderInt("AttackModifilers", &Config.DamageUp, 0, 200000);
|
ImGui::SliderInt("AttackModifilers", &Config.DamageUp, 0, 200000);
|
||||||
ImGui::SliderInt("defenseModifilers", &Config.DefuseUp, 0, 200000);
|
ImGui::SliderInt("defenseModifilers", &Config.DefuseUp, 0, 200000);
|
||||||
|
|
||||||
if (ImGui::Button("PrintPlayerAddr", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
|
||||||
{
|
|
||||||
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
|
||||||
if (p_appc != NULL)
|
|
||||||
{
|
|
||||||
g_Console->printdbg("\n\n[+] APalPlayerCharacter: %x [+]\n\n", g_Console->color.green, p_appc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TABExploit()
|
void TABExploit()
|
||||||
{
|
{
|
||||||
//Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->RequestSpawnMonsterForPlayer(name, 5, 1);
|
//Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->RequestSpawnMonsterForPlayer(name, 5, 1);
|
||||||
@ -253,23 +134,14 @@ namespace DX11_Base {
|
|||||||
if (ImGui::Button("Give item", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
if (ImGui::Button("Give item", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
{
|
{
|
||||||
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
||||||
if (p_appc != NULL)
|
SDK::APalPlayerState* p_apps = Config.GetPalPlayerState();
|
||||||
|
if (p_appc && p_apps)
|
||||||
{
|
{
|
||||||
|
SDK::UPalPlayerInventoryData* InventoryData = Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->GetInventoryData();
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL)
|
if (InventoryData && (Config.ItemName != NULL))
|
||||||
{
|
{
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState() != NULL)
|
g_Console->printdbg("\n\n[+] ItemName: %s [+]\n\n", Console::Colors::green, Config.ItemName);
|
||||||
{
|
AddItemToInventoryByName(InventoryData, Config.ItemName, Config.Item);
|
||||||
SDK::UPalPlayerInventoryData* InventoryData = Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->GetInventoryData();
|
|
||||||
if (InventoryData != NULL)
|
|
||||||
{
|
|
||||||
if (Config.ItemName != NULL)
|
|
||||||
{
|
|
||||||
g_Console->printdbg("\n\n[+] ItemName: %s [+]\n\n", g_Console->color.green, Config.ItemName);
|
|
||||||
AddItem(InventoryData, Config.ItemName, Config.Item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -278,22 +150,20 @@ namespace DX11_Base {
|
|||||||
ImGui::InputInt("Multiple of how much:", &Config.AddItemCount);
|
ImGui::InputInt("Multiple of how much:", &Config.AddItemCount);
|
||||||
|
|
||||||
if (ImGui::Button("Give items from slot", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
if (ImGui::Button("Give items from slot", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
{
|
IncrementInventoryItemCountByIndex(Config.AddItemCount, Config.AddItemSlot);
|
||||||
AddToInventoryContainer(Config.AddItemCount, Config.AddItemSlot);
|
|
||||||
}
|
|
||||||
|
|
||||||
// this does not work lol
|
// this does not work lol
|
||||||
// std::stringstream AddItemsString;
|
// std::stringstream AddItemsString;
|
||||||
// AddItemsString << "Give " << Config.AddItemCount << " items from slot" << Config.AddItemSlot;
|
// AddItemsString << "Give " << Config.AddItemCount << " items from slot" << Config.AddItemSlot;
|
||||||
if (ImGui::Button("Unlock All Effigies", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
if (ImGui::Button("Unlock All Effigies", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
{
|
|
||||||
UnlockAllEffigies();
|
UnlockAllEffigies();
|
||||||
}
|
|
||||||
if (ImGui::Button("ToggleFly", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
if (ImGui::Button("ToggleFly", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
{
|
{
|
||||||
Config.IsToggledFly = !Config.IsToggledFly;
|
Config.IsToggledFly = !Config.IsToggledFly;
|
||||||
ExploitFly(Config.IsToggledFly);
|
ExploitFly(Config.IsToggledFly);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*if (ImGui::Button("DeleteSelf", ImVec2(ImGui::GetWindowContentRegionWidth() - 3, 20)))
|
/*if (ImGui::Button("DeleteSelf", ImVec2(ImGui::GetWindowContentRegionWidth() - 3, 20)))
|
||||||
{
|
{
|
||||||
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
||||||
@ -308,42 +178,15 @@ namespace DX11_Base {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
if (ImGui::Button("GodHealth", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
if (ImGui::Button("GodHealth", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
{
|
ReviveLocalPlayer();
|
||||||
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
|
||||||
if (p_appc != NULL)
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL)
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState() != NULL)
|
|
||||||
{
|
|
||||||
SDK::FFixedPoint fixpoint = SDK::FFixedPoint();
|
|
||||||
fixpoint.Value = 99999999;
|
|
||||||
Config.GetPalPlayerCharacter()->ReviveCharacter_ToServer(fixpoint);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//Creadit WoodgamerHD
|
//Creadit WoodgamerHD
|
||||||
if(ImGui::Button("Give exp", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
if (ImGui::Button("Give exp", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
{
|
GiveExperiencePoints(Config.EXP);
|
||||||
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
|
||||||
if (p_appc != NULL)
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL)
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState() != NULL)
|
|
||||||
{
|
|
||||||
if (Config.EXP >= 0)
|
|
||||||
{
|
|
||||||
Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->GrantExpForParty(Config.EXP);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TABConfig()
|
void TABConfig()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -355,12 +198,13 @@ namespace DX11_Base {
|
|||||||
ImGui::Spacing();
|
ImGui::Spacing();
|
||||||
if (ImGui::Button("UNHOOK DLL", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) {
|
if (ImGui::Button("UNHOOK DLL", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) {
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
g_Console->printdbg("\n\n[+] UNHOOK INITIALIZED [+]\n\n", g_Console->color.red);
|
g_Console->printdbg("\n\n[+] UNHOOK INITIALIZED [+]\n\n", Console::Colors::red);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
g_KillSwitch = TRUE;
|
g_KillSwitch = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TABDatabase()
|
void TABDatabase()
|
||||||
{
|
{
|
||||||
//ImGui::Checkbox("IsItems", &Config.matchDbItems);
|
//ImGui::Checkbox("IsItems", &Config.matchDbItems);
|
||||||
@ -381,31 +225,13 @@ namespace DX11_Base {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TABTeleporter()
|
void TABTeleporter()
|
||||||
{
|
{
|
||||||
ImGui::Checkbox("SafeTeleport", &Config.IsSafe);
|
ImGui::Checkbox("SafeTeleport", &Config.IsSafe);
|
||||||
if (ImGui::Button("Home", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
if (ImGui::Button("Home", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
{
|
RespawnLocalPlayer(Config.IsSafe);
|
||||||
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
|
||||||
if (p_appc != NULL)
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL)
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState() != NULL)
|
|
||||||
{
|
|
||||||
if (Config.IsSafe)
|
|
||||||
{
|
|
||||||
Config.GetPalPlayerCharacter()->GetPalPlayerController()->TeleportToSafePoint_ToServer();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->RequestRespawn();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ImGui::InputFloat3("Pos",Config.Pos);
|
ImGui::InputFloat3("Pos",Config.Pos);
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("TP", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
if (ImGui::Button("TP", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
@ -413,46 +239,78 @@ namespace DX11_Base {
|
|||||||
SDK::FVector vector = { Config.Pos[0],Config.Pos[1],Config.Pos[2] };
|
SDK::FVector vector = { Config.Pos[0],Config.Pos[1],Config.Pos[2] };
|
||||||
AnyWhereTP(vector, Config.IsSafe);
|
AnyWhereTP(vector, Config.IsSafe);
|
||||||
}
|
}
|
||||||
for (const auto& pair : database::locationMap) {
|
|
||||||
|
for (const auto& pair : database::locationMap)
|
||||||
|
{
|
||||||
const std::string& locationName = pair.first;
|
const std::string& locationName = pair.first;
|
||||||
if (ImGui::Button(locationName.c_str())) {
|
if (ImGui::Button(locationName.c_str()))
|
||||||
|
{
|
||||||
SDK::FVector location = SDK::FVector(pair.second[0], pair.second[1], pair.second[2]);
|
SDK::FVector location = SDK::FVector(pair.second[0], pair.second[1], pair.second[2]);
|
||||||
AnyWhereTP(location, Config.IsSafe);
|
AnyWhereTP(location, Config.IsSafe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void TABQuick()//Creadit:asashi
|
|
||||||
|
void TABQuick()
|
||||||
{
|
{
|
||||||
if (ImGui::Button("Basic Items stack", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) {
|
if (ImGui::Button("Basic Items stack", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
Spawn_Multiple(config::QuickItemSet::basic_items_stackable);
|
SpawnMultiple_ItemsToInventory(config::QuickItemSet::basic_items_stackable);
|
||||||
|
|
||||||
|
if (ImGui::Button("Basic Items single", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
|
SpawnMultiple_ItemsToInventory(config::QuickItemSet::basic_items_single);
|
||||||
|
|
||||||
|
if (ImGui::Button("Unlock Pal skills", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
|
SpawnMultiple_ItemsToInventory(config::QuickItemSet::pal_unlock_skills);
|
||||||
|
|
||||||
|
if (ImGui::Button("Spheres", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
|
SpawnMultiple_ItemsToInventory(config::QuickItemSet::spheres);
|
||||||
|
|
||||||
|
if (ImGui::Button("Tools", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
|
SpawnMultiple_ItemsToInventory(config::QuickItemSet::tools);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TABDebug()
|
||||||
|
{
|
||||||
|
|
||||||
|
// @TODO: print additional debug information
|
||||||
|
if (ImGui::Button("PrintPlayerAddr", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20)))
|
||||||
|
{
|
||||||
|
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
||||||
|
if (p_appc != NULL)
|
||||||
|
{
|
||||||
|
g_Console->printdbg("\n\n[+] APalPlayerCharacter: %x [+]\n\n", Console::Colors::green, p_appc);
|
||||||
}
|
}
|
||||||
if (ImGui::Button("Basic Items single", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) {
|
}
|
||||||
Spawn_Multiple(config::QuickItemSet::basic_items_single);
|
|
||||||
}
|
ImGui::InputTextWithHint("##INPUT", "INPUT GOBJECT fn NAME", inputBuffer_getFnAddr, 100);
|
||||||
if (ImGui::Button("Unlock Pal skills", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) {
|
ImGui::SameLine();
|
||||||
Spawn_Multiple(config::QuickItemSet::pal_unlock_skills);
|
if (ImGui::Button("GET fn", ImVec2(ImGui::GetContentRegionAvail().x, 20)))
|
||||||
}
|
{
|
||||||
if (ImGui::Button("Spheres", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) {
|
std::string input = inputBuffer_getFnAddr;
|
||||||
Spawn_Multiple(config::QuickItemSet::spheres);
|
SDK::UFunction* object = SDK::UObject::FindObject<SDK::UFunction>(input);
|
||||||
}
|
if (object)
|
||||||
if (ImGui::Button("Tools", ImVec2(ImGui::GetContentRegionAvail().x - 3, 20))) {
|
{
|
||||||
Spawn_Multiple(config::QuickItemSet::tools);
|
static __int64 dwHandle = reinterpret_cast<__int64>(GetModuleHandle(0));
|
||||||
|
void* fnAddr = object->ExecFunction;
|
||||||
|
unsigned __int64 fnOffset = (reinterpret_cast<__int64>(fnAddr) - dwHandle);
|
||||||
|
g_Console->printdbg("[+] Found %s @ 0x%llX\n", Console::Colors::yellow, input.c_str(), fnOffset);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Menu::Draw()
|
void Menu::Draw()
|
||||||
{
|
{
|
||||||
if (Config.IsESP)
|
if (Config.IsESP)
|
||||||
{
|
|
||||||
ESP();
|
ESP();
|
||||||
}
|
|
||||||
if (g_GameVariables->m_ShowMenu)
|
if (g_GameVariables->m_ShowMenu)
|
||||||
MainMenu();
|
MainMenu();
|
||||||
|
|
||||||
if (Config.bisOpenManager && g_GameVariables->m_ShowMenu)
|
if (Config.bisOpenManager && g_GameVariables->m_ShowMenu)
|
||||||
{
|
|
||||||
ManagerMenu();
|
ManagerMenu();
|
||||||
}
|
|
||||||
|
|
||||||
if (g_GameVariables->m_ShowHud)
|
if (g_GameVariables->m_ShowHud)
|
||||||
HUD(&g_GameVariables->m_ShowHud);
|
HUD(&g_GameVariables->m_ShowHud);
|
||||||
@ -463,118 +321,133 @@ namespace DX11_Base {
|
|||||||
if (Config.isDebugESP)
|
if (Config.isDebugESP)
|
||||||
ESP_DEBUG(Config.mDebugESPDistance, ImVec4(0,1,0,1));
|
ESP_DEBUG(Config.mDebugESPDistance, ImVec4(0,1,0,1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Menu::ManagerMenu()
|
void Menu::ManagerMenu()
|
||||||
{
|
{
|
||||||
if (ImGui::Begin("Manager", &g_GameVariables->m_ShowMenu, 96))
|
if (!ImGui::Begin("Manager", &g_GameVariables->m_ShowMenu, 96))
|
||||||
{
|
{
|
||||||
if (Config.GetUWorld() != NULL)
|
ImGui::End();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (Config.gWorld)
|
||||||
|
{
|
||||||
|
ImGui::Checkbox("filterPlayer", &Config.filterPlayer);
|
||||||
|
SDK::TArray<SDK::AActor*> T = Config.GetUWorld()->PersistentLevel->Actors;
|
||||||
|
for (int i = 0; i < T.Count(); i++)
|
||||||
{
|
{
|
||||||
ImGui::Checkbox("filterPlayer", &Config.filterPlayer);
|
if (!T[i])
|
||||||
SDK::TArray<SDK::AActor*> T = Config.GetUWorld()->PersistentLevel->Actors;
|
continue;
|
||||||
for (int i = 0; i < T.Count(); i++)
|
|
||||||
|
if (!T[i]->IsA(SDK::APalCharacter::StaticClass()))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
SDK::APalCharacter* Character = (SDK::APalCharacter*)T[i];
|
||||||
|
SDK::FString name;
|
||||||
|
if (Config.filterPlayer)
|
||||||
{
|
{
|
||||||
if (T[i] != NULL)
|
if (!T[i]->IsA(SDK::APalPlayerCharacter::StaticClass()))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (T[i]->IsA(SDK::APalPlayerCharacter::StaticClass()))
|
||||||
|
{
|
||||||
|
if (!Character)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Character->CharacterParameterComponent->GetNickname(&name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SDK::UKismetStringLibrary* lib = SDK::UKismetStringLibrary::GetDefaultObj();
|
||||||
|
if (!Character)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
std::string s = Character->GetFullName();
|
||||||
|
size_t firstUnderscorePos = s.find('_');
|
||||||
|
|
||||||
|
if (firstUnderscorePos != std::string::npos)
|
||||||
{
|
{
|
||||||
if (T[i]->IsA(SDK::APalCharacter::StaticClass()))
|
std::string result = s.substr(firstUnderscorePos + 1);
|
||||||
|
|
||||||
|
size_t secondUnderscorePos = result.find('_');
|
||||||
|
|
||||||
|
if (secondUnderscorePos != std::string::npos) {
|
||||||
|
result = result.substr(0, secondUnderscorePos);
|
||||||
|
}
|
||||||
|
wchar_t ws[255];
|
||||||
|
swprintf(ws, 255, L"%hs", result);
|
||||||
|
name = SDK::FString(ws);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGui::Text(name.ToString().c_str());
|
||||||
|
ImGui::SameLine();
|
||||||
|
ImGui::PushID(i);
|
||||||
|
if (ImGui::Button("Kill"))
|
||||||
|
{
|
||||||
|
if (T[i]->IsA(SDK::APalCharacter::StaticClass()))
|
||||||
|
Damage(Character, 99999999999);
|
||||||
|
}
|
||||||
|
ImGui::SameLine();
|
||||||
|
if (ImGui::Button("TP"))
|
||||||
|
{
|
||||||
|
if (Config.GetPalPlayerCharacter() != NULL)
|
||||||
|
{
|
||||||
|
if (Character)
|
||||||
{
|
{
|
||||||
SDK::APalCharacter* Character = (SDK::APalCharacter*)T[i];
|
SDK::FVector vector = Character->K2_GetActorLocation();
|
||||||
SDK::FString name;
|
AnyWhereTP(vector, Config.IsSafe);
|
||||||
if (Config.filterPlayer)
|
|
||||||
{
|
|
||||||
if (!T[i]->IsA(SDK::APalPlayerCharacter::StaticClass()))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (T[i]->IsA(SDK::APalPlayerCharacter::StaticClass()))
|
|
||||||
{
|
|
||||||
if (!Character) { continue; }
|
|
||||||
Character->CharacterParameterComponent->GetNickname(&name);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SDK::UKismetStringLibrary* lib = SDK::UKismetStringLibrary::GetDefaultObj();
|
|
||||||
if (!Character) { continue; }
|
|
||||||
std::string s = Character->GetFullName();
|
|
||||||
size_t firstUnderscorePos = s.find('_');
|
|
||||||
|
|
||||||
if (firstUnderscorePos != std::string::npos) {
|
|
||||||
std::string result = s.substr(firstUnderscorePos + 1);
|
|
||||||
|
|
||||||
size_t secondUnderscorePos = result.find('_');
|
|
||||||
|
|
||||||
if (secondUnderscorePos != std::string::npos) {
|
|
||||||
result = result.substr(0, secondUnderscorePos);
|
|
||||||
}
|
|
||||||
wchar_t ws[255];
|
|
||||||
swprintf(ws, 255, L"%hs", result);
|
|
||||||
name = SDK::FString(ws);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ImGui::Text(name.ToString().c_str());
|
|
||||||
ImGui::SameLine();
|
|
||||||
ImGui::PushID(i);
|
|
||||||
if (ImGui::Button("Kill"))
|
|
||||||
{
|
|
||||||
if (T[i]->IsA(SDK::APalCharacter::StaticClass()))
|
|
||||||
{
|
|
||||||
Damage(Character, 99999999999);
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
ImGui::SameLine();
|
|
||||||
if (ImGui::Button("TP"))
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter() != NULL)
|
|
||||||
{
|
|
||||||
if (!Character) { continue; }
|
|
||||||
SDK::FVector vector = Character->K2_GetActorLocation();
|
|
||||||
AnyWhereTP(vector, Config.IsSafe);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*if (Character->IsA(SDK::APalPlayerCharacter::StaticClass()))
|
|
||||||
{
|
|
||||||
ImGui::SameLine();
|
|
||||||
if (ImGui::Button("Boss"))
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter() != NULL)
|
|
||||||
{
|
|
||||||
auto controller = Config.GetPalPlayerCharacter()->GetPalPlayerController();
|
|
||||||
if (controller != NULL)
|
|
||||||
{
|
|
||||||
controller->Transmitter->BossBattle->RequestBossBattleEntry_ToServer(SDK::EPalBossType::ElectricBoss, (SDK::APalPlayerCharacter*)Character);
|
|
||||||
controller->Transmitter->BossBattle->RequestBossBattleStart_ToServer(SDK::EPalBossType::ElectricBoss, (SDK::APalPlayerCharacter*)Character);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
if (Character->IsA(SDK::APalPlayerCharacter::StaticClass()))
|
|
||||||
{
|
|
||||||
ImGui::SameLine();
|
|
||||||
if (ImGui::Button("MaskIt"))
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter() != NULL)
|
|
||||||
{
|
|
||||||
auto controller = Config.GetPalPlayerCharacter()->GetPalPlayerController();
|
|
||||||
if (controller != NULL)
|
|
||||||
{
|
|
||||||
auto player = (SDK::APalPlayerCharacter*)Character;
|
|
||||||
SDK::FString fakename;
|
|
||||||
player->CharacterParameterComponent->GetNickname(&fakename);
|
|
||||||
Config.GetPalPlayerCharacter()->GetPalPlayerController()->Transmitter->NetworkIndividualComponent->UpdateCharacterNickName_ToServer(Config.GetPalPlayerCharacter()->CharacterParameterComponent->IndividualHandle->ID, fakename);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ImGui::PopID();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*if (Character->IsA(SDK::APalPlayerCharacter::StaticClass()))
|
||||||
|
{
|
||||||
|
ImGui::SameLine();
|
||||||
|
if (ImGui::Button("Boss"))
|
||||||
|
{
|
||||||
|
if (Config.GetPalPlayerCharacter() != NULL)
|
||||||
|
{
|
||||||
|
auto controller = Config.GetPalPlayerCharacter()->GetPalPlayerController();
|
||||||
|
if (controller != NULL)
|
||||||
|
{
|
||||||
|
controller->Transmitter->BossBattle->RequestBossBattleEntry_ToServer(SDK::EPalBossType::ElectricBoss, (SDK::APalPlayerCharacter*)Character);
|
||||||
|
controller->Transmitter->BossBattle->RequestBossBattleStart_ToServer(SDK::EPalBossType::ElectricBoss, (SDK::APalPlayerCharacter*)Character);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
if (Character->IsA(SDK::APalPlayerCharacter::StaticClass()))
|
||||||
|
{
|
||||||
|
ImGui::SameLine();
|
||||||
|
if (ImGui::Button("MaskIt"))
|
||||||
|
{
|
||||||
|
if (Config.GetPalPlayerCharacter() != NULL)
|
||||||
|
{
|
||||||
|
auto controller = Config.GetPalPlayerCharacter()->GetPalPlayerController();
|
||||||
|
if (controller != NULL)
|
||||||
|
{
|
||||||
|
auto player = (SDK::APalPlayerCharacter*)Character;
|
||||||
|
SDK::FString fakename;
|
||||||
|
player->CharacterParameterComponent->GetNickname(&fakename);
|
||||||
|
Config.GetPalPlayerCharacter()->GetPalPlayerController()->Transmitter->NetworkIndividualComponent->UpdateCharacterNickName_ToServer(Config.GetPalPlayerCharacter()->CharacterParameterComponent->IndividualHandle->ID, fakename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGui::PopID();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Config.GetUWorld() != NULL)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::End();
|
||||||
}
|
}
|
||||||
void Menu::MainMenu()
|
|
||||||
|
void Menu::MainMenu()
|
||||||
{
|
{
|
||||||
if (!g_GameVariables->m_ShowDemo)
|
if (!g_GameVariables->m_ShowDemo)
|
||||||
Styles::InitStyle();
|
Styles::InitStyle();
|
||||||
@ -602,41 +475,39 @@ namespace DX11_Base {
|
|||||||
|
|
||||||
if (ImGui::BeginTabBar("##tabs", ImGuiTabBarFlags_None))
|
if (ImGui::BeginTabBar("##tabs", ImGuiTabBarFlags_None))
|
||||||
{
|
{
|
||||||
if (ImGui::BeginTabItem("Player"))
|
if (ImGui::BeginTabItem("Player"))
|
||||||
{
|
{
|
||||||
Tabs::TABPlayer();
|
Tabs::TABPlayer();
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
if (ImGui::BeginTabItem("EXPLOIT"))
|
if (ImGui::BeginTabItem("EXPLOIT"))
|
||||||
{
|
{
|
||||||
Tabs::TABExploit();
|
Tabs::TABExploit();
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
if (ImGui::BeginTabItem("Database"))
|
if (ImGui::BeginTabItem("Database"))
|
||||||
{
|
{
|
||||||
Tabs::TABDatabase();
|
Tabs::TABDatabase();
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
if (ImGui::BeginTabItem("CONFIG"))
|
if (ImGui::BeginTabItem("CONFIG"))
|
||||||
{
|
{
|
||||||
Tabs::TABConfig();
|
Tabs::TABConfig();
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
if (Config.IsQuick && ImGui::BeginTabItem("Quick"))
|
if (Config.IsQuick && ImGui::BeginTabItem("Quick"))
|
||||||
{
|
{
|
||||||
Tabs::TABQuick();
|
Tabs::TABQuick();
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
if (Config.bisTeleporter && ImGui::BeginTabItem("Teleporter"))
|
if (Config.bisTeleporter && ImGui::BeginTabItem("Teleporter"))
|
||||||
{
|
{
|
||||||
Tabs::TABTeleporter();
|
Tabs::TABTeleporter();
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
ImGui::EndTabBar();
|
ImGui::EndTabBar();
|
||||||
}
|
}
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Menu::HUD(bool* p_open)
|
void Menu::HUD(bool* p_open)
|
||||||
@ -645,94 +516,31 @@ namespace DX11_Base {
|
|||||||
|
|
||||||
void Menu::Loops()
|
void Menu::Loops()
|
||||||
{
|
{
|
||||||
|
// Respawn
|
||||||
if ((GetAsyncKeyState(VK_F5) & 1))
|
if ((GetAsyncKeyState(VK_F5) & 1))
|
||||||
{
|
RespawnLocalPlayer(Config.IsSafe);
|
||||||
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
|
||||||
if (p_appc != NULL)
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL)
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState() != NULL)
|
|
||||||
{
|
|
||||||
if (Config.IsSafe)
|
|
||||||
{
|
|
||||||
Config.GetPalPlayerCharacter()->GetPalPlayerController()->TeleportToSafePoint_ToServer();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState()->RequestRespawn();
|
|
||||||
|
|
||||||
}
|
// Revive Player
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((GetAsyncKeyState(VK_F6) & 1))
|
if ((GetAsyncKeyState(VK_F6) & 1))
|
||||||
{
|
ReviveLocalPlayer();
|
||||||
SDK::APalPlayerCharacter* p_appc = Config.GetPalPlayerCharacter();
|
|
||||||
if (p_appc != NULL)
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController() != NULL)
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->GetPalPlayerController()->GetPalPlayerState() != NULL)
|
|
||||||
{
|
|
||||||
SDK::FFixedPoint fixpoint = SDK::FFixedPoint();
|
|
||||||
fixpoint.Value = 99999999;
|
|
||||||
Config.GetPalPlayerCharacter()->ReviveCharacter_ToServer(fixpoint);
|
|
||||||
|
|
||||||
}
|
//
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (Config.IsSpeedHack)
|
if (Config.IsSpeedHack)
|
||||||
{
|
SpeedHack(Config.SpeedModiflers);
|
||||||
if (Config.GetUWorld()
|
|
||||||
|| Config.GetUWorld()->PersistentLevel
|
//
|
||||||
|| Config.GetUWorld()->PersistentLevel->WorldSettings)
|
|
||||||
{
|
|
||||||
Config.GetUWorld()->PersistentLevel->WorldSettings->TimeDilation = Config.SpeedModiflers;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (Config.IsAttackModiler)
|
if (Config.IsAttackModiler)
|
||||||
{
|
SetPlayerDefenseParam(Config.DamageUp);
|
||||||
if (Config.GetPalPlayerCharacter() != NULL && Config.GetPalPlayerCharacter()->CharacterParameterComponent->AttackUp != Config.DamageUp)
|
|
||||||
{
|
//
|
||||||
if (Config.GetPalPlayerCharacter()->CharacterParameterComponent != NULL)
|
|
||||||
{
|
|
||||||
Config.GetPalPlayerCharacter()->CharacterParameterComponent->AttackUp = Config.DamageUp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//Creadit Mokobake
|
|
||||||
/**
|
|
||||||
if (Config.GetPalPlayerCharacter() != NULL)
|
|
||||||
{
|
|
||||||
if (Config.GetPalPlayerCharacter()->CharacterParameterComponent != NULL)
|
|
||||||
{
|
|
||||||
Config.GetPalPlayerCharacter()->CharacterParameterComponent->bIsEnableMuteki = Config.IsMuteki;
|
|
||||||
}
|
|
||||||
}**/
|
|
||||||
if (Config.IsDefuseModiler)
|
if (Config.IsDefuseModiler)
|
||||||
{
|
SetPlayerDefenseParam(Config.DefuseUp);
|
||||||
if (Config.GetPalPlayerCharacter() != NULL && Config.GetPalPlayerCharacter()->CharacterParameterComponent->DefenseUp != Config.DefuseUp)
|
|
||||||
{
|
//
|
||||||
if (Config.GetPalPlayerCharacter()->CharacterParameterComponent != NULL)
|
|
||||||
{
|
|
||||||
Config.GetPalPlayerCharacter()->CharacterParameterComponent->DefenseUp = Config.DefuseUp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (Config.IsInfStamina)
|
if (Config.IsInfStamina)
|
||||||
{
|
ResetStamina();
|
||||||
if (Config.GetPalPlayerCharacter() != NULL)
|
|
||||||
{
|
//
|
||||||
if (Config.GetPalPlayerCharacter()->CharacterParameterComponent != NULL)
|
// SetDemiGodMode(Config.IsMuteki);
|
||||||
{
|
|
||||||
Config.GetPalPlayerCharacter()->CharacterParameterComponent->ResetSP();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user