Hello everyone, I have a question about this script that I found in the community. It doesn't have any errors on startup, I just want to know how I could hide the local player's tag but keep others visible.
Client side:
myfont = "default-bold"
nametags_Root = getRootElement()
nametags_ResRoot = getResourceRootElement(getThisResource())
nametags_Players = getElementsByType('player')
nametags_Me = getLocalPlayer()
nametag = {}
local nametags = {}
local sWidth,sHeight = guiGetScreenSize()
local Nametags_Hide = false
local Nametags_Scale = 0.36
local Nametags_Alpha_Distance = 30
local Nametags_Distance = 40
local Nametags_Alpha = 255
local Nametags_Text_Bar_Space = 1
local Nametags_Width = 50
local Nametags_Height = 20
local Nametags_Size = 0.45
local Nametags_Outline_Thickness = 1.2
local Nametags_Alpha_Diff = Nametags_Distance - Nametags_Alpha_Distance
Nametags_Scale = 1/Nametags_Scale * 800 / sHeight
local maxScaleCurve = { {0, 0}, {3, 3}, {13, 5} }
local textScaleCurve = { {0, 0.8}, {0.8, 1.2}, {99, 99} }
local textAlphaCurve = { {0, 0}, {25, 100}, {120, 190}, {255, 190} }
function nametags.Create ( player )
nametags[player] = true
end
function nametags.Destroy ( player )
nametags[player] = nil
end
addEventHandler ( "onClientRender", nametags_Root,
function()
if getElementData(getLocalPlayer(), "state.hud") == "disabled" then return end
for i,player in ipairs(nametags_Players) do
if isElement(player) then
setPlayerNametagShowing ( player, false )
if not nametags[player] then
nametags.Create ( player )
end
end
end
if Nametags_Hide then
return
end
local x,y,z = getCameraMatrix()
for player in pairs(nametags) do
while true do
if not isElement(player) then break end
if getElementDimension(player) ~= getElementDimension(nametags_Me) then break end
local px,py,pz = getElementPosition ( player )
local bx, by, bz = getPedBonePosition( player, 5 )
if processLineOfSight(x, y, z, px, py, pz, true, false, false, true, false, true) then break end
local playerDistance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz )
if playerDistance <= Nametags_Distance then
--Get screen position
local sx,sy = getScreenFromWorldPosition( bx + 0, by, bz + 0.4 )
if not sx or not sy then break end
--Calculate our components
local scale = 1/(Nametags_Scale * (playerDistance / Nametags_Distance))
local alpha = ((playerDistance - Nametags_Alpha_Distance) / Nametags_Alpha_Diff)
alpha = (alpha < 0) and Nametags_Alpha or Nametags_Alpha-(alpha*Nametags_Alpha)
scale = math.evalCurve(maxScaleCurve,scale)
local textScale = math.evalCurve(textScaleCurve,scale)
local textAlpha = math.evalCurve(textAlphaCurve,alpha)
local outlineThickness = Nametags_Outline_Thickness*(scale)
--Requirements
local team = getPlayerTeam(player)
local level = getElementData(player, "LV") or 0
local Reputation = getElementData(player, "Reputation") or "player"
local r,g,b = getPlayerNametagColor(player)
local offset = (scale) * Nametags_Text_Bar_Space/2
local playerName = getPlayerName(player)
local imageSize = dxGetFontHeight ( textScale*Nametags_Size, myfont )
local lp = getElementData(player, "experience.rank") or "Newbie"
local bitt = interpolateBetween(40, 0, 0, 255, 0, 0, ((getTickCount()) / 1300), "SineCurve")
local isim = getPlayerName(player):gsub('#%x%x%x%x%x%x', '')
--Draw our text
dxDrawText ( isim.."", sx + 0.5*scale, sy - offset + 0.5*scale, sx + 0.5*scale, sy - offset + 0.5*scale, tocolor(0,0,0,255), textScale*Nametags_Size*1., myfont, "center", "bottom", false, false, false, true, true )
dxDrawText ( playerName.."", sx, sy - offset, sx, sy - offset, tocolor(r,g,b,255), textScale*Nametags_Size*1., myfont, "center", "bottom", false, false, false, true, true )
nameWidth = dxGetTextWidth ( playerName.."", textScale*Nametags_Size, myfont )
teamWidth = nameWidth
if Reputation then
-- dxDrawImage ( sx - math.max(nameWidth/2, teamWidth/2) - 40*scale, sy - 2*imageSize, 7*imageSize, 2*imageSize, ""..Reputation..".png" )
end
end
break
end
end
end
)
function nametagsCreate()
for i,player in ipairs(getElementsByType"player") do
nametags.Create ( player )
nametags.Create ( localPlayer )
setElementData(player, "nametags", "enabled")
end
end
addEventHandler('onClientResourceStart', nametags_Root, nametagsCreate)
function nametagsCreateOnJoin()
if source == nametags_Me then
return
end
setPlayerNametagShowing ( source, false )
nametags.Create ( source )
end
addEventHandler('onClientPlayerJoin', nametags_Root, nametagsCreateOnJoin)
function nametagsDestroy()
nametags.Destroy ( source )
end
addEventHandler('onClientPlayerQuit', nametags_Root, nametagsDestroy)
function math.lerp(from,to,alpha)
return from + (to-from) * alpha
end
function math.evalCurve( curve, input )
if input<curve[1][1] then
return curve[1][2]
end
for idx=2,#curve do
if input<curve[idx][1] then
local x1 = curve[idx-1][1]
local y1 = curve[idx-1][2]
local x2 = curve[idx][1]
local y2 = curve[idx][2]
local alpha = (input - x1)/(x2 - x1);
return math.lerp(y1,y2,alpha)
end
end
return curve[#curve][2]
end
function dxDrawColorText(str, ax, ay, bx, by, color, scale, font,alignX,alignY,clip, wordBreak, postGUI)
local pat = "(.-)#(%x%x%x%x%x%x)"
local s, e, cap, col = str:find(pat, 1)
local last = 1
while s do
if s ~= 1 or cap ~= "" then
local w = dxGetTextWidth(cap, scale, font)
dxDrawText(cap, ax, ay, ax + w, by, color, scale, font,alignX,alignY,clip, wordBreak, postGUI)
ax = ax + w
color = tocolor(tonumber("0x"..string.sub(col, 1, 2)), tonumber("0x"..string.sub(col, 3, 4)), tonumber("0x"..string.sub(col, 5, 6)), 255)
end
last = e+1
s, e, cap, col = str:find(pat, last)
end
if last <= #str then
cap = str:sub(last)
local w = dxGetTextWidth(cap, scale, font)
dxDrawText(cap, ax, ay, ax + w, by, color, scale, font,alignX,alignY,clip, wordBreak, postGUI)
end
end
Thanks.