Garry's Mod Wiki

GM:PostPlayerDraw

  GM:PostPlayerDraw( Player ply, number flags )

Description

Called after a player in your PVS (Potential Visibility Set) was drawn.

This is a rendering hook which provides a 3d rendering context.

Arguments

1 Player ply
The player that was drawn.
2 number flags
The STUDIO_ flags for this render operation.

Example

Show each player's name above their model.

local vectorpos = Vector( 0, 0, 85 ) -- we cache it to optimize the code local function DrawName( ply ) if ( !IsValid( ply ) ) then return end if ( ply == LocalPlayer() ) then return end -- Don't draw a name when the player is you if ( !ply:Alive() ) then return end -- Check if the player is alive local Distance = LocalPlayer():GetPos():Distance( ply:GetPos() ) --Get the distance between you and the player if ( Distance < 1000 ) then --If the distance is less than 1000 units, it will draw the name local offset = vectorpos local ang = LocalPlayer():EyeAngles() local pos = ply:GetPos() + offset + ang:Up() ang:RotateAroundAxis( ang:Forward(), 90 ) ang:RotateAroundAxis( ang:Right(), 90 ) cam.Start3D2D( pos, Angle( 0, ang.y, 90 ), 0.25 ) draw.DrawText( ply:GetName(), "HudSelectionText", 2, 2, team.GetColor(ply:Team()), TEXT_ALIGN_CENTER ) cam.End3D2D() end end hook.Add( "PostPlayerDraw", "DrawName", DrawName )

Example

Draw a headcrab hat on all players.

local model = ClientsideModel( "models/headcrabclassic.mdl" ) model:SetNoDraw( true ) hook.Add( "PostPlayerDraw" , "manual_model_draw_example" , function( ply ) if not IsValid(ply) or not ply:Alive() then return end local attach_id = ply:LookupAttachment('eyes') if not attach_id then return end local attach = ply:GetAttachment(attach_id) if not attach then return end local pos = attach.Pos local ang = attach.Ang model:SetModelScale(1.1, 0) pos = pos + (ang:Forward() * 2.5) ang:RotateAroundAxis(ang:Right(), 20) model:SetPos(pos) model:SetAngles(ang) model:SetRenderOrigin(pos) model:SetRenderAngles(ang) model:SetupBones() model:DrawModel() model:SetRenderOrigin() model:SetRenderAngles() end )
Result:
4000_screenshots_20200509142006_1.jpg