Files
mmkrp_2026/gamemodes/darkrp/gamemode/modules/deathpov/cl_init.lua
2026-03-15 14:54:49 +03:00

45 lines
1.2 KiB
Lua

local view = {
origin = Vector(0, 0, 0),
angles = Angle(0, 0, 0),
fov = 90,
znear = 1
}
local deathpov = GM.Config.deathpov
hook.Add("CalcView", "rp_deathPOV", function(ply, origin, angles, fov)
-- Entity:Alive() is being slow as hell, we might actually see ourselves from third person for frame or two
if not deathpov or ply:Health() > 0 then return end
local Ragdoll = ply:GetRagdollEntity()
if not IsValid(Ragdoll) then return end
local head = Ragdoll:LookupAttachment("eyes")
head = Ragdoll:GetAttachment(head)
if not head or not head.Pos then return end
if not Ragdoll.BonesRattled then
Ragdoll.BonesRattled = true
Ragdoll:InvalidateBoneCache()
Ragdoll:SetupBones()
local matrix
for bone = 0, (Ragdoll:GetBoneCount() or 1) do
if Ragdoll:GetBoneName(bone):lower():find("head") then
matrix = Ragdoll:GetBoneMatrix(bone)
break
end
end
if IsValid(matrix) then
matrix:SetScale(Vector(0, 0, 0))
end
end
view.origin = head.Pos + head.Ang:Up() * 8
view.angles = head.Ang
return view
end)