Исходник Local animfix for lw [not full]

like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
баги : неправильное отображение угла при использовании десинка, советую улучшить инициализацию, вам в дз будет это пофиксить, какой-то странный лин при взятии полуавтоматов, возможно у мя там кое какой хук это делает, но неважно, тоже пофиксите, однозначно это будет лучше деф лв. если честно это не самый правильный обновлять локал, как это делаю я, но да ладно, тем более это всего лишь визуальное восприятие.
видео, как работают -
Пожалуйста, авторизуйтесь для просмотра ссылки.


пример использвания: вызов instance в конце create_move, вызовы в хуках upd_clientside_anims, setup_bones, делать reset_data() на раундстарте(hooked_events)
local_anims.cpp:
#include "setup_bones.h"
#include "local_animations.h"
#include "../misc/misc.h"
void c_local_anims::instance(CUserCmd* m_pcmd) {
    //set player angles
    g_ctx.local()->m_angVisualAngles() = m_fake_angles; //fake angles
    g_ctx.local()->m_angVisualAngles().z = 0.0f;
    //update info about player for this tick
    g_ctx.globals.updating_animation = true;
    g_ctx.local()->update_clientside_animation();
    g_ctx.globals.updating_animation = false;
    //build new data on packet
    if (g_ctx.send_packet) {
        g_ctx.local()->setup_bones_rebuild(local_data.m_main_bones.data(), BONE_USED_BY_ANYTHING);
        //move matrix
        for (int i = 0; i < MAXSTUDIOBONES; i++)
            local_data.m_bone_origins[i] = g_ctx.local()->GetAbsOrigin() - local_data.m_main_bones[i].GetOrigin();
    }
}
bool c_local_anims::get_cached_mat(matrix3x4_t* matrix) {
    return std::memcpy(matrix, local_data.m_main_bones.data(), sizeof(matrix3x4_t) * g_ctx.local()->m_CachedBoneData().Count());
}
void c_local_anims::on_update_clientside() {
    for (int i = 0; i < MAXSTUDIOBONES; i++)
        local_data.m_main_bones[i].SetOrigin(g_ctx.local()->GetAbsOrigin() - local_data.m_bone_origins[i]);
    //copy built matrix
    std::memcpy(g_ctx.local()->m_CachedBoneData().Base(), local_data.m_main_bones.data(), sizeof(matrix3x4_t) * g_ctx.local()->m_CachedBoneData().Count());
    return g_ctx.local()->AttachmentHelper(); //fix attachments (flying weapon)
}
local_anims.h:
#pragma once
#include "..\..\..\includes.hpp"

class c_local_anims
{
private:

    struct
    {
        std::array < matrix3x4_t, MAXSTUDIOBONES > m_main_bones;
        std::array < Vector, MAXSTUDIOBONES > m_bone_origins;

    } local_data;

public:
    void instance(CUserCmd* m_pcmd);
    bool get_cached_mat(matrix3x4_t* matrix);
    void on_update_clientside();

    Vector m_fake_angles = Vector(0, 0, 0);
    Vector m_real_angles = Vector(0, 0, 0);
    Vector m_stored_angles = Vector(0, 0, 0);

    void reset_data()
    {
        local_data.m_main_bones = { };
        local_data.m_bone_origins.fill(Vector(0, 0, 0));

    }

};

inline  c_local_anims* g_local_anims = new c_local_anims();
пример вызова в upd_clientside_anims
full clientside anims hook:
_declspec(noinline)void hooks::updateclientsideanimation_detour(player_t* player)
{
    if (!player->valid(false, true))
        return ((UpdateClientSideAnimationFn)original_updateclientsideanimation)(player);

    if (player == g_ctx.local())
        g_local_anims->on_update_clientside();

    if (g_ctx.globals.updating_animation)
        return ((UpdateClientSideAnimationFn)original_updateclientsideanimation)(player);
}
пример вызова setup_bones
setup_bones part:
if (g_ctx.globals.setuping_bones)
                result = ((SetupBonesFn)original_setupbones)(ecx, bone_world_out, max_bones, bone_mask, current_time);
            else if (g_cfg.legitbot.enabled && player != g_ctx.local())
                result = ((SetupBonesFn)original_setupbones)(ecx, bone_world_out, max_bones, bone_mask, current_time);
            else if (!g_ctx.local()->is_alive())
                result = ((SetupBonesFn)original_setupbones)(ecx, bone_world_out, max_bones, bone_mask, current_time);
            else if (!player->m_CachedBoneData().Count())
                result = ((SetupBonesFn)original_setupbones)(ecx, bone_world_out, max_bones, bone_mask, current_time);
            else if (bone_world_out) {
                if (player == g_ctx.local())
                    return g_local_anims->get_cached_mat(bone_world_out);
                else
                    memcpy(bone_world_out, player->m_CachedBoneData().Base(), player->m_CachedBoneData().Count() * sizeof(matrix3x4_t));

            }
 
Последнее редактирование:
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
все что я перечислил впринципе достаточно несложно пофиксить бтв, но мне лень, потому что не нравится когда десинк мой гфи смещает
 
anonymous
Участник
Статус
Оффлайн
Регистрация
18 Окт 2022
Сообщения
608
Реакции[?]
216
Поинты[?]
144K
А кто мисматч хитбоксов фиксить будет?
Вот норм:
mutiny_pw_2.png

И как в лв стало после того как valve вокруг BuildTransformations похимичили:

20230319041607_1.jpg
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
А кто мисматч хитбоксов фиксить будет?
Вот норм:
Посмотреть вложение 242122

И как в лв стало после того как valve вокруг BuildTransformations похимичили:

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

ваще тут бы я по-минимуму пофиксил бы еще update_collision_bounds
 
axcord.ws
Забаненный
Статус
Оффлайн
Регистрация
8 Апр 2021
Сообщения
178
Реакции[?]
30
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Хватит насиловать лв вы заебали:coldsideRage:
 
axcord.ws
Забаненный
Статус
Оффлайн
Регистрация
8 Апр 2021
Сообщения
178
Реакции[?]
30
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
🍫
Участник
Статус
Оффлайн
Регистрация
13 Ноя 2020
Сообщения
1,230
Реакции[?]
181
Поинты[?]
71K
Ну так, то да, но тогда зачем ты лв тогда продаешь?
Посмотреть вложение 242136
Ну у него куча паст лв
я уже забросил проект и перешёл в другую игру :)
а вообще я хочу нахуй читы забросить, потому что на c++ можно сделать столько всего, но я нахуя то делаю читы
18 февраля прошлый месяц же, попродавал, и кинул всех?
 
axcord.ws
Забаненный
Статус
Оффлайн
Регистрация
8 Апр 2021
Сообщения
178
Реакции[?]
30
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ну у него куча паст лв

18 февраля прошлый месяц же, попродавал, и кинул всех?
я сурсы чита отдал тем кто купил подписку
я считаю это хорошая компенсация
 
axcord.ws
Забаненный
Статус
Оффлайн
Регистрация
8 Апр 2021
Сообщения
178
Реакции[?]
30
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
11 Мар 2023
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
дадада, у мя ваще видел что я делаю, я тока сетаю углы и обновляю, там фиксов нету, но возможно только если в setup_bones_rebuild кое чо есть, но это уже совсем другая история, кст без хука клемпбонеса такого не будет) по крайней мере на енемисах

ваще тут бы я по-минимуму пофиксил бы еще update_collision_bounds
hhafhshsahfsahHDFJSJSAJFSAFAJ
ЧТО ТЫ СОБРАЛСЯ ТАМ ФИКСИТЬ ДРУЖИЩЕ
СОВЕТУЮ В ЦЕЛОМ ПОСМОТРЕТЬ ЧТО ВКЛЮЧАЕТСЯ В СЕБЯ ФУНКЦИЯ UPDATE_COLLISION_BOUNDS
а так что бы в целом кости свои пофиксить
нужно сторнуть collisionchangetime/collisionchangeorigin
в функции set_collision_bounds после обновлять коллизию
example..

C++:
player->update_collision_bounds( );
player->set_collision_bounds( obb_mins, obb_maxs );
 
like amiri in my mind
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2022
Сообщения
308
Реакции[?]
54
Поинты[?]
1K
hhafhshsahfsahHDFJSJSAJFSAFAJ
ЧТО ТЫ СОБРАЛСЯ ТАМ ФИКСИТЬ ДРУЖИЩЕ
СОВЕТУЮ В ЦЕЛОМ ПОСМОТРЕТЬ ЧТО ВКЛЮЧАЕТСЯ В СЕБЯ ФУНКЦИЯ UPDATE_COLLISION_BOUNDS
а так что бы в целом кости свои пофиксить
нужно сторнуть collisionchangetime/collisionchangeorigin
в функции set_collision_bounds после обновлять коллизию
example..

C++:
player->update_collision_bounds( );
player->set_collision_bounds( obb_mins, obb_maxs );
я сказал related to this фиксить надо, ты неправильно понял
 
Сверху Снизу