LUA скрипт Custom Pose Params | Source

Забаненный
Статус
Оффлайн
Регистрация
4 Май 2021
Сообщения
228
Реакции[?]
39
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Переделал сурсы химеры специально для пастеров
(На трешкод внимания не обращаем, писал код по приколу)


если что, вот лимиты
1647682001940.png


code_language.lua:
local limits = {

    anim_breakers = Menu.Switch("Main", "Enable Pose Parameters", false),
    strafe_yaw = Menu.SliderInt("Limits", "[0] Strafe Yaw", 0, -180, 180),
    stand = Menu.SliderFloat("Limits", "[1] Stand", 0, 0, 1),
    lean_yaw = Menu.SliderInt("Limits", "[2] Lean Yaw", 0, -180, 180),
    speed = Menu.SliderFloat("Limits", "[3] Speed", 0, 0, 1),
    ladder_yaw = Menu.SliderFloat("Limits", "[4] Ladder Yaw", 0, -180, 180),
    ladder_speed = Menu.SliderFloat("Limits", "[5] Ladder Speed", 0, 0, 1),
    jump_fall = Menu.SliderFloat("Limits", "[6] Jump Fall", 0, 0, 1),
    move_yaw = Menu.SliderFloat("Limits", "[7] Move Yaw", 0, -180, 180),
    move_blend_crouch = Menu.SliderFloat("Limits", "[8] Move Blend Crouch", 0, 0, 1),
    move_blend_walk = Menu.SliderFloat("Limits", "[9] Move Blend Walk", 0, 0, 1),
    move_blend_run = Menu.SliderFloat("Limits", "[10] Move Blend Run", 0, 0, 1),
    body_yaw = Menu.SliderFloat("Limits", "[11] Body Yaw", 0, -60, 60),
    body_pitch = Menu.SliderFloat("Limits", "[12] Body Pitch", 0, -90, 90),
    aim_blend_stand_idle = Menu.SliderFloat("Limits", "[13] Aim Blend Stand Idle", 0, 0, 1),
    aim_blend_stand_walk = Menu.SliderFloat("Limits", "[14] Aim Blend Stand Walk", 0, 0, 1),
    aim_blend_stand_run  = Menu.SliderFloat("Limits", "[15] Aim Blend Stand Idle", 0, 0, 1),
    aim_blend_crouch_idle = Menu.SliderFloat("Limits", "[16] Aim Blend Crouch Idle", 0, 0, 1),
    aim_blend_crouch_walk = Menu.SliderFloat("Limits", "[17] Aim Blend Crouch Walk", 0, 0, 1),
    death_yaw = Menu.SliderFloat("Limits", "[18] Death Yaw", 0, -180, 180.),



}

    visibility = function()

        limits.strafe_yaw:SetVisible(limits.anim_breakers:Get())
        limits.stand:SetVisible(limits.anim_breakers:Get())
        limits.lean_yaw:SetVisible(limits.anim_breakers:Get())
        limits.speed:SetVisible(limits.anim_breakers:Get())
        limits.ladder_yaw:SetVisible(limits.anim_breakers:Get())
        limits.ladder_speed:SetVisible(limits.anim_breakers:Get())
        limits.jump_fall:SetVisible(limits.anim_breakers:Get())
        limits.move_yaw:SetVisible(limits.anim_breakers:Get())
        limits.move_blend_crouch:SetVisible(limits.anim_breakers:Get())
        limits.move_blend_walk:SetVisible(limits.anim_breakers:Get())
        limits.move_blend_run:SetVisible(limits.anim_breakers:Get())
        limits.body_yaw:SetVisible(limits.anim_breakers:Get())
        limits.body_pitch:SetVisible(limits.anim_breakers:Get())
        limits.aim_blend_stand_idle:SetVisible(limits.anim_breakers:Get())
        limits.aim_blend_stand_walk:SetVisible(limits.anim_breakers:Get())
        limits.aim_blend_stand_run:SetVisible(limits.anim_breakers:Get())
        limits.aim_blend_crouch_idle:SetVisible(limits.anim_breakers:Get())
        limits.aim_blend_crouch_walk:SetVisible(limits.anim_breakers:Get())
        limits.death_yaw:SetVisible(limits.anim_breakers:Get())
    end
    visibility()
    limits.anim_breakers:RegisterCallback(visibility)

