mirror of
https://github.com/EricPlayZ/EGameTools.git
synced 2025-07-18 17:37:53 +08:00
Added "FreeCam Speed" slider
This commit is contained in:
@ -1,9 +0,0 @@
|
||||
[Camera]
|
||||
DisablePhotoModeLimits=1
|
||||
DisableSafezoneFOVReduction=1
|
||||
[Menu:Keybinds]
|
||||
ToggleKey=VK_F5
|
||||
[Player:PlayerVariables]
|
||||
LastLoadSCRFilePath=C:\Users\EricPlayZ\Desktop\player_variables.scr
|
||||
LastSaveSCRPath=C:\Users\EricPlayZ\Desktop
|
||||
UseBACKUPPlayerVars=1
|
@ -1,9 +0,0 @@
|
||||
[Camera]
|
||||
DisablePhotoModeLimits=1
|
||||
DisableSafezoneFOVReduction=1
|
||||
[Menu:Keybinds]
|
||||
ToggleKey=VK_F5
|
||||
[Player:PlayerVariables]
|
||||
LastLoadSCRFilePath=C:\Users\EricPlayZ\Desktop\player_variables.scr
|
||||
LastSaveSCRPath=C:\Users\EricPlayZ\Desktop
|
||||
UseBACKUPPlayerVars=0
|
@ -135,6 +135,7 @@ namespace Core {
|
||||
GamePH::LoopHookCalculateFreeCamCollision();
|
||||
GamePH::LoopHookLifeSetHealth();
|
||||
GamePH::LoopHookTogglePhotoMode();
|
||||
//GamePH::LoopHookMoveCamera();
|
||||
|
||||
const HANDLE proc = GetCurrentProcess();
|
||||
WaitForSingleObject(proc, INFINITE);
|
||||
|
@ -141,6 +141,29 @@ namespace GamePH {
|
||||
}
|
||||
}
|
||||
#pragma endregion
|
||||
|
||||
#pragma region MoveCamera
|
||||
static void(*pMoveCamera)(LPVOID pCBaseCamera, DWORD* pos, float* a3, float* a4) = nullptr;
|
||||
static void(*oMoveCamera)(LPVOID pCBaseCamera, DWORD* pos, float* a3, float* a4) = nullptr;
|
||||
void detourMoveCamera(LPVOID pCBaseCamera, DWORD* pos, float* a3, float* a4) {
|
||||
if (Menu::Camera::freeCamEnabled.value)
|
||||
return;
|
||||
|
||||
oMoveCamera(pCBaseCamera, pos, a3, a4);
|
||||
}
|
||||
void LoopHookMoveCamera() {
|
||||
while (true) {
|
||||
Sleep(250);
|
||||
|
||||
if (!pMoveCamera)
|
||||
pMoveCamera = (decltype(pMoveCamera))Offsets::Get_MoveCamera();
|
||||
else if (!oMoveCamera && MH_CreateHook(pMoveCamera, &detourMoveCamera, reinterpret_cast<LPVOID*>(&oMoveCamera)) == MH_OK) {
|
||||
MH_EnableHook(pMoveCamera);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma endregion
|
||||
#pragma endregion
|
||||
|
||||
#pragma region PlayerVariables
|
||||
|
@ -43,6 +43,7 @@ namespace EWeather {
|
||||
|
||||
// Forward decl
|
||||
namespace Engine {
|
||||
class CBaseCamera;
|
||||
class CoPhysicsProperty;
|
||||
}
|
||||
|
||||
@ -52,6 +53,7 @@ namespace GamePH {
|
||||
extern void LoopHookCalculateFreeCamCollision();
|
||||
extern void LoopHookLifeSetHealth();
|
||||
extern void LoopHookTogglePhotoMode();
|
||||
extern void LoopHookMoveCamera();
|
||||
|
||||
class PlayerVariables {
|
||||
public:
|
||||
@ -95,6 +97,13 @@ namespace GamePH {
|
||||
|
||||
class FreeCamera {
|
||||
public:
|
||||
union {
|
||||
DEFINE_MEMBER_N(Engine::CBaseCamera*, pCBaseCamera, 0x38);
|
||||
DEFINE_MEMBER_N(bool, enableSpeedMultiplier1, 0x42);
|
||||
DEFINE_MEMBER_N(bool, enableSpeedMultiplier2, 0x43);
|
||||
DEFINE_MEMBER_N(float, speedMultiplier, 0x1CC);
|
||||
};
|
||||
|
||||
Vector3* GetPosition(Vector3* posIN);
|
||||
void AllowCameraMovement(int mode = 2);
|
||||
|
||||
@ -203,6 +212,17 @@ namespace Engine {
|
||||
static CInput* Get();
|
||||
};
|
||||
|
||||
class CBaseCamera {
|
||||
public:
|
||||
union {
|
||||
DEFINE_MEMBER_N(float, yaw, 0x48);
|
||||
DEFINE_MEMBER_N(float, x, 0x4C);
|
||||
DEFINE_MEMBER_N(float, pitch, 0x58);
|
||||
DEFINE_MEMBER_N(float, y, 0x5C);
|
||||
DEFINE_MEMBER_N(float, z, 0x6C);
|
||||
};
|
||||
};
|
||||
|
||||
class CBulletPhysicsCharacter {
|
||||
public:
|
||||
union {
|
||||
|
@ -7,6 +7,7 @@ namespace Menu {
|
||||
namespace Camera {
|
||||
extern const int BaseFOV = 57;
|
||||
int FOV = 57;
|
||||
float FreeCamSpeed = 1.0f;
|
||||
|
||||
bool photoModeEnabled = false;
|
||||
SMART_BOOL freeCamEnabled{};
|
||||
@ -43,12 +44,23 @@ namespace Menu {
|
||||
return;
|
||||
|
||||
if (freeCamEnabled.value) {
|
||||
if (viewCam == pFreeCam)
|
||||
if (viewCam == pFreeCam) {
|
||||
if (!pFreeCam->enableSpeedMultiplier1)
|
||||
pFreeCam->enableSpeedMultiplier1 = true;
|
||||
if (pFreeCam->speedMultiplier != FreeCamSpeed)
|
||||
pFreeCam->speedMultiplier = FreeCamSpeed;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
pGameDI_PH->TogglePhotoMode();
|
||||
pFreeCam->AllowCameraMovement(2);
|
||||
} else {
|
||||
if (freeCamEnabled.previousValue) {
|
||||
pFreeCam->enableSpeedMultiplier1 = false;
|
||||
pFreeCam->speedMultiplier = 0.1f;
|
||||
}
|
||||
|
||||
GamePH::CameraFPPDI* pPlayerCam = GamePH::CameraFPPDI::Get();
|
||||
if (!pPlayerCam || viewCam == pPlayerCam)
|
||||
return;
|
||||
@ -134,11 +146,16 @@ namespace Menu {
|
||||
ImGui::Checkbox("FreeCam", &freeCamEnabled.value);
|
||||
ImGui::EndDisabled();
|
||||
}
|
||||
ImGui::SameLine();
|
||||
ImGui::EndDisabled();
|
||||
}
|
||||
ImGui::SameLine();
|
||||
ImGui::SliderFloat("FreeCam Speed", &FreeCamSpeed, 0.0f, 100.0f);
|
||||
ImGui::BeginDisabled(GetCamDisabledFlag()); {
|
||||
ImGui::BeginDisabled(freeCamEnabled.value); {
|
||||
ImGui::Checkbox("Disable PhotoMode Limits", &disablePhotoModeLimitsEnabled.value);
|
||||
ImGui::EndDisabled();
|
||||
}
|
||||
ImGui::SameLine();
|
||||
ImGui::BeginDisabled(photoModeEnabled); {
|
||||
ImGui::Checkbox("Teleport Player to Camera", &teleportPlayerToCameraEnabled);
|
||||
ImGui::EndDisabled();
|
||||
|
@ -49,6 +49,7 @@ struct Offsets {
|
||||
AddOffset(GetTimeWeatherSystemOffset, "engine_x64_rwdi.dll", "E8 [?? ?? ?? ?? 33 D2 48 8B C8 E8 ?? ?? ?? ?? 49 8D 4F 38", PatternType::RelativePointer, LPVOID)
|
||||
AddOffset(SetForcedWeatherOffset, "engine_x64_rwdi.dll", "89 51 68 C3 CC CC CC CC CC CC CC CC CC CC CC CC", PatternType::Address, LPVOID)
|
||||
AddOffset(GetCurrentWeatherOffset, "engine_x64_rwdi.dll", "48 8B 41 78 48 85 C0 75 0F", PatternType::Address, LPVOID)
|
||||
AddOffset(MoveCamera, "engine_x64_rwdi.dll", "E8 [?? ?? ?? ?? 41 8D 45 D6", PatternType::Address, LPVOID)
|
||||
};
|
||||
|
||||
#undef AddOffset
|
||||
|
Reference in New Issue
Block a user