mirror of
https://github.com/EricPlayZ/EGameTools.git
synced 2025-07-18 09:27:51 +08:00
- Added "Old World Money" slider (Player)
This commit is contained in:
@ -37,6 +37,7 @@
|
||||
<ClCompile Include="source\game\GamePH\GameDI_PH2.cpp" />
|
||||
<ClCompile Include="source\game\GamePH\gen_TPPModel.cpp" />
|
||||
<ClCompile Include="source\game\GamePH\game_hooks.cpp" />
|
||||
<ClCompile Include="source\game\GamePH\InventoryContainerDI.cpp" />
|
||||
<ClCompile Include="source\game\GamePH\InventoryItem.cpp" />
|
||||
<ClCompile Include="source\game\GamePH\LevelDI.cpp" />
|
||||
<ClCompile Include="source\game\GamePH\LocalClientDI.cpp" />
|
||||
@ -139,7 +140,9 @@
|
||||
<ClInclude Include="source\game\GamePH\GameDI_PH.h" />
|
||||
<ClInclude Include="source\game\GamePH\GameDI_PH2.h" />
|
||||
<ClInclude Include="source\game\GamePH\gen_TPPModel.h" />
|
||||
<ClInclude Include="source\game\GamePH\InventoryContainerDI.h" />
|
||||
<ClInclude Include="source\game\GamePH\InventoryItem.h" />
|
||||
<ClInclude Include="source\game\GamePH\InventoryMoney.h" />
|
||||
<ClInclude Include="source\game\GamePH\ItemDescWithContext.h" />
|
||||
<ClInclude Include="source\game\GamePH\LevelDI.h" />
|
||||
<ClInclude Include="source\game\GamePH\LocalClientDI.h" />
|
||||
|
@ -206,6 +206,9 @@
|
||||
<ClCompile Include="source\game\GamePH\InventoryItem.cpp">
|
||||
<Filter>game\GamePH</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="source\game\GamePH\InventoryContainerDI.cpp">
|
||||
<Filter>game\GamePH</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="source\kiero.h" />
|
||||
@ -438,6 +441,12 @@
|
||||
<ClInclude Include="source\game\GamePH\ItemDescWithContext.h">
|
||||
<Filter>game\GamePH</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\game\GamePH\InventoryContainerDI.h">
|
||||
<Filter>game\GamePH</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="source\game\GamePH\InventoryMoney.h">
|
||||
<Filter>game\GamePH</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Filter Include="MinHook">
|
||||
|
@ -54,6 +54,7 @@ Thank you everyone for the support <3)" },
|
||||
R"(- Added compatibility with v1.16.2 hotfix update
|
||||
- Added the ability of using .PAK mods inside "EGameTools\UserModFiles"; just drag and drop a .PAK inside the folder, rename it to whatever you like and enjoy! CREDITS TO @12brendon34 on Discord for finding out how to implement this feature!
|
||||
- Added "Player Immunity" slider (Player)
|
||||
- Added "Old World Money" slider (Player)
|
||||
- Added "Unlimited Immunity" (Player)
|
||||
- Added "Unlimited Stamina" (Player)
|
||||
- Added "One-Hit Kill" (Player)
|
||||
|
24
EGameTools/source/game/GamePH/InventoryContainerDI.cpp
Normal file
24
EGameTools/source/game/GamePH/InventoryContainerDI.cpp
Normal file
@ -0,0 +1,24 @@
|
||||
#include <pch.h>
|
||||
#include "..\offsets.h"
|
||||
#include "InventoryContainerDI.h"
|
||||
#include "InventoryMoney.h"
|
||||
|
||||
namespace GamePH {
|
||||
InventoryMoney* InventoryContainerDI::GetInventoryMoney(UINT indexMaybe) {
|
||||
__try {
|
||||
LPVOID(*pPlayerGetInventoryMoney)(LPVOID pPlayerDI_PH, UINT indexMaybe) = (decltype(pPlayerGetInventoryMoney))Offsets::Get_PlayerGetInventoryMoney();
|
||||
if (!pPlayerGetInventoryMoney)
|
||||
return nullptr;
|
||||
|
||||
InventoryMoney* ptr = reinterpret_cast<InventoryMoney*>(pPlayerGetInventoryMoney(this, indexMaybe));
|
||||
if (!Utils::Memory::IsValidPtrMod(ptr, "gamedll_ph_x64_rwdi.dll"))
|
||||
return nullptr;
|
||||
if (*reinterpret_cast<DWORD64**>(ptr) != Offsets::GetVT_InventoryMoney())
|
||||
return nullptr;
|
||||
|
||||
return ptr;
|
||||
} __except (EXCEPTION_EXECUTE_HANDLER) {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
}
|
10
EGameTools/source/game/GamePH/InventoryContainerDI.h
Normal file
10
EGameTools/source/game/GamePH/InventoryContainerDI.h
Normal file
@ -0,0 +1,10 @@
|
||||
#pragma once
|
||||
#include "..\buffer.h"
|
||||
#include "InventoryMoney.h"
|
||||
|
||||
namespace GamePH {
|
||||
class InventoryContainerDI {
|
||||
public:
|
||||
InventoryMoney* GetInventoryMoney(UINT indexMaybe);
|
||||
};
|
||||
}
|
9
EGameTools/source/game/GamePH/InventoryMoney.h
Normal file
9
EGameTools/source/game/GamePH/InventoryMoney.h
Normal file
@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
#include "..\buffer.h"
|
||||
|
||||
namespace GamePH {
|
||||
class InventoryMoney {
|
||||
public:
|
||||
buffer<0x38, int> oldWorldMoney;
|
||||
};
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
#include <pch.h>
|
||||
#include "..\offsets.h"
|
||||
#include "InventoryContainerDI.h"
|
||||
#include "InventoryItem.h"
|
||||
#include "LevelDI.h"
|
||||
#include "PlayerDI_PH.h"
|
||||
@ -40,4 +41,18 @@ namespace GamePH {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
InventoryContainerDI* PlayerDI_PH::GetInventoryContainer() {
|
||||
__try {
|
||||
InventoryContainerDI* ptr = reinterpret_cast<InventoryContainerDI*>(*reinterpret_cast<DWORD64*>(reinterpret_cast<DWORD64>(this) + 0x470));
|
||||
if (!Utils::Memory::IsValidPtrMod(ptr, "gamedll_ph_x64_rwdi.dll"))
|
||||
return nullptr;
|
||||
if (*reinterpret_cast<DWORD64**>(ptr) != Offsets::GetVT_InventoryContainerDI())
|
||||
return nullptr;
|
||||
|
||||
return ptr;
|
||||
} __except (EXCEPTION_EXECUTE_HANDLER) {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,12 +1,14 @@
|
||||
#pragma once
|
||||
#include "..\buffer.h"
|
||||
#include "InventoryItem.h"
|
||||
#include "InventoryContainerDI.h"
|
||||
|
||||
namespace GamePH {
|
||||
class PlayerDI_PH {
|
||||
public:
|
||||
static PlayerDI_PH* Get();
|
||||
|
||||
InventoryItem* GetCurrentWeapon(UINT a1);
|
||||
InventoryItem* GetCurrentWeapon(UINT indexMaybe);
|
||||
InventoryContainerDI* GetInventoryContainer();
|
||||
};
|
||||
}
|
@ -3,6 +3,7 @@
|
||||
#include "..\game\Engine\CBulletPhysicsCharacter.h"
|
||||
#include "..\game\GamePH\FreeCamera.h"
|
||||
#include "..\game\GamePH\LevelDI.h"
|
||||
#include "..\game\GamePH\PlayerDI_PH.h"
|
||||
#include "..\game\GamePH\PlayerHealthModule.h"
|
||||
#include "..\game\GamePH\PlayerInfectionModule.h"
|
||||
#include "..\game\GamePH\PlayerVariables.h"
|
||||
@ -6435,6 +6436,7 @@ namespace Menu {
|
||||
float playerMaxHealth = 80.0f;
|
||||
float playerImmunity = 80.0f;
|
||||
float playerMaxImmunity = 80.0f;
|
||||
int oldWorldMoney = 0;
|
||||
KeyBindOption godMode{ VK_F6 };
|
||||
KeyBindOption freezePlayer{ VK_F7 };
|
||||
KeyBindOption unlimitedImmunity{ VK_NONE };
|
||||
@ -6603,17 +6605,6 @@ namespace Menu {
|
||||
}
|
||||
}
|
||||
|
||||
Tab Tab::instance{};
|
||||
void Tab::Update() {
|
||||
PlayerPositionUpdate();
|
||||
PlayerVarsUpdate();
|
||||
PlayerHealthUpdate();
|
||||
PlayerImmunityUpdate();
|
||||
UpdateDisabledOptions();
|
||||
UpdatePlayerVars();
|
||||
HandleToggles();
|
||||
}
|
||||
|
||||
static void SaveVariablesToSCR() {
|
||||
if (!std::filesystem::exists(saveSCRPath))
|
||||
return;
|
||||
@ -6895,6 +6886,46 @@ namespace Menu {
|
||||
}
|
||||
}
|
||||
|
||||
static void UpdateMoney(bool updateSlider) {
|
||||
GamePH::LevelDI* iLevel = GamePH::LevelDI::Get();
|
||||
if (!iLevel || !iLevel->IsLoaded())
|
||||
return;
|
||||
GamePH::PlayerDI_PH* player = GamePH::PlayerDI_PH::Get();
|
||||
if (!player)
|
||||
return;
|
||||
GamePH::InventoryContainerDI* invContainer = player->GetInventoryContainer();
|
||||
if (!invContainer)
|
||||
return;
|
||||
GamePH::InventoryMoney* invMoney = invContainer->GetInventoryMoney(0);
|
||||
if (!invMoney)
|
||||
return;
|
||||
|
||||
updateSlider ? (oldWorldMoney = invMoney->oldWorldMoney) : (invMoney->oldWorldMoney = oldWorldMoney);
|
||||
}
|
||||
static bool isMoneyInteractionDisabled() {
|
||||
GamePH::LevelDI* iLevel = GamePH::LevelDI::Get();
|
||||
if (!iLevel || !iLevel->IsLoaded())
|
||||
return true;
|
||||
GamePH::PlayerDI_PH* player = GamePH::PlayerDI_PH::Get();
|
||||
if (!player)
|
||||
return true;
|
||||
GamePH::InventoryContainerDI* invContainer = player->GetInventoryContainer();
|
||||
if (!invContainer || !invContainer->GetInventoryMoney(0))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Tab Tab::instance{};
|
||||
void Tab::Update() {
|
||||
PlayerPositionUpdate();
|
||||
PlayerVarsUpdate();
|
||||
PlayerHealthUpdate();
|
||||
PlayerImmunityUpdate();
|
||||
UpdateDisabledOptions();
|
||||
UpdatePlayerVars();
|
||||
HandleToggles();
|
||||
}
|
||||
void Tab::Render() {
|
||||
ImGui::SeparatorText("Misc");
|
||||
GamePH::PlayerHealthModule* playerHealthModule = GamePH::PlayerHealthModule::Get();
|
||||
@ -6913,6 +6944,13 @@ namespace Menu {
|
||||
playerImmunity = playerInfectionModule->immunity * 100.0f;
|
||||
ImGui::EndDisabled();
|
||||
}
|
||||
ImGui::BeginDisabled(isMoneyInteractionDisabled()); {
|
||||
if (ImGui::DragInt("Old World Money", &oldWorldMoney, 2.0f, 0, 999999999))
|
||||
UpdateMoney(false);
|
||||
else
|
||||
UpdateMoney(true);
|
||||
ImGui::EndDisabled();
|
||||
}
|
||||
ImGui::CheckboxHotkey("God Mode", &godMode, "Makes the player invincible");
|
||||
ImGui::SameLine();
|
||||
ImGui::BeginDisabled(freezePlayer.GetChangesAreDisabled()); {
|
||||
|
@ -8,6 +8,7 @@ namespace Menu {
|
||||
extern float playerMaxHealth;
|
||||
extern float playerImmunity;
|
||||
extern float playerMaxImmunity;
|
||||
extern int oldWorldMoney;
|
||||
extern KeyBindOption godMode;
|
||||
extern KeyBindOption freezePlayer;
|
||||
extern KeyBindOption unlimitedImmunity;
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
namespace Menu {
|
||||
namespace Weapon {
|
||||
float currentWeaponDurability = 150.0f;
|
||||
float currentWeaponDurability = 0.0f;
|
||||
KeyBindOption unlimitedDurability{ VK_NONE };
|
||||
KeyBindOption unlimitedAmmo{ VK_NONE };
|
||||
KeyBindOption noSpread{ VK_NONE };
|
||||
@ -98,7 +98,7 @@ namespace Menu {
|
||||
}
|
||||
void Tab::Render() {
|
||||
ImGui::SeparatorText("Current Weapon");
|
||||
ImGui::BeginDisabled(isWeaponInteractionDisabled()); {
|
||||
ImGui::BeginDisabled(isWeaponInteractionDisabled() || currentWeaponDurability <= 0.0f); {
|
||||
if (ImGui::SliderFloat("Weapon Durability", "Currently only works while your weapon is physically equipped in your hand", ¤tWeaponDurability, 0.1f, 999.0f, "%.2f", ImGuiSliderFlags_AlwaysClamp))
|
||||
UpdateWeaponDurability(false);
|
||||
else
|
||||
|
@ -51,7 +51,9 @@ struct Offsets {
|
||||
AddVTOffset(DayNightCycle, "gamedll_ph_x64_rwdi.dll", "DayNightCycle", LPVOID)
|
||||
AddVTOffset(FreeCamera, "gamedll_ph_x64_rwdi.dll", "FreeCamera", LPVOID)
|
||||
AddVTOffset(GameDI_PH, "gamedll_ph_x64_rwdi.dll", "GameDI_PH", LPVOID)
|
||||
AddVTOffset(InventoryContainerDI, "gamedll_ph_x64_rwdi.dll", "InventoryContainerDI", LPVOID)
|
||||
AddVTOffset(InventoryItem, "gamedll_ph_x64_rwdi.dll", "InventoryItem", LPVOID)
|
||||
AddVTOffset(InventoryMoney, "gamedll_ph_x64_rwdi.dll", "InventoryMoney", LPVOID)
|
||||
AddVTOffset(ItemDescWithContext, "gamedll_ph_x64_rwdi.dll", "ItemDescWithContext", LPVOID)
|
||||
AddVTOffset(LevelDI, "gamedll_ph_x64_rwdi.dll", "LevelDI", LPVOID)
|
||||
AddVTOffset(LocalClientDI, "gamedll_ph_x64_rwdi.dll", "LocalClientDI", LPVOID)
|
||||
@ -96,6 +98,7 @@ struct Offsets {
|
||||
AddOffset(CanUseGrappleHook, "gamedll_ph_x64_rwdi.dll", "48 89 5C 24 ?? 57 48 83 EC ?? 48 8B 01 0F B6 FA 48 8B D9 FF 90 ?? ?? ?? ?? F6 80", Utils::SigScan::PatternType::Address, LPVOID)
|
||||
AddOffset(ReadPlayerJumpParams, "gamedll_ph_x64_rwdi.dll", "40 55 56 57 41 56 41 57 48 8D AC 24 ?? ?? ?? ?? 48 81 EC ?? ?? ?? ?? 4C 8B B5", Utils::SigScan::PatternType::Address, LPVOID)
|
||||
AddOffset(PlayerGetCurrentWeapon, "gamedll_ph_x64_rwdi.dll", "8B C2 48 8D 14 80 48 83 BC D1 ?? ?? ?? ?? ?? 74 ?? 48 8B 84 D1 ?? ?? ?? ?? C3 33 C0 C3 CC CC CC 8B C2", Utils::SigScan::PatternType::Address, LPVOID)
|
||||
AddOffset(PlayerGetInventoryMoney, "gamedll_ph_x64_rwdi.dll", "8B C2 48 8B 44 C1", Utils::SigScan::PatternType::Address, LPVOID)
|
||||
//AddOffset(CompareAndUpdateFloat, "gamedll_ph_x64_rwdi.dll", "0F 2F C1 73 ?? 0F 28 C1 C3", Utils::SigScan::PatternType::Address, LPVOID)
|
||||
//AddOffset(HandlePlayerImmunity, "gamedll_ph_x64_rwdi.dll", "48 8B C4 53 56 57 41 56 41 57", Utils::SigScan::PatternType::Address, LPVOID)
|
||||
//AddOffset(HandlePlayerImmunity2, "gamedll_ph_x64_rwdi.dll", "40 55 56 41 56 41 57 48 8D 6C 24 ?? 48 81 EC ?? ?? ?? ?? 48 8B F1 45 0F B6 F0", Utils::SigScan::PatternType::Address, LPVOID)
|
||||
|
Reference in New Issue
Block a user