[İSTEK] Name Tag ın Kendimde Gözükmesini İstiyorum

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Gezen Oyuncu

  • Yeni Üye
  • *
    • İleti: 4
Merhabalar ben kendi  name tagımı kendimde gözükmesini istiyorum, Forumda Gördüm Fakat Benim Name Tagımdan Değildi Denedim Olmadı Yardımcı Olurmusunuz
Linki görebilmek için Kayıt olun yada Giriş yapın. Linki görebilmek için Kayıt olun yada Giriş yapın. Linki görebilmek için Kayıt olun yada Giriş yapın.

Kodlar Client :

Kod
srfont = dxCreateFont("DFHEIMDU_id.ttf",16)

g_Root = getRootElement()
g_ResRoot = getResourceRootElement(getThisResource())
g_Players = getElementsByType('player')
g_Me = getLocalPlayer()
 
nametag = {}
local nametags = {}
local g_screenX,g_screenY = guiGetScreenSize()
local bHideNametags = false
 
local NAMETAG_SCALE = 0.2 --Overall adjustment of the nametag, use this to resize but constrain proportions
local NAMETAG_ALPHA_DISTANCE = 50 --Distance to start fading out
local NAMETAG_DISTANCE = 100 --Distance until we're gone
local NAMETAG_ALPHA = 255 --The overall alpha level of the nametag
--The following arent actual pixel measurements, they're just proportional constraints
local NAMETAG_TEXT_BAR_SPACE = 1
local NAMETAG_WIDTH = 30
local NAMETAG_HEIGHT = 3
local NAMETAG_TEXTSIZE = 0.2
local NAMETAG_OUTLINE_THICKNESS = 1.2
 
 
--
local NAMETAG_ALPHA_DIFF = NAMETAG_DISTANCE - NAMETAG_ALPHA_DISTANCE
NAMETAG_SCALE = 1/NAMETAG_SCALE * 800 / g_screenY
 
-- Ensure the name tag doesn't get too big
local maxScaleCurve = { {0, 0}, {3, 3}, {13, 5} }
-- Ensure the text doesn't get too small/unreadable
local textScaleCurve = { {0, 0.8}, {0.8, 1.2}, {99, 99} }
-- Make the text a bit brighter and fade more gradually
local textAlphaCurve = { {0, 0}, {25, 100}, {120, 190}, {255, 190} }
 
setPedTargetingMarkerEnabled ( false )
 
function nametag.create ( player )
    nametags[player] = true
end
 
function nametag.destroy ( player )
    nametags[player] = nil
end

addEventHandler ( "onClientPreRender", g_Root,
    function()
if getElementData(getLocalPlayer(), "state.hud") == "disabled" then
return
end
        -- Hideous quick fix --
        for i,player in ipairs(g_Players) do
            if isElement(player) then
                if player ~= g_Me then
                    setPlayerNametagShowing ( player, false )
                    if not nametags[player] then
                        nametag.create ( player )
                    end
                end
            end
        end
        if bHideNametags 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(g_Me) then break end
                local px,py,pz = getElementPosition ( player )
                if not isLineOfSightClear(x, y, z, px, py, pz, true, false, false, true, false, true) then break end
                local pdistance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz )
                if pdistance <= NAMETAG_DISTANCE then
                    --Get screenposition
                    local sx,sy = getScreenFromWorldPosition ( px, py, pz+0.95, 0.06 )
                    if not sx or not sy then break end
                    --Calculate our components
                    local scale = 1/(NAMETAG_SCALE * (pdistance / NAMETAG_DISTANCE))
                    local alpha = ((pdistance - NAMETAG_ALPHA_DISTANCE) / NAMETAG_ALPHA_DIFF)
                    alpha = (alpha < 0) and NAMETAG_ALPHA or NAMETAG_ALPHA-(alpha*NAMETAG_ALPHA)
                    scale = math.evalCurve(maxScaleCurve,scale)
                    local textscale = math.evalCurve(textScaleCurve,scale)
                    local textalpha = math.evalCurve(textAlphaCurve,alpha)
                    local outlineThickness = NAMETAG_OUTLINE_THICKNESS*(scale)
                    --Draw our text
                    local playerName = getPlayerName(player):gsub("#%x%x%x%x%x%x","")
                    local r,g,b = getPlayerNametagColor(player)
                    local offset = (scale) * NAMETAG_TEXT_BAR_SPACE/2
