Начинающий
- Статус
- Оффлайн
- Регистрация
- 12 Фев 2022
- Сообщения
- 7
- Реакции
- 0
C:
local render = {
line = function(x,y,x1,y1,color)
Render.Line(Vector2.new(x,y),Vector2.new(x1,y1),color)
end,
polygon = function(x1,y1,x2,y2,x3,y3,color)
Render.PolyFilled(color, Vector2.new(x1,y1), Vector2.new(x2,y2), Vector2.new(x3,y3))
end,
box = function(x,y,w,h,color,rounding)
Render.Box(Vector2.new(x,y), Vector2.new(x+w,y+h), color, rounding == nil and 0 or rounding)
end,
box_filled = function(x,y,w,h,color,rounding)
Render.BoxFilled(Vector2.new(x,y), Vector2.new(x+w,y+h), color, rounding == nil and 0 or rounding)
end,
gradient_box_filled = function(x,y,w,h,horizontal,color,color2)
Render.GradientBoxFilled(Vector2.new(x,y), Vector2.new(x+w,y+h),color,horizontal and color2 or color,horizontal and color or color2,color2)
end,
string = function(x,y,cen,string,color,TYPE,font,fontsize)
if TYPE == 0 then
Render.Text(string, Vector2.new(x,y), color, fontsize,font,false,cen)
elseif TYPE == 1 then
Render.Text(string, Vector2.new(x+1,y+1), Color.new(0.1,0.1,0.1,color.a), fontsize,font,false,cen)
Render.Text(string, Vector2.new(x,y), color, fontsize,font,false,cen)
elseif TYPE == 2 then
Render.Text(string, Vector2.new(x,y), color, fontsize,font,true,cen)
end
end,
circle = function(x,y,rad,start,endd,color,seg,th)
Render.Circle(Vector2.new(x,y), rad, seg, color,th or 0,start,endd)
end,
text_size = function(string,font,fontsize)
return Render.CalcTextSize(string,fontsize,font)
end,
world_to_screen_p = function(x,y,z)
return Render.WorldToScreen(Vector.new(x,y,z))
end,
world_to_screen_v = function(vec3)
return Render.WorldToScreen(vec3)
end,
blur = function(x,y,color,rounding)
Render.Blur(Vector2.new(x,y),Vector2.new(x+w,y+h), color, rounding)
end
}
local path = {
thirdperson = Menu.FindVar('Visuals','View','Thirdperson','Enable Thirdperson'),
dt = Menu.FindVar('Aimbot','Ragebot','Exploits','Double Tap'),
os = Menu.FindVar('Aimbot','Ragebot','Exploits','Hide Shots'),
color = Menu.ColorEdit('Holo Hud','Color',Color.RGBA(255,255,255,255))
}
local global_functions = {
get_desync = function()
return math.abs(math.max(-60, math.min(60, math.floor((EntityList.GetLocalPlayer():GetProp("m_flPoseParameter")[12] or 0)*120-60+0.5, 1))))
end,
alive = function()
if EntityList.GetLocalPlayer() == nil then
return false
else
if EntityList.GetLocalPlayer():GetProp('m_iHealth') > 0 then
return true
else
return false
end
end
end,
lerp = function(time,a,b)
return a * (1-time) + b * time
end
}
local fonts = {
pixel = Render.InitFont('Smallest Pixel-7',10),
verdana = Render.InitFont('Verdana',12)
}
ffi_handler = {}
ffi.cdef[[
typedef struct {
float x;
float y;
float z;
} vec3_struct;
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);
typedef int(__thiscall* c_weapon_get_muzzle_attachment_index_first_person_t)(void*, void*);
typedef bool(__thiscall* c_entity_get_attachment_t)(void*, int, vec3_struct*);
]]
ffi_handler.bind_argument = function(fn, arg) return function(...) return fn(arg, ...) end end
ffi_handler.interface_type = ffi.typeof("uintptr_t**")
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)
local vars = {
anim_x_stand = 0,
anim_y_stand = 0,
default_width = 170,
default_height = 0,
anim_alpha_stand = 0,
anim_y_os = 0,
anim_line = 0,
anim_width_sp = 0
}
GetMuzzlePos = function()
local me = EntityList.GetLocalPlayer()
if global_functions.alive() ~= true then return end
local my_address = ffi_handler.get_client_entity(me:EntIndex())
if not my_address then return end
local my_weapon_handle = me:GetProp("m_hActiveWeapon")
local my_weapon = EntityList.GetClientEntityFromHandle(my_weapon_handle)
if not my_weapon then return end
local my_weapon_address = ffi_handler.get_client_entity(my_weapon:EntIndex())
if not my_weapon_address then return end
local my_viewmodel_handle = me:GetProp("m_hViewModel[0]")
local my_viewmodel = EntityList.GetClientEntityFromHandle(my_viewmodel_handle)
if not my_viewmodel then return end
local my_viewmodel_addres = ffi_handler.get_client_entity(my_viewmodel:EntIndex())
if not my_viewmodel_addres then return end
local viewmodel_vtbl = ffi.cast(ffi_handler.interface_type, my_viewmodel_addres)[0]
local weapon_vtbl = ffi.cast(ffi_handler.interface_type, my_weapon_address)[0]
local get_viewmodel_attachment_fn = ffi.cast("c_entity_get_attachment_t", viewmodel_vtbl[84])
local get_muzzle_attachment_index_fn = ffi.cast("c_weapon_get_muzzle_attachment_index_first_person_t", weapon_vtbl[468])
local muzzle_attachment_index = get_muzzle_attachment_index_fn(my_weapon_address, my_viewmodel_addres)
local ret = ffi.new("vec3_struct[1]")
local state = get_viewmodel_attachment_fn(my_viewmodel_addres, muzzle_attachment_index, ret)
local final_pos = Vector.new(ret[0].x, ret[0].y, ret[0].z)
return {state = state,pos = final_pos}
end
Cheat.RegisterCallback('draw',function()
if global_functions.alive() ~= true then return end
local body_yaw = global_functions.get_desync()
local color = path.color:Get()
local muzzle_pos = Render.WorldToScreen(GetMuzzlePos().pos)
if path.thirdperson:Get() == false and muzzle_pos.x < EngineClient.GetScreenSize().x and muzzle_pos.y < EngineClient.GetScreenSize().y then
vars.anim_x_stand = global_functions.lerp(GlobalVars.frametime * 8,vars.anim_x_stand, muzzle_pos.x)
vars.anim_y_stand = global_functions.lerp(GlobalVars.frametime * 8,vars.anim_y_stand, muzzle_pos.y)
vars.anim_alpha_stand = global_functions.lerp(GlobalVars.frametime * 22,vars.anim_alpha_stand, 1)
else
vars.anim_alpha_stand = global_functions.lerp(GlobalVars.frametime * 22,vars.anim_alpha_stand, 0)
end
if path.dt:Get() == true then
vars.default_height = global_functions.lerp(GlobalVars.frametime * 8,vars.default_height, 78)
vars.anim_y_os = global_functions.lerp(GlobalVars.frametime * 8,vars.anim_y_os, 0)
vars.anim_line = global_functions.lerp(GlobalVars.frametime * 8,vars.anim_line, 75)
else
vars.default_height = global_functions.lerp(GlobalVars.frametime * 8,vars.default_height, 65)
vars.anim_y_os = global_functions.lerp(GlobalVars.frametime * 8,vars.anim_y_os, -15)
vars.anim_line = global_functions.lerp(GlobalVars.frametime * 8,vars.anim_line, 85)
end
vars.anim_width_sp = global_functions.lerp(GlobalVars.frametime * 4,vars.anim_width_sp, (26 / 60) * body_yaw)
local add_y = 0
local add_x = 0
local add_line_x = 100
render.box_filled(vars.anim_x_stand + 100 + add_x, vars.anim_y_stand - 150 + add_y, vars.default_width, vars.default_height,Color.RGBA(15,15,15,math.floor(100 * vars.anim_alpha_stand)))
render.box_filled(vars.anim_x_stand + 100 + add_x, vars.anim_y_stand - 150 + add_y, vars.default_width, 2,Color.new(color.r,color.g,color.b,vars.anim_alpha_stand))
render.line(muzzle_pos.x, muzzle_pos.y, vars.anim_x_stand + add_line_x + add_x, vars.anim_y_stand - vars.anim_line + add_y,Color.new(1,1,1,( 125 * vars.anim_alpha_stand)/255))
render.string(vars.anim_x_stand + 107 + add_x, vars.anim_y_stand - 143 + add_y, false,'ANTI-AIMBOT DEBUG',Color.new(1,1,1,vars.anim_alpha_stand),2,fonts.pixel,10)
local color_fake = Color.RGBA(math.floor(170+(154-186)*body_yaw/60),math.floor(0 + (255 - 0) * body_yaw / 60),math.floor(16 + (0 - 16) * body_yaw / 60),255)
render.gradient_box_filled(vars.anim_x_stand + 107 + add_x, vars.anim_y_stand - 125 + add_y - 4, 2, 18 / 2,false,Color.new(color_fake.r,color_fake.g,color_fake.b,0),Color.new(color_fake.r,color_fake.g,color_fake.b,vars.anim_alpha_stand))
render.gradient_box_filled(vars.anim_x_stand + 107 + add_x, vars.anim_y_stand - 125 + add_y + 18 / 2 - 4, 2, 18 / 2,false,Color.new(color_fake.r,color_fake.g,color_fake.b,vars.anim_alpha_stand),Color.new(color_fake.r,color_fake.g,color_fake.b,0))
local f_text = 'FAKE (' .. body_yaw .. '°)'
render.string(vars.anim_x_stand + 115 + add_x, vars.anim_y_stand - 122 + add_y - 4, false, f_text,Color.new(1,1,1,vars.anim_alpha_stand),0,fonts.verdana,12)
render.string(vars.anim_x_stand + 107 + add_x, vars.anim_y_stand - 102 + add_y, false,'SP:',Color.new(1,1,1,vars.anim_alpha_stand),2,fonts.pixel,10)
render.box_filled(vars.anim_x_stand + 123 + add_x, vars.anim_y_stand - 102 + add_y + 2, 28, 7,Color.RGBA(15,15,15,math.floor((100*vars.anim_alpha_stand))))
render.box_filled(vars.anim_x_stand + 123 + 28 + 5 + add_x, vars.anim_y_stand - 102 + add_y + 2, 28, 7,Color.RGBA(15,15,15,math.floor((100*vars.anim_alpha_stand))))
if AntiAim.GetInverterState() == false then
render.box_filled(vars.anim_x_stand + 124 + add_x, vars.anim_y_stand - 102 + add_y + 3, vars.anim_width_sp,5,Color.new(color.r,color.g,color.b,vars.anim_alpha_stand))
else
render.box_filled(vars.anim_x_stand + 124 + 28 + 5 + add_x, vars.anim_y_stand - 102 + 3 + add_y, vars.anim_width_sp, 5,Color.new(color.r,color.g,color.b,vars.anim_alpha_stand))
end
local realtime = GlobalVars.realtime % 3
local alpha = math.floor(math.sin(realtime*4)*(255/2-1)+255/2)
if path.dt:Get() == true then
render.string(vars.anim_x_stand + 107 + add_x, vars.anim_y_stand - 88 + add_y,false,'SHIFTING TICKBASE',Color.new(1,1,1,(alpha/255)*vars.anim_alpha_stand),2,fonts.pixel,10)
end
local state_os = (path.os:Get() == true and 'ON' or 'OFF')
local os_color = (path.os:Get() == true and Color.new(0,1,0,vars.anim_alpha_stand) or Color.new(1,0,0,vars.anim_alpha_stand))
render.string(vars.anim_x_stand + 100 + vars.default_width - 13 - render.text_size(state_os, fonts.pixel,10).x / 2 + add_x, vars.anim_y_stand - 88 + vars.anim_y_os + add_y,false,state_os,os_color,2,fonts.pixel,10)
render.string(vars.anim_x_stand + 100 + vars.default_width - 13 - render.text_size(state_os, fonts.pixel,10).x / 2 - 24 + add_x, vars.anim_y_stand - 88 + vars.anim_y_os + add_y,false,"OSAA:",Color.new(1,1,1,vars.anim_alpha_stand),2,fonts.pixel,10)
end)