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

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


пример использвания: вызов instance в конце create_move, вызовы в хуках upd_clientside_anims, setup_bones, делать reset_data() на раундстарте(hooked_events)
local_anims.cpp:
Expand Collapse Copy
#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:
Expand Collapse Copy
#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:
Expand Collapse Copy
_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:
Expand Collapse Copy
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));

            }
 
Последнее редактирование:
все что я перечислил впринципе достаточно несложно пофиксить бтв, но мне лень, потому что не нравится когда десинк мой гфи смещает
 
what is ur discord?
 
its not real animfix?
 
  • Мне нравится
Реакции: mj12
А кто мисматч хитбоксов фиксить будет?
Вот норм:
mutiny_pw_2.png


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

20230319041607_1.jpg
 
А кто мисматч хитбоксов фиксить будет?
Вот норм:
Посмотреть вложение 242122

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

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

ваще тут бы я по-минимуму пофиксил бы еще update_collision_bounds
 
  • Мне нравится
Реакции: mj12
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Хватит насиловать лв вы заебали:coldsideRage:
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
привет , можешь свой тг дать? есть предложение, заплачу деньги
 
Ну так, то да, но тогда зачем ты лв тогда продаешь?
Посмотреть вложение 242136
Ну у него куча паст лв
я уже забросил проект и перешёл в другую игру :)
а вообще я хочу нахуй читы забросить, потому что на c++ можно сделать столько всего, но я нахуя то делаю читы
18 февраля прошлый месяц же, попродавал, и кинул всех?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ну у него куча паст лв

18 февраля прошлый месяц же, попродавал, и кинул всех?
я сурсы чита отдал тем кто купил подписку
я считаю это хорошая компенсация
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
дадада, у мя ваще видел что я делаю, я тока сетаю углы и обновляю, там фиксов нету, но возможно только если в setup_bones_rebuild кое чо есть, но это уже совсем другая история, кст без хука клемпбонеса такого не будет) по крайней мере на енемисах

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

C++:
Expand Collapse Copy
player->update_collision_bounds( );
player->set_collision_bounds( obb_mins, obb_maxs );
 
hhafhshsahfsahHDFJSJSAJFSAFAJ
ЧТО ТЫ СОБРАЛСЯ ТАМ ФИКСИТЬ ДРУЖИЩЕ
СОВЕТУЮ В ЦЕЛОМ ПОСМОТРЕТЬ ЧТО ВКЛЮЧАЕТСЯ В СЕБЯ ФУНКЦИЯ UPDATE_COLLISION_BOUNDS
а так что бы в целом кости свои пофиксить
нужно сторнуть collisionchangetime/collisionchangeorigin
в функции set_collision_bounds после обновлять коллизию
example..

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