-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Переделал сурсы химеры специально для пастеров
(На трешкод внимания не обращаем, писал код по приколу)
если что, вот лимиты


лучше и не придумать конечно)))
(На трешкод внимания не обращаем, писал код по приколу)
если что, вот лимиты

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)

лучше и не придумать конечно)))