hook.Remove("HUDPaintBackground", "XPLeiste")
hook.Add("HUDPaintBackground", "XPLeiste", function()
	hook.Remove("HUDPaintBackground", "XPLeiste")
	if(IsValid(XPLeiste)) then XPLeiste:Remove() end
	XPLeiste = vgui.Create("DPanel")
	XPLeiste:SetPos(ScrW() * 0.25, ScrH() * 0.02)
	XPLeiste:SetSize(ScrW() * 0.5, 40)
	function XPLeiste:Paint(w,h)
		draw.RoundedBox(2,0,0,w,h,Color(40,40,40,180))
		draw.RoundedBox(2,5,5,(w-10) * (LocalPlayer():GetNWFloat("EXP", 1) / LocalPlayer():GetNWFloat("MAXEXP", 100)),h-10, Color(30,140,220,200))
	end
	XPLeiste_XPLabel = vgui.Create("DLabel", XPLeiste)
	XPLeiste_XPLabel:SetText("Level " .. LocalPlayer():GetNWInt("Level", 1) .. " | " .. util.NiceFloat(math.Round(LocalPlayer():GetNWFloat("EXP", 0))) .. " / " .. util.NiceFloat(math.Round(LocalPlayer():GetNWFloat("MAXEXP", 150))) .. " EXP")
	XPLeiste_XPLabel:SetFont("Trebuchet18")
	XPLeiste_XPLabel:SetTextColor(Color(245,245,245))
	XPLeiste_XPLabel:SizeToContents()
	XPLeiste_XPLabel:Center()
	function XPLeiste_XPLabel:Think()
		self:SetText("Level " .. LocalPlayer():GetNWInt("Level", 1) .. " | " .. util.NiceFloat(math.Round(LocalPlayer():GetNWFloat("EXP", 0))) .. " / " .. util.NiceFloat(math.Round(LocalPlayer():GetNWFloat("MAXEXP", 150))) .. " EXP")
		self:SizeToContents()
	end
end)

local spieler = FindMetaTable("Player")

function spieler:Level()
	return self:GetNWInt("Level", 1)
end

function spieler:IsLevel(zahl)
	if(zahl == nil) then return false end
	return self:GetNWInt("Level", 1) >= zahl
end

function LevelingAdminpanel()
	if(!LocalPlayer():IsSuperAdmin()) then return end
	if(IsValid(LevelingAdminpanel_Fenster)) then return end
	LevelingAdminpanel_Fenster = vgui.Create("DFrame")
	LevelingAdminpanel_Fenster:SetSize(500, 500)
	LevelingAdminpanel_Fenster:Center()
	LevelingAdminpanel_Fenster:SetTitle("Leveling System - Admin Panel")
	LevelingAdminpanel_Fenster:SetDraggable(false)
	LevelingAdminpanel_Fenster:MakePopup()
	
	local plyliste = vgui.Create("DListView", LevelingAdminpanel_Fenster)
	plyliste:Dock(FILL)
	plyliste:DockMargin(5,5,5,5)
	plyliste:AddColumn("Name")
	plyliste:AddColumn("SteamID")
	plyliste:SetMultiSelect(false)
	for _, ply in ipairs(player.GetAll()) do
		plyliste:AddLine(ply:Nick(), ply:SteamID())
	end

	local level_reset = vgui.Create("DButton", LevelingAdminpanel_Fenster)
	level_reset:Dock(BOTTOM)
	level_reset:DockMargin(5,5,5,5)
	level_reset:SetText("Reset Level")
	function level_reset:DoClick()
		if(LocalPlayer():IsSuperAdmin()) then
			local ausgewaehlterspieler = plyliste:GetSelectedLine()
			if #player.GetAll() < ausgewaehlterspieler then return end
			local ausgewaehlterspieler = player.GetAll()[ausgewaehlterspieler]
			if(IsValid(ausgewaehlterspieler)) then
				net.Start("LevelReset")
					net.WriteEntity(ausgewaehlterspieler)
				net.SendToServer()
			end
		end
	end
end