- 21
- 1
Как починить это
Перепробовал все свои варианты и ничего
Перепробовал все свои варианты и ничего
С++:
#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;
}