Jump to content

Colored names


ATS#Nexus

Recommended Posts

Posted
Show the code... it should work. Use [lua] tag.

--Draw our text 
        local r,g,b = 150,150,150 
        local offset = (scale) * NAMETAG_TEXT_BAR_SPACE/2 
        dxDrawText ( info.name, sx, sy - offset, sx, sy - offset, tocolor(r,g,b,textalpha), textscale*NAMETAG_TEXTSIZE, "default", "center", "bottom", false, false, false ) 
         
        --We draw three parts to make the healthbar.  First the outline/background 
        local drawX = sx - NAMETAG_WIDTH*scale/2 
        drawY = sy + offset 
        --[[local width,height =  NAMETAG_WIDTH*scale, NAMETAG_HEIGHT*scale 
        dxDrawRectangle ( drawX, drawY, width, height, tocolor(0,0,0,alpha) ) 
        --Next the inner background  
        local health = getElementHealth(vehicle) 
        health = math.max(health - 250, 0)/750 
        local p = -510*(health^2) 
        local r,g = math.max(math.min(p + 255*health + 255, 255), 0), math.max(math.min(p + 765*health, 255), 0) 
        dxDrawRectangle (   drawX + outlineThickness,  
                                        drawY + outlineThickness,  
                                        width - outlineThickness*2,  
                                        height - outlineThickness*2,  
                                        tocolor(r,g,0,0.4*alpha)  
                                    ) 
                    --Finally, the actual health 
                    dxDrawRectangle (   drawX + outlineThickness,  
                                        drawY + outlineThickness,  
                                        health*(width - outlineThickness*2),  
                                        height - outlineThickness*2,  
                                        tocolor(r,g,0,alpha)  
                                    )--]] 
        dxDrawText ( info.time, sx, drawY, sx, drawY, tocolor(r,g,b,textalpha), textscale*NAMETAG_TEXTSIZE*0.8, "default", "center", "top", false, false, false ) 
    end 

Posted
dxDrawText with colorCode support is already added, use it instead because it works much faster.

If dxDrawText with colorCode support is already added then why i see color code instead of colored name?

Posted

Try:

Put this outside the onClientRender event:

function dxDrawColorText(str, ax, ay, bx, by, color, scale, font, alignX, alignY) 
  bx, by, color, scale, font = bx or ax, by or ay, color or tocolor(255,255,255,255), scale or 1, font or "default" 
  if alignX then 
    if alignX == "center" then 
      ax = ax + (bx - ax - dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font))/2 
    elseif alignX == "right" then 
      ax = bx - dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font) 
    end 
  end 
  if alignY then 
    if alignY == "center" then 
      ay = ay + (by - ay - dxGetFontHeight(scale, font))/2 
    elseif alignY == "bottom" then 
      ay = by - dxGetFontHeight(scale, font) 
    end 
  end 
  local alpha = string.format("%08X", color):sub(1,2) 
  local pat = "(.-)#(%x%x%x%x%x%x)" 
  local s, e, cap, col = str:find(pat, 1) 
  local last = 1 
  while s do 
    if cap == "" and col then color = tocolor(getColorFromString("#"..col..alpha)) end 
    if s ~= 1 or cap ~= "" then 
      local w = dxGetTextWidth(cap, scale, font) 
      dxDrawText(cap, ax, ay, ax + w, by, color, scale, font) 
      ax = ax + w 
      color = tocolor(getColorFromString("#"..col..alpha)) 
    end 
    last = e + 1 
    s, e, cap, col = str:find(pat, last) 
  end 
  if last <= #str then 
    cap = str:sub(last) 
    dxDrawText(cap, ax, ay, ax + dxGetTextWidth(cap, scale, font), by, color, scale, font) 
  end 
end 

And put this into that event

  
  
--Draw our text 
        local r,g,b = 150,150,150 
        local offset = (scale) * NAMETAG_TEXT_BAR_SPACE/2 
        dxDrawColorText ( info.name, sx, sy - offset, sx, sy - offset, tocolor(r,g,b,textalpha), textscale*NAMETAG_TEXTSIZE, "default", "center", "bottom", false, false, false ) 
        
        --We draw three parts to make the healthbar.  First the outline/background 
        local drawX = sx - NAMETAG_WIDTH*scale/2 
        drawY = sy + offset 
        --[[local width,height =  NAMETAG_WIDTH*scale, NAMETAG_HEIGHT*scale 
        dxDrawRectangle ( drawX, drawY, width, height, tocolor(0,0,0,alpha) ) 
        --Next the inner background 
        local health = getElementHealth(vehicle) 
        health = math.max(health - 250, 0)/750 
        local p = -510*(health^2) 
        local r,g = math.max(math.min(p + 255*health + 255, 255), 0), math.max(math.min(p + 765*health, 255), 0) 
        dxDrawRectangle (   drawX + outlineThickness, 
                                        drawY + outlineThickness, 
                                        width - outlineThickness*2, 
                                        height - outlineThickness*2, 
                                        tocolor(r,g,0,0.4*alpha) 
                                    ) 
                    --Finally, the actual health 
                    dxDrawRectangle (   drawX + outlineThickness, 
                                        drawY + outlineThickness, 
                                        health*(width - outlineThickness*2), 
                                        height - outlineThickness*2, 
                                        tocolor(r,g,0,alpha) 
                                    )--]] 
        dxDrawText ( info.time, sx, drawY, sx, drawY, tocolor(r,g,b,textalpha), textscale*NAMETAG_TEXTSIZE*0.8, "default", "center", "top", false, false, false ) 
    end 