local animation_breaker,ffi_handler = {}, {}
ffi.cdef[[

    typedef struct {
        uint8_t r;
        uint8_t g;
        uint8_t b;
        uint8_t a;
    } color_struct_t;

    typedef void (__cdecl* console_color_print)(void*,const color_struct_t&, const char*, ...);

    typedef float*(__thiscall* bound)(void*);

    typedef void*(__thiscall* c_entity_list_get_client_entity_t)(void*, int);
    typedef void*(__thiscall* c_entity_list_get_client_entity_from_handle_t)(void*, uintptr_t);

    struct pose_params_t {
        char pad[8];
        float     m_flStart;
        float     m_flEnd;
        float     m_flState;
    };

    bool PlaySound(const char *pszSound, void *hmod, uint32_t fdwSound);
]]

ffi_handler.bind_argument = function(fn, arg)
    return function(...)
        return fn(arg, ...)
    end
end




ffi_handler.animstate_offset = 0x9960
ffi_handler.interface_type = ffi.typeof("uintptr_t**")

local pose_parameter_pattern = "55 8B EC 8B 45 08 57 8B F9 8B 4F 04 85 C9 75 15"
ffi_handler.get_pose_parameters = ffi.cast( "struct pose_params_t*(__thiscall* )( void*, int )", Utils.PatternScan( "client.dll", pose_parameter_pattern))

ffi_handler.i_client_entity_list = ffi.cast(ffi_handler.interface_type, Utils.CreateInterface("client.dll", "VClientEntityList003"))
ffi_handler.get_client_entity = ffi_handler.bind_argument(ffi.cast("c_entity_list_get_client_entity_t", ffi_handler.i_client_entity_list[0][3]), ffi_handler.i_client_entity_list)

animation_breaker.cache = {}
animation_breaker.set_params = function(player_ptr, layer, start_val, end_val)
    player_ptr = ffi.cast("unsigned int", player_ptr)
    if player_ptr == 0x0 then
        return false
    end

    local studio_hdr = ffi.cast("void**", player_ptr + 0x2950)[0]
    if studio_hdr == nil then
        return false
    end

    local pose_params = ffi_handler.get_pose_parameters(studio_hdr, layer)
    if pose_params == nil or pose_params == 0x0 then
        return
    end

    if animation_breaker.cache[layer] == nil then
        animation_breaker.cache[layer] = {}

        animation_breaker.cache[layer].m_flStart = pose_params.m_flStart
        animation_breaker.cache[layer].m_flEnd = pose_params.m_flEnd

        animation_breaker.cache[layer].m_flState = pose_params.m_flState

        animation_breaker.cache[layer].installed = false
        return true
    end

    if start_val ~= nil and not animation_breaker.cache[layer].installed then

        pose_params.m_flStart   = start_val
        pose_params.m_flEnd     = end_val

        pose_params.m_flState   = (pose_params.m_flStart + pose_params.m_flEnd) / 2

        animation_breaker.cache[layer].installed = true
        return true
    end

    if animation_breaker.cache[layer].installed then

        pose_params.m_flStart   = animation_breaker.cache[layer].m_flStart
        pose_params.m_flEnd     = animation_breaker.cache[layer].m_flEnd

        pose_params.m_flState   = animation_breaker.cache[layer].m_flState

        animation_breaker.cache[layer].installed = false

        return true
    end

    return false
end

