Перемещение к координате

Gmazov

Участник
Автор темы
21
1
Как починить это
1.PNG

Перепробовал все свои варианты и ничего

С++:
#include <windows.h>
#include <string>
#include <cmath>

#define PLAYER_X_ADDR 0x6FC4F8
#define PLAYER_Y_ADDR 0x6FC4FC
#define PLAYER_Z_ADDR 0x6FC500

// Координаты, к которым нужно идти
float target_x = 1000.0f;
float target_y = 1000.0f;
float target_z = 100.0f;

// Скорость движения
float speed = 10.0f;

// Функция, которая двигает персонажа к заданным координатам
void MoveToTarget() {
    // Получаем адрес процесса GTA San Andreas
    DWORD processId = GetProcessId(FindWindowA("GTA: San Andreas", NULL));

    // Открываем процесс для записи
    HANDLE processHandle = OpenProcess(PROCESS_ALL_ACCESS, false, processId);

    // Проверяем, удалось ли открыть процесс
    if (processHandle == NULL) {
        return;
    }

    // Получаем текущие координаты персонажа
    float player_x, player_y, player_z;
    ReadProcessMemory(processHandle, (LPVOID)PLAYER_X_ADDR, &player_x, sizeof(float), NULL);
    ReadProcessMemory(processHandle, (LPVOID)PLAYER_Y_ADDR, &player_y, sizeof(float), NULL);
    ReadProcessMemory(processHandle, (LPVOID)PLAYER_Z_ADDR, &player_z, sizeof(float), NULL);

    // Вычисляем вектор направления
    float dx = target_x - player_x;
    float dy = target_y - player_y;
    float dz = target_z - player_z;

    // Нормализуем вектор направления
    float length = sqrt(dx  dx + dy  dy + dz  dz);
    if (length != 0.0f) {
        dx /= length;
        dy /= length;
        dz /= length;
    }

    // Умножаем вектор направления на скорость
    dx = speed;
    dy = speed;
    dz = speed;

    // Пишем новые координаты в память процесса
    WriteProcessMemory(processHandle, (LPVOID)PLAYER_X_ADDR, &dx, sizeof(float), NULL);
    WriteProcessMemory(processHandle, (LPVOID)PLAYER_Y_ADDR, &dy, sizeof(float), NULL);
    WriteProcessMemory(processHandle, (LPVOID)PLAYER_Z_ADDR, &dz, sizeof(float), NULL);

    // Закрываем дескриптор процесса
    CloseHandle(processHandle);
}

// Главная функция плагина
int main() {
    // Цикл, который постоянно двигает персонажа к цели
    while (true) {
        MoveToTarget();
        Sleep(10);
    }

    return 0;
}