From 61bc16dae5a1b61bcd237d9f0be36125829d95b1 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Thu, 24 Aug 2017 18:08:10 -0400 Subject: Various update --- gamemode/core/combat/cl_damage.lua | 71 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 gamemode/core/combat/cl_damage.lua (limited to 'gamemode/core/combat/cl_damage.lua') diff --git a/gamemode/core/combat/cl_damage.lua b/gamemode/core/combat/cl_damage.lua new file mode 100644 index 0000000..fee8175 --- /dev/null +++ b/gamemode/core/combat/cl_damage.lua @@ -0,0 +1,71 @@ +--Displays numbers for damage + +local drawables = { + [1] = { + starttime = CurTime(), + ammt = 5, + startpos = LocalPlayer():GetEyeTrace().HitPos + } +} + +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 + local rx,ry,rz = mr(aa.x,bb.x),mr(aa.y,bb.y),mr(aa.z,bb.z) + local drawinfo = { + starttime = CurTime(), + ammt = dmg, + startpos = Vector(rx,ry,rz) + } + + --Max 255 drawables at once + 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.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)) + if alpha < 1 then + drawables[k] = nil + continue + end + local lam = math.log(v.ammt) + 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 + surface.SetTextColor( 255, 255, 255, alpha ) + cam.Start3D2D( dpos, matang, lam ) + surface.SetTextPos(0,0) + surface.DrawText(tostring(v.ammt)) + cam.End3D2D() + end +end ) -- cgit v1.2.3-70-g09d2