Вопрос Запись структуры Glow

keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
Всем привет. Решил всё же начать пользоваться структурами, и, благодаря оцелотику, имеется следующая структура (да, формулировка предложений на высоте):
C++:
struct glow_object_t
{
    BYTE nextFreeSlot[0x4];
    BYTE entity[0x4];
    color_t color;
    BYTE pad0[0x10];
    bool m_bRenderWhenOccluded;
    BYTE pad1[0xF];
};
А записываю его (пытаюсь) следующим образом:
C++:
glow_object_t glowObject;

glowObject.color = color_t{ 1.f, 1.f, 1.f, 1.f };
glowObject.m_bRenderWhenOccluded = true;

memory.Write<glow_object_t>(get_glow_object_manager() + (currentEntity.get_glow_index() * 0x38), glowObject);

glowObject.m_bRenderWhenOccluded = false;

memory.Write<glow_object_t>(get_glow_object_manager() + (currentEntity.get_glow_index() * 0x38), glowObject);
И оно не работает. Помогите пжпж..... Заранее спасибо.
 
говном не торгую
Олдфаг
Статус
Оффлайн
Регистрация
27 Мар 2017
Сообщения
2,406
Реакции[?]
1,737
Поинты[?]
1K
Может тебе следует сначала прочитать эту структуру из игры, ведь там есть не только то, что ты изменяешь?
 
keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
Может тебе следует сначала прочитать эту структуру из игры, ведь там есть не только то, что ты изменяешь?
То есть, то же самое почти, только
glow_object_t glowObject = memory.Read<glow_object_t>(get_glow_object_manager() + (currentEntity.get_glow_index() * 0x38)); ?
upd.: не помогло(
 
говном не торгую
Олдфаг
Статус
Оффлайн
Регистрация
27 Мар 2017
Сообщения
2,406
Реакции[?]
1,737
Поинты[?]
1K
То есть, то же самое почти, только
glow_object_t glowObject = memory.Read<glow_object_t>(get_glow_object_manager() + (currentEntity.get_glow_index() * 0x38)); ?
upd.: не помогло(
У меня всё работает с этой структурой, значит ты делаешь что-то не так
Поставь брекпоинт после чтения структуры и посмотри что там, если там какая-то херня, то значит у тебя либо что-то с оффсетами, либо что-то ещё


UPD:
glowObject.m_bRenderWhenOccluded = false; memory.Write<glow_object_t>(get_glow_object_manager() + (currentEntity.get_glow_index() * 0x38), glowObject);
Стоп, а почему так, зачем это? Ты же сам и отменяешь glow
 
Последнее редактирование:
keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
Стоп, а почему так, зачем это? Ты же сам и отменяешь glow
Так в экстерналах же так и надо? Применяешь и отменяешь сразу же, из-за чего в них и возникают мерцания?
Снимок.PNG
 
keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
UPD.: Так и не понял, в чём проблема. Есть подозрение на мою структуру цвета:
C++:
struct color_t
{
    float r, g, b, a;
};
Хотя, хз, что тут вообще может пойти не так, лол.
 
говном не торгую
Олдфаг
Статус
Оффлайн
Регистрация
27 Мар 2017
Сообщения
2,406
Реакции[?]
1,737
Поинты[?]
1K
эта же хуйня сместилась куда-то
Это размер структуры Glow, он не поменялся
Так в экстерналах же так и надо? Применяешь и отменяешь сразу же, из-за чего в них и возникают мерцания?
Нет, зачем это делать? Игра сама отменяет эффект глоу, поэтому оно и мерцает
У тебя какая-то проблема с адресами, он не то читает, со структурой всё норм
 
keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
Это размер структуры Glow, он не поменялся

Нет, зачем это делать? Игра сама отменяет эффект глоу, поэтому оно и мерцает
У тебя какая-то проблема с адресами, он не то читает, со структурой всё норм
Короче мем. Захотелось, блять, сделать рекод читикса на новой базе... Расстроился, написал бхопчик, а он тоже не ворк. Адреса смотрел, вроде правильные, но что-то ж не так. Ради прикола скину основные отрезки кода:
C++:
class entity
{
public:
    entity(DWORD new_address)
    {
        address = new_address;
    }
    
    int get_team()
    {
        return memory.Read<int>(address + m_iTeamNum);
    }

    int get_glow_index()
    {
        return memory.Read<int>(address + m_iGlowIndex);
    }
    
    DWORD address = 0;
};
C++:
DWORD get_local_player()
{
    return memory.Read<DWORD>(client_dll + dwLocalPlayer);
}

DWORD get_entity(int index)
{
    return memory.Read<DWORD>(client_dll + dwEntityList + index * entLoopDist);
}
C++:
entity localPlayer = engine::get_local_player();

for (short int i = 0; i < 32; i++)
{
    entity currentEntity = engine::get_entity(i);

    if (localPlayer.get_team() != currentEntity.get_team())
    {
        glow_object_t glowObject = memory.Read<glow_object_t>(engine::get_glow_object_manager() + currentEntity.get_glow_index() * 0x38);

        glowObject.color = color_t{ 1.f, 1.f, 1.f, 1.f };

        glowObject.m_bRenderWhenOccluded = true;

        memory.Write<glow_object_t>(engine::get_glow_object_manager() + currentEntity.get_glow_index() * 0x38, glowObject);
    }
}

Оффсеты ластовые с hazedumper'а.
 
говном не торгую
Олдфаг
Статус
Оффлайн
Регистрация
27 Мар 2017
Сообщения
2,406
Реакции[?]
1,737
Поинты[?]
1K
Короче мем. Захотелось, блять, сделать рекод читикса на новой базе... Расстроился, написал бхопчик, а он тоже не ворк. Адреса смотрел, вроде правильные, но что-то ж не так. Ради прикола скину основные отрезки кода:
C++:
class entity
{
public:
    entity(DWORD new_address)
    {
        address = new_address;
    }
  
    int get_team()
    {
        return memory.Read<int>(address + m_iTeamNum);
    }

    int get_glow_index()
    {
        return memory.Read<int>(address + m_iGlowIndex);
    }
  
    DWORD address = 0;
};
C++:
DWORD get_local_player()
{
    return memory.Read<DWORD>(client_dll + dwLocalPlayer);
}

DWORD get_entity(int index)
{
    return memory.Read<DWORD>(client_dll + dwEntityList + index * entLoopDist);
}
C++:
entity localPlayer = engine::get_local_player();

for (short int i = 0; i < 32; i++)
{
    entity currentEntity = engine::get_entity(i);

    if (localPlayer.get_team() != currentEntity.get_team())
    {
        glow_object_t glowObject = memory.Read<glow_object_t>(engine::get_glow_object_manager() + currentEntity.get_glow_index() * 0x38);

        glowObject.color = color_t{ 1.f, 1.f, 1.f, 1.f };

        glowObject.m_bRenderWhenOccluded = true;

        memory.Write<glow_object_t>(engine::get_glow_object_manager() + currentEntity.get_glow_index() * 0x38, glowObject);
    }
}

Оффсеты ластовые с hazedumper'а.
Посмотри в коде, не закрываешь ли ты случайно хендл к игре, и проверь адреса, которые ты читаешь, если они все 3435973836, то значит хендл закрыт (такое же было давно)
 
keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
Посмотри в коде, не закрываешь ли ты случайно хендл к игре, и проверь адреса, которые ты читаешь, если они все 3435973836, то значит хендл закрыт (такое же было давно)
Снимок.PNG

Хендлы лично я не закрываю, да и обновляющиеся адреса энтитей на карте вроде нормальные

upd.: такое чувство, будто бы чтение работает отлично, а запись не работает вовсе.
 
Последнее редактирование:
говном не торгую
Олдфаг
Статус
Оффлайн
Регистрация
27 Мар 2017
Сообщения
2,406
Реакции[?]
1,737
Поинты[?]
1K

Хендлы лично я не закрываю, да и обновляющиеся адреса энтитей на карте вроде нормальные

upd.: такое чувство, будто бы чтение работает отлично, а запись не работает вовсе.
Полностью спастил твой код и он работает

Судя по твоему скрину glowObject у тебя и с чтением проблемы, или проблема в get_glow_object_manager()
Можешь в RPM/WPM проверять сколько ты байтов прочитал и записал и сверять с размером нужных тебе данных
Код:
T _read;
SIZE_T _readB = 0;
ReadProcessMemory(hHandle, LPVOID(dwAddress), &_read, sizeof(T), &_readB);
//_readB должна быть равна sizeof(T)
То же самое с WPM
 
keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
Полностью спастил твой код и он работает

Судя по твоему скрину glowObject у тебя и с чтением проблемы, или проблема в get_glow_object_manager()
Можешь в RPM/WPM проверять сколько ты байтов прочитал и записал и сверять с размером нужных тебе данных
Код:
T _read;
SIZE_T _readB = 0;
ReadProcessMemory(hHandle, LPVOID(dwAddress), &_read, sizeof(T), &_readB);
//_readB должна быть равна sizeof(T)
То же самое с WPM
Хочешь прикол? Дело не в коде. Я сейчас на ноуте работаю, а тогда всё делал и тестил на компе. Так вот, у меня и essence lite не работает. То есть, это либо ноут иссуе, либо винда. Убейте меня.
 
говном не торгую
Олдфаг
Статус
Оффлайн
Регистрация
27 Мар 2017
Сообщения
2,406
Реакции[?]
1,737
Поинты[?]
1K
Хочешь прикол? Дело не в коде. Я сейчас на ноуте работаю, а тогда всё делал и тестил на компе. Так вот, у меня и essence lite не работает. То есть, это либо ноут иссуе, либо винда. Убейте меня.
У меня таких проблем ещё не было, всем, кому кидал свою поделку, у всех всё работало, на ноутах/компах, наверно должна же быть причина почему он не работает где-то
 
keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
У меня таких проблем ещё не было, всем, кому кидал свою поделку, у всех всё работало, на ноутах/компах, наверно должна же быть причина почему он не работает где-то
Это понятно, но у меня вообще в голове не укладывается, как это возможно ахаха
Спасибо большое, что потратил на меня время. Жаль, что это было зря =)
 
they tryna be cray
Пользователь
Статус
Оффлайн
Регистрация
22 Ноя 2017
Сообщения
238
Реакции[?]
78
Поинты[?]
4K
C++:
GlowStruct EGlow;

struct GlowStruct
{
    BYTE nextFreeSlot[0x4];
    BYTE entity[0x4];
    float r;
    float g;
    float b;
    float a;
    BYTE pad0[0x10];
    bool m_bRenderWhenOccluded;
    bool m_bRenderWhenUnoccluded;
    bool m_bFullBloomRender;
    int m_nFullBloomStencilTestValue;
    int glowStyle;
};

C++:
GlowStruct SetGlowColor(GlowStruct Glow, uintptr_t entity)
{
    Glow.r = 255.f;
    Glow.g = 255.f;
    Glow.b = 255.f;
    Glow.a = 255.f;
    Glow.glowStyle = 0;
    Glow.m_bRenderWhenOccluded = true;
    Glow.m_bRenderWhenUnoccluded = false;
    return Glow;
}

C++:
void cGlow()
{
    if (LocalPlayer::isInGame())
    {
        for (short int i = 0; i < 64; i++)
        {
            auto base = Entity::getEntityBase(i);
            if (base != NULL)
            {
                if (LocalPlayer::getLocalTeam() != Entity::getEntityTeam(base))
                {
                    EGlow = mem->read<GlowStruct>(LocalPlayer::getGlowObjects() + (Entity::getGlowIndex(base) * 0x38));
                    EGlow = SetGlowColor(EGlow, base);
                    mem->write<GlowStruct>(LocalPlayer::getGlowObjects() + (Entity::getGlowIndex(base) * 0x38), EGlow);
                }
            }
        }
    }
}

Попробуй это, должно воркать
 
keep silence
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
546
Реакции[?]
201
Поинты[?]
0
C++:
GlowStruct EGlow;

struct GlowStruct
{
    BYTE nextFreeSlot[0x4];
    BYTE entity[0x4];
    float r;
    float g;
    float b;
    float a;
    BYTE pad0[0x10];
    bool m_bRenderWhenOccluded;
    bool m_bRenderWhenUnoccluded;
    bool m_bFullBloomRender;
    int m_nFullBloomStencilTestValue;
    int glowStyle;
};

C++:
GlowStruct SetGlowColor(GlowStruct Glow, uintptr_t entity)
{
    Glow.r = 255.f;
    Glow.g = 255.f;
    Glow.b = 255.f;
    Glow.a = 255.f;
    Glow.glowStyle = 0;
    Glow.m_bRenderWhenOccluded = true;
    Glow.m_bRenderWhenUnoccluded = false;
    return Glow;
}

C++:
void cGlow()
{
    if (LocalPlayer::isInGame())
    {
        for (short int i = 0; i < 64; i++)
        {
            auto base = Entity::getEntityBase(i);
            if (base != NULL)
            {
                if (LocalPlayer::getLocalTeam() != Entity::getEntityTeam(base))
                {
                    EGlow = mem->read<GlowStruct>(LocalPlayer::getGlowObjects() + (Entity::getGlowIndex(base) * 0x38));
                    EGlow = SetGlowColor(EGlow, base);
                    mem->write<GlowStruct>(LocalPlayer::getGlowObjects() + (Entity::getGlowIndex(base) * 0x38), EGlow);
                }
            }
        }
    }
}

Попробуй это, должно воркать
О, привет) Ещё в тот день мне оцелотик тонко намекнул, что у меня старые оффсеты) Спасибо за готовую структуру с типом глова и фуллблумом!
 
Сверху Снизу