• Modify Default DarkRP HUd
    1 replies, posted
Hello, so, I've been working on modifying the darkrp default HUD and everything's working fine and dandy except one thing. People with different screen resolutions see the HUD differnelty, so I have 1920x1080 and I see the HUD perfectly but others don't, below is the code. /*--------------------------------------------------------------------------- HUD ConVars ---------------------------------------------------------------------------*/ local ConVars = {} local HUDWidth local HUDHeight local Color = Color local cvars = cvars local DarkRP = DarkRP local CurTime = CurTime local draw = draw local GetConVar = GetConVar local IsValid = IsValid local Lerp = Lerp local localplayer local math = math local pairs = pairs local ScrW, ScrH = ScrW, ScrH local SortedPairs = SortedPairs local string = string local surface = surface local table = table local timer = timer local tostring = tostring CreateClientConVar("weaponhud", 0, true, false) local colors = {} colors.black = Color(0, 0, 0, 255) colors.blue = Color(0, 0, 255, 255) colors.brightred = Color(200, 30, 30, 255) colors.darkred = Color(0, 0, 70, 100) colors.darkblack = Color(0, 0, 0, 200) colors.gray1 = Color(0, 0, 0, 155) colors.gray2 = Color(51, 58, 51,100) colors.red = Color(255, 0, 0, 255) colors.white = Color(255, 255, 255, 255) colors.white1 = Color(255, 255, 255, 200) local function ReloadConVars() ConVars = { background = {0,0,0,100}, Healthbackground = {0,0,0,200}, Healthforeground = {140,0,0,180}, HealthText = {255,255,255,200}, Job1 = {0,0,150,200}, Job2 = {0,0,0,255}, salary1 = {0,150,0,200}, salary2 = {0,0,0,255} } for name, Colour in pairs(ConVars) do ConVars[name] = {} for num, rgb in SortedPairs(Colour) do local CVar = GetConVar(name..num) or CreateClientConVar(name..num, rgb, true, false) table.insert(ConVars[name], CVar:GetInt()) if not cvars.GetConVarCallbacks(name..num, false) then cvars.AddChangeCallback(name..num, function() timer.Simple(0,ReloadConVars) end) end end ConVars[name] = Color(unpack(ConVars[name])) end HUDWidth = (GetConVar("HudW") or CreateClientConVar("HudW", 240, true, false)):GetInt() HUDHeight = (GetConVar("HudH") or CreateClientConVar("HudH", 115, true, false)):GetInt() if not cvars.GetConVarCallbacks("HudW", false) and not cvars.GetConVarCallbacks("HudH", false) then cvars.AddChangeCallback("HudW", function() timer.Simple(0,ReloadConVars) end) cvars.AddChangeCallback("HudH", function() timer.Simple(0,ReloadConVars) end) end end ReloadConVars() local Scrw, Scrh, RelativeX, RelativeY /*--------------------------------------------------------------------------- HUD Seperate Elements ---------------------------------------------------------------------------*/ local Health = 0 local function DrawHealth() Health = math.min(100, (Health == localplayer:Health() and Health) or Lerp(0.1, Health, localplayer:Health())) local DrawHealth = math.Min(Health / GAMEMODE.Config.startinghealth, 1) local Border = math.Min(6, math.pow(2, math.Round(3*DrawHealth))) // draw.RoundedBox(Border, RelativeX + 4, RelativeY - 30, HUDWidth - 8, 20, ConVars.Healthbackground) // draw.RoundedBox(Border, RelativeX + 5, RelativeY - 29, (HUDWidth - 9) * DrawHealth, 18, ConVars.Healthforeground) draw.DrawNonParsedText(math.Max(0, math.Round(localplayer:Health())), "DarkRPHUD2", RelativeX + 250 + (HUDWidth - 8)/2, RelativeY - 85, ConVars.HealthText, 1) -- Armor local armor = localplayer:Armor() if armor ~= 0 then draw.RoundedBox( 4, ScrW() / 9, ScrH() - 45, math.Clamp( armor, 0, 200)*3, 25, Color( 0, 0, 255, 255) ) end end local function DrawInfo() local Salary = DarkRP.getPhrase("salary", DarkRP.formatMoney(localplayer:getDarkRPVar("salary")), "") JobWallet = string.format("%s\n%s", DarkRP.getPhrase("job", localplayer:getDarkRPVar("job") or ""), DarkRP.getPhrase("wallet", DarkRP.formatMoney(localplayer:getDarkRPVar("money")), "") ) local wep = localplayer:GetActiveWeapon() if IsValid(wep) and GAMEMODE.Config.weaponhud then local name = wep:GetPrintName(); draw.DrawNonParsedText(DarkRP.getPhrase("weapon", name), "UiBold", RelativeX + 5, RelativeY - HUDHeight - 18, colors.white, 0) end // draw.DrawNonParsedText(Salary, "DarkRPHUD2", RelativeX + 5, RelativeY - HUDHeight + 6, ConVars.salary1, 0) draw.DrawNonParsedText(Salary, "DarkRPHUD2", RelativeX + 90, RelativeY - HUDHeight + 5, ConVars.salary2, 0) surface.SetFont("DarkRPHUD2") local w, h = surface.GetTextSize(Salary) // draw.DrawNonParsedText(JobWallet, "DarkRPHUD2", RelativeX + 5, RelativeY - HUDHeight + h + 6, ConVars.Job1, 0) draw.DrawNonParsedText(JobWallet, "DarkRPHUD2", RelativeX + 90, RelativeY - HUDHeight + h + 5, ConVars.Job2, 0) end local Page = Material("icon16/page_white_text.png") local function GunLicense() if localplayer:getDarkRPVar("HasGunlicense") then surface.SetMaterial(Page) surface.SetDrawColor(255, 255, 255, 255) surface.DrawTexturedRect(RelativeX + HUDWidth, ScrH() - 34, 32, 32) end end local function Agenda() local shouldDraw = hook.Call("HUDShouldDraw", GAMEMODE, "DarkRP_Agenda") if shouldDraw == false then return end local ply = LocalPlayer() local agenda = ply:getAgendaTable() if not agenda then return end draw.RoundedBox(10, 10, 10, 460, 110, colors.gray1) draw.RoundedBox(10, 12, 12, 456, 106, colors.gray2) draw.RoundedBox(10, 12, 12, 456, 20, colors.darkred) draw.DrawNonParsedText(agenda.Title, "DarkRPHUD1", 30, 12, colors.red, 0) local text = ply:getDarkRPVar("agenda") or "" text = text:gsub("//", "\n"):gsub("\\n", "\n") text = DarkRP.textWrap(text, "DarkRPHUD1", 440) draw.DrawNonParsedText(text, "DarkRPHUD1", 30, 35, colors.white, 0) end local VoiceChatTexture = surface.GetTextureID("voice/icntlk_pl") local function DrawVoiceChat() if localplayer.DRPIsTalking then local chbxX, chboxY = chat.GetChatBoxPos() local Rotating = math.sin(CurTime()*3) local backwards = 0 if Rotating < 0 then Rotating = 1-(1+Rotating) backwards = 180 end surface.SetTexture(VoiceChatTexture) surface.SetDrawColor(ConVars.Healthforeground) surface.DrawTexturedRectRotated(ScrW() - 100, chboxY, Rotating*96, 96, backwards) end end CreateConVar("DarkRP_LockDown", 0, {FCVAR_REPLICATED, FCVAR_SERVER_CAN_EXECUTE}) local function LockDown() local chbxX, chboxY = chat.GetChatBoxPos() if util.tobool(GetConVarNumber("DarkRP_LockDown")) then local cin = (math.sin(CurTime()) + 1) / 2 local chatBoxSize = math.floor(ScrH() / 4) draw.DrawNonParsedText(DarkRP.getPhrase("lockdown_started"), "ScoreboardSubtitle", chbxX, chboxY + chatBoxSize, Color(cin * 255, 0, 255 - (cin * 255), 255), TEXT_ALIGN_LEFT) end end local Arrested = function() end usermessage.Hook("GotArrested", function(msg) local StartArrested = CurTime() local ArrestedUntil = msg:ReadFloat() Arrested = function() if CurTime() - StartArrested <= ArrestedUntil and localplayer:getDarkRPVar("Arrested") then draw.DrawNonParsedText(DarkRP.getPhrase("youre_arrested", math.ceil(ArrestedUntil - (CurTime() - StartArrested))), "DarkRPHUD1", ScrW()/2, ScrH() - ScrH()/12, colors.white, 1) elseif not localplayer:getDarkRPVar("Arrested") then Arrested = function() end end end end) local AdminTell = function() end usermessage.Hook("AdminTell", function(msg) timer.Destroy("DarkRP_AdminTell") local Message = msg:ReadString() AdminTell = function() draw.RoundedBox(4, 10, 10, ScrW() - 20, 110, colors.darkblack) draw.DrawNonParsedText(DarkRP.getPhrase("listen_up"), "GModToolName", ScrW() / 2 + 10, 10, colors.white, 1) draw.DrawNonParsedText(Message, "ChatFont", ScrW() / 2 + 10, 90, colors.brightred, 1) end timer.Create("DarkRP_AdminTell", 10, 1, function() AdminTell = function() end end) end) /*--------------------------------------------------------------------------- Drawing the HUD elements such as Health etc. -----------------------------------------------------------------------
[lua] [.lua][./lua] [/lua] Very helpful for people trying to help you.
Sorry, you need to Log In to post a reply to this thread.