Melee can hit hitboxes
Temporary workaround for melee not being able to hit crouched hitboxes.
This commit is contained in:
parent
53055b46df
commit
b4b3442e1c
1 changed files with 50 additions and 0 deletions
|
@ -1,6 +1,56 @@
|
||||||
local meta = FindMetaTable("Entity")
|
local meta = FindMetaTable("Entity")
|
||||||
if not meta then return end
|
if not meta then return end
|
||||||
|
|
||||||
|
local LASTHITCLIPHULL = false
|
||||||
|
local ClipHullBulletsResult
|
||||||
|
local ClipHullBulletsReturn = {effects = false, damage = false}
|
||||||
|
local ClipHullBullets = {
|
||||||
|
Damage = 0,
|
||||||
|
Force = 0,
|
||||||
|
Tracer = 0,
|
||||||
|
Callback = function(from, tr, dmginfo)
|
||||||
|
ClipHullBulletsResult = tr
|
||||||
|
return ClipHullBulletsReturn
|
||||||
|
end
|
||||||
|
}
|
||||||
|
function meta:ClipHullTraceHull(distance, size, start, dir)
|
||||||
|
start = start or self:GetShootPos()
|
||||||
|
dir = dir or self:GetAimVector()
|
||||||
|
|
||||||
|
ClipHullBullets.Src = start
|
||||||
|
ClipHullBullets.Dir = dir
|
||||||
|
ClipHullBullets.HullSize = size
|
||||||
|
ClipHullBulletsResult = nil
|
||||||
|
self:FireBullets(ClipHullBullets)
|
||||||
|
|
||||||
|
LASTHITCLIPHULL = false
|
||||||
|
|
||||||
|
if ClipHullBulletsResult and ClipHullBulletsResult.HitNonWorld and ClipHullBulletsResult.Entity:IsValid() and ClipHullBulletsResult.Entity:IsPlayer() and ClipHullBulletsResult.HitPos:Distance(start) <= distance then
|
||||||
|
LASTHITCLIPHULL = true
|
||||||
|
return ClipHullBulletsResult
|
||||||
|
end
|
||||||
|
|
||||||
|
return self:TraceHull(distance, mask, size, filter, start)
|
||||||
|
end
|
||||||
|
|
||||||
|
function meta:ClipHullMeleeTrace(distance, size, start)
|
||||||
|
return self:ClipHullTraceHull(distance, size, start)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Extremely shitty workaround for util trace functions not using clip hulls
|
||||||
|
function meta:PenetratingClipHullMeleeTrace(distance, size, prehit, start, dir)
|
||||||
|
local t
|
||||||
|
local cliphullpretrace = self:ClipHullTraceHull(distance, size, start, dir)
|
||||||
|
self:LagCompensation(true)
|
||||||
|
t = self:PenetratingMeleeTrace(distance, size, prehit, start, dir)
|
||||||
|
if cliphullpretrace and LASTHITCLIPHULL and cliphullpretrace.Entity ~= prehit then
|
||||||
|
table.insert(t, 1, cliphullpretrace)
|
||||||
|
end
|
||||||
|
self:LagCompensation(false)
|
||||||
|
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
function meta:ApplyPlayerProperties(ply)
|
function meta:ApplyPlayerProperties(ply)
|
||||||
self.GetPlayerColor = function() return ply:GetPlayerColor() end
|
self.GetPlayerColor = function() return ply:GetPlayerColor() end
|
||||||
self:SetBodygroup( ply:GetBodygroup(1), 1 )
|
self:SetBodygroup( ply:GetBodygroup(1), 1 )
|
||||||
|
|
Loading…
Reference in a new issue