Вопрос Как сделать кэш в классе

Начинающий
Статус
Оффлайн
Регистрация
28 Дек 2020
Сообщения
238
Реакции[?]
20
Поинты[?]
3K
Как сделать кэш класса player ? нужно ограничить чтение одной и той же переменной в течение ограниченного периода времени допустим просто что бы в памяти хранилось другое название переменной
C++:
class c_player
{
public:
    std::uintptr_t address;
    c_player()
    {
        address = memory::read<uintptr_t>(globals::client + offsets::dwLocalPlayer);
    }
    c_player(int index)
    {
        address = g_client.i_hero_from_index(index);
    }
    uint32_t i_health()
    {
        return memory::read<uint32_t>(address + offsets::m_iHealth);
    }
    uint32_t i_team()
    {
        return memory::read<uint32_t>(address + offsets::m_iTeamNum);
    }
  
    bool i_dormant()
    {
        return memory::read<uint32_t>(address + offsets::m_bDormant);
    }
    DWORD32 get_crosshair_id()
    {
        return memory::read<DWORD32>( address + offsets::m_iCrosshairId );
    }
    c_player get_crosshair_entity()
    {
        c_player enemy;
        enemy.address = memory::read<DWORD>(globals::client + offsets::dwEntityList + (c_player().get_crosshair_id() - 1) * 0x10);
        return enemy;
    }
  
    uint32_t i_classid()
    {
        return memory::read<uint32_t>(memory::read<DWORD>(memory::read<DWORD>(memory::read<DWORD>(address + 0x8) + 0x8) + 0x1) + 0x14);
    }
    vec3_t aim_punch_angle()
    {
        return memory::read<vec3_t>(address + offsets::m_aimPunchAngle);
    }
    vec3_t origin()
    {
        return memory::read<vec3_t>(address + offsets::m_vecOrigin);
    }
    vec3_t get_bone_pos(int bone)
    {
        DWORD bone_matrix_ptr = memory::read<DWORD>(address + offsets::m_dwBoneMatrix);
        bone_matrix bone_pos = memory::read<bone_matrix>(bone_matrix_ptr + bone * 0x30);
        return vec3_t({ bone_pos.x, bone_pos.y, bone_pos.z });
    }
    vec3_t i_local_eye()
    {
        vec3_t vec_origin = origin();
        vec3_t vec_offset = memory::read<vec3_t>(address + offsets::m_vecViewOffset);

        return vec_origin + vec_offset;
    }
    uint32_t weapon()
    {
        return memory::read<uint32_t>(address + offsets::m_hActiveWeapon);
    }
  
};
c_player g_localplayer;
 
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,371
Реакции[?]
2,278
Поинты[?]
182K
Начинающий
Статус
Оффлайн
Регистрация
28 Дек 2020
Сообщения
238
Реакции[?]
20
Поинты[?]
3K
??

Да и может я чего-то не понимаю, но как кэш связан с ограничением чтения переменной?
я иммел ввиду допустим что бы считалась переменная
m_iHealth 1 раз но в кеше бы хранила с другим название например просто Health или любое другое название
 
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,371
Реакции[?]
2,278
Поинты[?]
182K
я иммел ввиду допустим что бы считалась переменная
m_iHealth 1 раз но в кеше бы хранила с другим название например просто Health или любое другое название
m_iCachedHealth = m_iHealth(); :roflanPominki:

Читай, как работает кэширование. Тебе нужно будет обновлять значение, когда это нужно. Правда хз, чего ты пытаешься этим добиться.
 
Начинающий
Статус
Оффлайн
Регистрация
28 Дек 2020
Сообщения
238
Реакции[?]
20
Поинты[?]
3K
m_iCachedHealth = m_iHealth(); :roflanPominki:

Читай, как работает кэширование. Тебе нужно будет обновлять значение, когда это нужно. Правда хз, чего ты пытаешься этим добиться.
я думаю это будет надёжнее чем просто так читать
 
Начинающий
Статус
Оффлайн
Регистрация
28 Дек 2020
Сообщения
238
Реакции[?]
20
Поинты[?]
3K
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,371
Реакции[?]
2,278
Поинты[?]
182K
Сверху Снизу