I threw my HUD into the addons folder, the darkrp_modules folder and it seems to only work as a cl_hudreplacement. I want to be able to throw it in the addons folder and have it work. Someone please help me
local hideHUDElements = {
-- if you DarkRP_HUD this to true, ALL of DarkRP's HUD will be disabled. That is the health bar and stuff,
-- but also the agenda, the voice chat icons, lockdown text, player arrested text and the names above players' heads
["DarkRP_HUD"] = true,
-- DarkRP_EntityDisplay is the text that is drawn above a player when you look at them.
-- This also draws the information on doors and vehicles
["DarkRP_EntityDisplay"] = true,
-- DarkRP_ZombieInfo draws information about zombies for admins who use /showzombie.
["DarkRP_ZombieInfo"] = false,
-- This is the one you're most likely to replace first
-- DarkRP_LocalPlayerHUD is the default HUD you see on the bottom left of the screen
-- It shows your health, job, salary and wallet, but NOT hunger (if you have hungermod enabled)
["DarkRP_LocalPlayerHUD"] = true,
-- If you have hungermod enabled, you will see a hunger bar in the DarkRP_LocalPlayerHUD
-- This does not get disabled with DarkRP_LocalPlayerHUD so you will need to disable DarkRP_Hungermod too
["DarkRP_Hungermod"] = true,
-- Drawing the DarkRP agenda
["DarkRP_Agenda"] = true,
-- Lockdown info on the HUD
["DarkRP_LockdownHUD"] = true,
-- Arrested HUD
["DarkRP_ArrestedHUD"] = true,
["CHudHealth"] = true,
["CHudAmmo"] = true,
["CHudSecondaryAmmo"] = true,
}
surface.CreateFont( "Apollo",
{
font = "Roboto-Light",
size = 16,
weight = 800,
})
surface.CreateFont( "ApolloSmall",
{
font = "Roboto-Light",
size = 14,
weight = 800,
})
surface.CreateFont( "ApolloLarge",
{
font = "Roboto-Light",
size = 17,
weight = 800,
})
local function Base()
-- Declaring Variables
local DrawHealth = LocalPlayer():Health() or 0
local TextHealth = LocalPlayer():Health() or 0
local DrawArmor = LocalPlayer():Armor() or 0
local TextArmor = LocalPlayer():Armor() or 0
local plywallet = LocalPlayer():getDarkRPVar("money") or "Error"
local plysalary = LocalPlayer():getDarkRPVar("salary") or "Error"
local plyjob = LocalPlayer():getDarkRPVar("job") or "Error"
-- If statements to fix the HP/Armor bars becoming too large.
if DrawHealth > 100 then DrawHealth = 100 end
if DrawHealth < 0 then DrawHealth = 0 end
if DrawArmor > 100 then DrawArmor = 100 end
if DrawArmor < 0 then DrawArmor = 0 end
-- Drawing HUD
surface.SetFont("Apollo")
surface.SetTextColor(255, 255, 255, 255)
surface.SetDrawColor(25, 25, 25, 255)
surface.DrawRect(0, 0, ScrW() - 0, ScrH() / 30)
surface.SetTextPos(5, 7)
surface.DrawText(plyjob)
surface.SetDrawColor(255, 255, 255, 255)
surface.DrawOutlinedRect(0, 0, ScrW() - 1, ScrH() / 30)
surface.SetTextPos(100, 7)
surface.DrawText(DrawHealth .. "%")
surface.DrawOutlinedRect(0, 50, ScrW() / 2, ScrH() / 150)
end
hook.Add("HUDPaint", "ApolloHUD", Base)
--[[---------------------------------------------------------------------------
HUD ConVars
---------------------------------------------------------------------------]]
local ConVars = {}
local HUDWidth
local HUDHeight
local Color = Color
local CurTime = CurTime
local cvars = cvars
local DarkRP = DarkRP
local draw = draw
local GetConVar = GetConVar
local hook = hook
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
local plyMeta = FindMetaTable("Player")
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, 175)
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 separate Elements
---------------------------------------------------------------------------]]
local agendaText
local function Agenda()
local shouldDraw = hook.Call("HUDShouldDraw", GAMEMODE, "DarkRP_Agenda")
if shouldDraw == false then return end
local agenda = localplayer:getAgendaTable()
if not agenda then return end
agendaText = agendaText or DarkRP.textWrap((localplayer:getDarkRPVar("agenda") or ""):gsub("//", "\n"):gsub("\\n", "\n"), "DarkRPHUD1", 440)
draw.RoundedBox(5, 10, 10, 460, 110, colors.gray1)
-- draw.RoundedBox(5, 12, 12, 456, 106, colors.gray1)
-- draw.RoundedBox(10, 12, 12, 456, 20, colors.darkred)
draw.DrawNonParsedText(agenda.Title, "DarkRPHUD1", 30, 12, colors.white, 0)
draw.DrawNonParsedText(agendaText, "DarkRPHUD1", 30, 35, colors.white, 0)
end
hook.Add("DarkRPVarChanged", "agendaHUD", function(ply, var, _, new)
if ply ~= localplayer then return end
if var == "agenda" and new then
agendaText = DarkRP.textWrap(new:gsub("//", "\n"):gsub("\\n", "\n"), "DarkRPHUD1", 440)
else
agendaText = nil
end
if var == "salary" then
salaryText = DarkRP.getPhrase("salary", DarkRP.formatMoney(new), "")
end
if var == "job" or var == "money" then
JobWalletText = string.format("%s\n%s",
DarkRP.getPhrase("job", var == "job" and new or localplayer:getDarkRPVar("job") or ""),
DarkRP.getPhrase("wallet", var == "money" and DarkRP.formatMoney(new) or DarkRP.formatMoney(localplayer:getDarkRPVar("money")), "")
)
end
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 + 64, Scrh - 45, 32, 32)
end
end
local VoiceChatTexture = surface.GetTextureID("voice/icntlk_pl")
local function DrawVoiceChat()
if localplayer.DRPIsTalking then
local _, 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 GetGlobalBool("DarkRP_LockDown") then
local shouldDraw = hook.Call("HUDShouldDraw", GAMEMODE, "DarkRP_LockdownHUD")
if shouldDraw == false then return end
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()
local shouldDraw = hook.Call("HUDShouldDraw", GAMEMODE, "DarkRP_ArrestedHUD")
if shouldDraw == false then return end
if CurTime() - StartArrested <= ArrestedUntil and localplayer:getDarkRPVar("Arrested") then
draw.DrawNonParsedText(DarkRP.getPhrase("youre_arrested", math.ceil((ArrestedUntil - (CurTime() - StartArrested)) * 1 / game.GetTimeScale())), "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.Remove("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.
---------------------------------------------------------------------------]]
local function DrawHUD()
local shouldDraw = hook.Call("HUDShouldDraw", GAMEMODE, "DarkRP_HUD")
if shouldDraw == false then return end
Scrw, Scrh = ScrW(), ScrH()
RelativeX, RelativeY = 0, Scrh
shouldDraw = hook.Call("HUDShouldDraw", GAMEMODE, "DarkRP_LocalPlayerHUD")
shouldDraw = shouldDraw ~= false
if shouldDraw then
Base()
GunLicense()
end
Agenda()
DrawVoiceChat()
LockDown()
Arrested()
AdminTell()
end
--[[---------------------------------------------------------------------------
Entity HUDPaint things
---------------------------------------------------------------------------]]
-- Draw a player's name, health and/or job above the head
-- This syntax allows for easy overriding
plyMeta.drawPlayerInfo = plyMeta.drawPlayerInfo or function(self)
local pos = self:EyePos()
pos.z = pos.z + 10 -- The position we want is a bit above the position of the eyes
pos = pos:ToScreen()
if not self:getDarkRPVar("wanted") then
-- Move the text up a few pixels to compensate for the height of the text
pos.y = pos.y - 50
end
if GAMEMODE.Config.showname then
local nick, plyTeam = self:Nick(), self:Team()
draw.DrawNonParsedText(nick, "DarkRPHUD2", pos.x + 1, pos.y + 1, colors.black, 1)
draw.DrawNonParsedText(nick, "DarkRPHUD2", pos.x, pos.y, RPExtraTeams[plyTeam] and RPExtraTeams[plyTeam].color or team.GetColor(plyTeam) , 1)
end
if GAMEMODE.Config.showhealth then
local health = DarkRP.getPhrase("health", self:Health())
draw.DrawNonParsedText(health, "DarkRPHUD2", pos.x + 1, pos.y + 21, colors.black, 1)
draw.DrawNonParsedText(health, "DarkRPHUD2", pos.x, pos.y + 20, colors.white1, 1)
end
if GAMEMODE.Config.showjob then
local teamname = self:getDarkRPVar("job") or team.GetName(self:Team())
draw.DrawNonParsedText(teamname, "DarkRPHUD2", pos.x + 1, pos.y + 41, colors.black, 1)
draw.DrawNonParsedText(teamname, "DarkRPHUD2", pos.x, pos.y + 40, colors.white1, 1)
end
if self:getDarkRPVar("HasGunlicense") then
surface.SetMaterial(Page)
surface.SetDrawColor(255,255,255,255)
surface.DrawTexturedRect(pos.x - 16, pos.y + 60, 32, 32)
end
end
-- Draw wanted information above a player's head
-- This syntax allows for easy overriding
plyMeta.drawWantedInfo = plyMeta.drawWantedInfo or function(self)
if not self:Alive() then return end
local pos = self:EyePos()
if not pos:isInSight({localplayer, self}) then return end
pos.z = pos.z + 10
pos = pos:ToScreen()
if GAMEMODE.Config.showname then
local nick, plyTeam = self:Nick(), self:Team()
draw.DrawNonParsedText(nick, "DarkRPHUD2", pos.x + 1, pos.y + 1, colors.black, 1)
draw.DrawNonParsedText(nick, "DarkRPHUD2", pos.x, pos.y, RPExtraTeams[plyTeam] and RPExtraTeams[plyTeam].color or team.GetColor(plyTeam) , 1)
end
local wantedText = DarkRP.getPhrase("wanted", tostring(self:getDarkRPVar("wantedReason")))
draw.DrawNonParsedText(wantedText, "DarkRPHUD2", pos.x, pos.y - 40, colors.white1, 1)
draw.DrawNonParsedText(wantedText, "DarkRPHUD2", pos.x + 1, pos.y - 41, colors.red, 1)
end
--[[---------------------------------------------------------------------------
The Entity display: draw HUD information about entities
---------------------------------------------------------------------------]]
local function DrawEntityDisplay()
local shouldDraw, players = hook.Call("HUDShouldDraw", GAMEMODE, "DarkRP_EntityDisplay")
if shouldDraw == false then return end
local shootPos = localplayer:GetShootPos()
local aimVec = localplayer:GetAimVector()
for k, ply in pairs(players or player.GetAll()) do
if ply == localplayer or not ply:Alive() or ply:GetNoDraw() then continue end
local hisPos = ply:GetShootPos()
if ply:getDarkRPVar("wanted") then ply:drawWantedInfo() end
if GAMEMODE.Config.globalshow then
ply:drawPlayerInfo()
-- Draw when you're (almost) looking at him
elseif hisPos:DistToSqr(shootPos) < 160000 then
local pos = hisPos - shootPos
local unitPos = pos:GetNormalized()
if unitPos:Dot(aimVec) > 0.95 then
local trace = util.QuickTrace(shootPos, pos, localplayer)
if trace.Hit and trace.Entity ~= ply then break end
ply:drawPlayerInfo()
end
end
end
local tr = localplayer:GetEyeTrace()
if IsValid(tr.Entity) and tr.Entity:isKeysOwnable() and tr.Entity:GetPos():DistToSqr(localplayer:GetPos()) < 40000 then
tr.Entity:drawOwnableInfo()
end
end
--[[---------------------------------------------------------------------------
Drawing death notices
---------------------------------------------------------------------------]]
function GM:DrawDeathNotice(x, y)
if not GAMEMODE.Config.showdeaths then return end
self.Sandbox.DrawDeathNotice(self, x, y)
end
--[[---------------------------------------------------------------------------
Display notifications
---------------------------------------------------------------------------]]
local function DisplayNotify(msg)
local txt = msg:ReadString()
GAMEMODE:AddNotify(txt, msg:ReadShort(), msg:ReadLong())
surface.PlaySound("buttons/lightswitch2.wav")
-- Log to client console
MsgC(Color(255, 20, 20, 255), "[DarkRP] ", Color(200, 200, 200, 255), txt, "\n")
end
usermessage.Hook("_Notify", DisplayNotify)
--[[---------------------------------------------------------------------------
Disable players' names popping up when looking at them
---------------------------------------------------------------------------]]
function GM:HUDDrawTargetID()
return false
end
--[[---------------------------------------------------------------------------
Actual HUDPaint hook
---------------------------------------------------------------------------]]
function GM:HUDPaint()
localplayer = localplayer and IsValid(localplayer) and localplayer or LocalPlayer()
if not IsValid(localplayer) then return end
DrawHUD()
DrawEntityDisplay()
self.Sandbox.HUDPaint(self)
end
--[[
Sandbox Hud Removal
---------------------------------------------------------------------------]]
local hide = {
CHudHealth = true,
CHudBattery = true,
}
hook.Add( "HUDShouldDraw", "HideHUD", function( name )
if ( hide[ name ] ) then return false end
-- Don't return anything here, it may break other addons that rely on this hook.
end )
have you sent the file to clients?
AddCSLuaFile
can you start from the ground up and get rid of this insipid trash
seeing as you've accepted this ill take that as a no. you should read the posting rules: Section rules and resources because jova makes a fair point, you need to learn elsewhere for something this basic.
Sorry, you need to Log In to post a reply to this thread.