Вопрос Нужна новая структура Input

Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
После обновы кс чит перестал подавать признаки жизни.Проблема скорее всего в структуре инпута.Вот моя:
C++:
#define MULTIPLAYER_BACKUP 150

class IInput
{
public:
    std::byte            pad0[0xC];                //0x00
    bool                bTrackIRAvailable;        //0x0C
    bool                bMouseInitialized;        //0x0D
    bool                bMouseActive;            //0x0E
    std::byte            pad1[0x9E];                //0x0F
    bool                bCameraInThirdPerson;    //0xAD
    std::byte            pad2[0x2];                //0xAE
    Vector                vecCameraOffset;        //0xB0
    std::byte            pad3[0x38];                //0xBC
    CUserCmd*            pCommands;                //0xF4
    CVerifiedUserCmd*    pVerifiedCommands;        //0xF8

    CUserCmd* GetUserCmd(int nSequenceNumber)
    {
        return &pCommands[nSequenceNumber % MULTIPLAYER_BACKUP];
    }

    CVerifiedUserCmd* GetVerifiedCmd(int nSequenceNumber)
    {
        return &pVerifiedCommands[nSequenceNumber % MULTIPLAYER_BACKUP];
    }
};
 
Забаненный
Статус
Оффлайн
Регистрация
18 Июл 2020
Сообщения
905
Реакции[?]
200
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Олдфаг
Статус
Оффлайн
Регистрация
5 Июл 2017
Сообщения
2,108
Реакции[?]
1,189
Поинты[?]
0
Код:
// - 4 for VTable (if u using it just as struct without virtuals then delete - 4 offset)
class CInput
{
public:
    virtual void  Init_All(void);

    char pad_0000[12 - 4]; //0x0000
    bool m_fTrackIRAvailable; //0x000C
    bool m_fMouseInitialized; //0x000D
    bool m_fMouseActive; //0x000E
    bool m_fJoystickAdvancedInit; //0x000F
    char pad_0010[44]; //0x0010
    char *m_pKeys; //0x003C
    char pad_0040[48]; //0x0040
    int32_t m_nCamCommand; //0x0070
    char pad_0074[76]; //0x0074
    bool m_fCameraInterceptingMouse; //0x00C0
    bool m_fCameraInThirdPerson; //0x00C1
    bool m_fCameraMovingWithMouse; //0x00C2
    char pad_00C3[1]; //0x00C3
    Vector m_vecCameraOffset; //0x00C4
    bool m_fCameraDistanceMove; //0x00D0
    char pad_00D1[19]; //0x00D1
    bool m_CameraIsOrthographic; //0x00E4
    bool m_CameraIsThirdPersonOverview; //0x00E5
    char pad_00E6[2]; //0x00E6
    QAngle *m_angPreviousViewAngles; //0x00E8
    QAngle *m_angPreviousViewAnglesTilt; //0x00EC
    char pad_00F0[16]; //0x00F0
    float m_flLastForwardMove; //0x0100
    int32_t m_nClearInputState; //0x0104
    CUserCmd *m_pCommands; //0x0108
    CVerifiedUserCmd *m_pVerifiedCommands; //0x010C
}; //Size: 0x0110
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
Код:
// - 4 for VTable (if u using it just as struct without virtuals then delete - 4 offset)
class CInput
{
public:
    virtual void  Init_All(void);

    char pad_0000[12 - 4]; //0x0000
    bool m_fTrackIRAvailable; //0x000C
    bool m_fMouseInitialized; //0x000D
    bool m_fMouseActive; //0x000E
    bool m_fJoystickAdvancedInit; //0x000F
    char pad_0010[44]; //0x0010
    char *m_pKeys; //0x003C
    char pad_0040[48]; //0x0040
    int32_t m_nCamCommand; //0x0070
    char pad_0074[76]; //0x0074
    bool m_fCameraInterceptingMouse; //0x00C0
    bool m_fCameraInThirdPerson; //0x00C1
    bool m_fCameraMovingWithMouse; //0x00C2
    char pad_00C3[1]; //0x00C3
    Vector *m_vecCameraOffset; //0x00C4
    char pad_00C8[8]; //0x00C8
    bool m_fCameraDistanceMove; //0x00D0
    char pad_00D1[19]; //0x00D1
    bool m_CameraIsOrthographic; //0x00E4
    bool m_CameraIsThirdPersonOverview; //0x00E5
    char pad_00E6[2]; //0x00E6
    QAngle *m_angPreviousViewAngles; //0x00E8
    QAngle *m_angPreviousViewAnglesTilt; //0x00EC
    char pad_00F0[16]; //0x00F0
    float m_flLastForwardMove; //0x0100
    int32_t m_nClearInputState; //0x0104
    CUserCmd *m_pCommands; //0x0108
    CVerifiedUserCmd *m_pVerifiedCommands; //0x010C
}; //Size: 0x0110
Пожалуйста, авторизуйтесь для просмотра ссылки.

