• Text Above Head Problems
    0 replies, posted
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.