Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local function Base()
- draw.RoundedBox(0, 10, ScrH() - 160, 450, 150, Color(255,255,255,255))
- draw.RoundedBox(0, 10, ScrH() - 190, 450, 25, Color(255,255,255,255))
- draw.RoundedBox(0, 10, ScrH() - 220, 450, 25, Color(255,255,255,255))
- draw.RoundedBox(0, 10, ScrH() - 220, 450, 25, Color(72,72,72,255))
- draw.RoundedBox(0, 100, ScrH() - 130, 350, 2, Color(255,93,0,255)) --Line 1
- draw.RoundedBox(0, 100, ScrH() - 98, 60, 2, Color(255,93,0,255)) -- Line 2
- draw.RoundedBox(0, 100, ScrH() - 70, 140, 2, Color(255,93,0,255)) -- Line 3
- draw.RoundedBox(0, 100, ScrH() - 43, 140, 2, Color(255,93,0,255)) -- Line 4
- --HUD DRAW--
- draw.DrawText( LocalPlayer():Nick(), "Trebuchet24", 100, ScrH () - 155 + 1, Color(255,93,0,255))
- draw.DrawText( "$"..LocalPlayer():getDarkRPVar( "salary" ), "Trebuchet24", 100, ScrH () - 125 + 2, Color(255,93,0,255))
- draw.DrawText( "$"..LocalPlayer():getDarkRPVar( "money" ), "Trebuchet24", 100, ScrH () - 95 + 2, Color(255,93,0,255))
- draw.DrawText( LocalPlayer():getDarkRPVar( "job" ), "Trebuchet24", 100, ScrH () - 70 + 2, Color(255,93,0,255))
- draw.SimpleText( "InvasionRP" ,"Trebuchet24", 10, ScrH() - 250, Color(0,161,255,255), TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP)
- --HUD HEALTH--
- local DrawHealth = LocalPlayer():Health() or 0
- local EchoHealth = LocalPlayer():Health() or 0
- if DrawHealth > 100 then DrawHealth = 100 end
- if DrawHealth < 0 then DrawHealth = 0 end
- if DrawHealth != 0 then
- draw.RoundedBox(0, 10, ScrH () - 220, (550-100) * DrawHealth / 100, 35-10, Color(255,0,0,255))
- --HUD ARMOR--
- draw.RoundedBox(0, 10, ScrH () - 190, 475-25, 25, Color(72,72,72,255))
- local DrawHealth = LocalPlayer():Armor() or 0
- local EchoHealth = LocalPlayer():Armor() or 0
- if DrawHealth > 100 then DrawHealth = 100 end
- if DrawHealth < 0 then DrawHealth = 0 end
- draw.RoundedBox(0, 10, ScrH () - 190, (45) * DrawHealth / 10, 25, Color(0,161,255,255))
- draw.DrawText( "Armor: "..EchoHealth, "Trebuchet24", 13, ScrH () - 187 - 2, Color(255,255,255,255))
- end
- draw.DrawText( "Health: "..EchoHealth, "Trebuchet24", 12, ScrH () - 223 + 2, Color(255,255,255,255))
- 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 )
- end
- --Hide Original Hud
- hook.Add( "HUDShouldDraw", "hide hud", function( name )
- if ( name == "CHudHealth" or name == "CHudBattery" ) then
- return false
- end
- -- Never return anything default here, it will break other addons using this hook.
- end )
- hook.Add("HUDPaint", "PlayerModel", function( )
- local _p = LocalPlayer( );
- // Make sure valid player, otherwise model won't work
- if ( !IsValid( _p ) ) then return; end
- // Useful vars we reuse...
- local _model = _p:GetModel( );
- // Make sure the vgui element hasn't been made...
- if ( !PlayerModel || !ispanel( PlayerModel ) ) then
- PlayerModel = vgui.Create( "DModelPanel" );
- PlayerModel:SetModel( _model );
- PlayerModel.__Model = _model;
- PlayerModel:SetPos( 12, ScrH( ) - 100 - 100 );
- PlayerModel:SetAnimated( true );
- PlayerModel.bAnimated = false;
- PlayerModel:SetSize( 75, 150 )
- PlayerModel:SetCamPos( Vector( 16, 0, 65 ) );
- PlayerModel:SetLookAt( Vector( 0, 0, 65 ) );
- PlayerModel:ParentToHUD( );
- end
- // Update the model if it changes
- if ( _p:GetModel( ) != PlayerModel.__Model ) then
- PlayerModel:SetModel( _model );
- PlayerModel.__Model = _model;
- end
- // Draw it....
- -- up to you.
- end );
- /*---------------------------------------------------------------------------
- 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 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 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, 100, colors.darkblack)
- draw.DrawNonParsedText(DarkRP.getPhrase("listen_up"), "GModToolName", ScrW() / 2 + 10, 10, colors.white, 1)
- draw.DrawNonParsedText(Message, "ChatFont", ScrW() / 2 + 10, 80, colors.brightred, 1)
- end
- timer.Create("DarkRP_AdminTell", 10, 1, function()
- AdminTell = function() end
- end)
- end)
- /*---------------------------------------------------------------------------
- Entity HUDPaint things
- ---------------------------------------------------------------------------*/
- local function DrawPlayerInfo(ply)
- local pos = ply:EyePos()
- pos.z = pos.z + 10 -- The position we want is a bit above the position of the eyes
- pos = pos:ToScreen()
- pos.y = pos.y - 50 -- Move the text up a few pixels to compensate for the height of the text
- if GAMEMODE.Config.showname and not ply:getDarkRPVar("wanted") then
- draw.DrawNonParsedText(ply:Nick(), "DarkRPHUD2", pos.x + 1, pos.y + 1, colors.black, 1)
- draw.DrawNonParsedText(ply:Nick(), "DarkRPHUD2", pos.x, pos.y, team.GetColor(ply:Team()), 1)
- end
- if GAMEMODE.Config.showhealth and not ply:getDarkRPVar("wanted") then
- draw.DrawNonParsedText(DarkRP.getPhrase("health", ply:Health()), "DarkRPHUD2", pos.x + 1, pos.y + 21, colors.black, 1)
- draw.DrawNonParsedText(DarkRP.getPhrase("health", ply:Health()), "DarkRPHUD2", pos.x, pos.y + 20, colors.white1, 1)
- end
- if GAMEMODE.Config.showjob then
- local teamname = team.GetName(ply:Team())
- draw.DrawNonParsedText(ply:getDarkRPVar("job") or teamname, "DarkRPHUD2", pos.x + 1, pos.y + 41, colors.black, 1)
- draw.DrawNonParsedText(ply:getDarkRPVar("job") or teamname, "DarkRPHUD2", pos.x, pos.y + 40, colors.white1, 1)
- end
- if ply:getDarkRPVar("HasGunlicense") then
- surface.SetMaterial(Page)
- surface.SetDrawColor(255,255,255,255)
- surface.DrawTexturedRect(pos.x-16, pos.y + 60, 32, 32)
- end
- end
- local function DrawWantedInfo(ply)
- if not ply:Alive() then return end
- local pos = ply:EyePos()
- if not pos:isInSight({localplayer, ply}) then return end
- pos.z = pos.z + 14
- pos = pos:ToScreen()
- if GAMEMODE.Config.showname then
- draw.DrawNonParsedText(ply:Nick(), "DarkRPHUD2", pos.x + 1, pos.y + 1, colors.black, 1)
- draw.DrawNonParsedText(ply:Nick(), "DarkRPHUD2", pos.x, pos.y, team.GetColor(ply:Team()), 1)
- end
- local wantedText = DarkRP.getPhrase("wanted", tostring(ply: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 shootPos = localplayer:GetShootPos()
- local aimVec = localplayer:GetAimVector()
- for k, ply in pairs(players or player.GetAll()) do
- if not ply:Alive() or ply == localplayer then continue end
- local hisPos = ply:GetShootPos()
- if ply:getDarkRPVar("wanted") then DrawWantedInfo(ply) end
- if GAMEMODE.Config.globalshow then
- DrawPlayerInfo(ply)
- -- Draw when you're (almost) looking at him
- elseif not GAMEMODE.Config.globalshow and 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 return end
- DrawPlayerInfo(ply)
- end
- end
- end
- local tr = localplayer:GetEyeTrace()
- if IsValid(tr.Entity) and tr.Entity:isKeysOwnable() and tr.Entity:GetPos():Distance(localplayer:GetPos()) < 200 then
- tr.Entity:drawOwnableInfo()
- end
- end
- /*---------------------------------------------------------------------------
- Drawing death notices
- ---------------------------------------------------------------------------*/
- function GAMEMODE:DrawDeathNotice(x, y)
- if not GAMEMODE.Config.showdeaths then return end
- self.BaseClass:DrawDeathNotice(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
- print(txt)
- end
- usermessage.Hook("_Notify", DisplayNotify)
- /*---------------------------------------------------------------------------
- Remove some elements from the HUD in favour of the DarkRP HUD
- ---------------------------------------------------------------------------*/
- function GAMEMODE:HUDShouldDraw(name)
- if name == "CHudHealth" or
- name == "CHudBattery" or
- name == "CHudSuitPower" or
- (HelpToggled and name == "CHudChat") then
- return false
- else
- return true
- end
- end
- /*---------------------------------------------------------------------------
- Disable players' names popping up when looking at them
- ---------------------------------------------------------------------------*/
- function GAMEMODE:HUDDrawTargetID()
- return false
- end
- /*---------------------------------------------------------------------------
- Actual HUDPaint hook
- ---------------------------------------------------------------------------*/
- function DrawHUD()
- localplayer = localplayer and IsValid(localplayer) and localplayer or LocalPlayer()
- if not IsValid(localplayer) then return end
- -- Custom
- Base()
- -- Default
- GunLicense()
- Agenda()
- DrawVoiceChat()
- LockDown()
- Arrested()
- AdminTell()
- DrawEntityDisplay()
- end
- hook.Add("HUDPaint", "DrawHUD", DrawHUD)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement