Files
2026-03-30 10:39:52 +03:00

132 lines
4.2 KiB
Lua

local sdeltaTime = sdeltaTime or 0
local SysTime = SysTime
local FrameTime = FrameTime
local start_delta_time = 0
local is_second_tick = false
hook.Add('Tick', 'sFixedDeltaTime', function()
if is_second_tick then
sdeltaTime = SysTime() - start_delta_time
else
start_delta_time = SysTime()
end
is_second_tick = not is_second_tick
end)
local function magnitude(vec)
local magnitude = vec
magnitude = magnitude.x ^ 2 + magnitude.y ^ 2 + magnitude.z ^ 2
magnitude = math.sqrt(magnitude)
return magnitude
end
local function MoveTowardsVector(current_vector, target_vector, delta_time)
local direction_vector = target_vector - current_vector
local magnitude = magnitude(direction_vector)
if magnitude <= delta_time or magnitude == 0 then
return target_vector
end
return current_vector + direction_vector / magnitude * delta_time
end
local rndhooks = {}
net.Receive("COD.TakedownCam", function()
local cam1 = net.ReadBool()
local float = net.ReadFloat()
local toplayer = net.ReadBool()
local rnd = math.random(1,999999999)
table.insert(rndhooks, "TakedownCam"..rnd)
if true then
local ply = LocalPlayer()
local delta = sdeltaTime
local deltanum = 2
local deltamult = 16
local ang_fix = ply:GetAngles()
local forwardplus = ang_fix:Forward()*math.Rand(32,64)
local rightplus = ang_fix:Right()*math.Rand(32,64)
local upplus = Vector(0,0,math.Rand(16,32))
if math.random(1,2) == 2 then
forwardplus = ply:GetForward()*math.Rand(-64,-32)
end
if math.random(1,2) == 2 then
rightplus = ply:GetRight()*math.Rand(-64,-32)
end
local endpos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1"))+forwardplus+rightplus+upplus
local curpos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1"))
local angle1 = Angle(0,0,0)
local dist = 0
local drawv = true
local tohead = false
timer.Simple(float/2, function()
deltamult = 0
end)
if toplayer then
timer.Simple(float, function()
tohead = true
deltamult = 128
end)
end
if cam1 then
hook.Add("CalcView", "TakedownCam"..rnd, function( ply, pos, angles, fov )
curpos = MoveTowardsVector(curpos, endpos, delta*deltanum)
angle1 = (ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1"))-curpos):GetNormalized():Angle()
dist = curpos:Distance(ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1")))
if tohead then
endpos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1"))
end
if deltamult > 0 then
deltanum = deltanum+FrameTime()*deltamult
end
if dist < 8 and tohead then
drawv = false
angle1 = ply:EyeAngles()
else
drawv = true
end
local view = {
angles = angle1,
origin = curpos,
fov = fov,
drawviewer = drawv,
nearz = 16,
}
if ply:Alive() then
COD.HideHUD = true
return view
end
end)
timer.Simple(float+0.7, function()
hook.Remove("CalcView", "TakedownCam"..rnd)
table.RemoveByValue(rndhooks, "TakedownCam"..rnd)
COD.HideHUD = false
end)
else
for _, v in pairs(rndhooks) do
hook.Remove("CalcView", v)
table.RemoveByValue(rndhooks, v)
end
COD.HideHUD = false
end
end
end)
hook.Add("CalcMainActivity", "!TDMAnims", function(ply, vel)
local str = ply:GetNWString('SVAnim')
local num = ply:GetNWFloat('SVAnimDelay')
local st = ply:GetNWFloat('SVAnimStartTime')
if str != "" then
ply:SetCycle((CurTime()-st)/num)
return -1, ply:LookupSequence(str)
end
end)