Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local formula = Levels.Formula
- net.Receive("UpdateInfo", function(ply, len)
- local tar = net.ReadEntity()
- tar.Skills = net.ReadTable()
- end)
- net.Receive("SetLevel", function(ply, len)
- local tar = net.ReadEntity()
- local skill = net.ReadString()
- local level = net.ReadUInt(8)
- tar.Skills[skill].level = level
- hook.Call("SetLevel", nil, tar, skill, level)
- end)
- net.Receive("SetXP", function(ply, len)
- local tar = net.ReadEntity()
- local skill = net.ReadString()
- local experience = net.ReadUInt(32)
- tar.Skills[skill].experience = experience
- hook.Call("SetXP", nil, tar, skill, experience)
- end)
- local levelBackground = Material("vgui/ob_hudelements/backgroundbar.png")
- local levelBarBackground = Material("vgui/ob_hudelements/level_progressbar_bg.png")
- local levelBar = Material("vgui/ob_hudelements/level_progressbar.png")
- local material = Material("vgui/ob_hudelements/progressbar.png")
- local foreground, bar, background
- local texCoords = {}
- local function SetupCoords()
- local texW, texH = 1024, 96
- texCoords[1] = {x = 0, y = 0, w = 1024, h = 64}
- texCoords[2] = {x = 0, y = 64, w = 512, h = 32}
- texCoords[3] = {x = 513, y = 64, w = 32, h = 32}
- for k,v in pairs(texCoords) do
- v.w = math.Round((v.w + v.x) / texW, 3)
- v.h = math.Round((v.h + v.y) / texH, 3)
- v.x = math.Round(v.x / texW, 3)
- v.y = math.Round(v.y / texH, 3)
- end
- bar = texCoords[1]
- foreground = texCoords[2]
- background = texCoords[3]
- end
- SetupCoords()
- local drawing = false
- local skill, experience, maxExperience, time, displayXp
- local function DrawLevel()
- local alpha = math.min(1000 * ((time - CurTime()) / 5), 255)
- if(alpha < 0 or !skill or !level) then
- hook.Remove("HUDPaint", "LEVEL_DrawHUD")
- drawing = false
- end
- surface.SetDrawColor( Color(255, 255, 255, alpha))
- displayXp = Lerp( FrameTime(), displayXp, experience)
- surface.SetMaterial(material)
- surface.DrawTexturedRectUV( 0, ScrH() * 0.1, ScrW(), 32, background.x, background.y, background.w, background.h)
- surface.SetMaterial(material)
- surface.DrawTexturedRectUV( ScrW() * 0.5 - 256, ScrH() * 0.1, 512, 32, bar.x, bar.y, bar.w, bar.h)
- surface.SetMaterial(material)
- surface.DrawTexturedRectUV( ScrW() * 0.5 - 235, ScrH() * 0.1 + 8, 470 * (displayXp / maxExperience), 16, foreground.x, foreground.y, foreground.w, foreground.h)
- surface.SetFont("DarkRPHUD2")
- local w1, h1 = surface.GetTextSize(level)
- surface.SetFont("DarkRPHUD2")
- local w2, h2 = surface.GetTextSize(skill)
- draw.DrawNonParsedText(skill, "DarkRPHUD2", ScrW() * 0.5 - w2 - w1 - 268, ScrH() * 0.106, Color( 180, 180, 180, alpha ), 0)
- draw.DrawNonParsedText(level, "DarkRPHUD2", ScrW() * 0.5 - w1 - 268, ScrH() * 0.106, Color( 255, 255, 255, alpha ), 0)
- end
- hook.Add("SetLevel", "LEVEL_Bars", function(ply, name, lvl)
- if(ply != LocalPlayer()) then return end
- time = CurTime() + 5
- skill = string.upper(name) .. " "
- level = ST_Level
- local skills = ply.Skills[name]
- local currentLevel = ST_Level
- displayXp = 0
- maxExperience = formula(skills.level + 1) - currentLevel
- surface.PlaySound("music/hl1_song11.mp3")
- end)
- hook.Add("SetXP", "XP_Bars", function(ply, name, xp)
- if(ply != LocalPlayer()) then return end
- time = CurTime() + 5
- local skills = ply.Skills[name]
- local currentLevel = formula(skills.level)
- experience = xp - currentLevel
- maxExperience = formula(skills.level + 1) - currentLevel
- skill = string.upper(name) .. " "
- level = skills.level
- if(!drawing) then
- if(!displayXp) then
- displayXp = experience
- end
- hook.Add("HUDPaint", "LEVEL_DrawHUD", DrawLevel)
- drawing = true
- end
- end)
Add Comment
Please, Sign In to add comment