Как найти адрес Projection?

Начинающий
Статус
Оффлайн
Регистрация
21 Дек 2018
Сообщения
383
Реакции[?]
11
Поинты[?]
2K
Приветствую! Мне нужно найти адрес projection для использования в WorldToScreen. Использую в экстернал чите, так что метод через rayworldintersectionparams не подойдёт (читая треды на том же UC (не реклама) я понял, что это достаточно труднореализуемая задача, которая требует переделки кода движка/самой игры).

Спасибо заранее.
 
Начинающий
Статус
Оффлайн
Регистрация
21 Дек 2018
Сообщения
383
Реакции[?]
11
Поинты[?]
2K
-SAURUX- Я проверил все Sub-ы, кроме глобала никаких адресов там нету.
Вот скриншоты:
1653927843286.png
1653927857823.png
1653927868956.png

и так далее. Во все sub-ы зашёл.
Я как понял это нужно для оффсета, но тогда возникает другой вопрос. Как реализовать projecttoscreen через офсет в экстернале?
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
6 Ноя 2020
Сообщения
32
Реакции[?]
8
Поинты[?]
0
-SAURUX- Я проверил все Sub-ы, кроме глобала никаких адресов там нету.
Вот скриншоты:
Посмотреть вложение 205582
Посмотреть вложение 205583
Посмотреть вложение 205584

и так далее. Во все sub-ы зашёл.
Я как понял это нужно для оффсета, но тогда возникает другой вопрос. Как реализовать projecttoscreen через офсет в экстернале?
896i64 - это индекс виртуальной функции
в экстернале хз как делается чекни сурсы github
 
Продам прострел стен Warface 10к руб!
Забаненный
Статус
Оффлайн
Регистрация
7 Авг 2018
Сообщения
308
Реакции[?]
106
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Vec3* mathVec3Project(Vec3* pvMin, const Vec3* pvObj, const int32 pViewport[4], const Matrix44* pProjection, const Matrix44* pView, const Matrix44* pWorld)
{
    return CallFunction<Vec3 * (__fastcall*)(Vec3*, const Vec3*, const int32[], const Matrix44*, const Matrix44*, const Matrix44*)>(0x140E286E0)(pvMin, pvObj, pViewport, pProjection, pView, pWorld);
}

void ProjectToScreen(Vec3 vIn, Vec3& vOut)
{
    PDWORD pRenderThread = *(PDWORD*)((DWORD64)this + 0x8D60);

    DWORD v5 = pRenderThread[51];
    if (v5 != pRenderThread[53])
    {
        v5 = GetCurrentThreadId();
    }
    int nThreadID = (v5 != pRenderThread[51]) ? pRenderThread[10] : pRenderThread[11];

    SViewport vp = GetMainRTViewport();

    int32 v[4];
    v[0] = vp.nX;
    v[1] = vp.nY;
    v[2] = vp.nWidth;
    v[3] = vp.nHeight;

    Matrix44 mIdent;
    mIdent.SetIdentity();
    Matrix44* pProjection = **(Matrix44***)((DWORD64)this + 0xEA0 + 0x318 * nThreadID);
    Matrix44* pView = **(Matrix44***)((DWORD64)this + 0xE98 + 0x318 * nThreadID);

    mathVec3Project(&vOut, &vIn, v, pProjection, pView, &mIdent);

    vOut.x /= (this->GetWidth());
    vOut.y /= (this->GetHeight());
}
Адрес 0x140E286E0 верный, остальное давно не смотрел!


this->GetWidth(), this->GetHeight(), GetMainRTViewport() не виртуальные!
 
Продам прострел стен Warface 10к руб!
Забаненный
Статус
Оффлайн
Регистрация
7 Авг 2018
Сообщения
308
Реакции[?]
106
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
struct SViewport
{
    int nX, nY, nWidth, nHeight;
    float fMinZ, fMaxZ;
    SViewport() : nX(0), nY(0), nWidth(0), nHeight(0) {}

    SViewport(int nNewX, int nNewY, int nNewWidth, int nNewHeight)
    {
        nX = nNewX;
        nY = nNewY;
        nWidth = nNewWidth;
        nHeight = nNewHeight;
    }
    _inline friend bool operator != (const SViewport& m1, const SViewport& m2)
    {
        if (m1.nX != m2.nX || m1.nY != m2.nY || m1.nWidth != m2.nWidth || m1.nHeight != m2.nHeight || m1.fMinZ != m2.fMinZ || m1.fMaxZ != m2.fMaxZ)
            return true;
        return false;
    }
};
 
Сверху Снизу