Help with rendering sprites after certain distance away

I am trying to make a system when the player is X distance away from an entity it disapears and a sprite replaces it.
this is what i have so far:

function ENT:Think( ply )
self.Entity:SetNoDraw( true )
hook.Add( “HUDPaint”, “paintsprites”, function()
sprite1=Material( “sprite1” )
Vector1 = self.Entity:GetPos()
Vector1.z = Vector1.z+75
cam.Start3D(EyePos(),EyeAngles())
render.SetMaterial( sprite1 )
render.DrawSprite( Vector1, 128, 128, Color(255, 255, 255, 255) )
cam.End3D()
end)
end

I am having 2 problems with this script.

  1. I do not know how to set up Vector:Distance for an entity, so that i can make it appear and disappear properly.
  2. when i have more then one entity only the new one has the sprite on it.

anything would help me right now i have been trying to figure out a way to get it to work all day.

Update: after experimenting with the code i found out i could use self.Entity:EntIndex() to call each rendering by a different name.
therefor allowing me to render more then one at a time.
i still however are having problems figureing out how to get the distance from the player to the entity .
this is what i have so far on that:

“function ENT:Think( ply )
local self = LocalPlayer():GetPos()
local ent = self.Entity:GetPos()
distance = self:Distance( ent )
if distance >= 500 then
self.Entity:SetNoDraw( true )
else
self.Entity:SetNoDraw( false )
end
end”

however i get an error at line 3 with self.entity:getpos()
Anyone know how to get this to work?

[lua]
function ENT:Draw( )
if self:GetPos( ):Distance( EyePos( ) ) > 500 then
–draw sprite here
else
self:DrawModel( )
end
end
[/lua]

Something like that. You should use render.DrawSprite or whatever the function is to draw the sprite.

Thank you so much i was about to lose all hope!
final question on sprites how can i make it so i don’t see the sprite through a wall or through my weapon?

Uhm, the material requires certain flags I think. Not sure which ones, though.