полистай тему
Насколько я понял структура в моём случае должна иметь следуйщий вид?

Код:
    std::byte            pad0[12-4];                //0x00
    bool                bTrackIRAvailable;        //0x000C
    bool                bMouseInitialized;        //
    bool                bMouseActive;            //
    std::byte            pad1[44];                //0x0010
    bool                bCameraInThirdPerson;    //
    std::byte            pad2[0x2];                //
    Vector                vecCameraOffset;        //
    std::byte            pad3[0x38];                //
    CUserCmd*            pCommands;                //
    CVerifiedUserCmd*    pVerifiedCommands;        //
 
Олдфаг
Статус
Оффлайн
Регистрация
5 Июл 2017
Сообщения
2,108
Реакции[?]
1,189
Поинты[?]
0
Насколько я понял структура в моём случае должна иметь следуйщий вид?

Код:
    std::byte            pad0[12-4];                //0x00
    bool                bTrackIRAvailable;        //0x000C
    bool                bMouseInitialized;        //
    bool                bMouseActive;            //
    std::byte            pad1[44];                //0x0010
    bool                bCameraInThirdPerson;    //
    std::byte            pad2[0x2];                //
    Vector                vecCameraOffset;        //
    std::byte            pad3[0x38];                //
    CUserCmd*            pCommands;                //
    CVerifiedUserCmd*    pVerifiedCommands;        //
Уж скопировать то и вставить можно? Я бы мог дать совет, но боюсь толку мало будет
Код:
#define MULTIPLAYER_BACKUP 150

class IInput
{
public:
   char pad_0000[12]; //0x0000
    bool bTrackIRAvailable; //0x000C
    bool bMouseInitialized; //0x000D
    bool bMouseActive; //0x000E
    bool bJoystickAdvancedInit; //0x000F
    char pad_0010[44]; //0x0010
    char *pKeys; //0x003C
    char pad_0040[48]; //0x0040
    int32_t nCamCommand; //0x0070
    char pad_0074[76]; //0x0074
    bool bCameraInterceptingMouse; //0x00C0
    bool bCameraInThirdPerson; //0x00C1
    bool bCameraMovingWithMouse; //0x00C2
    char pad_00C3[1]; //0x00C3
    Vector vecCameraOffset; //0x00C4
    bool bCameraDistanceMove; //0x00D0
    char pad_00D1[19]; //0x00D1
    bool bCameraIsOrthographic; //0x00E4
    bool bCameraIsThirdPersonOverview; //0x00E5
    char pad_00E6[2]; //0x00E6
    QAngle *angPreviousViewAngles; //0x00E8
    QAngle *angPreviousViewAnglesTilt; //0x00EC
    char pad_00F0[16]; //0x00F0
    float flLastForwardMove; //0x0100
    int32_t nClearInputState; //0x0104
    CUserCmd *pCommands; //0x0108
    CVerifiedUserCmd *pVerifiedCommands; //0x010C

    CUserCmd* GetUserCmd(int nSequenceNumber)
    {
        return &pCommands[nSequenceNumber % MULTIPLAYER_BACKUP];
    }

    CVerifiedUserCmd* GetVerifiedCmd(int nSequenceNumber)
    {
        return &pVerifiedCommands[nSequenceNumber % MULTIPLAYER_BACKUP];
    }
};
 
Последнее редактирование:
контора пидорасов
Забаненный
Статус
Оффлайн
Регистрация
1 Июл 2021
Сообщения
191
Реакции[?]
42
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Уж скопировать то и вставить можно? Я бы мог дать совет, но боюсь толку мало будет
Код:
#define MULTIPLAYER_BACKUP 150

