Recoloring DNumSlider

I got a problem with my background is black, but the small black dots n the NumSlider is also black so you cant see it. How do i recolor it, and is there a list where i can find all the methods to recolor something in derma?

The function below is what draws the notches, if you redefine it, you could change the colour.

[LUA]
local DNumSlider – Your VGUI Element
local slider = DNumSlider.Slider;

function slider:DrawNotches( level, x, y, w, h, range, value, min, max )

local size = level * self:GetZoom();
if ( size < 5 ) then return end
if ( size > w*2 ) then return end

local alpha = 255

if ( size < 150 )  then alpha = alpha * ((size - 2) / 140) end
if ( size > (w*2) - 100 )  then alpha = alpha * (1 - ((size - (w - 50)) / 50)) end

local halfw = w * 0.5
local span = math.ceil( w / size )
local realmid = x + w * 0.5 - (value * self:GetZoom());
local mid = x + w * 0.5 - math.mod( value * self:GetZoom(), size );
local top = h * 0.4;
local nh = h - (top);

local frame_min = realmid + min * self:GetZoom()
local frame_width = range * self:GetZoom()

surface.SetDrawColor( 0, 0, 0, alpha )
surface.DrawRect( frame_min, y + top, frame_width, 2 );

surface.SetFont( "DermaDefault" )

for n = -span, span, 1 do

	local nx = ((mid) + n * size)
	
	local dist = 1 - (math.abs( halfw - nx + x ) / w);
	
	local val = (nx - realmid) / self:GetZoom();

	if ( val <= min+0.001 ) then continue end
	if ( val >= max-0.001 ) then continue end

	surface.SetDrawColor( 0, 0, 0, alpha * dist )
	surface.SetTextColor( 0, 0, 0, alpha * dist )

	surface.DrawRect( nx, y+top, 2, nh )

	local tw, th = surface.GetTextSize( val )

	surface.SetTextPos( nx - (tw * 0.5), y + top - th )
	surface.DrawText( val )

end

surface.SetDrawColor( 0, 0, 0, alpha )
surface.SetTextColor( 0, 0, 0, alpha  )

--
-- Draw the last one.
--
local nx = realmid + max * self:GetZoom()
surface.DrawRect( nx, y+top, 2, nh )

local val = max;
local tw, th = surface.GetTextSize( val )

surface.SetTextPos( nx - (tw * 0.5), y + top - th )
surface.DrawText( val )

--
-- Draw the first
--
local nx = realmid + min * self:GetZoom()
surface.DrawRect( nx, y+top, 2, nh )

local val = min;
local tw, th = surface.GetTextSize( val )

surface.SetTextPos( nx - (tw * 0.5), y + top - th )
surface.DrawText( val )

end
[/LUA]

Where should i put this?

Where you are defining your DNumSlider instance. Get the slider child panel, and redefine its DrawNotches function with your modified version.

Sorry, but can you give a example where to place it?

It’s not exactly complicated

[Lua]
local DermaNumSlider = vgui.Create( “DNumSlider”)
DermaNumSlider:SetPos( 25, 50 ) // Set the position
DermaNumSlider:SetSize( 150, 100 ) // Set the size
DermaNumSlider:SetText( “Maximum props” ) // Set the text above the slider
DermaNumSlider:SetMin( 0 ) // Set the minimum number you can slide to
DermaNumSlider:SetMax( 256 ) // Set the maximum number you can slide to
DermaNumSlider:SetDecimals( 0 ) // Decimal places - zero for whole number
DermaNumSlider:SetConVar( “sbox_maxprops” ) // Changes the ConVar when you slide

local slider = DermaNumSlider.Slider;

function slider:DrawNotches( level, x, y, w, h, range, value, min, max )

-- Code

end
[/lua]

Yeah, but i cant get it to change color, and then i was thinking it implemented it wrong.

You change the colour inside the function be changing the surface.SetDrawColor functions inside the redefinition.

James, try out the code you suggested. I did, and it didn’t seem to override for me.