local PANEL = {} PANEL.NextRefresh = 0 PANEL.RefreshTime = 1 local col2 = Color(180, 100, 0, 200) local function GetTargetEntIndex() return GAMEMODE.HumanMenuLockOn and GAMEMODE.HumanMenuLockOn:IsValid() and GAMEMODE.HumanMenuLockOn:EntIndex() or 0 end local function DropDoClick(self) RunConsoleCommand("zsdropammo", self:GetParent():GetAmmoType()) end local function GiveDoClick(self) RunConsoleCommand("zsgiveammo", self:GetParent():GetAmmoType(), GetTargetEntIndex()) end function PANEL:Init() self.m_AmmoCountLabel = EasyLabel(self, "0", "DefaultFontBold", color_black) self.m_AmmoTypeLabel = EasyLabel(self, " ", "ZSAmmoName", col2) self.m_DropButton = vgui.Create("DImageButton", self) self.m_DropButton:SetImage("icon16/box.png") self.m_DropButton:SizeToContents() self.m_DropButton:SetTooltip("Drop") self.m_DropButton.DoClick = DropDoClick self.m_GiveButton = vgui.Create("DImageButton", self) self.m_GiveButton:SetImage("icon16/user_go.png") self.m_GiveButton:SizeToContents() self.m_GiveButton:SetTooltip("Give") self.m_GiveButton.DoClick = GiveDoClick self:SetAmmoType("pistol") end local colBG = Color(5, 5, 5, 180) function PANEL:Paint() local tall = self:GetTall() local csize = tall - 8 draw.RoundedBox(8, 0, 0, self:GetWide(), tall, colBG) draw.RoundedBox(8, 8, tall * 0.5 - csize * 0.5, csize, csize, col2) return true end function PANEL:Think() if RealTime() >= self.NextRefresh then self.NextRefresh = RealTime() + self.RefreshTime self:Refresh() end end function PANEL:Refresh() self.m_AmmoCountLabel:SetText(MySelf:GetAmmoCount(self:GetAmmoType())) self.m_AmmoCountLabel:SizeToContents() self:InvalidateLayout() end function PANEL:PerformLayout() self.m_AmmoTypeLabel:Center() self.m_AmmoCountLabel:SetPos(8 + (self:GetTall() - 8) * 0.5 - self.m_AmmoCountLabel:GetWide() / 2, 0) self.m_AmmoCountLabel:CenterVertical() self.m_DropButton:AlignTop(1) self.m_DropButton:AlignRight(8) self.m_GiveButton:AlignBottom(1) self.m_GiveButton:AlignRight(8) end function PANEL:SetAmmoType(ammotype) self.m_AmmoType = ammotype self.m_AmmoTypeLabel:SetText(GAMEMODE.AmmoNames[ammotype] or ammotype) self.m_AmmoTypeLabel:SizeToContents() self:Refresh() end function PANEL:GetAmmoType() return self.m_AmmoType end vgui.Register("DAmmoCounter", PANEL, "DPanel")