Залив
This commit is contained in:
132
gamemodes/cod_custom/gamemode/client/cl_takedown.lua
Normal file
132
gamemodes/cod_custom/gamemode/client/cl_takedown.lua
Normal file
@@ -0,0 +1,132 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user