I've recently noticed that my servers current HUD creates the following error. This usually occurs only when there are multiple people on the server:
[url]http://gyazo.com/54ddfdf3d74b39867fdd97b9ab242758[/url]
Is there a way to fix this without getting an entirely different HUD?
Here is the hud.lua
[CODE]/*---------------------------------------------------------------------------
HUD ConVars
---------------------------------------------------------------------------*/
local ConVars = {}
local HUDWidth
local HUDHeight
local Color = Color
local cvars = cvars
local draw = draw
local GetConVar = GetConVar
local Lerp = Lerp
local localplayer
local pairs = pairs
local SortedPairs = SortedPairs
local string = string
local surface = surface
local table = table
local tostring = tostring
CreateClientConVar("weaponhud", 0, true, false)
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 function formatNumber(n)
if not n then return "" end
if n >= 1e14 then return tostring(n) end
n = tostring(n)
local 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 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.DrawText(math.Max(0, math.Round(localplayer:Health())), "DarkRPHUD2", RelativeX + 4 + (HUDWidth - 8)/2, RelativeY - 32, ConVars.HealthText, 1)
-- Armor
local armor = localplayer:Armor()
if armor ~= 0 then
draw.RoundedBox(2, RelativeX + 4, RelativeY - 15, (HUDWidth - 8) * armor / 100, 5, Color(0, 0, 255, 255))
end
end
local function DrawInfo()
local Salary = DarkRP.getPhrase("salary", GAMEMODE.Config.currency, (localplayer:getDarkRPVar("salary") or 0))
local JobWallet = {
DarkRP.getPhrase("job", localplayer:getDarkRPVar("job") or ""), "\n",
DarkRP.getPhrase("wallet", GAMEMODE.Config.currency, formatNumber(localplayer:getDarkRPVar("money") or 0))
}
JobWallet = table.concat(JobWallet)
local wep = localplayer:GetActiveWeapon()
if IsValid(wep) and GAMEMODE.Config.weaponhud then
local name = wep:GetPrintName();
draw.DrawText("Weapon: "..name, "UiBold", RelativeX + 5, RelativeY - HUDHeight - 18, Color(255, 255, 255, 255), 0)
end
draw.DrawText(Salary, "DarkRPHUD2", RelativeX + 5, RelativeY - HUDHeight + 6, ConVars.salary1, 0)
draw.DrawText(Salary, "DarkRPHUD2", RelativeX + 4, RelativeY - HUDHeight + 5, ConVars.salary2, 0)
surface.SetFont("DarkRPHUD2")
local w, h = surface.GetTextSize(Salary)
draw.DrawText(JobWallet, "DarkRPHUD2", RelativeX + 5, RelativeY - HUDHeight + h + 6, ConVars.Job1, 0)
draw.DrawText(JobWallet, "DarkRPHUD2", RelativeX + 4, 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 DrawAgenda, AgendaManager = DarkRPAgendas[localplayer:Team()], localplayer:Team()
if not DrawAgenda then
for k,v in pairs(DarkRPAgendas) do
if table.HasValue(v.Listeners or {}, localplayer:Team()) then
DrawAgenda, AgendaManager = DarkRPAgendas[k], k
break
end
end
end
if DrawAgenda then
draw.RoundedBox(10, 10, 10, 460, 110, Color(0, 0, 0, 155))
draw.RoundedBox(10, 12, 12, 456, 106, Color(51, 58, 51,100))
draw.RoundedBox(10, 12, 12, 456, 20, Color(0, 0, 70, 100))
draw.DrawText(DrawAgenda.Title, "DarkRPHUD1", 30, 12, Color(255,0,0,255),0)
local AgendaText = {}
for k,v in pairs(team.GetPlayers(AgendaManager)) do
if not v.DarkRPVars then continue end
table.insert(AgendaText, v:getDarkRPVar("agenda"))
end
local text = table.concat(AgendaText, "\n")
text = text:gsub("//", "\n"):gsub("\\n", "\n")
text = GAMEMODE:TextWrap(text, "DarkRPHUD1", 440)
draw.DrawText(text, "DarkRPHUD1", 30, 35, Color(255,255,255,255),0)
end
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
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.DrawText(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.DrawText(DarkRP.getPhrase("youre_arrested", math.ceil(ArrestedUntil - (CurTime() - StartArrested))), "DarkRPHUD1", ScrW()/2, ScrH() - ScrH()/12, Color(255,255,255,255), 1)
elseif not localplayer:getDarkRPVar("Arrested") then
Arrested = function() end
end
end
end)
local AdminTell = function() end
usermessage.Hook("AdminTell", function(msg)
local Message = msg:ReadString()
AdminTell = function()
draw.RoundedBox(4, 10, 10, ScrW() - 20, 100, Color(0, 0, 0, 200))
draw.DrawText(DarkRP.getPhrase("listen_up"), "GModToolName", ScrW() / 2 + 10, 10, Color(255, 255, 255, 255), 1)
draw.DrawText(Message, "ChatFont", ScrW() / 2 + 10, 80, Color(200, 30, 30, 255), 1)
end
timer.Simple(10, function()
AdminTell = function() end
end)
end)
/*---------------------------------------------------------------------------
Drawing the HUD elements such as Health etc.
---------------------------------------------------------------------------*/
local function DrawHUD()
localplayer = loca
Where is DarkRP.getPhrase defined?
This is an older hud, you just have to readjust where darkRP pulls the phrases from, if you wait a moment, I will re do it, with the values.
[b]edit:[/b]
Why would you want this, it's just an outdated default hud?
Just take the new one out of the GitHub for darkRP.
[url]https://github.com/FPtje/DarkRP/blob/master/gamemode/client/hud.lua[/url]
[QUOTE=Koolaidmini;42209226]This is an older hud, you just have to readjust where darkRP pulls the phrases from, if you wait a moment, I will re do it, with the values.
[b]edit:[/b]
Why would you want this, it's just an outdated default hud?
Just take the new one out of the GitHub for darkRP.
[url]https://github.com/FPtje/DarkRP/blob/master/gamemode/client/hud.lua[/url][/QUOTE]
Sorry, forgot to mention the other part of this hud.
This hud.lua is located in lua/autorun/client
[CODE]local HealthMaterial = Material("icon16/heart.png")
local ArmorMaterial = Material("icon16/shield.png")
local MainColorsTbl = {Color(175,255,50,255), Color(105,180,255,255), Color(255,50,50,255), Color(255,50,255,255)}
local ColorSelection = 1
local function DrawCustomHUD()
draw.RoundedBox( 0, 10, ScrH()-100, 220, 90, Color(30,30,30,255))
draw.RoundedBox( 0, 10, ScrH()-100, 220, 20, MainColorsTbl[ColorSelection])
draw.RoundedBox( 0, 15, ScrH()-75, 60, 60, Color(50,50,50,255))
surface.SetDrawColor(MainColorsTbl[ColorSelection].r,MainColorsTbl[ColorSelection].g,MainColorsTbl[ColorSelection].b,MainColorsTbl[ColorSelection].a)
surface.DrawOutlinedRect( 10, ScrH()-100, 220, 90)
LocalPlayer().DarkRPVars = LocalPlayer().DarkRPVars or {}
local name = LocalPlayer().DarkRPVars.rpname or "Unnamed"
local job = LocalPlayer().DarkRPVars.job or "Unasigned"
local money = LocalPlayer().DarkRPVars.money or "0"
local salary = LocalPlayer().DarkRPVars.salary or "0"
draw.SimpleTextOutlined( "Name: "..name, "DermaDefault", 82, ScrH()-62, MainColorsTbl[ColorSelection], TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP, 1, Color(0,0,0,255))
draw.SimpleTextOutlined( "Job: "..job, "DermaDefault", 82, ScrH()-47, MainColorsTbl[ColorSelection], TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP, 1, Color(0,0,0,255))
draw.SimpleTextOutlined( "Money: "..money.."$", "DermaDefault", 82, ScrH()-32, MainColorsTbl[ColorSelection], TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP, 1, Color(0,0,0,255))
draw.SimpleTextOutlined( "Salary: "..salary.."$", "DermaDefault", 82, ScrH()-17, MainColorsTbl[ColorSelection], TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP, 1, Color(0,0,0,255))
surface.SetDrawColor(255,255,255,2555)
surface.SetMaterial(HealthMaterial)
surface.DrawTexturedRect( 12, ScrH()-98, 16, 16)
draw.SimpleTextOutlined( LocalPlayer():Health().."HP", "DermaDefault", 30, ScrH()-97, Color(255,255,255,255), TEXT_ALIGN_TOP, TEXT_ALIGN_LEFT, 1, Color(0,0,0,255))
surface.SetMaterial(ArmorMaterial)
surface.DrawTexturedRect( 72, ScrH()-98, 16, 16)
draw.SimpleTextOutlined( LocalPlayer():Armor().."%", "DermaDefault", 90, ScrH()-97, Color(255,255,255,255), TEXT_ALIGN_TOP, TEXT_ALIGN_LEFT, 1, Color(0,0,0,255))
if !DermaShown then
PlayerIcon = vgui.Create("SpawnIcon")
PlayerIcon:SetPos( 15, ScrH() - 75 )
PlayerIcon:SetSize(60, 60)
PlayerIcon:SetToolTip("")
PlayerIcon.OnMousePressed = function()
return false
end
PlayerIcon.OnCursorEntered = function()
return false
end
PlayerIcon:SetModel(LocalPlayer():GetModel())
ColorButton = vgui.Create("DButton")
ColorButton:SetPos( 205, ScrH() - 33 )
ColorButton:SetSize(23, 20)
ColorButton:SetImage("icon16/wrench.png")
ColorButton.DoClick = function()
if ColorSelection < #MainColorsTbl then
ColorSelection = ColorSelection + 1
elseif ColorSelection == #MainColorsTbl then
ColorSelection = 1
end
end
ColorButton.Paint = function()
surface.SetDrawColor( 60, 60, 60, 0 )
surface.DrawRect( 0, 0, ColorButton:GetWide(), ColorButton:GetTall() )
end
DermaShown = true
end
PlayerIcon:SetModel(LocalPlayer():GetModel() or "models/props_junk/watermelon01.mdl")
end
hook.Add("HUDPaint", "DrawCustomHUD", DrawCustomHUD)[/CODE]
[B]Edit:[/B]
Also, I still get the same error using the new hud from github.
Thanks for the help so far btw :)
You can't put it in autorun since it will run before DarkRP is loaded.
You turd, all you do is replace them, eg. "hud.lua" into "gamemodes/darkrp/gamemode/client"
[QUOTE=Chessnut;42212675]You can't put it in autorun since it will run before DarkRP is loaded.[/QUOTE]
Ah, I see the problem! Thank you :)
Sorry, you need to Log In to post a reply to this thread.