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

Начинающий
Статус
Оффлайн
Регистрация
4 Авг 2023
Сообщения
19
Реакции[?]
0
Поинты[?]
0
Собираюсь написать экстернал вх, но не знаю как его сделать. Есть 2 варианта: обводка игроков(она вроде как проще) или есп боксы(worldToScreen). Можете подсказать как и какие оффсеты нужны для создания первого или второго способа
 
Начинающий
Статус
Оффлайн
Регистрация
21 Дек 2018
Сообщения
383
Реакции[?]
11
Поинты[?]
2K
Если собираешься из паблика доставать сурсы и т.д. , то второй вариант вообще отпадает, т.к. никто ещё не сливал такого (там проблема с экстернал реализацией ProjectToScreen насколько я помню, давно забросил это дело). Обводку легче сделать, т.к. можно сделать всё также, как сейчас делают в интерналах.

В данном случае будут проблемы с получением акторов, т.к. опять таки экстерналы практически не выкладывают в паблик, а практически все оффсеты отличаются от тех, что в интернале (т.к. зачастую реализация другая и ты не можешь просто вызвать виртуальную функцию).
 
Забаненный
Статус
Оффлайн
Регистрация
6 Авг 2022
Сообщения
128
Реакции[?]
25
Поинты[?]
4K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
22 Сен 2020
Сообщения
106
Реакции[?]
14
Поинты[?]
12K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
6 Фев 2021
Сообщения
99
Реакции[?]
19
Поинты[?]
10K
Собираюсь написать экстернал вх, но не знаю как его сделать. Есть 2 варианта: обводка игроков(она вроде как проще) или есп боксы(worldToScreen). Можете подсказать как и какие оффсеты нужны для создания первого или второго способа
Если нужно, могу помочь с силуетами, можешь отписать в тг, но просто так тратить время не буду. Могу помочь реализовать силуеты под дма, если, конечно, имеется сей чудо
 
Забаненный
Статус
Оффлайн
Регистрация
22 Сен 2020
Сообщения
106
Реакции[?]
14
Поинты[?]
12K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
mxrz за что попкорн?я ведь все правильно написал
 
Начинающий
Статус
Оффлайн
Регистрация
4 Май 2023
Сообщения
15
Реакции[?]
4
Поинты[?]
4K
C++:
class CActorSystem {
public:

    CActor* GetActor(EntityId entityId) {

        std::uintptr_t m_actors = kmemory::read< std::uintptr_t >((uintptr_t)this + 0x30);
        std::uintptr_t m_actors_buffer = kmemory::read< std::uintptr_t >(m_actors);

        std::uintptr_t parent = kmemory::read< std::uintptr_t >(m_actors + 0x8);

        while (!kmemory::read< char >(parent + 0x19)) {

            if (kmemory::read< EntityId >(parent + 0x20) >= entityId) {
                m_actors_buffer = parent;
                parent = kmemory::read< std::uintptr_t >(parent);
            }
            else {
                parent = kmemory::read< std::uintptr_t >(parent + 0x10);
            }
        }

        if (m_actors_buffer == m_actors || entityId < kmemory::read< int >(m_actors_buffer + 0x20)) {
            m_actors_buffer = m_actors;
        }

        return m_actors_buffer == m_actors ? nullptr : kmemory::read< CActor* >(m_actors_buffer + 0x28);
    }

    CActor* GetActor(EntityId entityId, std::map< EntityId, CActor* >& map) {

        auto pActor = map.find(entityId)->second;
        return pActor != nullptr ? pActor : nullptr;
    }

    void CreateActorMap(std::map< EntityId, CActor* >& map) {

        std::uintptr_t it = 0;

        auto m_actors = kmemory::read< std::uintptr_t >((uintptr_t)this + 0x30);
        auto m_actors_buffer = kmemory::read< std::uintptr_t >(m_actors);

        while (m_actors != m_actors_buffer) {

            map.insert({ kmemory::read< EntityId >(m_actors_buffer + 0x20), kmemory::read< CActor* >(m_actors_buffer + 0x28) });

            auto m_parent = kmemory::read< std::uintptr_t >(m_actors_buffer + 0x10);
            if (kmemory::read< std::uint8_t >(m_parent + 0x19)) {

                for (it = kmemory::read< std::uintptr_t >(m_actors_buffer + 0x8);
                    !kmemory::read< std::uint8_t >(it + 0x19);
                    it = kmemory::read< std::uintptr_t >(it + 0x8)) {

                    if (m_actors_buffer != kmemory::read< std::uintptr_t >(it + 0x10)) {
                        break;
                    }

                    m_actors_buffer = it;
                }

                m_actors_buffer = it;
            }
            else {

                m_actors_buffer = kmemory::read< std::uintptr_t >(m_actors_buffer + 0x10);
                for (auto i = kmemory::read<std::uintptr_t>(m_parent);
                    !kmemory::read< std::uint8_t >(i + 0x19);
                    i = kmemory::read< std::uintptr_t >(i)) {
                    m_actors_buffer = i;
                }
            }
        }
    }
};
 
Сверху Снизу