Вопрос Animfix + desync проверка

Пользователь
Статус
Оффлайн
Регистрация
6 Сен 2019
Сообщения
173
Реакции[?]
37
Поинты[?]
0
Нужен код который позволяет отображать модель которая находится на локальном сервере для того чтобы сверить анимфикс и десинк. я уже находил этот код но у меня крашит в UTIL_PlayerByIndex
 
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,967
Реакции[?]
958
Поинты[?]
19K
В класс c_base_player
C++:
__forceinline uint8_t* c_base_player::get_server_edict() {

        static uintptr_t server_addr = **(uintptr_t**)((utils::find_sig_ida(_("server.dll"), _("8B 15 ? ? ? ? 33 C9 83 7A 18 01"))) + 0x2);

        int max_clients = *(int*)((uintptr_t)server_addr + 0x18);
        int index = this->ent_index();

        if (index > 0 && max_clients >= 1) {
            if (index <= max_clients) {
                int v10 = index * 16;
                uintptr_t v11 = *(uintptr_t*)(server_addr + 96);
                if (v11) {
                    if (!((*(uintptr_t*)(v11 + v10) >> 1) & 1)) {
                        uintptr_t v12 = *(uintptr_t*)(v10 + v11 + 12);
                        if (v12) {
                            uint8_t* _return = nullptr;
                            __asm
                            {
                                pushad
                                mov ecx, v12
                                mov eax, dword ptr[ecx]
                                call dword ptr[eax + 0x14]
                                mov _return, eax
                                popad
                            }

                            return _return;
                        }
                    }
                }
            }
        }
        return nullptr;
    }
   
    void c_base_player::draw_server_hitboxes() {
        float duration = i::globalvars->m_interval_per_tick * 2.0f;

        auto server_player = get_server_edict();

        if (server_player) {
            static uintptr_t called = patterns::server_hitbox;

            __asm
            {
                pushad
                movss xmm1, duration
                push 1 //bool monoColor
                mov ecx, server_player
                call called
                popad
            }
        }
    }
В frame_render_start
g_local->draw_server_hitboxes();
 
кто читает тот умрет
Участник
Статус
Оффлайн
Регистрация
29 Июл 2019
Сообщения
696
Реакции[?]
541
Поинты[?]
154K
net_fakelag 200 не забудь вписать а то с пингом 0 бредово тестить
 
Пользователь
Статус
Оффлайн
Регистрация
6 Сен 2019
Сообщения
173
Реакции[?]
37
Поинты[?]
0
В класс c_base_player
C++:
__forceinline uint8_t* c_base_player::get_server_edict() {

        static uintptr_t server_addr = **(uintptr_t**)((utils::find_sig_ida(_("server.dll"), _("8B 15 ? ? ? ? 33 C9 83 7A 18 01"))) + 0x2);

        int max_clients = *(int*)((uintptr_t)server_addr + 0x18);
        int index = this->ent_index();

        if (index > 0 && max_clients >= 1) {
            if (index <= max_clients) {
                int v10 = index * 16;
                uintptr_t v11 = *(uintptr_t*)(server_addr + 96);
                if (v11) {
                    if (!((*(uintptr_t*)(v11 + v10) >> 1) & 1)) {
                        uintptr_t v12 = *(uintptr_t*)(v10 + v11 + 12);
                        if (v12) {
                            uint8_t* _return = nullptr;
                            __asm
                            {
                                pushad
                                mov ecx, v12
                                mov eax, dword ptr[ecx]
                                call dword ptr[eax + 0x14]
                                mov _return, eax
                                popad
                            }

                            return _return;
                        }
                    }
                }
            }
        }
        return nullptr;
    }
   
    void c_base_player::draw_server_hitboxes() {
        float duration = i::globalvars->m_interval_per_tick * 2.0f;

        auto server_player = get_server_edict();

        if (server_player) {
            static uintptr_t called = patterns::server_hitbox;

            __asm
            {
                pushad
                movss xmm1, duration
                push 1 //bool monoColor
                mov ecx, server_player
                call called
                popad
            }
        }
    }
В frame_render_start
g_local->draw_server_hitboxes();
спс большое
net_fakelag 200 не забудь вписать а то с пингом 0 бредово тестить
спасибо
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,596
Реакции[?]
605
Поинты[?]
46K
В класс c_base_player
C++:
__forceinline uint8_t* c_base_player::get_server_edict() {

        static uintptr_t server_addr = **(uintptr_t**)((utils::find_sig_ida(_("server.dll"), _("8B 15 ? ? ? ? 33 C9 83 7A 18 01"))) + 0x2);

        int max_clients = *(int*)((uintptr_t)server_addr + 0x18);
        int index = this->ent_index();

        if (index > 0 && max_clients >= 1) {
            if (index <= max_clients) {
                int v10 = index * 16;
                uintptr_t v11 = *(uintptr_t*)(server_addr + 96);
                if (v11) {
                    if (!((*(uintptr_t*)(v11 + v10) >> 1) & 1)) {
                        uintptr_t v12 = *(uintptr_t*)(v10 + v11 + 12);
                        if (v12) {
                            uint8_t* _return = nullptr;
                            __asm
                            {
                                pushad
                                mov ecx, v12
                                mov eax, dword ptr[ecx]
                                call dword ptr[eax + 0x14]
                                mov _return, eax
                                popad
                            }

                            return _return;
                        }
                    }
                }
            }
        }
        return nullptr;
    }
  
    void c_base_player::draw_server_hitboxes() {
        float duration = i::globalvars->m_interval_per_tick * 2.0f;

        auto server_player = get_server_edict();

        if (server_player) {
            static uintptr_t called = patterns::server_hitbox;

            __asm
            {
                pushad
                movss xmm1, duration
                push 1 //bool monoColor
                mov ecx, server_player
                call called
                popad
            }
        }
    }
В frame_render_start
g_local->draw_server_hitboxes();
get_server_edict можно и в лямбду засунуть, навряд-ли тебе эта поебота где либо ещё пригодится
 
Сверху Снизу