- Статус
 - Оффлайн
 
- Регистрация
 - 4 Май 2021
 
- Сообщения
 - 228
 
- Реакции
 - 39
 
		Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
	
Переделал сурсы химеры специально для пастеров
(На трешкод внимания не обращаем, писал код по приколу)
если что, вот лимиты
		
		
	
	
		
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
	
лучше и не придумать конечно)))
				
			(На трешкод внимания не обращаем, писал код по приколу)
если что, вот лимиты
			
				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)
	лучше и не придумать конечно)))