Converting NewAdmin Playernames

Ok some of you may have seen the playernames in NewAdmin the cool ones with with little rank image and typing indicator well im trying to convert them to ASSMod i did this before but i cant remember how

here is my code
(Overv’s code)




local PLUGIN = {}

PLUGIN.Name = "Playernames"
PLUGIN.Author = "Virus78"
PLUGIN.Date = "6th August 2009"
PLUGIN.Filename = PLUGIN_FILENAME
PLUGIN.ClientSide = true
PLUGIN.ServerSide = true
PLUGIN.APIVersion = 2
PLUGIN.Gamemodes = {}

resource.AddFile( "materials/gui/silkicons/comment.vmt" )
resource.AddFile( "materials/gui/silkicons/comment.vtf" )
resource.AddFile( "materials/gui/silkicons/user_suit.vmt" )
resource.AddFile( "materials/gui/silkicons/user_suit.vtf" )

//Drawing function
function DrawHUD()
	if CLIENT then DrawPlayers() end
end
if CLIENT then hook.Add("HUDPaint", "DrawHud", DrawHUD) end

//Load icons
if CLIENT then
	Guest = surface.GetTextureID("gui/silkicons/user")
	Respected = surface.GetTextureID("gui/silkicons/heart")
	Admin = surface.GetTextureID("gui/silkicons/shield")
	SAdmin = surface.GetTextureID("gui/silkicons/shield")
	Owner = surface.GetTextureID("gui/silkicons/star")
	Typing = surface.GetTextureID("gui/silkicons/comment")
	Away = surface.GetTextureID("gui/silkicons/exclamation")
end

//All the functions for the things drawn in DrawHUD()
function GetHeadPos( ply )
	local BoneIndx = ply:LookupBone("ValveBiped.Bip01_Head1")
	local BonePos, BoneAng = ply:GetBonePosition( BoneIndx )
	
	return BonePos
end

function DrawPlayers()
	local k = nil
	local v = nil
	local maxdistance = 2048
	local maxfullalpha = 512
	
	for k, v in pairs(player.GetAll()) do
		if v != NULL and v:IsValid() and v:Nick() ~= LocalPlayer():Nick() and v:GetNetworkedBool("Ghosted") == false and v:GetColor() ~= Color(255, 255, 255, 0) and v:Nick() != "unconnected" then
		
			Position = v:GetShootPos()
			if v:GetNetworkedBool("Ragdolled") and ents.GetByIndex( v:GetNetworkedInt( "Ragdoll" ) ) != NULL then
				r = ents.GetByIndex( v:GetNetworkedInt( "Ragdoll" ) )
				if r != NULL then Position = r:GetPos() end
			end
		
			local pDistance = LocalPlayer():GetShootPos():Distance( Position )
			
			//Check if the player is even visible (e.g. no wall in between)
			local tracedata = {}
			tracedata.start = LocalPlayer():GetShootPos()
			tracedata.endpos = Position
			local trace = util.TraceLine(tracedata)
			
			if pDistance < maxdistance and pDistance > 64 and v:Alive() and trace.HitWorld == false then
				//Calculate alpha
				local dAlpha = 128
				if pDistance > maxfullalpha then
					dAlpha = 128 - math.Clamp((pDistance - maxfullalpha) / (maxdistance-maxfullalpha)*128, 0, 128)
				end
				
				if v:GetNetworkedBool("Ragdolled") and ents.GetByIndex( v:GetNetworkedInt( "Ragdoll" ) ) != NULL then
					dPos = GetHeadPos( r ):ToScreen()
				else
					dPos = GetHeadPos( v ):ToScreen()
				end
				
				dPos.y = dPos.y - 75
				dPos.y = dPos.y + (100 * (GetHeadPos(v):Distance(LocalPlayer():GetShootPos()) / 2048)) * 0.5
				
				//Icon
				if v:GetNWBool("Typing") != true then
					if ply:HasLevel( ASS_LVL_SERVER_OWNER ) then
						Icon = Owner
					elseif ply:IsSuperAdmin() then
						Icon = SAdmin
					elseif ply:IsAdmin() then
						Icon = Admin
					elseif ply:IsRespected() then
						Icon = Respected
					elseif v:GetNWBool("AFK") then
						Icon = Away
					else
						Icon = Guest
					end
				else
					Icon = Typing
				end
				
				//Draw the box with the playername
				if !v:GetNWBool("AFK") then
					Nick = v:Nick()
				else
					if v:GetNWString("AFKReason") == "" then
						Nick = v:Nick() .. " (AFK)"
					else
						Nick = v:Nick() .. " (AFK: " .. v:GetNWString("AFKReason") .. ")"
					end
				end
				
				surface.SetFont( "ScoreboardText" )
				local w = surface.GetTextSize( Nick )
				local teamColor = team.GetColor( v:Team() )
				ow = w
				w = w + 26
				
				draw.RoundedBox( 6, dPos.x-((w+10)/2), dPos.y-10, w+10, 25, Color(0, 0, 0, dAlpha) )
				draw.DrawText( Nick, "ScoreboardText", dPos.x + 14, dPos.y-6, Color(teamColor.r, teamColor.g, teamColor.b, dAlpha), 1 )
				surface.SetTexture( Icon )
				surface.SetDrawColor( 255, 255, 255, dAlpha)
				surface.DrawTexturedRect(dPos.x - (ow / 2) - 12, dPos.y - 6, 16, 16)
			end
		end
	end
