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

kitty.
Пользователь
Статус
Оффлайн
Регистрация
17 Окт 2021
Сообщения
282
Реакции[?]
111
Поинты[?]
17K
Забаненный
Статус
Оффлайн
Регистрация
11 Май 2020
Сообщения
115
Реакции[?]
91
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ты гений или да? до этого и класс не был обновлен, чекни свой m_verified_cmds в дебаггере:da:
Обновлял. В любом случае сейчас все заработало и нет желания возвращать все обратно , чтобы доказать твою неправоту
 
Начинающий
Статус
Оффлайн
Регистрация
8 Окт 2016
Сообщения
6
Реакции[?]
0
Поинты[?]
0
Во-первых проверить
C++:
    bool __stdcall is_connected::hooked()
    {
        //static void* force_inventory_open = utils::pattern_scan(("client.dll"), "75 04 B0 01 5F") - 2;

        //update 11.12
        static void* force_inventory_open = utils::pattern_scan(("client.dll"), "84 C0 75 05 B0 01 5F");

        return original(g::engine_client);
    }
Класс CInput, как указывали выше работает
C++:
#pragma once

#include "../Misc/CUserCmd.hpp"

#define MULTIPLAYER_BACKUP 150

class bf_write;
class bf_read;

class CInput
{
public:
    char pad_0000[12]; //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
public:
    inline CUserCmd* GetUserCmd(int  sequence_number) ;
    inline CVerifiedUserCmd* GetVerifiedCmd(int  sequence_number) ;
};

CUserCmd* CInput::GetUserCmd(int  sequence_number)
{

    return &m_pCommands[sequence_number % MULTIPLAYER_BACKUP];
}

CVerifiedUserCmd* CInput::GetVerifiedCmd(int   sequence_number)
{
    return &m_pVerifiedCommands[sequence_number % MULTIPLAYER_BACKUP];
}
Но работать может и так:

C++:
#pragma once

#include "../Misc/CUserCmd.hpp"

#define MULTIPLAYER_BACKUP 150

class bf_write;
class bf_read;

class CInput
{
public:
    inline CUserCmd* GetUserCmd(int  sequence_number);
    inline CVerifiedUserCmd* GetVerifiedCmd(int  sequence_number);
};

CUserCmd* CInput::GetUserCmd(int  sequence_number)
{
    return &(*(CUserCmd**)((DWORD)this + 0x0108))[sequence_number % MULTIPLAYER_BACKUP];
}

CVerifiedUserCmd* CInput::GetVerifiedCmd(int   sequence_number)
{
    return &(*(CVerifiedUserCmd**)((DWORD)this + 0x010C))[sequence_number % MULTIPLAYER_BACKUP];
}
 
kitty.
Пользователь
Статус
Оффлайн
Регистрация
17 Окт 2021
Сообщения
282
Реакции[?]
111
Поинты[?]
17K
Код:
class i_input {
public:
    char                    pad0[12];
    bool                    m_track_ir_available;
    bool                    m_mouse_initialized;
    bool                    m_mouse_active;
    char                    pad1[178];
    bool                    m_camera_in_third_person;
    char                    pad2[2];
    vec3_t                    m_camera_offset;
    char                    pad3[56];
    c_user_cmd*                m_commands;
    c_verified_user_cmd*    m_verified_commands;

    c_user_cmd* get_user_cmd(int sequence_number) { return &m_commands[sequence_number % MULTIPLAYER_BACKUP]; }
    c_verified_user_cmd* get_verified_user_cmd(int sequence_number) { return &m_verified_commands[sequence_number % MULTIPLAYER_BACKUP]; }
};
 
Начинающий
Статус
Оффлайн
Регистрация
7 Дек 2021
Сообщения
6
Реакции[?]
0
Поинты[?]
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
};
у тебя есть CInput.cpp? кинь пожалуйста
 
Сверху Снизу