local w = dxGetTextWidth(playerName, textscale * NAMETAG_TEXTSIZE, srfont) / 2
local myR = getElementData(localPlayer, "reputation.reputation")
local playerR = getElementData(player, "reputation.reputation")
                   
                    local drawX = sx - NAMETAG_WIDTH*scale/2
                    drawY = sy + offset
                    local width,height =  NAMETAG_WIDTH*scale, NAMETAG_HEIGHT*scale
dxDrawText ( playerName, sx, sy - offset, sx, sy - offset, tocolor(0,0,0,255), textscale*NAMETAG_TEXTSIZE, srfont, "center", "bottom", false, false, false, true, true )
if myR and playerR then
if getElementData(localPlayer, "reputation.criminal") == false and getElementData(player, "reputation.criminal") == false then
rr, rg, rb = 158, 210, 229
elseif getElementData(localPlayer, "reputation.criminal") == true and getElementData(player, "reputation.criminal") == false then
rr, rg, rb = 217, 25, 31
elseif getElementData(localPlayer, "reputation.criminal") == false and getElementData(player, "reputation.criminal") == true then
rr, rg, rb = 217, 25, 31
elseif getElementData(localPlayer, "reputation.criminal") == true and getElementData(player, "reputation.criminal") == true then
rr, rg, rb = 246, 231, 89
end
else
rr, rg, rb = r, g, b
end
dxDrawText ( playerName, sx, sy - offset, sx, sy - offset, tocolor(rr,rg,rb,255), textscale*NAMETAG_TEXTSIZE, srfont, "center", "bottom", false, false, false, true, true )
nameWidth = dxGetTextWidth ( playerName, textscale*NAMETAG_TEXTSIZE, srfont )
teamWidth = nameWidth
local team = getPlayerTeam(player)
if team then
dxDrawText ( "["..getTeamName(team).."]", sx, sy - offset + 6*scale, sx, sy - offset + 6*scale, tocolor(0,0,0,255), textscale*NAMETAG_TEXTSIZE*0.75, srfont, "center", "bottom", false, false, false, true, true )
dxDrawText ( "["..getTeamName(team).."]", sx, sy - offset + 6*scale, sx, sy - offset + 6*scale, tocolor(rr,rg,rb,255), textscale*NAMETAG_TEXTSIZE*0.75, srfont, "center", "bottom", false, false, false, true, true )
teamWidth = dxGetTextWidth ( "["..getTeamName(team).."]", textscale*NAMETAG_TEXTSIZE*0.75, srfont )
end
                    local imageSize = dxGetFontHeight ( textscale*NAMETAG_TEXTSIZE, srfont )
                    if getElementData(player, "reputation.class") and fileExists ( ":reputation/class/classicon_"..getElementData(player, "reputation.class")..".png" ) then
                    dxDrawImage ( sx - math.max(nameWidth/2, teamWidth/2) - imageSize - 1*scale, sy - imageSize, imageSize, imageSize, ":reputation/class/classicon_"..getElementData(player, "reputation.class")..".png" )
                    end
                    if getElementData(player, "reputation.status") and fileExists ( ":reputation/reputation/goodevil_"..getElementData(player, "reputation.status")..".png" ) then
                    dxDrawImage ( sx + math.max(nameWidth/2, teamWidth/2) + 1*scale, sy - imageSize, imageSize, imageSize, ":reputation/reputation/goodevil_"..getElementData(player, "reputation.status")..".png" )
                    end
                end
                break
            end
        end
    end
)
 
 
---------------THE FOLLOWING IS THE MANAGEMENT OF NAMETAGS-----------------
addEventHandler('onClientResourceStart', g_Root,
    function()
        for i,player in ipairs(getElementsByType"player") do
            if player ~= g_Me then
                nametag.create ( player )
            end
        end
    end
)
 
addEventHandler ( "onClientPlayerJoin", g_Root,
    function()
        if source == g_Me then return end
        setPlayerNametagShowing ( source, false )
        nametag.create ( source )
    end
)
 
addEventHandler ( "onClientPlayerQuit", g_Root,
    function()
        nametag.destroy ( source )
    end
)
 
-- Math functions
function math.lerp(from,to,alpha)
    return from + (to-from) * alpha
end
 
-- curve is { {x1, y1}, {x2, y2}, {x3, y3} ... }
function math.evalCurve( curve, input )
    -- First value
    if input<curve[1][1] then
        return curve[1][2]
    end
    -- Interp value
    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]
            -- Find pos between input points
            local alpha = (input - x1)/(x2 - x1);
            -- Map to output points
            return math.lerp(y1,y2,alpha)
        end
    end
    -- Last value
    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
