Исходник [ISystem] GetWindowSize, GetUserName, GetViewCamera

I love C++
Пользователь
Статус
Оффлайн
Регистрация
26 Мар 2021
Сообщения
218
Реакции[?]
46
Поинты[?]
1K
Всех приветствую. Держите некоторые методы из класса ISystem которые возможно кому-то пригодятся.

C++:
constexpr uintptr_t _SystemGlobalEnvironment = 0x14228E718;

class CCamera {
public:
    char unk_0000[8]; //0x0000
    Matrix34 m_Matrix; //0x0008
    char unk_0038[4]; //0x0038
    uint32_t m_ScreenWidth; //0x003C
    uint32_t m_ScreenHeight; //0x0040
};

class ISystem {
public:
    const char* GetUserName(void) { return IM_CALL<const char* (__thiscall*)(void*)>(this, 0x80)(this); } // [C:\Users\User] Функция выведет User
public:
    void GetWindowSize(unsigned int* width, unsigned int* height)
    {
        reinterpret_cast<void(__thiscall*)(void*, unsigned int*, unsigned int*)>(0x140CFDDC0)(this, width, height);
    }
    CCamera* GetCamera(void)
    {
        // [pSystem + 0x658] -> CCamera
        return reinterpret_cast<CCamera*(__thiscall*)(void*)>(0x1411EE430)(this);
    }
};

class SystemGlobalEnvironment {
public:
    ISystem* GetSystem() { return *(ISystem**)((uintptr_t)this + 0xF0); }
    static SystemGlobalEnvironment* Instance(void) { return *reinterpret_cast<SystemGlobalEnvironment**>(_SystemGlobalEnvironment); }
};
 
Забаненный
Статус
Оффлайн
Регистрация
16 Фев 2021
Сообщения
45
Реакции[?]
40
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всех приветствую. Держите некоторые методы из класса ISystem которые возможно кому-то пригодятся.

C++:
constexpr uintptr_t _SystemGlobalEnvironment = 0x14228E718;

class CCamera {
public:
    char unk_0000[8]; //0x0000
    Matrix34 m_Matrix; //0x0008
    char unk_0038[4]; //0x0038
    uint32_t m_ScreenWidth; //0x003C
    uint32_t m_ScreenHeight; //0x0040
};

class ISystem {
public:
    const char* GetUserName(void) { return IM_CALL<const char* (__thiscall*)(void*)>(this, 0x80)(this); } // [C:\Users\User] Функция выведет User
public:
    void GetWindowSize(unsigned int* width, unsigned int* height)
    {
        reinterpret_cast<void(__thiscall*)(void*, unsigned int*, unsigned int*)>(0x140CFDDC0)(this, width, height);
    }
    CCamera* GetCamera(void)
    {
        // [pSystem + 0x658] -> CCamera
        return reinterpret_cast<CCamera*(__thiscall*)(void*)>(0x1411EE430)(this);
    }
};

class SystemGlobalEnvironment {
public:
    ISystem* GetSystem() { return *(ISystem**)((uintptr_t)this + 0xF0); }
    static SystemGlobalEnvironment* Instance(void) { return *reinterpret_cast<SystemGlobalEnvironment**>(_SystemGlobalEnvironment); }
};
C++:
template <typename T>
struct Plane_tpl {
    Vec3_tpl<T> n;
    T d;
};

class CCamera {
public:
    struct ScissorInfo {

        unsigned __int16 x1;
        unsigned __int16 y1;
        unsigned __int16 x2;
        unsigned __int16 y2;
    };

public:
    Matrix34_tpl<float> m_Matrix;
    float m_fov;
    int m_Width;
    int m_Height;
    float m_ProjectionRatio;
    float m_PixelAspectRatio;
    Vec3_tpl<float> m_edge_nlt;
    Vec3_tpl<float> m_edge_plt;
    Vec3_tpl<float> m_edge_flt;
    float m_asymL;
    float m_asymR;
    float m_asymB;
    float m_asymT;
    Vec3_tpl<float> m_cltp;
    Vec3_tpl<float> m_crtp;
    Vec3_tpl<float> m_clbp;
    Vec3_tpl<float> m_crbp;
    Vec3_tpl<float> m_cltn;
    Vec3_tpl<float> m_crtn;
    Vec3_tpl<float> m_clbn;
    Vec3_tpl<float> m_crbn;
    Vec3_tpl<float> m_cltf;
    Vec3_tpl<float> m_crtf;
    Vec3_tpl<float> m_clbf;
    Vec3_tpl<float> m_crbf;
    Plane_tpl<float> m_fp[6];
    unsigned int m_idx1[6];
    unsigned int m_idy1[6];
    unsigned int m_idz1[6];
    unsigned int m_idx2[6];
    unsigned int m_idy2[6];
    unsigned int m_idz2[6];
    float m_zrangeMin;
    float m_zrangeMax;
    int m_nPosX;
    int m_nPosY;
    int m_nSizeX;
    int m_nSizeY;
    interface IVisArea* m_pPortal;
    ScissorInfo m_ScissorInfo;
    void* m_pMultiCamera;
    Vec3_tpl<float> m_OccPosition;
    int m_JustActivated;
};

C++:
interface IRenderer {

    struct SProjectToScreen {

        SProjectToScreen() { }
        SProjectToScreen(Vec3_tpl<float> to, Vec3_tpl<float>& out)
            : ptx(to.x), pty(to.y), ptz(to.z), sx(&out.x), sy(&out.y), sz(&out.z) { }

        float ptx;
        float pty;
        float ptz;
        float* sx;
        float* sy;
        float* sz;
    };

    CCamera* SetGetCamera(const CCamera* pCamera, bool bSet) {
        return __vtbl< CCamera*, 68 >(this, pCamera, bSet);
    }

    int GetWidth() {
        return __vtbl< int, 102 >(this);
    }

    int GetHeight() {
        return __vtbl< int, 103 >(this);
    }

    bool ProjectToScreenInternal(SProjectToScreen* proj) {
        return __vtbl< bool, 112 >(this, proj);
    }
};

C++:
void GetWindowSize(int* width, int* height) {
    *width = this->GetWidth();
    *height = this->GetHeight();
}
 
Сверху Снизу