Hey guys so I am making my own schema for nutscript. I am currently working on the text above the head and have it all done. Except there are a few issues! I don't know how to make it so the text won't appear until you're 'barely looking at the player' and also I am not sure how to make the text not appear if you are behind a prop or obstacle. I have tried mimicking the way DarkRP does it, but I have had no luck. Below is this code if you are able to help me:
[CODE]
CreateClientConVar("namesonhead_textsize", 50, true, false)
CreateClientConVar("namesonhead_flagsize", 3, true, false)
CreateClientConVar("namesonhead_mode", 0, true, false)
local fontSize = GetConVarNumber("namesonhead_textsize") or 50
--local me = LocalPlayer()
local function initializeNamesOnHead()
-- me = LocalPlayer()
fontSize = GetConVarNumber("namesonhead_textsize") or 50
end
hook.Add("InitPostEntity", "NamesOnHead", initializeNamesOnHead)
local function paintNamesOnHeadHud()
if (not me or not IsValid(me)) then
me = LocalPlayer()
return
end
for k, v in pairs(player.GetAll()) do
if v:Alive() then
if (v == me) then continue end
local pos = (v:GetPos() + Vector(0, 0, 80)):ToScreen()
local material
local textWidth = surface.GetTextSize(v:Name())
local alpha = 255 - math.Clamp(v:GetPos():Distance(me:GetPos()) * 0.65, 0, 255)
local Page = Material("icon16/star.png")
--local glow = math.abs(math.sin(CurTime() * 2) * 255); -- Math stuff for flashing.
--local flashingRed = Color(glow, 0, 0); -- This flashes red.
--local flashingGreen = Color(0, glow, 0); -- This flashes green.
--local flashingBlue = Color(0, 0, glow); -- This flashes blue.
local colorText = team.GetColor(v:Team())
colorText.a = alpha
if not v:getChar():getData("guild") then
draw.SimpleTextOutlined(v:Name(), "ChatFont", pos.x, pos.y - 45, Color(255, 255, 255, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
draw.SimpleTextOutlined("Class: ", "ChatFont", pos.x - 19, pos.y - 30, Color(255, 255, 255, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
draw.SimpleTextOutlined(team.GetName(v:Team()), "ChatFont", pos.x + 26, pos.y - 30, colorText, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
draw.SimpleTextOutlined("HP: ", "ChatFont", pos.x - 37, pos.y - 15, Color(255, 255, 255, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
draw.SimpleTextOutlined(v:Health() .. " / " .. v:GetMaxHealth(), "ChatFont", pos.x + 10, pos.y - 15, Color(150, 50, 50, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
draw.SimpleTextOutlined("Level: " .. v:GetNWInt("level"), "ChatFont", pos.x, pos.y, Color(255, 255, 255, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
if v:IsUserGroup("vip") then
draw.SimpleTextOutlined("VIP", "ChatFont", pos.x + 10, pos.y + 18, Color(255, 191, 0, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
surface.SetMaterial(Page)
surface.SetDrawColor(255, 255, 255, alpha)
surface.DrawTexturedRect(pos.x - 20, pos.y + 12, 15, 15)
end
end
-- IF THERE IS A GUILD
if v:getChar():getData("guild") then
if (v == me) then continue end
local rank = string.Right(v:getChar():getData("guild"),1)
draw.SimpleTextOutlined(v:Name(), "ChatFont", pos.x, pos.y - 45, Color(255, 255, 255, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
draw.SimpleTextOutlined("Guild: ", "ChatFont", pos.x - 80, pos.y - 30, Color(255, 255, 255, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
if(tonumber(rank) == 2) then
draw.SimpleTextOutlined(guildShorten(v:getChar():getData("guild")) .. " (Founder)", "ChatFont", pos.x + 28, pos.y - 30, Color(127, 95, 0, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
end
if(tonumber(rank) == 1) then
draw.SimpleTextOutlined(guildShorten(v:getChar():getData("guild")) .. " (Captain)", "ChatFont", pos.x + 28, pos.y - 30, Color(127, 95, 0, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
end
if(tonumber(rank) == 1) then
draw.SimpleTextOutlined(guildShorten(v:getChar():getData("guild")) .. " (Member)", "ChatFont", pos.x + 28, pos.y - 30, Color(127, 95, 0, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
end
draw.SimpleTextOutlined("Class: ", "ChatFont", pos.x - 19, pos.y - 15, Color(255, 255, 255, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
draw.SimpleTextOutlined(team.GetName(v:Team()), "ChatFont", pos.x + 26, pos.y - 15, colorText, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
draw.SimpleTextOutlined("HP: ", "ChatFont", pos.x - 37, pos.y, Color(255, 255, 255, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
draw.SimpleTextOutlined(v:Health() .. " / " .. v:GetMaxHealth(), "ChatFont", pos.x + 10, pos.y, Color(150, 50, 50, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
draw.SimpleTextOutlined("Level: " .. v:GetNWInt("level"), "ChatFont", pos.x, pos.y + 15, Color(255, 255, 255, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
if v:IsUserGroup("vip") then
draw.SimpleTextOutlined("VIP", "ChatFont", pos.x + 10, pos.y + 33, Color(255, 191, 0, alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, alpha))
surface.SetMaterial(Page)
surface.SetDrawColor(255, 255, 255, alpha)
surface.DrawTexturedRect(pos.x - 20, pos.y + 25, 15, 15)
end
end
end
end
end
local lastMode = nil
hook.Add("Think", "NamesOnHead", function()
local curFontSize = GetConVarNumber("namesonhead_textsize") or 50
if (curFontSize ~= fontSize) then
loadFont(curFontSize)
end
local curMode = GetConVarNumber("namesonhead_mode") or 0
if (lastMode ~= curMode) then
if (curMode == 1) then
hook.Add("PostDrawTranslucentRenderables", "NamesOnHead", paintNamesOnHead3D)
hook.Remove("HUDPaint", "NamesOnHead")
else
hook.Add("HUDPaint", "NamesOnHead", paintNamesOnHeadHud)
hook.Remove("PostDrawTranslucentRenderables", "NamesOnHead")
end
lastMode = curMode
end
end)
[/CODE]
Sorry, you need to Log In to post a reply to this thread.