« Son Düzenleme: 23 Şubat 2020, 14:40:33 Gönderen: Gezen Oyuncu »
 


MTASATURK


Çevrimdışı ByCash

  • Admin
  • *
    • İleti: 986
Yanıtla #1 : 24 Şubat 2020, 09:43:42
Bi dene bakalım

Kod
srfont = dxCreateFont("DFHEIMDU_id.ttf",16)

g_Root = getRootElement()
g_ResRoot = getResourceRootElement(getThisResource())
g_Players = getElementsByType('player')
g_Me = getLocalPlayer()
 
nametag = {}
local nametags = {}
local g_screenX,g_screenY = guiGetScreenSize()
local bHideNametags = false
 
local NAMETAG_SCALE = 0.2 --Overall adjustment of the nametag, use this to resize but constrain proportions
local NAMETAG_ALPHA_DISTANCE = 50 --Distance to start fading out
local NAMETAG_DISTANCE = 100 --Distance until we're gone
local NAMETAG_ALPHA = 255 --The overall alpha level of the nametag
--The following arent actual pixel measurements, they're just proportional constraints
local NAMETAG_TEXT_BAR_SPACE = 1
local NAMETAG_WIDTH = 30
local NAMETAG_HEIGHT = 3
local NAMETAG_TEXTSIZE = 0.2
local NAMETAG_OUTLINE_THICKNESS = 1.2
 
 
--
local NAMETAG_ALPHA_DIFF = NAMETAG_DISTANCE - NAMETAG_ALPHA_DISTANCE
NAMETAG_SCALE = 1/NAMETAG_SCALE * 800 / g_screenY
 
-- Ensure the name tag doesn't get too big
local maxScaleCurve = { {0, 0}, {3, 3}, {13, 5} }
-- Ensure the text doesn't get too small/unreadable
local textScaleCurve = { {0, 0.8}, {0.8, 1.2}, {99, 99} }
-- Make the text a bit brighter and fade more gradually
local textAlphaCurve = { {0, 0}, {25, 100}, {120, 190}, {255, 190} }
 
setPedTargetingMarkerEnabled ( false )
 
function nametag.create ( player )
    nametags[player] = true
end
 
function nametag.destroy ( player )
    nametags[player] = nil
end

addEventHandler ( "onClientPreRender", g_Root,
    function()
if getElementData(getLocalPlayer(), "state.hud") == "disabled" then
return
end
        -- Hideous quick fix --
        for i,player in ipairs(g_Players) do
            if isElement(player) then
                --if player ~= g_Me then
                    setPlayerNametagShowing ( player, false )
                    if not nametags[player] then
                        nametag.create ( player )
                    end
                --end
            end
        end
        if bHideNametags 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(g_Me) then break end
                local px,py,pz = getElementPosition ( player )
                if not isLineOfSightClear(x, y, z, px, py, pz, true, false, false, true, false, true) then break end
                local pdistance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz )
                if pdistance <= NAMETAG_DISTANCE then
                    --Get screenposition
                    local sx,sy = getScreenFromWorldPosition ( px, py, pz+0.95, 0.06 )
                    if not sx or not sy then break end
                    --Calculate our components
                    local scale = 1/(NAMETAG_SCALE * (pdistance / NAMETAG_DISTANCE))
                    local alpha = ((pdistance - NAMETAG_ALPHA_DISTANCE) / NAMETAG_ALPHA_DIFF)
                    alpha = (alpha < 0) and NAMETAG_ALPHA or NAMETAG_ALPHA-(alpha*NAMETAG_ALPHA)
                    scale = math.evalCurve(maxScaleCurve,scale)
                    local textscale = math.evalCurve(textScaleCurve,scale)
                    local textalpha = math.evalCurve(textAlphaCurve,alpha)
                    local outlineThickness = NAMETAG_OUTLINE_THICKNESS*(scale)
                    --Draw our text
                    local playerName = getPlayerName(player):gsub("#%x%x%x%x%x%x","")
                    local r,g,b = getPlayerNametagColor(player)
                    local offset = (scale) * NAMETAG_TEXT_BAR_SPACE/2
local w = dxGetTextWidth(playerName, textscale * NAMETAG_TEXTSIZE, srfont) / 2
local myR = getElementData(localPlayer, "reputation.reputation")
local playerR = getElementData(player, "reputation.reputation")
                   
                    local drawX = sx - NAMETAG_WIDTH*scale/2
                    drawY = sy + offset
                    local width,height =  NAMETAG_WIDTH*scale, NAMETAG_HEIGHT*scale