end

//Rehook when anything goes wrong
function DrawReHook()
	//hook.Remove( "HUDPaint", "DrawHud" )
	hook.Add("HUDPaint", "DrawHud", DrawHUD)
end
timer.Create( "DrawRehook", 1, 0, DrawReHook )

//Show a chat icon when the user is typing a message
if SERVER then
	function NA_TypeStart( ply )
		ply:SetNWBool( "Typing", true )
	end
	concommand.Add( "NA_TypeStart", NA_TypeStart )
	
	function NA_TypeStop( ply )
		ply:SetNWBool( "Typing", false )
	end
	concommand.Add( "NA_TypeStop", NA_TypeStop )
elseif NewAdmin then
	hook.Add( "StartChat", "TypeStart", function() RunConsoleCommand("NA_TypeStart") end )
	hook.Add( "FinishChat", "TypeStop", function() RunConsoleCommand("NA_TypeStop") end )
end

ASS_RegisterPlugin(PLUGIN)



Can anyone see any immidiate errors?

Ok i changed something and in console i get this error

You’re trying to use the variable ‘ply’ while the current player is defined as ‘v’.

Are you talking about this



			//Icon
				if v:GetNWBool("Typing") != true then
					if ply:HasLevel( ASS_LVL_SERVER_OWNER ) then
						Icon = Owner
					elseif ply:IsSuperAdmin() then
						Icon = SAdmin
					elseif ply:IsAdmin() then
						Icon = Admin
					elseif ply:IsRespected() then
						Icon = Respected
					elseif v:GetNWBool("AFK") then
						Icon = Away
					else
						Icon = Guest
					end
				else
					Icon = Typing
				end



Becuse at the moment i cant even get a box or text to shop up above the players heads and thats jsut the icons so im not sure whats wrong but should i change the ‘ply’ in that to v

all ply to v

ok i will try it

[editline]08:18PM[/editline]




local PLUGIN = {}

PLUGIN.Name = "Playernames"
PLUGIN.Author = "Virus78"
PLUGIN.Date = "6th August 2009"
PLUGIN.Filename = PLUGIN_FILENAME
PLUGIN.ClientSide = true
PLUGIN.ServerSide = true
PLUGIN.APIVersion = 2
PLUGIN.Gamemodes = {}

resource.AddFile( "materials/gui/silkicons/comment.vmt" )
resource.AddFile( "materials/gui/silkicons/comment.vtf" )
resource.AddFile( "materials/gui/silkicons/user_suit.vmt" )
resource.AddFile( "materials/gui/silkicons/user_suit.vtf" )

//Enable and disable playernames
pn_enabled = true
end

//Drawing function
function DrawHUD()
	if pn_enabled then DrawPlayers() end
end
if (CLIENT) then hook.Add("HUDPaint", "DrawHud", DrawHUD) end

