drxxmz How do I cheat?
Reputation: 0
Joined: 21 Jan 2025 Posts: 2
|
Posted: Mon Jan 27, 2025 9:29 am Post subject: Issues with new UrbanTerror43 ESP (help) |
|
|
Don't know what happenned to the other script i uploaded, it reverted back to a old game that i wasnt even fucking trying to upload when i went to copy it, the problem im having with my new script is that the esp worldtoscreen is totally off or in the right order:
Code: |
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <iomanip>
#define PI 3.1415927f
struct Vector2 { float x, y; };
struct Vector3 { float x, y, z; };
struct Vector4 { float x, y, z, w; };
float viewMatrix[4][3];
DWORD GetProcessId(const char* processName) {
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 processEntry;
processEntry.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(snapshot, &processEntry)) {
do {
if (!_stricmp(processEntry.szExeFile, processName)) {
std::cout << "Process found: " << processEntry.szExeFile
<< " (PID: " << processEntry.th32ProcessID << ")" << std::endl;
CloseHandle(snapshot);
return processEntry.th32ProcessID;
}
} while (Process32Next(snapshot, &processEntry));
}
std::cerr << "Process not found: " << processName << std::endl;
CloseHandle(snapshot);
return 0;
}
Vector2 WorldToScreen(const Vector3& playerPos, float viewMatrix[4][3], int screenWidth, int screenHeight) {
// Calculate transformed coordinates using the view matrix (4x3)
float transformedX = playerPos.x * viewMatrix[0][0] +
playerPos.y * viewMatrix[1][0] +
playerPos.z * viewMatrix[2][0] +
viewMatrix[3][0]; // Translation from last column
float transformedY = playerPos.x * viewMatrix[0][1] +
playerPos.y * viewMatrix[1][1] +
playerPos.z * viewMatrix[2][1] +
viewMatrix[3][1];
float transformedZ = playerPos.x * viewMatrix[0][2] +
playerPos.y * viewMatrix[1][2] +
playerPos.z * viewMatrix[2][2] +
viewMatrix[3][2];
// Debugging output for transformedZ
std::cout << "Transformed Z: " << transformedZ << std::endl;
// Perspective division check
if (transformedZ < 0.1f) return { -1, -1 }; // Avoid division by zero or negative depth
// Normalize x and y by z
transformedX /= transformedZ;
transformedY /= transformedZ;
// Map to screen coordinates
float screenX = (transformedX * 0.5f + 0.5f) * screenWidth; // Convert from normalized device coordinates to screen space
float screenY = (0.5f - transformedY * 0.5f) * screenHeight; // Invert Y for screen coordinates
return { screenX, screenY };
}
void DrawESP(HDC hdc, Vector3 screenPos) {
HPEN pen = CreatePen(PS_SOLID, 2, RGB(255, 0, 0));
HGDIOBJ oldPen = SelectObject(hdc, pen);
Rectangle(hdc,
screenPos.x - 25,
screenPos.y - 25,
screenPos.x + 25,
screenPos.y + 25
);
SelectObject(hdc, oldPen);
DeleteObject(pen);
}
int main() {
const char* processName = "Quake3-UrT.exe";
DWORD processId = GetProcessId(processName);
if (!processId) {
std::cerr << "Failed to get process ID" << std::endl;
return 1;
}
HANDLE processHandle = OpenProcess(PROCESS_VM_READ, FALSE, processId);
if (!processHandle) {
std::cerr << "Failed to open process. Error: " << GetLastError() << std::endl;
return 1;
}
HWND gameWindow = FindWindowA(NULL, "Quake3-UrT");
if (!gameWindow) {
std::cerr << "Game window not found" << std::endl;
CloseHandle(processHandle);
return 1;
}
HDC gameDC = GetDC(gameWindow);
if (!gameDC) {
std::cerr << "Failed to get DC. Error: " << GetLastError() << std::endl;
CloseHandle(processHandle);
return 1;
}
DWORD viewMatrixAddress = 0xC7CA50;
while (true) {
ReadProcessMemory(processHandle, (LPVOID)0x0102521C, &viewMatrix, sizeof(viewMatrix), NULL);
Vector2 ScreenPos = WorldToScreen({ 100,100,100 }, viewMatrix, 1024, 768);
std::cout << ScreenPos.x << " : " << ScreenPos.y << "\n";
DrawESP(gameDC, {ScreenPos.x, ScreenPos.y, 0});
Sleep(1);
}
ReleaseDC(gameWindow, gameDC);
CloseHandle(processHandle);
return 0;
}
|
reps to anybody who can fix or literally just give me a reply... most of yall antisocial as a motherfucker or cannot read
youll have to fill in the view amtrix address manually but its easy unless ur a skid
|
|