animation_breaker.handle_prediction = function(cmd)
    local local_player = ffi_handler.get_client_entity(EngineClient.GetLocalPlayer())
    if local_player == nil then
        return
    end

    local local_player_addr = ffi.cast("unsigned int", local_player)
    if local_player_addr == 0x0 then
        return
    end

    local animstate = ffi.cast( "void**", local_player_addr + ffi_handler.animstate_offset)[0]
    if animstate == nil then
        return
    end

    animstate = ffi.cast("unsigned int", animstate)
    if animstate == 0x0 then
        return
    end

    local landing_anim = ffi.cast("bool*", animstate + 0x109)[0]
    if landing_anim == nil then
        return
    end

    if limits.anim_breakers:Get() then
    animation_breaker.set_params(local_player, 0, limits.strafe_yaw:Get(), limits.strafe_yaw:Get() -0.1)
    animation_breaker.set_params(local_player, 1, limits.stand:Get(), limits.stand:Get() -0.1)
    animation_breaker.set_params(local_player, 2, limits.lean_yaw:Get(), limits.lean_yaw:Get() -0.1)
    animation_breaker.set_params(local_player, 3, limits.speed:Get(), limits.speed:Get() -0.1)
    animation_breaker.set_params(local_player, 4, limits.ladder_yaw:Get(), limits.ladder_yaw:Get() -0.1)
    animation_breaker.set_params(local_player, 5, limits.ladder_speed:Get(), limits.ladder_speed:Get() -0.1)
    animation_breaker.set_params(local_player, 6, limits.jump_fall:Get(), limits.jump_fall:Get() -0.1)
    animation_breaker.set_params(local_player, 7, limits.move_yaw:Get(), limits.move_yaw:Get() -0.1)
    animation_breaker.set_params(local_player, 8, limits.move_blend_crouch:Get(), limits.move_blend_crouch:Get() -0.1)
    animation_breaker.set_params(local_player, 9, limits.move_blend_walk:Get(), limits.move_blend_walk:Get() -0.1)
    animation_breaker.set_params(local_player, 10, limits.move_blend_run:Get(),limits.move_blend_run:Get() -0.1)
    animation_breaker.set_params(local_player, 11, limits.body_yaw:Get(), limits.body_yaw:Get() -0.1)
    animation_breaker.set_params(local_player, 12, limits.body_pitch:Get(), limits.body_pitch:Get() -0.1)
    animation_breaker.set_params(local_player, 13, limits.aim_blend_stand_idle:Get(), limits.aim_blend_stand_idle:Get() -0.1)
    animation_breaker.set_params(local_player, 14, limits.aim_blend_stand_walk:Get(), limits.aim_blend_stand_walk:Get() -0.1)
    animation_breaker.set_params(local_player, 15, limits.aim_blend_stand_run:Get(), limits.aim_blend_stand_run:Get() -0.1)
    animation_breaker.set_params(local_player, 16, limits.aim_blend_crouch_idle:Get(), limits.aim_blend_crouch_idle:Get() -0.1)
    animation_breaker.set_params(local_player, 17, limits.aim_blend_crouch_walk:Get(), limits.aim_blend_crouch_walk:Get() -0.1)
    animation_breaker.set_params(local_player, 18, limits.death_yaw:Get(), limits.death_yaw:Get() -0.1)
    end

end

animation_breaker.handle_cmove = function()

    local local_player = ffi_handler.get_client_entity(EngineClient.GetLocalPlayer())

    if local_player == nil then
        return
    end

    for k, v in pairs(animation_breaker.cache) do
        animation_breaker.set_params(local_player, k)
    end

end

animation_breaker.on_destroy = function()

    local local_player = ffi_handler.get_client_entity(EngineClient.GetLocalPlayer())

    if local_player == nil then
        return
    end

    for k, v in pairs(animation_breaker.cache) do
        animation_breaker.set_params(local_player, k)
    end

end

Cheat.RegisterCallback("createmove", animation_breaker.handle_cmove)
Cheat.RegisterCallback("prediction", animation_breaker.handle_prediction)
Cheat.RegisterCallback("destroy", animation_breaker.on_destroy)
1647682057246.png
лучше и не придумать конечно)))
 
Похожие темы
Сверху Снизу