//Load icons
if (CLIENT) then
	Guest = surface.GetTextureID("gui/silkicons/user")
	Respected = surface.GetTextureID("gui/silkicons/heart")
	Admin = surface.GetTextureID("gui/silkicons/shield")
	SAdmin = surface.GetTextureID("gui/silkicons/shield")
	Owner = surface.GetTextureID("gui/silkicons/star")
	Typing = surface.GetTextureID("gui/silkicons/comment")
	Away = surface.GetTextureID("gui/silkicons/exclamation")
end

//All the functions for the things drawn in DrawHUD()
function GetHeadPos( v )
	local BoneIndx = v:LookupBone("ValveBiped.Bip01_Head1")
	local BonePos, BoneAng = v:GetBonePosition( BoneIndx )
	
	return BonePos
end

function DrawPlayers()
	local k = nil
	local v = nil
	local maxdistance = 2048
	local maxfullalpha = 512
	
	for k, v in pairs(player.GetAll()) do
		if v != NULL and v:IsValid() and v:Nick() ~= LocalPlayer():Nick() and v:GetNetworkedBool("Ghosted") == false and v:GetColor() ~= Color(255, 255, 255, 0) and v:Nick() != "unconnected" then
		
			Position = v:GetShootPos()
			if v:GetNetworkedBool("Ragdolled") and ents.GetByIndex( v:GetNetworkedInt( "Ragdoll" ) ) != NULL then
				r = ents.GetByIndex( v:GetNetworkedInt( "Ragdoll" ) )
				if r != NULL then Position = r:GetPos() end
			end
		
			local pDistance = LocalPlayer():GetShootPos():Distance( Position )
			
			//Check if the player is even visible (e.g. no wall in between)
			local tracedata = {}
			tracedata.start = LocalPlayer():GetShootPos()
			tracedata.endpos = Position
			local trace = util.TraceLine(tracedata)
			
			if pDistance < maxdistance and pDistance > 64 and v:Alive() and trace.HitWorld == false then
				//Calculate alpha
				local dAlpha = 128
				if pDistance > maxfullalpha then
					dAlpha = 128 - math.Clamp((pDistance - maxfullalpha) / (maxdistance-maxfullalpha)*128, 0, 128)
				end
				
				if v:GetNetworkedBool("Ragdolled") and ents.GetByIndex( v:GetNetworkedInt( "Ragdoll" ) ) != NULL then
					dPos = GetHeadPos( r ):ToScreen()
				else
					dPos = GetHeadPos( v ):ToScreen()
				end
				
				dPos.y = dPos.y - 75
				dPos.y = dPos.y + (100 * (GetHeadPos(v):Distance(LocalPlayer():GetShootPos()) / 2048)) * 0.5
				
				//Icon
				if v:GetNWBool("Typing") != true then
					if v:HasLevel( ASS_LVL_SERVER_OWNER ) then
						Icon = Owner
					elseif v:IsSuperAdmin() then
						Icon = SAdmin
					elseif v:IsAdmin() then
						Icon = Admin
					elseif v:IsRespected() then
						Icon = Respected
					elseif v:GetNWBool("AFK") then
						Icon = Away
					else
						Icon = Guest
					end
				else
					Icon = Typing
				end
				
				//Draw the box with the playername
				if !v:GetNWBool("AFK") then
					Nick = v:Nick()
				else
					if v:GetNWString("AFKReason") == "" then
						Nick = v:Nick() .. " (AFK)"
					else
						Nick = v:Nick() .. " (AFK: " .. v:GetNWString("AFKReason") .. ")"
					end
				end
				
				surface.SetFont( "ScoreboardText" )
				local w = surface.GetTextSize( Nick )
				local teamColor = team.GetColor( v:Team() )
				ow = w
				w = w + 26
				
				draw.RoundedBox( 6, dPos.x-((w+10)/2), dPos.y-10, w+10, 25, Color(0, 0, 0, dAlpha) )
				draw.DrawText( Nick, "ScoreboardText", dPos.x + 14, dPos.y-6, Color(teamColor.r, teamColor.g, teamColor.b, dAlpha), 1 )
				surface.SetTexture( Icon )
				surface.SetDrawColor( 255, 255, 255, dAlpha)
				surface.DrawTexturedRect(dPos.x - (ow / 2) - 12, dPos.y - 6, 16, 16)
			end
		end
	end
