Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Как получить ViewMatrix External

  • Автор темы Автор темы IDKThis
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
19 Авг 2020
Сообщения
250
Реакции
138
Короче такая проблема делаю esp и нужно получить ViewMatrix но не как обычно что типа mem.readMem<VMatrix>(Client + dwViewMatrix) а нужно получить как-то каждый отдельный элемент этой матрицы иба я делаю через драйвер и возможно оно и может перевести это но я хз будет проще как-то через for пройтись по всей матрице. Типа как-то так:
for(int i=0;i<16;i++){
matrix = Driver.ReadVirtualMemory<float>(Client + dwViewMatrix + i);
}
Но такая штука не работает. Какое там смещение вообще идет чтобы пройтись по матрице?
 
А в чем собственно проблема создать структуру матрицы и кастить в неё при чтении в драйвере ? И уже благодаря этой структуре получать нужную тебе часть
 
А в чем собственно проблема создать структуру матрицы и кастить в неё при чтении в драйвере ? И уже благодаря этой структуре получать нужную тебе часть
А типа для чего создавать целую структуру ради одного офсета? Я спросил про сдвиг этой структуры чтобы как раз не ухудшать код ненужными структурами.
 
А типа для чего создавать целую структуру ради одного офсета? Я спросил про сдвиг этой структуры чтобы как раз не ухудшать код ненужными структурами.
Во первых матрица 4x4 это как раз таки "нужная" структура. Во вторых вызов чтения 16 раз будет всегда медленнее чем вызов чтения 1 раз. Я бы всё же советовал сделать структуру вью матрицы. Если тебе хочется обращаться к ней напрямик через [] - можешь оверлоаднуть этот оператор, по типу

C++:
Expand Collapse Copy
struct ViewMatrix
{
    float* operator[](int index) {
        return matrix[index];
    }
    float matrix[4][4];
};

В твоём случае проблема в подсчёте Client + dwViewMatrix + i, ведь ты читаешь не один байт а float, float - 32 бита (4 байта) => тебе надо делать Client + dwViewMatrix + i*4.
 
Во первых матрица 4x4 это как раз таки "нужная" структура. Во вторых вызов чтения 16 раз будет всегда медленнее чем вызов чтения 1 раз. Я бы всё же советовал сделать структуру вью матрицы. Если тебе хочется обращаться к ней напрямик через [] - можешь оверлоаднуть этот оператор, по типу

C++:
Expand Collapse Copy
struct ViewMatrix
{
    float* operator[](int index) {
        return matrix[index];
    }
    float matrix[4][4];
};

В твоём случае проблема в подсчёте Client + dwViewMatrix + i, ведь ты читаешь не один байт а float, float - 32 бита (4 байта) => тебе надо делать Client + dwViewMatrix + i*4.
Ок спс я только сейчас понял что оно DWORD в float криво переводило вот и выходил бред.
 
Назад
Сверху Снизу