class IInput
{
public:
   char pad_0000[12]; //0x0000
    bool bTrackIRAvailable; //0x000C
    bool bMouseInitialized; //0x000D
    bool bMouseActive; //0x000E
    bool bJoystickAdvancedInit; //0x000F
    char pad_0010[44]; //0x0010
    char *pKeys; //0x003C
    char pad_0040[48]; //0x0040
    int32_t nCamCommand; //0x0070
    char pad_0074[76]; //0x0074
    bool bCameraInterceptingMouse; //0x00C0
    bool bCameraInThirdPerson; //0x00C1
    bool bCameraMovingWithMouse; //0x00C2
    char pad_00C3[1]; //0x00C3
    Vector *vecCameraOffset; //0x00C4
    char pad_00C8[8]; //0x00C8
    bool bCameraDistanceMove; //0x00D0
    char pad_00D1[19]; //0x00D1
    bool bCameraIsOrthographic; //0x00E4
    bool bCameraIsThirdPersonOverview; //0x00E5
    char pad_00E6[2]; //0x00E6
    QAngle *angPreviousViewAngles; //0x00E8
    QAngle *angPreviousViewAnglesTilt; //0x00EC
    char pad_00F0[16]; //0x00F0
    float flLastForwardMove; //0x0100
    int32_t nClearInputState; //0x0104
    CUserCmd *pCommands; //0x0108
    CVerifiedUserCmd *pVerifiedCommands; //0x010C

    CUserCmd* GetUserCmd(int nSequenceNumber)
    {
        return &pCommands[nSequenceNumber % MULTIPLAYER_BACKUP];
    }

    CVerifiedUserCmd* GetVerifiedCmd(int nSequenceNumber)
    {
        return &pVerifiedCommands[nSequenceNumber % MULTIPLAYER_BACKUP];
    }
};
Vector *vecCameraOffset;

замени на
Vector vecCameraOffset;
 
Тьомчик
Пользователь
Статус
Оффлайн
Регистрация
30 Июн 2020
Сообщения
701
Реакции[?]
148
Поинты[?]
56K
Забаненный
Статус
Оффлайн
Регистрация
11 Май 2020
Сообщения
115
Реакции[?]
91
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
11 Май 2020
Сообщения
115
Реакции[?]
91
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Олдфаг
Статус
Оффлайн
Регистрация
5 Июл 2017
Сообщения
2,108
Реакции[?]
1,189
Поинты[?]
0
Если у тебя в классе есть виртуальные функции, то 4 байта начальные отойдут под них, и компилятор сместит твою структуру на +4, если же виртуалок нет, как у francyz то и смещения от компилятора не будет. Поэтому если класс с виртуалками, то
char pad_0000[12 - 4];
если без, то
char pad_0000[12];

Мой класс полностью, если нужен -

C++:
class CInput
{
public:
    CInput(void);
    ~CInput(void);
    void                    InitMouse(void);
    virtual        void        Init_All(void);
    virtual        void        Shutdown_All(void);
    virtual        int            GetButtonBits(bool bResetState);
    virtual        void        CreateMove(int sequence_number, float input_sample_frametime, bool active);
    virtual        void        ExtraMouseSample(float frametime, bool active);
    virtual        bool        WriteUsercmdDeltaToBuffer(int nSlot, bf_write* buf, int from, int to, bool isnewcommand);
    virtual        void        EncodeUserCmdToBuffer(int nSlot, bf_write& buf, int slot);
    virtual        void        DecodeUserCmdFromBuffer(int nSlot, bf_read& buf, int slot);

    virtual        CUserCmd* GetUserCmd(int nSlot, int sequence_number);

    virtual        void        MakeWeaponSelection(CBaseCombatWeapon* weapon);

    virtual        float        KeyState(kbutton_t* key);
    virtual        int            KeyEvent(int down, ButtonCode_t keynum, const char* pszCurrentBinding);
    virtual        kbutton_t* FindKey(const char* name);

