- 137
- 13
Здравствуйте , не понимаю в чом проблема в коде . Когда я читаю Х из памяти SA и потом вывожу ее в проверку и когда по логике оно верное ( правда ) то не чего не происходит по ощущения что она даже не работает , даже обычный код который меня должен выкинуть или убить ( это смещение по координатам Х ) не срабатывает . Помогите уже ломал голову но толку 0 , я плохо понимаю еще в С++ но что-то делать пытаюсь и потихоньку изучаю его но с этим не сталкивался что if не работала при чтении из памяти игры .Пробовал менять значение через CE ( Cheat Engine ) на то значение которое в if и тоже толку 0 .
И второй ( чисто для удобства сделал что-бы уже хоть как то понимать и работать с .h файлами , ну мне так интереснее и удобнее )
Заранее спасибо ) .👍(●'◡'●)
main.cpp:
// Если интересно что я хочу получить то я хочу получить проверку координат ,
//примеру я встаю на координаты 100 по Х и что-то делается или проверят
// равно ли Х 100 а если нет то делать то-то до того момента пока Х не будет равно к примеру 100
// Я просто не знаю может надо для чтения памяти и проверки через if надо что-то другое ?
#include <Windows.h>
#include <process.h>
#include "main.h"
void __cdecl MainThread(void *pArg)
{
while (true)
{
//Это 1993.362915f и 1996.362915f это координаты Х ( Х = это позиция игрока по Х )
if (*(float*)(X)>= 1993.362915f && 1996.362915f>=*(float*)(X)) //(ПРОБЛЕМА ТУТ ) я писал просто X == к примеру 100 и с float и таким способом как щас .
{
// сюда я просто записал код чисто что-бы узнать работает или нет (эффект видеть что-бы в игре самой)
Sleep(1);
*reinterpret_cast<float*>(*reinterpret_cast<DWORD*>(*reinterpret_cast<DWORD*>(0xB6F5F0) + 0x14) + 0x30) += 0.07f; // я и просто без этого длинно кода прибавлять пробовал просто записывая Х и уже там типа += и тд -
*reinterpret_cast<float*>(*reinterpret_cast<DWORD*>(*reinterpret_cast<DWORD*>(0xB6F5F0) + 0x14) + 0x30) += 0.07f; // но я подумал что возможно я иза этого и делаю что-то не так -
*reinterpret_cast<float*>(*reinterpret_cast<DWORD*>(*reinterpret_cast<DWORD*>(0xB6F5F0) + 0x14) + 0x30) += 0.07f; // и решил просто записать это в полной форме без сокращений и тд .
*reinterpret_cast<float*>(*reinterpret_cast<DWORD*>(*reinterpret_cast<DWORD*>(0xB6F5F0) + 0x14) + 0x30) += 0.07f;
*reinterpret_cast<float*>(*reinterpret_cast<DWORD*>(*reinterpret_cast<DWORD*>(0xB6F5F0) + 0x14) + 0x30) += 0.07f;
}
}
}
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ PVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH) _beginthread(MainThread, NULL, nullptr);
return TRUE;
}
И второй ( чисто для удобства сделал что-бы уже хоть как то понимать и работать с .h файлами , ну мне так интереснее и удобнее )
main.h:
#pragma once // это было по стандарту не стал убирать .
DWORD Cped = *(DWORD*)0xB6F5F0;// тут мы читаем указатель на игрока
DWORD X = ((Cped + 0x14) + 0x30); // тут я пощитал смещение адресов и записал в Х (это если что координаты по Х игрока эт так к слову ну и другие тоже самое)
DWORD Y = ((Cped + 0x14) + 0x34); // тут я пощитал смещение адресов и записал в Y
DWORD Z = ((Cped + 0x14) + 0x38); // тут я пощитал смещение адресов и записал в Z
Заранее спасибо ) .👍(●'◡'●)
Последнее редактирование: