Исходник Rebuilt ClampBonesInBbox

Начинающий
Статус
Оффлайн
Регистрация
20 Янв 2018
Сообщения
574
Реакции[?]
397
Поинты[?]
62K
Как оказалось, это было не сложно...
Но тут нет фиксов которые нужны)) Поэтому, держите
Код:
void clamp_bones_in_bbox(c_cs_player* player, matrix3x4_t* matrix, int mask, float curtime) {
    auto hdr = player->get_studio_hdr();
    if (!hdr)
        return;

    auto head_bone = player->lookup_bone(XOR("head_0"));
    if (head_bone < 0)
        return;

    auto collideable = player->get_collideable();
    if (!collideable)
        return;

    auto collision_origin = collideable->get_collision_origin().z;
    auto bbox_max = collideable->get_maxs().z + collision_origin;

    auto last_update_increment = curtime - player->collision_change_time();
    if (last_update_increment < 0.2f) {
        auto approach_time = std::clamp<float>(last_update_increment * 5.f, 0.f, 1.f);

        bbox_max = ((bbox_max - player->collision_change_origin()) * approach_time) + player->collision_change_origin();
    }

    auto head_bone_origin = matrix[head_bone].get_origin();
    vec3_t pos{}, forward{}, right{}, up{};

    __patterns->weapon_shootpos.cast<float* (__thiscall*)(void*, vec3_t*)>()(player, &pos);

    math::angle_vectors(player->eye_angles(), forward, right, up);

    auto head_pos_diff = (((right.x * head_bone_origin.x) + (right.y * head_bone_origin.y))
        + (right.z * head_bone_origin.z))
        - (((head_bone_origin.y * right.y) + (head_bone_origin.x * right.x)) + (head_bone_origin.z * right.z));

    vec3_t new_bone_pos{};
    if (std::fabsf(head_pos_diff) <= 3.f) {
        new_bone_pos = head_bone_origin;
    }
    else {
        auto unk_multiplier = 0.f;

        if (head_pos_diff < 0.f)
            unk_multiplier = -1.0;
        else
            unk_multiplier = 1.0;

        auto unk_vector = (right - forward).normalized();

        auto updated_pos_z = (unk_vector.z * 3.f) * unk_multiplier;
        auto updated_pos_y = (unk_vector.x * 3.f) * unk_multiplier;
        auto updated_pos_x = (unk_vector.y * 3.f) * unk_multiplier;

        auto v21 = head_bone_origin.x - (right.x * head_pos_diff);
        auto v22 = head_bone_origin.y - (right.y * head_pos_diff);
        new_bone_pos.z = (head_bone_origin.z - (right.z * head_pos_diff)) + updated_pos_z;
        new_bone_pos.x = v21 + updated_pos_y;
        new_bone_pos.y = v22 + updated_pos_x;
    }

    if (new_bone_pos.z > (bbox_max - 4.f))
        new_bone_pos.z = bbox_max - 4.f;

    auto clamped_bones_new = vec3_t{ new_bone_pos.x - pos.x, new_bone_pos.y - pos.y, 0.f };
    if (clamped_bones_new.length() > 11.f) {
        auto normalized = (clamped_bones_new - forward).normalized();

        new_bone_pos.x = (normalized.x * 11.f) + pos.x;
        new_bone_pos.y = (normalized.y * 11.f) + pos.y;
    }

    auto pos_diff = head_bone_origin - new_bone_pos;
    if (pos_diff.valid() && pos_diff.length() < 900.f) {
        auto ankle_l_bone = player->lookup_bone(XOR("ankle_L"));
        auto ankle_r_bone = player->lookup_bone(XOR("ankle_R"));

        auto deref_hdr = *reinterpret_cast<std::uintptr_t*>(hdr);
        auto bone_chains = *(int*)(deref_hdr + 0x11C);

        if (bone_chains > 0) {
            auto ik_chain_ptr = deref_hdr + *(int*)(deref_hdr + 0x120);

            auto left_chain = 0, right_chain = 0;
            for (int i = 0; i < bone_chains; ++i) {
                auto current_chain_index = *(int*)(*(int*)(ik_chain_ptr + 12) + ik_chain_ptr + 56);

                if (ankle_l_bone == current_chain_index)
                    left_chain = ik_chain_ptr;
                else if (ankle_r_bone == current_chain_index)
                    right_chain = ik_chain_ptr;

                if (left_chain && right_chain)
                    break;

                ik_chain_ptr += 16;
            }

            auto ankle_l_pos = matrix[ankle_l_bone].get_origin();
            auto ankle_r_pos = matrix[ankle_r_bone].get_origin();

            auto legs_pos = std::min<float>(ankle_l_pos.z, ankle_r_pos.z);

            auto lookup_spine_3 = player->lookup_bone(XOR("spine_3"));
            auto unk_counter_hdr = *(int*)(deref_hdr + 0x9C);

            auto ground_entity = player->ground_entity().get().cast<c_base_entity*>();

            bool solve_ik_left = false;
            bool solve_ik_right = false;

            if (unk_counter_hdr > 0) {
                for (int i = 0; i < unk_counter_hdr; ++i) {
                    auto& bone = matrix[i];
                    auto bone_origin = bone.get_origin();

                    auto unk_hdr_pointer = *(int*)((uintptr_t)hdr + 48);
                    auto bone_mask = *(int*)(unk_hdr_pointer + 4 * i);
                    if (!(bone_mask & mask))
                        continue;

                    if (i == ankle_l_bone && left_chain && ground_entity) {
                        solve_ik_left = true;
                        continue;
                    }
                    else if (i == ankle_r_bone && right_chain && ground_entity) {
                        solve_ik_right = true;
                        continue;
                    }

                    float head_adjust = 1.0f;

                    // credits: @william to this part
                    if (ground_entity) {
                        auto bone_parent_count = *(int*)((uintptr_t)hdr + 80);

                        auto second_bone_iter = 0;
                        if (bone_parent_count > 0 && i >= 0 && lookup_spine_3 >= 0) {
                            auto studio_hdr_mat_iter = *(int*)((uintptr_t)hdr + 0x44);
                            second_bone_iter = *(int*)(studio_hdr_mat_iter + 4 * i);

                            while (second_bone_iter != lookup_spine_3 && second_bone_iter != -1)
                                second_bone_iter = *(int*)(studio_hdr_mat_iter + 4 * second_bone_iter);
                        }

                        if (second_bone_iter == -1) {
                            const float diff_correction = bone_origin.z - (head_bone_origin.z - pos_diff.z);
                            if (legs_pos == bone_origin.z) {
                                if (diff_correction - bone_origin.z >= 0.0f)
                                    head_adjust = 1.0f;
                                else
                                    head_adjust = 0.0f;
                            }
                            else {
                                const float new_head_adjust = (diff_correction - legs_pos) / (bone_origin.z - legs_pos);
                                if (new_head_adjust < 0.0f)
                                    head_adjust = 0.0f;
                                else
                                    head_adjust = fminf(new_head_adjust, 1.0f);
                            }
                        }
                    }

                    bone_origin -= (pos_diff * head_adjust);
                    bone.set_origin(bone_origin);
                }

                if (solve_ik_left) {
                    auto link_a = *(int*)(*(int*)(left_chain + 12) + left_chain + 28);
                    auto link_b = *(int*)(*(int*)(left_chain + 12) + left_chain);

                    Studio_SolveIK(player, link_a, link_b, ankle_l_bone, ankle_l_pos, matrix);
                }

                if (solve_ik_right) {
                    auto link_a = *(int*)(*(int*)(right_chain + 12) + left_chain + 28);
                    auto link_b = *(int*)(*(int*)(right_chain + 12) + left_chain);

                    Studio_SolveIK(player, link_a, link_b, ankle_r_bone, ankle_r_pos, matrix);
                }
            }
        }
    }
}