    virtual        void        ControllerCommands(void);
    virtual        void        Joystick_Advanced(bool bSilent);
    virtual        void        Joystick_SetSampleTime(float frametime);
    virtual        float        Joystick_GetPitch(void);
    virtual        float        Joystick_GetYaw(void);
    virtual        void        Joystick_Querry(float& forward, float& side, float& pitch, float& yaw);
    virtual        void        Joystick_ForceRecentering(int nStick, bool bSet = true);
    virtual        void        IN_SetSampleTime(float frametime);

    virtual        void        AccumulateMouse(int nSlot);
    virtual        void        ActivateMouse(void);
    virtual        void        DeactivateMouse(void);
    virtual        void        ClearStates(void);
    virtual        float        GetLookSpring(void);

    virtual        void        GetFullscreenMousePos(int* mx, int* my, int* unclampedx = NULL, int* unclampedy = NULL);
    virtual        void        SetFullscreenMousePos(int mx, int my);
    virtual        void        ResetMouse(void);

    virtual        float        GetLastForwardMove(void);
    virtual        void        ClearInputButton(int bits);

    virtual        void        CAM_Think(void);
    virtual        int            CAM_IsThirdPerson(int nSlot = -1);
    virtual        bool        CAM_IsThirdPersonOverview(int nSlot = -1);
    virtual        void        CAM_GetCameraOffset(Vector& ofs);
    virtual        void        CAM_ToThirdPerson(void);
    virtual        void        CAM_ToFirstPerson(void);
    virtual        void        CAM_ToThirdPersonShoulder(void);
    virtual        void        CAM_ToThirdPersonOverview(void);
    virtual        void        CAM_StartMouseMove(void);
    virtual        void        CAM_EndMouseMove(void);
    virtual        void        CAM_StartDistance(void);
    virtual        void        CAM_EndDistance(void);
    virtual        int            CAM_InterceptingMouse(void);
    virtual        void        CAM_Command(int command);

    virtual        void        CAM_ToOrthographic();
    virtual        bool        CAM_IsOrthographic() const;
    virtual        void        CAM_OrthographicSize(float& w, float& h) const;

    virtual        void        LevelInit(void);

    virtual        void        CAM_SetCameraThirdData(CameraThirdData_t* pCameraData, const QAngle& vecCameraOffset);
    virtual        void        CAM_CameraThirdThink(void);

    virtual        void        CheckPaused(CUserCmd* cmd);
    virtual        void        CheckSplitScreenMimic(int nSlot, CUserCmd* cmd, CUserCmd* pPlayer0Command);

    CVerifiedUserCmd*        GetVerifiedCmd(int sequence_number)
    {
        return &m_pVerifiedCommands[sequence_number % MULTIPLAYER_BACKUP];
    }

public:
    char                pad_0000[12 - 4];                //0x0000
    bool                m_fTrackIRAvailable;            //0x000C
    bool                m_fMouseInitialized;            //0x000D
    bool                m_fMouseActive;                    //0x000E
    bool                m_fJoystickAdvancedInit;        //0x000F
    char                pad_0010[44];                    //0x0010
    char*                m_pKeys;                        //0x003C
    char                pad_0040[48];                    //0x0040
    int32_t                m_nCamCommand;                    //0x0070
    char                pad_0074[76];                    //0x0074
    bool                m_fCameraInterceptingMouse;        //0x00C0
    bool                m_fCameraInThirdPerson;            //0x00C1
    bool                m_fCameraMovingWithMouse;        //0x00C2
    char                pad_00C3[1];                    //0x00C3
    Vector                m_vecCameraOffset;                //0x00C4
    bool                m_fCameraDistanceMove;            //0x00D0
    char                pad_00D1[19];                    //0x00D1
    bool                m_CameraIsOrthographic;            //0x00E4
    bool                m_CameraIsThirdPersonOverview;    //0x00E5
    char                pad_00E6[2];                    //0x00E6
    QAngle*                m_angPreviousViewAngles;        //0x00E8
    QAngle*                m_angPreviousViewAnglesTilt;    //0x00EC
    char                pad_00F0[16];                    //0x00F0
    float                m_flLastForwardMove;            //0x0100
    int32_t                m_nClearInputState;                //0x0104
    CUserCmd*            m_pCommands;                    //0x0108
    CVerifiedUserCmd*    m_pVerifiedCommands;            //0x010C
};
 
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
Структуру обновил,но меню и дебаг консоль не появилаась.Скорее всего сигнатуры подводят уже
 
Забаненный
Статус
Оффлайн
Регистрация
11 Май 2020
Сообщения
115
Реакции[?]
91
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Если у тебя в классе есть виртуальные функции, то 4 байта начальные отойдут под них, и компилятор сместит твою структуру на +4, если же виртуалок нет, как у francyz то и смещения от компилятора не будет. Поэтому если класс с виртуалками, то
char pad_0000[12 - 4];
если без, то
char pad_0000[12];

Мой класс полностью, если нужен -

C++:
class CInput
{
public:
    CInput(void);
    ~CInput(void);
    void                    InitMouse(void);
    virtual        void        Init_All(void);
    virtual        void        Shutdown_All(void);
    virtual        int            GetButtonBits(bool bResetState);
    virtual        void        CreateMove(int sequence_number, float input_sample_frametime, bool active);
    virtual        void        ExtraMouseSample(float frametime, bool active);
    virtual        bool        WriteUsercmdDeltaToBuffer(int nSlot, bf_write* buf, int from, int to, bool isnewcommand);
    virtual        void        EncodeUserCmdToBuffer(int nSlot, bf_write& buf, int slot);
    virtual        void        DecodeUserCmdFromBuffer(int nSlot, bf_read& buf, int slot);

    virtual        CUserCmd* GetUserCmd(int nSlot, int sequence_number);

    virtual        void        MakeWeaponSelection(CBaseCombatWeapon* weapon);

    virtual        float        KeyState(kbutton_t* key);
    virtual        int            KeyEvent(int down, ButtonCode_t keynum, const char* pszCurrentBinding);
    virtual        kbutton_t* FindKey(const char* name);

    virtual        void        ControllerCommands(void);
    virtual        void        Joystick_Advanced(bool bSilent);
    virtual        void        Joystick_SetSampleTime(float frametime);
    virtual        float        Joystick_GetPitch(void);
    virtual        float        Joystick_GetYaw(void);
    virtual        void        Joystick_Querry(float& forward, float& side, float& pitch, float& yaw);
    virtual        void        Joystick_ForceRecentering(int nStick, bool bSet = true);
    virtual        void        IN_SetSampleTime(float frametime);

    virtual        void        AccumulateMouse(int nSlot);
    virtual        void        ActivateMouse(void);
    virtual        void        DeactivateMouse(void);
    virtual        void        ClearStates(void);
    virtual        float        GetLookSpring(void);

    virtual        void        GetFullscreenMousePos(int* mx, int* my, int* unclampedx = NULL, int* unclampedy = NULL);
    virtual        void        SetFullscreenMousePos(int mx, int my);
    virtual        void        ResetMouse(void);

    virtual        float        GetLastForwardMove(void);
    virtual        void        ClearInputButton(int bits);

    virtual        void        CAM_Think(void);
    virtual        int            CAM_IsThirdPerson(int nSlot = -1);
    virtual        bool        CAM_IsThirdPersonOverview(int nSlot = -1);
    virtual        void        CAM_GetCameraOffset(Vector& ofs);
    virtual        void        CAM_ToThirdPerson(void);
    virtual        void        CAM_ToFirstPerson(void);
    virtual        void        CAM_ToThirdPersonShoulder(void);
    virtual        void        CAM_ToThirdPersonOverview(void);
    virtual        void        CAM_StartMouseMove(void);
    virtual        void        CAM_EndMouseMove(void);
    virtual        void        CAM_StartDistance(void);
    virtual        void        CAM_EndDistance(void);
    virtual        int            CAM_InterceptingMouse(void);
    virtual        void        CAM_Command(int command);

    virtual        void        CAM_ToOrthographic();
    virtual        bool        CAM_IsOrthographic() const;
    virtual        void        CAM_OrthographicSize(float& w, float& h) const;

    virtual        void        LevelInit(void);

    virtual        void        CAM_SetCameraThirdData(CameraThirdData_t* pCameraData, const QAngle& vecCameraOffset);
    virtual        void        CAM_CameraThirdThink(void);

    virtual        void        CheckPaused(CUserCmd* cmd);
    virtual        void        CheckSplitScreenMimic(int nSlot, CUserCmd* cmd, CUserCmd* pPlayer0Command);