end

//Rehook when anything goes wrong
function DrawReHook()
	//hook.Remove( "HUDPaint", "DrawHud" )
	hook.Add("HUDPaint", "DrawHud", DrawHUD)
end
timer.Create( "DrawRehook", 1, 0, DrawReHook )

//Show a chat icon when the user is typing a message
if (SERVER) then
	function NA_TypeStart( v )
		v:SetNWBool( "Typing", true )
	end
	concommand.Add( "NA_TypeStart", NA_TypeStart )
	
	function NA_TypeStop( v )
		v:SetNWBool( "Typing", false )
	end
	concommand.Add( "NA_TypeStop", NA_TypeStop )
elseif NewAdmin then
	hook.Add( "StartChat", "TypeStart", function() RunConsoleCommand("NA_TypeStart") end )
	hook.Add( "FinishChat", "TypeStop", function() RunConsoleCommand("NA_TypeStop") end )
end

ASS_RegisterPlugin(PLUGIN)


Ok this is my new code its still not working :S this is seriosuly frustrating

Why do you have an extra end under pn_enabled? Should work now :3

Change author to Overv and note that you converted it into an ASSMod plugin.

Ok will do :stuck_out_tongue: and i will try the pn_enabled thing i wasnt sure if you would mind you code being edited but i guessed that the more openly available it was the better

[editline]11:28PM[/editline]

thanks it worked here is my final code if anyone else wants it

[lua]

local PLUGIN = {}

PLUGIN.Name = “PlayerNames Converted By Virus78”
PLUGIN.Author = “Overv”
PLUGIN.Date = “6th August 2009”
PLUGIN.Filename = PLUGIN_FILENAME
PLUGIN.ClientSide = true
PLUGIN.ServerSide = true
PLUGIN.APIVersion = 2
PLUGIN.Gamemodes = {}

// Special Thanks to Overv and commander204 who helped me complete this :smiley:

resource.AddFile( “materials/gui/silkicons/comment.vmt” )
resource.AddFile( “materials/gui/silkicons/comment.vtf” )
resource.AddFile( “materials/gui/silkicons/user_suit.vmt” )
resource.AddFile( “materials/gui/silkicons/user_suit.vtf” )

//Enable and disable playernames
pn_enabled = true

//Drawing function
function DrawHUD()
if pn_enabled then DrawPlayers() end
end
if (CLIENT) then hook.Add(“HUDPaint”, “DrawHud”, DrawHUD) end

//Load icons
if (CLIENT) then
Guest = surface.GetTextureID(“gui/silkicons/user”)
Respected = surface.GetTextureID(“gui/silkicons/heart”)
Admin = surface.GetTextureID(“gui/silkicons/shield”)
SAdmin = surface.GetTextureID(“gui/silkicons/shield”)
Owner = surface.GetTextureID(“gui/silkicons/star”)
Typing = surface.GetTextureID(“gui/silkicons/comment”)
Away = surface.GetTextureID(“gui/silkicons/exclamation”)
end

//All the functions for the things drawn in DrawHUD()
function GetHeadPos( v )
local BoneIndx = v:LookupBone(“ValveBiped.Bip01_Head1”)
local BonePos, BoneAng = v:GetBonePosition( BoneIndx )

return BonePos

end

function DrawPlayers()
local k = nil
local v = nil
local maxdistance = 2048
local maxfullalpha = 512