dxDrawText ( playerName, sx, sy - offset, sx, sy - offset, tocolor(0,0,0,255), textscale*NAMETAG_TEXTSIZE, srfont, "center", "bottom", false, false, false, true, true )
if myR and playerR then
if getElementData(localPlayer, "reputation.criminal") == false and getElementData(player, "reputation.criminal") == false then
rr, rg, rb = 158, 210, 229
elseif getElementData(localPlayer, "reputation.criminal") == true and getElementData(player, "reputation.criminal") == false then
rr, rg, rb = 217, 25, 31
elseif getElementData(localPlayer, "reputation.criminal") == false and getElementData(player, "reputation.criminal") == true then
rr, rg, rb = 217, 25, 31
elseif getElementData(localPlayer, "reputation.criminal") == true and getElementData(player, "reputation.criminal") == true then
rr, rg, rb = 246, 231, 89
end
else
rr, rg, rb = r, g, b
end
dxDrawText ( playerName, sx, sy - offset, sx, sy - offset, tocolor(rr,rg,rb,255), textscale*NAMETAG_TEXTSIZE, srfont, "center", "bottom", false, false, false, true, true )
nameWidth = dxGetTextWidth ( playerName, textscale*NAMETAG_TEXTSIZE, srfont )
teamWidth = nameWidth
local team = getPlayerTeam(player)
if team then
dxDrawText ( "["..getTeamName(team).."]", sx, sy - offset + 6*scale, sx, sy - offset + 6*scale, tocolor(0,0,0,255), textscale*NAMETAG_TEXTSIZE*0.75, srfont, "center", "bottom", false, false, false, true, true )
dxDrawText ( "["..getTeamName(team).."]", sx, sy - offset + 6*scale, sx, sy - offset + 6*scale, tocolor(rr,rg,rb,255), textscale*NAMETAG_TEXTSIZE*0.75, srfont, "center", "bottom", false, false, false, true, true )
teamWidth = dxGetTextWidth ( "["..getTeamName(team).."]", textscale*NAMETAG_TEXTSIZE*0.75, srfont )
end
                    local imageSize = dxGetFontHeight ( textscale*NAMETAG_TEXTSIZE, srfont )
                    if getElementData(player, "reputation.class") and fileExists ( ":reputation/class/classicon_"..getElementData(player, "reputation.class")..".png" ) then
                    dxDrawImage ( sx - math.max(nameWidth/2, teamWidth/2) - imageSize - 1*scale, sy - imageSize, imageSize, imageSize, ":reputation/class/classicon_"..getElementData(player, "reputation.class")..".png" )
                    end
                    if getElementData(player, "reputation.status") and fileExists ( ":reputation/reputation/goodevil_"..getElementData(player, "reputation.status")..".png" ) then
                    dxDrawImage ( sx + math.max(nameWidth/2, teamWidth/2) + 1*scale, sy - imageSize, imageSize, imageSize, ":reputation/reputation/goodevil_"..getElementData(player, "reputation.status")..".png" )
                    end
                end
                break
            --end
        end
    end
)
 
 
---------------THE FOLLOWING IS THE MANAGEMENT OF NAMETAGS-----------------
addEventHandler('onClientResourceStart', g_Root,
    function()
        for i,player in ipairs(getElementsByType"player") do
            --if player ~= g_Me then
                nametag.create ( player )
            --end
        end
    end
)
 
addEventHandler ( "onClientPlayerJoin", g_Root,
    function()
        --if source == g_Me then return end
        setPlayerNametagShowing ( source, false )
        nametag.create ( source )
    end
)
 
addEventHandler ( "onClientPlayerQuit", g_Root,
    function()
        nametag.destroy ( source )
    end
)
 
-- Math functions
function math.lerp(from,to,alpha)
    return from + (to-from) * alpha
end
 
-- curve is { {x1, y1}, {x2, y2}, {x3, y3} ... }
function math.evalCurve( curve, input )
    -- First value
    if input<curve[1][1] then
        return curve[1][2]
    end
    -- Interp value
    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]
            -- Find pos between input points
            local alpha = (input - x1)/(x2 - x1);
            -- Map to output points
            return math.lerp(y1,y2,alpha)
        end
    end
    -- Last value
    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
 


Çevrimdışı Gezen Oyuncu

  • Yeni Üye
  • *
    • İleti: 4
Yanıtla #2 : 25 Şubat 2020, 18:03:46
olmadı Linki görebilmek için Kayıt olun yada Giriş yapın.