    CVerifiedUserCmd*        GetVerifiedCmd(int sequence_number)
    {
        return &m_pVerifiedCommands[sequence_number % MULTIPLAYER_BACKUP];
    }

public:
    char                pad_0000[12 - 4];                //0x0000
    bool                m_fTrackIRAvailable;            //0x000C
    bool                m_fMouseInitialized;            //0x000D
    bool                m_fMouseActive;                    //0x000E
    bool                m_fJoystickAdvancedInit;        //0x000F
    char                pad_0010[44];                    //0x0010
    char*                m_pKeys;                        //0x003C
    char                pad_0040[48];                    //0x0040
    int32_t                m_nCamCommand;                    //0x0070
    char                pad_0074[76];                    //0x0074
    bool                m_fCameraInterceptingMouse;        //0x00C0
    bool                m_fCameraInThirdPerson;            //0x00C1
    bool                m_fCameraMovingWithMouse;        //0x00C2
    char                pad_00C3[1];                    //0x00C3
    Vector                m_vecCameraOffset;                //0x00C4
    bool                m_fCameraDistanceMove;            //0x00D0
    char                pad_00D1[19];                    //0x00D1
    bool                m_CameraIsOrthographic;            //0x00E4
    bool                m_CameraIsThirdPersonOverview;    //0x00E5
    char                pad_00E6[2];                    //0x00E6
    QAngle*                m_angPreviousViewAngles;        //0x00E8
    QAngle*                m_angPreviousViewAnglesTilt;    //0x00EC
    char                pad_00F0[16];                    //0x00F0
    float                m_flLastForwardMove;            //0x0100
    int32_t                m_nClearInputState;                //0x0104
    CUserCmd*            m_pCommands;                    //0x0108
    CVerifiedUserCmd*    m_pVerifiedCommands;            //0x010C
};
Спасибо. С твоим классом все ок.
ты не правильно получаешь verified cmd
До этого было все ок,а сейчас нет? - ну голову-то включи.

Скорее всего была ебля с паддингом,хотя виртов в классе не было.
 
Тьомчик
Пользователь
Статус
Оффлайн
Регистрация
30 Июн 2020
Сообщения
701
Реакции[?]
148
Поинты[?]
56K
Спасибо. С твоим классом все ок.

До этого было все ок,а сейчас нет? - ну голову-то включи.

Скорее всего была ебля с паддингом,хотя виртов в классе не было.
Скинь класс если не тяжело
 
Забаненный
Статус
Оффлайн
Регистрация
11 Май 2020
Сообщения
115
Реакции[?]
91
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
18 Июл 2020
Сообщения
905
Реакции[?]
200
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Скинь класс если не тяжело
Если у тебя в классе есть виртуальные функции, то 4 байта начальные отойдут под них, и компилятор сместит твою структуру на +4, если же виртуалок нет, как у francyz то и смещения от компилятора не будет. Поэтому если класс с виртуалками, то
char pad_0000[12 - 4];
если без, то
char pad_0000[12];

Мой класс полностью, если нужен -

C++:
class CInput
{
public:
    CInput(void);
    ~CInput(void);
    void                    InitMouse(void);
    virtual        void        Init_All(void);
    virtual        void        Shutdown_All(void);
    virtual        int            GetButtonBits(bool bResetState);
    virtual        void        CreateMove(int sequence_number, float input_sample_frametime, bool active);
    virtual        void        ExtraMouseSample(float frametime, bool active);
    virtual        bool        WriteUsercmdDeltaToBuffer(int nSlot, bf_write* buf, int from, int to, bool isnewcommand);
    virtual        void        EncodeUserCmdToBuffer(int nSlot, bf_write& buf, int slot);
    virtual        void        DecodeUserCmdFromBuffer(int nSlot, bf_read& buf, int slot);

    virtual        CUserCmd* GetUserCmd(int nSlot, int sequence_number);

    virtual        void        MakeWeaponSelection(CBaseCombatWeapon* weapon);

    virtual        float        KeyState(kbutton_t* key);
    virtual        int            KeyEvent(int down, ButtonCode_t keynum, const char* pszCurrentBinding);
    virtual        kbutton_t* FindKey(const char* name);

    virtual        void        ControllerCommands(void);
    virtual        void        Joystick_Advanced(bool bSilent);
    virtual        void        Joystick_SetSampleTime(float frametime);
    virtual        float        Joystick_GetPitch(void);
    virtual        float        Joystick_GetYaw(void);
    virtual        void        Joystick_Querry(float& forward, float& side, float& pitch, float& yaw);
    virtual        void        Joystick_ForceRecentering(int nStick, bool bSet = true);
    virtual        void        IN_SetSampleTime(float frametime);

    virtual        void        AccumulateMouse(int nSlot);
    virtual        void        ActivateMouse(void);
    virtual        void        DeactivateMouse(void);
    virtual        void        ClearStates(void);
    virtual        float        GetLookSpring(void);

    virtual        void        GetFullscreenMousePos(int* mx, int* my, int* unclampedx = NULL, int* unclampedy = NULL);
    virtual        void        SetFullscreenMousePos(int mx, int my);
    virtual        void        ResetMouse(void);

    virtual        float        GetLastForwardMove(void);
    virtual        void        ClearInputButton(int bits);

    virtual        void        CAM_Think(void);
    virtual        int            CAM_IsThirdPerson(int nSlot = -1);
    virtual        bool        CAM_IsThirdPersonOverview(int nSlot = -1);
    virtual        void        CAM_GetCameraOffset(Vector& ofs);
    virtual        void        CAM_ToThirdPerson(void);
    virtual        void        CAM_ToFirstPerson(void);
    virtual        void        CAM_ToThirdPersonShoulder(void);
    virtual        void        CAM_ToThirdPersonOverview(void);
    virtual        void        CAM_StartMouseMove(void);
    virtual        void        CAM_EndMouseMove(void);
    virtual        void        CAM_StartDistance(void);
    virtual        void        CAM_EndDistance(void);
    virtual        int            CAM_InterceptingMouse(void);
    virtual        void        CAM_Command(int command);

    virtual        void        CAM_ToOrthographic();
    virtual        bool        CAM_IsOrthographic() const;
    virtual        void        CAM_OrthographicSize(float& w, float& h) const;

    virtual        void        LevelInit(void);

    virtual        void        CAM_SetCameraThirdData(CameraThirdData_t* pCameraData, const QAngle& vecCameraOffset);
    virtual        void        CAM_CameraThirdThink(void);

    virtual        void        CheckPaused(CUserCmd* cmd);
    virtual        void        CheckSplitScreenMimic(int nSlot, CUserCmd* cmd, CUserCmd* pPlayer0Command);

    CVerifiedUserCmd*        GetVerifiedCmd(int sequence_number)
    {
        return &m_pVerifiedCommands[sequence_number % MULTIPLAYER_BACKUP];
    }

public:
    char                pad_0000[12 - 4];                //0x0000
    bool                m_fTrackIRAvailable;            //0x000C
    bool                m_fMouseInitialized;            //0x000D
    bool                m_fMouseActive;                    //0x000E
    bool                m_fJoystickAdvancedInit;        //0x000F
    char                pad_0010[44];                    //0x0010
    char*                m_pKeys;                        //0x003C
    char                pad_0040[48];                    //0x0040
    int32_t                m_nCamCommand;                    //0x0070
    char                pad_0074[76];                    //0x0074
    bool                m_fCameraInterceptingMouse;        //0x00C0
    bool                m_fCameraInThirdPerson;            //0x00C1
    bool                m_fCameraMovingWithMouse;        //0x00C2
    char                pad_00C3[1];                    //0x00C3
    Vector                m_vecCameraOffset;                //0x00C4
    bool                m_fCameraDistanceMove;            //0x00D0
    char                pad_00D1[19];                    //0x00D1
    bool                m_CameraIsOrthographic;            //0x00E4
    bool                m_CameraIsThirdPersonOverview;    //0x00E5
    char                pad_00E6[2];                    //0x00E6
    QAngle*                m_angPreviousViewAngles;        //0x00E8
    QAngle*                m_angPreviousViewAnglesTilt;    //0x00EC
    char                pad_00F0[16];                    //0x00F0
    float                m_flLastForwardMove;            //0x0100
    int32_t                m_nClearInputState;                //0x0104
    CUserCmd*            m_pCommands;                    //0x0108
    CVerifiedUserCmd*    m_pVerifiedCommands;            //0x010C
};
 
Сверху Снизу