// module: client.dll; sig 53 8B DC 83 EC 08 83 E4 F0 83 C4 04 55 8B 6B 04 89 6C 24 04 8B EC 83 EC 48 56 8D
void Studio_SolveIK(c_cs_player* player, int thigh, int knee, int foot, vec3_t& target_foot, matrix3x4_t* bone_to_world) {
    __patterns->studio_solve_ik.cast<bool*(__thiscall)(c_cs_player*, int, int, int, vec3_t&, matrix3x4_t*)>()(player, thigh, knee, target_foot, bone_to_world);
}
 
Забаненный
Статус
Оффлайн
Регистрация
25 Июн 2023
Сообщения
18
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как оказалось, это было не сложно...
Но тут нет фиксов которые нужны)) Поэтому, держите
Код:
void clamp_bones_in_bbox(c_cs_player* player, matrix3x4_t* matrix, int mask, float curtime) {
    auto hdr = player->get_studio_hdr();
    if (!hdr)
        return;

    auto head_bone = player->lookup_bone(XOR("head_0"));
    if (head_bone < 0)
        return;

    auto collideable = player->get_collideable();
    if (!collideable)
        return;

    auto collision_origin = collideable->get_collision_origin().z;
    auto bbox_max = collideable->get_maxs().z + collision_origin;

    auto last_update_increment = curtime - player->collision_change_time();
    if (last_update_increment < 0.2f) {
        auto approach_time = std::clamp<float>(last_update_increment * 5.f, 0.f, 1.f);

        bbox_max = ((bbox_max - player->collision_change_origin()) * approach_time) + player->collision_change_origin();
    }

    auto head_bone_origin = matrix[head_bone].get_origin();
    vec3_t pos{}, forward{}, right{}, up{};

    __patterns->weapon_shootpos.cast<float* (__thiscall*)(void*, vec3_t*)>()(player, &pos);

    math::angle_vectors(player->eye_angles(), forward, right, up);

    auto head_pos_diff = (((right.x * head_bone_origin.x) + (right.y * head_bone_origin.y))
        + (right.z * head_bone_origin.z))
        - (((head_bone_origin.y * right.y) + (head_bone_origin.x * right.x)) + (head_bone_origin.z * right.z));

    vec3_t new_bone_pos{};
    if (std::fabsf(head_pos_diff) <= 3.f) {
        new_bone_pos = head_bone_origin;
    }
    else {
        auto unk_multiplier = 0.f;

        if (head_pos_diff < 0.f)
            unk_multiplier = -1.0;
        else
            unk_multiplier = 1.0;

        auto unk_vector = (right - forward).normalized();

        auto updated_pos_z = (unk_vector.z * 3.f) * unk_multiplier;
        auto updated_pos_y = (unk_vector.x * 3.f) * unk_multiplier;
        auto updated_pos_x = (unk_vector.y * 3.f) * unk_multiplier;

        auto v21 = head_bone_origin.x - (right.x * head_pos_diff);
        auto v22 = head_bone_origin.y - (right.y * head_pos_diff);
        new_bone_pos.z = (head_bone_origin.z - (right.z * head_pos_diff)) + updated_pos_z;
        new_bone_pos.x = v21 + updated_pos_y;
        new_bone_pos.y = v22 + updated_pos_x;
    }

    if (new_bone_pos.z > (bbox_max - 4.f))
        new_bone_pos.z = bbox_max - 4.f;

    auto clamped_bones_new = vec3_t{ new_bone_pos.x - pos.x, new_bone_pos.y - pos.y, 0.f };
    if (clamped_bones_new.length() > 11.f) {
        auto normalized = (clamped_bones_new - forward).normalized();

        new_bone_pos.x = (normalized.x * 11.f) + pos.x;
        new_bone_pos.y = (normalized.y * 11.f) + pos.y;
    }

    auto pos_diff = head_bone_origin - new_bone_pos;
    if (pos_diff.valid() && pos_diff.length() < 900.f) {
        auto ankle_l_bone = player->lookup_bone(XOR("ankle_L"));
        auto ankle_r_bone = player->lookup_bone(XOR("ankle_R"));

        auto deref_hdr = *reinterpret_cast<std::uintptr_t*>(hdr);
        auto bone_chains = *(int*)(deref_hdr + 0x11C);

        if (bone_chains > 0) {
            auto ik_chain_ptr = deref_hdr + *(int*)(deref_hdr + 0x120);

            auto left_chain = 0, right_chain = 0;
            for (int i = 0; i < bone_chains; ++i) {
                auto current_chain_index = *(int*)(*(int*)(ik_chain_ptr + 12) + ik_chain_ptr + 56);

                if (ankle_l_bone == current_chain_index)
                    left_chain = ik_chain_ptr;
                else if (ankle_r_bone == current_chain_index)
                    right_chain = ik_chain_ptr;

                if (left_chain && right_chain)
                    break;

                ik_chain_ptr += 16;
            }

            auto ankle_l_pos = matrix[ankle_l_bone].get_origin();
            auto ankle_r_pos = matrix[ankle_r_bone].get_origin();

            auto legs_pos = std::min<float>(ankle_l_pos.z, ankle_r_pos.z);

            auto lookup_spine_3 = player->lookup_bone(XOR("spine_3"));
            auto unk_counter_hdr = *(int*)(deref_hdr + 0x9C);

            auto ground_entity = player->ground_entity().get().cast<c_base_entity*>();

            bool solve_ik_left = false;
            bool solve_ik_right = false;

            if (unk_counter_hdr > 0) {
                for (int i = 0; i < unk_counter_hdr; ++i) {
                    auto& bone = matrix[i];
                    auto bone_origin = bone.get_origin();

                    auto unk_hdr_pointer = *(int*)((uintptr_t)hdr + 48);
                    auto bone_mask = *(int*)(unk_hdr_pointer + 4 * i);
                    if (!(bone_mask & mask))
                        continue;

                    if (i == ankle_l_bone && left_chain && ground_entity) {
                        solve_ik_left = true;
                        continue;
                    }
                    else if (i == ankle_r_bone && right_chain && ground_entity) {
                        solve_ik_right = true;
                        continue;
                    }

                    float head_adjust = 1.0f;

                    // credits: @william to this part
                    if (ground_entity) {
                        auto bone_parent_count = *(int*)((uintptr_t)hdr + 80);

                        auto second_bone_iter = 0;
                        if (bone_parent_count > 0 && i >= 0 && lookup_spine_3 >= 0) {
                            auto studio_hdr_mat_iter = *(int*)((uintptr_t)hdr + 0x44);
                            second_bone_iter = *(int*)(studio_hdr_mat_iter + 4 * i);

                            while (second_bone_iter != lookup_spine_3 && second_bone_iter != -1)
                                second_bone_iter = *(int*)(studio_hdr_mat_iter + 4 * second_bone_iter);
                        }

                        if (second_bone_iter == -1) {
                            const float diff_correction = bone_origin.z - (head_bone_origin.z - pos_diff.z);
                            if (legs_pos == bone_origin.z) {
                                if (diff_correction - bone_origin.z >= 0.0f)
                                    head_adjust = 1.0f;
                                else
                                    head_adjust = 0.0f;
                            }
                            else {
                                const float new_head_adjust = (diff_correction - legs_pos) / (bone_origin.z - legs_pos);
                                if (new_head_adjust < 0.0f)
                                    head_adjust = 0.0f;
                                else
                                    head_adjust = fminf(new_head_adjust, 1.0f);
                            }
                        }
                    }

                    bone_origin -= (pos_diff * head_adjust);
                    bone.set_origin(bone_origin);
                }

                if (solve_ik_left) {
                    auto link_a = *(int*)(*(int*)(left_chain + 12) + left_chain + 28);
                    auto link_b = *(int*)(*(int*)(left_chain + 12) + left_chain);

                    Studio_SolveIK(player, link_a, link_b, ankle_l_bone, ankle_l_pos, matrix);
                }

                if (solve_ik_right) {
                    auto link_a = *(int*)(*(int*)(right_chain + 12) + left_chain + 28);
                    auto link_b = *(int*)(*(int*)(right_chain + 12) + left_chain);

                    Studio_SolveIK(player, link_a, link_b, ankle_r_bone, ankle_r_pos, matrix);
                }
            }
        }
    }
}

// module: client.dll; sig 53 8B DC 83 EC 08 83 E4 F0 83 C4 04 55 8B 6B 04 89 6C 24 04 8B EC 83 EC 48 56 8D
void Studio_SolveIK(c_cs_player* player, int thigh, int knee, int foot, vec3_t& target_foot, matrix3x4_t* bone_to_world) {
    __patterns->studio_solve_ik.cast<bool*(__thiscall)(int, int, int, Vector&, matrix3x4_t*)>()(player, thigh, knee, target_foot, bone_to_world);
}
круто бесполезный ребилд...
и почему collision_scale превратился в какой то unk_multiplier это не совсем понятно...
и почему pos превратился в какой то unk_vector это тоже не совсем понятно.....
да и в целом чтобы исправить bones out of bounds
хватит и данной прекрасной темы.....
upd:
william1337 , не оправданная реакция клоуна ладно....
в целом я против miracl3 ничего не имеют но такие посты действительно бесполезны и никакой помощи людям не несут....
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
20 Янв 2018
Сообщения
574
Реакции[?]
397
Поинты[?]
62K
круто бесполезный ребилд...
и почему collision_scale превратился в какой то unk_multiplier это не совсем понятно...
и почему pos превратился в какой то unk_vector это тоже не совсем понятно.....
да и в целом чтобы исправить bones out of bounds
хватит и данной прекрасной темы.....
upd:
william1337 , не оправданная реакция клоуна ладно....
в целом я против miracl3 ничего не имеют но такие посты действительно бесполезны и никакой помощи людям не несут....
Я тебе не разработчик игры, чтобы знать, что эта переменная значит
А ставить свои названия нет смысла

