diff options
Diffstat (limited to 'gamemode/core/combat/cl_damage.lua')
| -rw-r--r-- | gamemode/core/combat/cl_damage.lua | 39 |
1 files changed, 16 insertions, 23 deletions
diff --git a/gamemode/core/combat/cl_damage.lua b/gamemode/core/combat/cl_damage.lua index fee8175..5059588 100644 --- a/gamemode/core/combat/cl_damage.lua +++ b/gamemode/core/combat/cl_damage.lua @@ -1,18 +1,12 @@ --Displays numbers for damage -local drawables = { - [1] = { - starttime = CurTime(), - ammt = 5, - startpos = LocalPlayer():GetEyeTrace().HitPos - } -} +local drawables = {} net.Receive("art_damage_ent",function() print("Notified of damage") local who = net.ReadEntity() local dmg = net.ReadDouble() - + --A random vector in the entity local aa,bb = who:WorldSpaceAABB() local mr = math.random @@ -22,48 +16,47 @@ net.Receive("art_damage_ent",function() ammt = dmg, startpos = Vector(rx,ry,rz) } - + --Max 255 drawables at once - drawables[#drawables+1 % 255] = drawinfo + drawables[(#drawables + 1) % 255] = drawinfo end) hook.Add( "PostDrawOpaqueRenderables", "art_damage_draw", function() local trace = LocalPlayer():GetEyeTrace() local angle = trace.HitNormal:Angle() - + local lpp,sp = LocalPlayer():GetPos(),trace.HitPos local to = lpp - sp local matang = to:Angle() - + matang.r = 90 - matang.y = matang.y+90 + matang.y = matang.y + 90 matang.p = 0 render.DrawLine( trace.HitPos, trace.HitPos + 8 * angle:Forward(), Color( 255, 0, 0 ), true ) render.DrawLine( trace.HitPos, trace.HitPos + 8 * -angle:Right(), Color( 0, 255, 0 ), true ) render.DrawLine( trace.HitPos, trace.HitPos + 8 * angle:Up(), Color( 0, 0, 255 ), true ) - + surface.SetFont( "Trebuchet24" ) - local lpp = LocalPlayer():GetPos() for k,v in pairs(drawables) do local ct = CurTime() local delta = ct - v.starttime - local alpha = 255 * (math.log(v.ammt) - (delta/2)) + local alpha = 255 * (math.log(v.ammt) - (delta / 2)) if alpha < 1 then drawables[k] = nil continue end local lam = math.log(v.ammt) - local lad = (20/lam) + local lad = 20 / lam local opx = math.sin(delta) * lad local opy = math.cos(delta) * lad - local dpos = v.startpos + Vector(opx,opy,delta*100*(1/v.ammt)+20) - local matang = (lpp - dpos):Angle() - matang.r = 90 - matang.y = matang.y + 90 - matang.p = 0 + local dpos = v.startpos + Vector(opx,opy,delta * 100 * (1 / v.ammt) + 20) + local nmatang = (lpp - dpos):Angle() + nmatang.r = 90 + nmatang.y = nmatang.y + 90 + nmatang.p = 0 surface.SetTextColor( 255, 255, 255, alpha ) - cam.Start3D2D( dpos, matang, lam ) + cam.Start3D2D( dpos, nmatang, lam ) surface.SetTextPos(0,0) surface.DrawText(tostring(v.ammt)) cam.End3D2D() |