Posted
Try:

Put this outside the onClientRender event:

function dxDrawColorText(str, ax, ay, bx, by, color, scale, font, alignX, alignY) 
  bx, by, color, scale, font = bx or ax, by or ay, color or tocolor(255,255,255,255), scale or 1, font or "default" 
  if alignX then 
    if alignX == "center" then 
      ax = ax + (bx - ax - dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font))/2 
    elseif alignX == "right" then 
      ax = bx - dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font) 
    end 
  end 
  if alignY then 
    if alignY == "center" then 
      ay = ay + (by - ay - dxGetFontHeight(scale, font))/2 
    elseif alignY == "bottom" then 
      ay = by - dxGetFontHeight(scale, font) 
    end 
  end 
  local alpha = string.format("%08X", color):sub(1,2) 
  local pat = "(.-)#(%x%x%x%x%x%x)" 
  local s, e, cap, col = str:find(pat, 1) 
  local last = 1 
  while s do 
    if cap == "" and col then color = tocolor(getColorFromString("#"..col..alpha)) end 
    if s ~= 1 or cap ~= "" then 
      local w = dxGetTextWidth(cap, scale, font) 
      dxDrawText(cap, ax, ay, ax + w, by, color, scale, font) 
      ax = ax + w 
      color = tocolor(getColorFromString("#"..col..alpha)) 
    end 
    last = e + 1 
    s, e, cap, col = str:find(pat, last) 
  end 
  if last <= #str then 
    cap = str:sub(last) 
    dxDrawText(cap, ax, ay, ax + dxGetTextWidth(cap, scale, font), by, color, scale, font) 
  end 
end 

And put this into that event

  
  
--Draw our text 
        local r,g,b = 150,150,150 
        local offset = (scale) * NAMETAG_TEXT_BAR_SPACE/2 
        dxDrawColorText ( info.name, sx, sy - offset, sx, sy - offset, tocolor(r,g,b,textalpha), textscale*NAMETAG_TEXTSIZE, "default", "center", "bottom", false, false, false ) 
        
        --We draw three parts to make the healthbar.  First the outline/background 
        local drawX = sx - NAMETAG_WIDTH*scale/2 
        drawY = sy + offset 
        --[[local width,height =  NAMETAG_WIDTH*scale, NAMETAG_HEIGHT*scale 
        dxDrawRectangle ( drawX, drawY, width, height, tocolor(0,0,0,alpha) ) 
        --Next the inner background 
        local health = getElementHealth(vehicle) 
        health = math.max(health - 250, 0)/750 
        local p = -510*(health^2) 
        local r,g = math.max(math.min(p + 255*health + 255, 255), 0), math.max(math.min(p + 765*health, 255), 0) 
        dxDrawRectangle (   drawX + outlineThickness, 
                                        drawY + outlineThickness, 
                                        width - outlineThickness*2, 
                                        height - outlineThickness*2, 
                                        tocolor(r,g,0,0.4*alpha) 
                                    ) 
                    --Finally, the actual health 
                    dxDrawRectangle (   drawX + outlineThickness, 
                                        drawY + outlineThickness, 
                                        health*(width - outlineThickness*2), 
                                        height - outlineThickness*2, 
                                        tocolor(r,g,0,alpha) 
                                    )--]] 
        dxDrawText ( info.time, sx, drawY, sx, drawY, tocolor(r,g,b,textalpha), textscale*NAMETAG_TEXTSIZE*0.8, "default", "center", "top", false, false, false ) 
    end 

thank_you_image_500_clr.png

For ghost is done but how to make for other players whyle spectating?

.

Posted

For ghost is done but how to make for other players whyle spectating?

You better start learning then, I won't do it for you.
Posted

For ghost is done but how to make for other players whyle spectating?

You better start learning then, I won't do it for you.

Its easy to say "start learning" but its hard :(

Posted
For ghost is done but how to make for other players whyle spectating?

What? You can do the same in the nametags.lua in the race if that's what you want.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...