for k, v in pairs(player.GetAll()) do
	if v != NULL and v:IsValid() and v:Nick() ~= LocalPlayer():Nick() and v:GetNetworkedBool("Ghosted") == false and v:GetColor() ~= Color(255, 255, 255, 0) and v:Nick() != "unconnected" then
	
		Position = v:GetShootPos()
		if v:GetNetworkedBool("Ragdolled") and ents.GetByIndex( v:GetNetworkedInt( "Ragdoll" ) ) != NULL then
			r = ents.GetByIndex( v:GetNetworkedInt( "Ragdoll" ) )
			if r != NULL then Position = r:GetPos() end
		end
	
		local pDistance = LocalPlayer():GetShootPos():Distance( Position )
		
		//Check if the player is even visible (e.g. no wall in between)
		local tracedata = {}
		tracedata.start = LocalPlayer():GetShootPos()
		tracedata.endpos = Position
		local trace = util.TraceLine(tracedata)
		
		if pDistance &lt; maxdistance and pDistance &gt; 64 and v:Alive() and trace.HitWorld == false then
			//Calculate alpha
			local dAlpha = 128
			if pDistance &gt; maxfullalpha then
				dAlpha = 128 - math.Clamp((pDistance - maxfullalpha) / (maxdistance-maxfullalpha)*128, 0, 128)
			end
			
			if v:GetNetworkedBool("Ragdolled") and ents.GetByIndex( v:GetNetworkedInt( "Ragdoll" ) ) != NULL then
				dPos = GetHeadPos( r ):ToScreen()
			else
				dPos = GetHeadPos( v ):ToScreen()
			end
			
			dPos.y = dPos.y - 75
			dPos.y = dPos.y + (100 * (GetHeadPos(v):Distance(LocalPlayer():GetShootPos()) / 2048)) * 0.5
			
			//Icon
			if v:GetNWBool("Typing") != true then
				if v:HasLevel( ASS_LVL_SERVER_OWNER ) then
					Icon = Owner
				elseif v:IsSuperAdmin() then
					Icon = SAdmin
				elseif v:IsAdmin() then
					Icon = Admin
				elseif v:IsRespected() then
					Icon = Respected
				elseif v:GetNWBool("AFK") then
					Icon = Away
				else
					Icon = Guest
				end
			else
				Icon = Typing
			end
			
			//Draw the box with the playername
			if !v:GetNWBool("AFK") then
				Nick = v:Nick()
			else
				if v:GetNWString("AFKReason") == "" then
					Nick = v:Nick() .. " (AFK)"
				else
					Nick = v:Nick() .. " (AFK: " .. v:GetNWString("AFKReason") .. ")"
				end
			end
			
			surface.SetFont( "ScoreboardText" )
			local w = surface.GetTextSize( Nick )
			local teamColor = team.GetColor( v:Team() )
			ow = w
			w = w + 26
			
			draw.RoundedBox( 6, dPos.x-((w+10)/2), dPos.y-10, w+10, 25, Color(0, 0, 0, dAlpha) )
			draw.DrawText( Nick, "ScoreboardText", dPos.x + 14, dPos.y-6, Color(teamColor.r, teamColor.g, teamColor.b, dAlpha), 1 )
			surface.SetTexture( Icon )
			surface.SetDrawColor( 255, 255, 255, dAlpha)
			surface.DrawTexturedRect(dPos.x - (ow / 2) - 12, dPos.y - 6, 16, 16)
		end
	end
end

end

//Rehook when anything goes wrong
function DrawReHook()
//hook.Remove( “HUDPaint”, “DrawHud” )
hook.Add(“HUDPaint”, “DrawHud”, DrawHUD)
end
timer.Create( “DrawRehook”, 1, 0, DrawReHook )

//Show a chat icon when the user is typing a message
if (SERVER) then
function NA_TypeStart( v )
v:SetNWBool( “Typing”, true )
end
concommand.Add( “NA_TypeStart”, NA_TypeStart )

function NA_TypeStop( v )
	v:SetNWBool( "Typing", false )
end
concommand.Add( "NA_TypeStop", NA_TypeStop )

elseif NewAdmin then
hook.Add( “StartChat”, “TypeStart”, function() RunConsoleCommand(“NA_TypeStart”) end )
hook.Add( “FinishChat”, “TypeStop”, function() RunConsoleCommand(“NA_TypeStop”) end )
end

ASS_RegisterPlugin(PLUGIN)
[/lua]

Also what are the BBCodes to post this with correct syntax highlighting? (NVM i worked it out)
And is there a better way to check if the player is typig? becuse its kinda buggy at the moment sometimes it works somethimes it dosent