• My hud seems to put %s on it for some reason.
    2 replies, posted
Hi! I am currently working on a hud for DarkRP, and i basically got 2 old huds, mashed them together, and fixed their code for the new gmod. But i am having a problem that has intrigued me. For some reason, my hud tends to write %s on it after the text. For example: Salary: %s%s$12 here is a picture [url]http://i.imgur.com/4jbHDkM.png[/url] here's the code: [lua] /*--------------------------------------------------------------------------- HUD ConVars ---------------------------------------------------------------------------*/ local function formatNumber(n) n = tonumber(n) if (!n) then return 0 end if n >= 1e14 then return tostring(n) end n = tostring(n) sep = sep or "," local dp = string.find(n, "%.") or #n+1 for i=dp-4, 1, -3 do n = n:sub(1, i) .. sep .. n:sub(i+1) end return n end local ConVars = {} local HUDWidth local HUDHeight CreateClientConVar("weaponhud", 0, true, false) CUR = "$" local flat = Material("vgui/white.vtf") local sin,cos,rad = math.sin,math.cos,math.rad --it slightly increases the speed. local HUDAlpha = 245 local CirclePasses = 50 local PortraitScale = ScrW() / 14 local CircleMargin = 0 local HealthCircleMargin = 7 local HealthCircleWidth = 20 local PortraitPos = Vector(PortraitScale + 20 , ScrH() - PortraitScale - CircleMargin ) DisplayPortrait = true local MarginCircle = {} for i=1,CirclePasses do MarginCircle[i] = {x = PortraitPos.x + cos(rad(i*360)/CirclePasses)*PortraitScale,y = PortraitPos.y + sin(rad(i*360)/CirclePasses)*PortraitScale} end local InnerCircle = {} for i=1,CirclePasses do InnerCircle[i] = {x = PortraitPos.x + cos(rad(i*360)/CirclePasses)*(PortraitScale - HealthCircleMargin),y = PortraitPos.y + sin(rad(i*360)/CirclePasses)*(PortraitScale - HealthCircleMargin)} end local HungerCircleWidth = PortraitScale - HealthCircleWidth - HealthCircleMargin *2 local HungerCircle = {} for i=1,CirclePasses do HungerCircle[i] = {x = PortraitPos.x + cos(rad(i*360)/CirclePasses)* (HungerCircleWidth),y = PortraitPos.y + sin(rad(i*360)/CirclePasses)* (HungerCircleWidth)} end local MarginCircle2 = {} for i=1,CirclePasses do MarginCircle2[i] = {x = PortraitPos.x + cos(rad(i*360)/CirclePasses)*(PortraitScale- HealthCircleWidth),y = PortraitPos.y + sin(rad(i*360)/CirclePasses)*(PortraitScale- HealthCircleWidth)} end local PortraitModel local PortraitModelView local MoneyIcon = Material("icon16/money.png") local WalletIcon = Material("icon16/briefcase.png") local JobIcon = Material("icon16/user_suit.png") local WantedStar = Material("icon16/user_suit.png") hook.Add("InitPostEntity", "CircularHUDInitEnts", function() PortraitModel = ClientsideModel(LocalPlayer():GetModel(), RENDERGROUP_OPAQUE) PortraitModelView = PositionSpawnIcon( PortraitModel, Vector(0,0,0) ) PortraitModel:SetNoDraw( true ) PortraitModel:SetPos(Vector(0,0,0)) timer.Create( "RefreshPortrait", 1, 0, function() if PortraitModel:GetModel() != LocalPlayer():GetModel() then PortraitModel = ClientsideModel(LocalPlayer():GetModel(), RENDERGROUP_OPAQUE) PortraitModelView = PositionSpawnIcon( PortraitModel, Vector(0,0,0) ) PortraitModel:SetNoDraw( true ) PortraitModel:SetPos(Vector(0,0,0)) end end) end) function DrawCircularCustomHud() LocalPlayer().DarkRPVars = LocalPlayer().DarkRPVars or {} LocalPlayer().DarkRPVars.Energy = LocalPlayer().DarkRPVars.Energy or 0 surface.SetMaterial(flat) LocalPlayer().DarkRPVars = LocalPlayer().DarkRPVars or {} local Salary = LANGUAGE.salary .. CUR .. (LocalPlayer().DarkRPVars.salary or 0) local Job = LANGUAGE.job .. (LocalPlayer().DarkRPVars.job or "") local Wallet = LANGUAGE.wallet .. CUR .. (formatNumber(LocalPlayer().DarkRPVars.money) or 0) --Armor bar /* surface.SetDrawColor( 0, 0, 255, HUDAlpha ) surface.DrawRect( PortraitScale*2, ScrH() - PortraitScale - CircleMargin, ScrW()/2 - PortraitScale*2 + PortraitScale*4, PortraitScale * 0.48 + CircleMargin / 2 ) */ --Black Bar underneath the Circles surface.SetDrawColor( 0,0,0, HUDAlpha ) surface.DrawRect(PortraitScale*2, ScrH() - PortraitScale - CircleMargin, ScrW()/2 - PortraitScale*2 + PortraitScale*4, PortraitScale * 0.48 + CircleMargin / 2 ) if DisplayPortrait then --render.SetScissorRect(0,0, ScrW(), ScrH() - PortraitScale * 0.48 - CircleMargin, true) --Circle behind everything surface.SetDrawColor( 0,0,0, HUDAlpha ) surface.DrawPoly( MarginCircle ) --Grey Circle Behind Health Bar surface.SetDrawColor( 50,50,50, HUDAlpha ) surface.DrawPoly( InnerCircle ) --Black Circle Behind Hunger Bar surface.SetDrawColor( 0,0,0, HUDAlpha ) surface.DrawPoly( HungerCircle ) --Character Portrait render.ClearStencil() render.SetStencilEnable( true ) render.SetStencilFailOperation( STENCILOPERATION_KEEP ) render.SetStencilZFailOperation( STENCILOPERATION_REPLACE ) render.SetStencilPassOperation( STENCILOPERATION_REPLACE ) render.SetStencilCompareFunction( STENCILCOMPARISONFUNCTION_ALWAYS ) render.SetStencilReferenceValue( 1 ) surface.SetDrawColor( 0,46,99, HUDAlpha ) surface.DrawPoly( HungerCircle ) surface.SetDrawColor( 0,0,0, 255 ) render.SetScissorRect(0,0, ScrW(), PortraitPos.y - HungerCircleWidth + (HungerCircleWidth * 2 * (1-math.Clamp(math.ceil(LocalPlayer().DarkRPVars.Energy), 0, 100)/100)) , true) surface.DrawPoly( HungerCircle ) render.SetScissorRect(0,0, ScrW(), PortraitPos.y - HungerCircleWidth + (HungerCircleWidth * 2 * (1-math.Clamp(math.ceil(LocalPlayer().DarkRPVars.Energy), 0, 100)/100)) , false) render.SetStencilCompareFunction( STENCILCOMPARISONFUNCTION_EQUAL ) render.SetStencilPassOperation( STENCILOPERATION_REPLACE ) --Hunger Display PortraitModel = ClientsideModel(LocalPlayer():GetModel(), RENDERGROUP_OPAQUE) PortraitModelView = PositionSpawnIcon( PortraitModel, Vector(0,0,0) ) cam.Start3D( PortraitModelView.origin, PortraitModelView.angles, PortraitModelView.fov, PortraitPos.x - HungerCircleWidth, PortraitPos.y -HungerCircleWidth , HungerCircleWidth*2, HungerCircleWidth*2, PortraitModelView.origin.znear, PortraitModelView.zfar ) cam.IgnoreZ( true ) render.SuppressEngineLighting( true ) render.SetLightingOrigin( PortraitModel:GetPos() ) PortraitModel:DrawModel() render.SuppressEngineLighting( false ) cam.IgnoreZ( false ) cam.End3D() render.SetStencilEnable( false ) --Health Display surface.SetDrawColor( 0, 127, 14, 255 ) if LocalPlayer():Health() > 0 then for a = 0, math.Clamp( LocalPlayer():Health() / (100/CirclePasses), 0, CirclePasses - 1 ) do surface.DrawTexturedRectRotated( PortraitPos.x + cos( rad( -a * 270/CirclePasses + 225 ) ) * (PortraitScale - HealthCircleWidth/2 - HealthCircleMargin), PortraitPos.y - sin( rad( -a * 270/CirclePasses + 225) ) * (PortraitScale - HealthCircleWidth/2 - HealthCircleMargin), HealthCircleWidth, 12 + sin( rad(360/CirclePasses) ) * HealthCircleWidth * 2, -a * 270/CirclePasses + 225 ) end end --Armor Display surface.SetDrawColor( 0, 00, 255, 255 ) if LocalPlayer():Armor() > 0 then for a = 0, math.Clamp( LocalPlayer():Armor() / (100/CirclePasses), 0, CirclePasses - 1 ) do surface.DrawTexturedRectRotated( PortraitPos.x + cos( rad( -a * 270/CirclePasses + 225 ) ) * (PortraitScale - HealthCircleWidth/2 - HealthCircleMargin), PortraitPos.y - sin( rad( -a * 270/CirclePasses + 225) ) * (PortraitScale - HealthCircleWidth/2 - HealthCircleMargin), HealthCircleWidth*0.8, 12 + sin( rad(360/CirclePasses) ) * HealthCircleWidth * 2, -a * 270/CirclePasses + 225 ) end end --ren
That's because LANGUAGE.salary has the %s in it, you'll need to use string.format to replace %s with your "CUR .. (LocalPlayer().DarkRPVars.salary or 0)"
[QUOTE=Robotboy655;42046359]That's because LANGUAGE.salary has the %s in it, you'll need to use string.format to replace %s with your "CUR .. (LocalPlayer().DarkRPVars.salary or 0)"[/QUOTE] Oh thank you! Ill return with progress in 8-9 hours
Sorry, you need to Log In to post a reply to this thread.