Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 18 additions & 8 deletions TempleWare-External/source/features/fov.cpp
Original file line number Diff line number Diff line change
@@ -1,22 +1,32 @@
#include "fov.h"
#include "../globals/globals.h"
#include "../offsets/offsets.h"
#include <thread>

namespace features
{
void FOVManager::AdjustFOV(const Memory& memory) noexcept
{
if (globals::lastFOV != globals::FOV)
{
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}

globals::lastFOV = globals::FOV;

namespace features {
void FOVManager::AdjustFOV(const Memory& memory) noexcept {
std::uintptr_t localPlayer = memory.Read<std::uintptr_t>(globals::client + offsets::dwLocalPlayerPawn);
if (!localPlayer) return;
if (!localPlayer)
return;

std::uintptr_t cameraServices = memory.Read<std::uintptr_t>(localPlayer + offsets::m_pCameraServices);
if (!cameraServices) return;
if (!cameraServices)
return;

std::uint16_t currentFov = memory.Read<std::uint16_t>(cameraServices + offsets::m_iFOV);
bool isScoped = memory.Read<bool>(localPlayer + offsets::m_bIsScoped);
std::uint16_t desiredFov = static_cast<uint16_t>(globals::lastFOV);

std::uint16_t desiredFov = static_cast<uint16_t>(globals::FOV);

if (!isScoped && currentFov != desiredFov) {
if (!isScoped && currentFov != desiredFov)
memory.Write<uint16_t>(cameraServices + offsets::m_iFOV, desiredFov);
}
}
}
91 changes: 41 additions & 50 deletions TempleWare-External/source/features/glow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,59 +4,50 @@
#include <thread>

namespace features {
void Glow::Run(const Memory& memory) noexcept {
if (!globals::Glow)
return;
void Glow::Run(const Memory& memory) noexcept
{
if (!globals::Glow) return;

const uintptr_t localPlayerController = memory.Read<uintptr_t>(globals::client + offsets::dwLocalPlayerController);
if (!localPlayerController)
return;

int localTeam = memory.Read<int>(localPlayerController + offsets::m_iTeamNum);

for (int i = 1; i < 64; i++) {
uintptr_t entityList = memory.Read<uintptr_t>(globals::client + offsets::dwEntityList);
if (!entityList)
continue;

uintptr_t listEntry = memory.Read<uintptr_t>(entityList + (8 * (i & 0x7FFF) >> 9) + 16);
if (!listEntry)
continue;

uintptr_t player = memory.Read<uintptr_t>(listEntry + 120 * (i & 0x1FF));
if (!player)
continue;

int playerTeam = memory.Read<int>(player + offsets::m_iTeamNum);
if (playerTeam == localTeam)
continue;

uint32_t playerPawn = memory.Read<uint32_t>(player + offsets::m_hPlayerPawn);
if (!playerPawn)
continue;

uintptr_t listEntry2 = memory.Read<uintptr_t>(entityList + 0x8 * ((playerPawn & 0x7FFF) >> 9) + 16);
if (!listEntry2)
continue;

uintptr_t playerCsPawn = memory.Read<uintptr_t>(listEntry2 + 120 * (playerPawn & 0x1FF));
if (!playerCsPawn)
continue;

int health = memory.Read<int>(playerCsPawn + offsets::m_iHealth);
if (health < 1)
continue;

ImVec4 color = globals::GlowColor;
DWORD colorArgb = (
((DWORD)(color.w * 255) << 24) |
((DWORD)(color.z * 255) << 16) |
((DWORD)(color.y * 255) << 8) |
(DWORD)(color.x * 255)
if (!localPlayerController) return;

const int localTeam = memory.Read<int>(localPlayerController + offsets::m_iTeamNum);
const uintptr_t entityList = memory.Read<uintptr_t>(globals::client + offsets::dwEntityList);
if (!entityList) return;

for (int i = 1; i < 64; ++i) {
const uintptr_t listEntry = memory.Read<uintptr_t>(entityList + ((8 * (i & 0x7FFF)) >> 9) + 16);
if (!listEntry) continue;

const uintptr_t player = memory.Read<uintptr_t>(listEntry + 120 * (i & 0x1FF));
if (!player) continue;

const int playerTeam = memory.Read<int>(player + offsets::m_iTeamNum);
if (playerTeam == localTeam) continue;

const uint32_t playerPawn = memory.Read<uint32_t>(player + offsets::m_hPlayerPawn);
if (!playerPawn) continue;

const uintptr_t listEntry2 = memory.Read<uintptr_t>(entityList + ((8 * (playerPawn & 0x7FFF)) >> 9) + 16);
if (!listEntry2) continue;

const uintptr_t playerCsPawn = memory.Read<uintptr_t>(listEntry2 + 120 * (playerPawn & 0x1FF));
if (!playerCsPawn) continue;

const int health = memory.Read<int>(playerCsPawn + offsets::m_iHealth);
if (health < 1) continue;

const ImVec4& color = globals::GlowColor;
const DWORD colorArgb = (
(static_cast<DWORD>(color.w * 255) << 24) |
(static_cast<DWORD>(color.z * 255) << 16) |
(static_cast<DWORD>(color.y * 255) << 8) |
static_cast<DWORD>(color.x * 255)
);

memory.Write<DWORD64>(playerCsPawn + offsets::m_Glow + offsets::m_glowColorOverride, colorArgb);
memory.Write<DWORD64>(playerCsPawn + offsets::m_Glow + offsets::m_bGlowing, 1);
const uintptr_t glowOffset = playerCsPawn + offsets::m_Glow;
memory.Write<DWORD64>(glowOffset + offsets::m_glowColorOverride, colorArgb);
memory.Write<DWORD64>(glowOffset + offsets::m_bGlowing, 1);
}
}
}
}
3 changes: 2 additions & 1 deletion TempleWare-External/source/globals/globals.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ namespace globals {
inline bool TriggerBotIgnoreFlash = false;

// Fov
inline int FOV = 90;
inline int FOV = 90;
inline int lastFOV = 90;

// Glow
inline bool Glow = false;
Expand Down
22 changes: 10 additions & 12 deletions TempleWare-External/source/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,8 @@

#include <thread>

int __stdcall wWinMain(
HINSTANCE instance,
HINSTANCE previousInstance,
PWSTR arguments,
int commandShow) {

int __stdcall wWinMain(HINSTANCE instance, HINSTANCE previousInstance, PWSTR arguments, int commandShow)
{
if (!offsets::UpdateOffset())
return EXIT_FAILURE;

Expand All @@ -34,26 +30,28 @@ int __stdcall wWinMain(

bool windowVisible = true;

while (globals::isRunning) {
if (GetAsyncKeyState(VK_END) & 0x8000) {
while (globals::isRunning)
{
if (GetAsyncKeyState(VK_END) & 0x8000)
{
windowVisible = !windowVisible;
ShowWindow(gui::window, windowVisible ? SW_SHOW : SW_HIDE);
std::this_thread::sleep_for(std::chrono::milliseconds(200));
}

if (windowVisible) {
if (windowVisible)
{
gui::BeginRender();
gui::Render();
gui::EndRender();
}
else {
else
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
}

gui::DestroyImGui();
gui::DestroyDevice();
gui::DestroyHWindow();

return EXIT_SUCCESS;
}
}
14 changes: 10 additions & 4 deletions TempleWare-External/source/menu/menu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,13 +169,19 @@ namespace gui
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO();
io.IniFilename = NULL;
ImGui::StyleColorsDark();
io.Fonts->AddFontDefault();
(void)io;

ImFontAtlas* fontAtlas = new ImFontAtlas();
ImFontConfig arialConfig;
arialConfig.FontDataOwnedByAtlas = false;

const char* fontPath = "C:\\Windows\\Fonts\\segoeui.ttf";
float fontSize = 18.0f;
if (!io.Fonts->AddFontFromFileTTF(fontPath, fontSize))
io.Fonts->AddFontDefault();
ImFont* arialFont = fontAtlas->AddFontFromFileTTF(fontPath,fontSize, &arialConfig);
io.Fonts = fontAtlas;

ImGui::StyleColorsDark();

ImGui_ImplWin32_Init(window);
ImGui_ImplDX9_Init(device);
Expand Down
Loading