diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2017-08-24 18:08:10 -0400 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2017-08-24 18:08:10 -0400 |
| commit | 61bc16dae5a1b61bcd237d9f0be36125829d95b1 (patch) | |
| tree | c9deebda1190e23073240d2bbe4ecabee668d742 /gamemode/core/combat/cl_damage.lua | |
| parent | 0f3211e4fb0cf27684079e6195995947c9f9027f (diff) | |
| download | artery-61bc16dae5a1b61bcd237d9f0be36125829d95b1.tar.gz artery-61bc16dae5a1b61bcd237d9f0be36125829d95b1.tar.bz2 artery-61bc16dae5a1b61bcd237d9f0be36125829d95b1.zip | |
Various update
Diffstat (limited to 'gamemode/core/combat/cl_damage.lua')
| -rw-r--r-- | gamemode/core/combat/cl_damage.lua | 71 |
1 files changed, 71 insertions, 0 deletions
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 ) |