P.S твой фикс лишь исправляет тот момент, когда после обновления collision bounds в костях не будет пересчета позиции, так что мне кажется фикс так себе
 
Забаненный
Статус
Оффлайн
Регистрация
25 Июн 2023
Сообщения
18
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я тебе не разработчик игры, чтобы знать, что эта переменная значит
А ставить свои названия нет смысла

P.S твой фикс лишь исправляет тот момент, когда после обновления collision bounds в костях не будет пересчета позиции, так что мне кажется фикс так себе
по другому данный момент не исправить.
функцию clamp_bones_in_bbox вызывать нужно только в ребилде серверного сетап бонеса ( если он есть конечно ) ну или же хукнуть данную прекрасную функцию.. но это ничего не исправит кроме рассинхронизации на сервере
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
правильно сетать переменные, как делает это игра( fl_col_org, fl_change_col_org_time, куртайм etc) : ненене
переписать с игры, главное чтоб было непонятно что : дададад
к слову collision origin будет всегда равен enemy->lagcomnesating_origin, который тебе собственно и нужно лагкомпнуть(реф лень искать но можешь посмотреть это так) (ориджин определенного рекорда), чтобы у тя тупо матрицу за мейн рекордом не потянуло, также тебе нужно предиктнуть флаг мейн рекорда, потому что у тебя может в этот момент изменится коллизия(особенно когда чел на земле и в приседе, то там она сильно меняется для бектрек записей в воздухе), далее определяешь на какое значение изменится коллизия, сетаешь коллизию, определяшь когда она изменится и клемпаешь кости - профит
главное тут понять для чего эта функа, а нужна она для того чтобы сделать во всех рекордах коллизии одинаковыми(как у мейн рекорда), говно тут как раз в том, что тебе нужно предиктить флаги тд тп, потому что сервер отправляет данные с задержкой
да и в целом чтобы исправить bones out of bounds
не братанчик это только правильно установит тебе коллизию на первый рекорд, да и то не факт, у тя тут функа клемпа не вызывается, а она нужна, ибо с бектреком проблемы большие будут из-за неправильных коллизий
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
25 Июн 2023
Сообщения
18
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
правильно сетать переменные, как делает это игра( fl_col_org, fl_change_col_org_time, куртайм etc) : ненене
переписать с игры, главное чтоб было непонятно что : дададад
к слову collision origin будет всегда равен enemy->lagcomnesating_origin, который тебе собственно и нужно лагкомпнуть(реф лень искать но можешь посмотреть это так) (ориджин определенного рекорда), чтобы у тя тупо матрицу за мейн рекордом не потянуло, также тебе нужно предиктнуть флаг мейн рекорда, потому что у тебя может в этот момент изменится коллизия(особенно когда чел на земле и в приседе, то там она сильно меняется для бектрек записей в воздухе), далее определяешь на какое значение изменится коллизия, сетаешь коллизию, определяшь когда она изменится и клемпаешь кости - профит
главное тут понять для чего эта функа, а нужна она для того чтобы сделать во всех рекордах коллизии одинаковыми(как у мейн рекорда), говно тут как раз в том, что тебе нужно предиктить флаги тд тп, потому что сервер отправляет данные с задержкой

не братанчик это только правильно установит тебе коллизию на первый рекорд, да и то не факт, у тя тут функа клемпа не вызывается, а она нужна, ибо с бектреком проблемы большие будут из-за неправильных коллизий
collision origin как и collision change time, not lagcompensated and not networked.......
и желаю все же изучить server.dll after 27.09.21
вместо того чтобы писать всякую бредятину о которой вы не имеете понятия....
задержку кстати можно пофиксить но видимо твоя голова не думает об этом........
и все же игра не делает чек на изменения коллизии пожалуйста блять изучите ебанный движок
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
collision origin как и collision change time, not lagcompensated and not networked.......
и желаю все же изучить server.dll after 27.09.21
вместо того чтобы писать всякую бредятину о которой вы не имеете понятия....
задержку кстати можно пофиксить но видимо твоя голова не думает об этом........
и все же игра не делает чек на изменения коллизии пожалуйста блять изучите ебанный движок
только вот что то у тебя в теме даже нету ничего backtrack-records-related-information, попробуй в ласт тик в котором с дак == 0 выстрелить при том что сам чел уже в приседе я посмотрю как ты p2cly and properly settuped ur collision сделал ты же видимо не понимаешь, что только сетнуть коллизию недостаточно..

а больше всего я посмеялся с upd_col_bounds и set_col_bounds ведь тебе даже лень было смотреть что upd_col_bounds делает тот же set_col_bounds только с определенными флагами -
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Забаненный
Статус
Оффлайн
Регистрация
25 Июн 2023
Сообщения
18
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
только вот что то у тебя в теме даже нету ничего backtrack-records-related-information, попробуй в ласт тик в котором с дак == 0 выстрелить при том что сам чел уже в приседе я посмотрю как ты p2cly and properly settuped ur collision сделал ты же видимо не понимаешь, что только сетнуть коллизию недостаточно..
что ахахах
причем тут вообще бектрек.......
то что valve corporation broken self game то это не мои проблемы собственно...
опять таки пореверси SetCollisionBounds и увидишь в том что все верно..... и твои придирки ни к чему......
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
причем тут вообще бектрек.......
посмотри в нле как косоебит матрицу бектрека лол.. в примо также, только вот он не показывает этого, там для визуалов эта штука чтобы людей не пугать
 
Забаненный
Статус
Оффлайн
Регистрация
25 Июн 2023
Сообщения
18
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
посмотри в нле как косоебит матрицу бектрека лол.. в примо также, только вот он не показывает этого, там для визуалов эта штука чтобы людей не пугать
я так понимаю ты мои слова никак не собираешься аргументировать....
а ведь только отталкиваясь на другие читы......
ладно
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
а больше всего я посмеялся с upd_col_bounds и set_col_bounds ведь тебе даже лень было смотреть что upd_col_bounds делает тот же set_col_bounds только с определенными флагами -
Пожалуйста, авторизуйтесь для просмотра ссылки.
также еще смешно что ты устанавливал переменные col_chng_org, col_chng_time etc и потом просто их не юзал, жалко, ведь они все именно имеют смысл при вызове clampbonesinbboxtheworstlchook
я так понимаю ты мои слова никак не собираешься аргументировать....
так что бля я все по факту сказал че те еще сказать то епт, код запостить чттоли :cryingcat::cryingcat::cryingcat:
а ведь только отталкиваясь на другие читы......
лол ты угараешь и что я просто непонимаю как те еще обьяснить то
и все же игра не делает чек на изменения коллизии
не делает чек
1688243317916.png
не, не делает точно
1688243331571.png
не ребят, я отвечаю она не делает
1688243370403.png
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
25 Июн 2023
Сообщения
18
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
также еще смешно что ты устанавливал переменные col_chng_org, col_chng_time etc и потом просто их не юзал, жалко, ведь они все именно имеют смысл при вызове clampbonesinbboxtheworstlchook

так что бля я все по факту сказал че те еще сказать то епт, код запостить чттоли :cryingcat::cryingcat::cryingcat:
C++:
void c_cs_player::set_collision_bounds( c_collidable* collidable, vec3_t* mins, vec3_t* maxs ) {
    // check changed mins & maxs collisions.
    {
        // func after 27.09.21
        bbox_change_callback( ... );
    }
}

void c_cs_player::bbox_change_callback( vec3_t* old_mins, vec3_t* new_mins, vec3_t* old_maxs, vec3_t* new_maxs ) {
    // set predicted cur_time & set old stuff before animating...
    get_collision_change_origin( ) = get_cmds( ) + old_maxs.z( );
    get_collision_change_time( ) = ticks_to_time( get_tick_base( ) );
}
не юзал потому что их нужно после сета ресторнуть бро
специально для тебя кусочек кода........
также еще смешно что ты устанавливал переменные col_chng_org, col_chng_time etc и потом просто их не юзал, жалко, ведь они все именно имеют смысл при вызове clampbonesinbboxtheworstlchook

так что бля я все по факту сказал че те еще сказать то епт, код запостить чттоли :cryingcat::cryingcat::cryingcat:

лол ты угараешь и что я просто непонимаю как те еще обьяснить то

не делает чек
Посмотреть вложение 252193
не, не делает точно
Посмотреть вложение 252194
не ребят, я отвечаю она не делает
Посмотреть вложение 252195
bruh u are spreading a miss information about ur shit
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
не юзал потому что их нужно после сета ресторнуть бро
после сета нужно всегда ресторить броу
специально для тебя кусочек кода........
omg :anguished: thx i pasted this into my cheat and made it so much better
ну так то соуфив это давно говорил но ладно сочтем за селфкод
 
Забаненный
Статус
Оффлайн
Регистрация
25 Июн 2023
Сообщения
18
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
Забаненный
Статус
Оффлайн
Регистрация
25 Июн 2023
Сообщения
18
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
броо чек на
if ( new_mins != old_mins || new_maxs != old_maxs )
ничего совершенно не даст тебе..... и в твоей пасте которая базируется на легендваре
после сета нужно всегда ресторить броу

omg :anguished: thx i pasted this into my cheat and made it so much better
ну так то соуфив это давно говорил но ладно сочтем за селфкод
какой селф код бро......
это код с игры....................
что ты несешь ебанат ахаха
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
какой селф код бро......
это код с игры....................
что ты несешь ебанат ахаха
ну так ты же это представляешь под своим "вот на те кусочек бро блин так бы не сливал так бы школьнику слил бы за песот рублей но на те кусочек бро ладно"
броо чек на
if ( new_mins != old_mins || new_maxs != old_maxs )
ничего совершенно не даст тебе..... и в твоей пасте которая базируется на легендваре
братанчик моя пастуля уже содержит этот ребилд (трудно это так назвать ведь надо сделать просто что я сказал но ладно, пусть будет ребилд хука) давным давно почему только на легендваре непонятно...
 
Забаненный
Статус
Оффлайн
Регистрация
25 Июн 2023
Сообщения
18
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну так ты же это представляешь под своим "вот на те кусочек бро блин так бы не сливал так бы школьнику слил бы за песот рублей но на те кусочек бро ладно"

братанчик моя пастуля уже содержит этот ребилд давным давно
опять таки где я предоставляю это под своим захочешь сам отреверсишь захочешь спастишь с темы соуфива
опять таки в моей же теме где указан fix out of bounds есть в кредитах данная прекрасная тема........ и от нее я уже отталкивался
содержит ребилд бесполезной функции ладно бро
разговор окончен
gl hf
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
опять таки где я предоставляю это под своим захочешь сам отреверсишь захочешь спастишь с темы соуфива
опять таки в моей же теме где указан fix out of bounds есть в кредитах данная прекрасная тема........ и от нее я уже отталкивался
содержит ребилд бесполезной функции ладно бро
разговор окончен
gl hf
ок братанчик я понял что ты просто поднял кипишь среди пользователь югейма, чтобы они внимание обратили на тему соуфива, а также на твой бесполезный пост, спасибо gl те тож тогда, это так мило
 
Забаненный
Статус
Оффлайн
Регистрация
25 Июн 2023
Сообщения
18
Реакции[?]
5
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ок братанчик я понял что ты просто поднял кипишь среди пользователь югейма, чтобы они внимание обратили на тему соуфива, а также на твой бесполезный пост, спасибо gl те тож тогда, это так мило
ребилд хука.......
ХАХФЫХАЫЗФАЩЫФАЫФЛАЫФО
ребилд хука........
ХАЫФШАФРАЫФО
броо ты даже не знаешь что ты ребилдишь ин гейм функцию а не хук
ты настолько отупел понимаешь сидя в интернете
бесполезный пост ладно........
99 процентов данного форума как и ты в принципе до лика немезиса не имели даже и представления как исправлять кости после 27 сентября 21 года...
 
Сверху Снизу