• Print

Author Topic: Adding columns to detective/traitor shop  (Read 4462 times)

0 Members and 1 Guest are viewing this topic.

Offline Dharmvir Sidhu

  • Newbie
  • *
  • Posts: 18
  • Karma: 1
    • OMENS Gaming
Adding columns to detective/traitor shop
« on: December 24, 2014, 03:03:07 pm »
So I've added several items to my servers detective traitor/detective shop, and will be looking to add more in the future, but to do this, I also want to make the shop itself look neater. I have figured out how to add the colums, but as for smoothing it out, the two columns overlap like this:



the code for the menu is this:

Code: Lua
  1. ocal eqframe = nil
  2. local function TraitorMenuPopup()
  3.    local ply = LocalPlayer()
  4.    if not IsValid(ply) or not ply:IsActiveSpecial() then
  5.       return
  6.    end
  7.  
  8.    -- Close any existing traitor menu
  9.    if eqframe and ValidPanel(eqframe) then eqframe:Close() end
  10.  
  11.    local credits = ply:GetCredits()
  12.    local can_order = credits > 0
  13.  
  14.    local dframe = vgui.Create("DFrame")
  15.    local w, h = 600, 450
  16.    dframe:SetSize(w, h)
  17.    dframe:Center()
  18.    dframe:SetTitle(GetTranslation("equip_title"))
  19.    dframe:SetVisible(true)
  20.    dframe:ShowCloseButton(true)
  21.    dframe:SetMouseInputEnabled(true)
  22.    dframe:SetDeleteOnClose(true)
  23.  
  24.    local m = 5
  25.  
  26.    local dsheet = vgui.Create("DPropertySheet", dframe)
  27.  
  28.    -- Add a callback when switching tabs
  29.    local oldfunc = dsheet.SetActiveTab
  30.    dsheet.SetActiveTab = function(self, new)
  31.       if self.m_pActiveTab != new and self.OnTabChanged then
  32.          self:OnTabChanged(self.m_pActiveTab, new)
  33.       end
  34.       oldfunc(self, new)
  35.    end
  36.  
  37.    dsheet:SetPos(0,0)
  38.    dsheet:StretchToParent(m,m + 25,m,m)
  39.    local padding = dsheet:GetPadding()
  40.  
  41.    local dequip = vgui.Create("DPanel", dsheet)
  42.    dequip:SetPaintBackground(false)
  43.    dequip:StretchToParent(padding,padding,padding,padding)
  44.  
  45.    -- Determine if we already have equipment
  46.    local owned_ids = {}
  47.    for _, wep in pairs(ply:GetWeapons()) do
  48.       if IsValid(wep) and wep:IsEquipment() then
  49.          table.insert(owned_ids, wep:GetClass())
  50.       end
  51.    end
  52.  
  53.    -- Stick to one value for no equipment
  54.    if #owned_ids == 0 then
  55.       owned_ids = nil
  56.    end
  57.  
  58.    --- Construct icon listing
  59.    local dlist = vgui.Create("EquipSelect", dequip)
  60.    dlist:SetPos(0,0)
  61.    dlist:SetSize(210, h - 114)
  62.    dlist:EnableVerticalScrollbar(true)
  63.    dlist:EnableHorizontal(true)
  64.    dlist:SetPadding(4)
  65.  
  66.  
  67.    local items = GetEquipmentForRole(ply:GetRole())
  68.  
  69.    local to_select = nil
  70.    for k, item in pairs(items) do
  71.       local ic = nil
  72.  
  73.       -- Create icon panel
  74.       if item.material then
  75.          if item.custom then
  76.             -- Custom marker icon
  77.             ic = vgui.Create("LayeredIcon", dlist)
  78.  
  79.             local marker = vgui.Create("DImage")
  80.             marker:SetImage("vgui/ttt/custom_marker")
  81.             marker.PerformLayout = function(s)
  82.                                       s:AlignBottom(2)
  83.                                       s:AlignRight(2)
  84.                                       s:SetSize(16, 16)
  85.                                    end
  86.             marker:SetTooltip(GetTranslation("equip_custom"))
  87.  
  88.             ic:AddLayer(marker)
  89.  
  90.             ic:EnableMousePassthrough(marker)
  91.          elseif not ItemIsWeapon(item) then
  92.             ic = vgui.Create("SimpleIcon", dlist)
  93.          else
  94.             ic = vgui.Create("LayeredIcon", dlist)
  95.          end
  96.  
  97.          -- Slot marker icon
  98.          if ItemIsWeapon(item) then
  99.             local slot = vgui.Create("SimpleIconLabelled")
  100.             slot:SetIcon("vgui/ttt/slotcap")
  101.             slot:SetIconColor(color_slot[ply:GetRole()] or COLOR_GREY)
  102.             slot:SetIconSize(16)
  103.  
  104.             slot:SetIconText(item.slot)
  105.  
  106.             slot:SetIconProperties(COLOR_WHITE,
  107.                                    "DefaultBold",
  108.                                    {opacity=220, offset=1},
  109.                                    {10, 8})
  110.  
  111.             ic:AddLayer(slot)
  112.             ic:EnableMousePassthrough(slot)
  113.          end
  114.  
  115.          ic:SetIconSize(64)
  116.          ic:SetIcon(item.material)
  117.       elseif item.model then
  118.          ic = vgui.Create("SpawnIcon", dlist)
  119.          ic:SetModel(item.model)
  120.       else
  121.          ErrorNoHalt("Equipment item does not have model or material specified: " .. tostring(item) .. "\n")
  122.       end
  123.  
  124.       ic.item = item
  125.  
  126.       local tip = SafeTranslate(item.name) .. " (" .. SafeTranslate(item.type) .. ")"
  127.       ic:SetTooltip(tip)
  128.  
  129.       -- If we cannot order this item, darken it
  130.       if ((not can_order) or
  131.           -- already owned
  132.           table.HasValue(owned_ids, item.id) or
  133.           (tonumber(item.id) and ply:HasEquipmentItem(tonumber(item.id))) or
  134.           -- already carrying a weapon for this slot
  135.           (ItemIsWeapon(item) and (not CanCarryWeapon(item))) or
  136.           -- already bought the item before
  137.           (item.limited and ply:HasBought(tostring(item.id)))) then
  138.  
  139.          ic:SetIconColor(color_darkened)
  140.       end
  141.  
  142.       dlist:AddPanel(ic)
  143.    end
  144.  
  145.    local dlistw = 154
  146.  
  147.    local bw, bh = 100, 25
  148.  
  149.    local dih = h - bh - m*5
  150.    local diw = w - dlistw - m*6 - 2
  151.    local dinfobg = vgui.Create("DPanel", dequip)
  152.    dinfobg:SetPaintBackground(false)
  153.    dinfobg:SetSize(diw, dih)
  154.    dinfobg:SetPos(dlistw + m, 0)
  155.  
  156.    local dinfo = vgui.Create("ColoredBox", dinfobg)
  157.    dinfo:SetColor(Color(90, 90, 95))
  158.    dinfo:SetPos(0,0)
  159.    dinfo:StretchToParent(0, 0, 0, dih - 135)
  160.  
  161.    local dfields = {}
  162.    for _, k in pairs({"name", "type", "desc"}) do
  163.       dfields[k] = vgui.Create("DLabel", dinfo)
  164.       dfields[k]:SetTooltip(GetTranslation("equip_spec_" .. k))
  165.       dfields[k]:SetPos(m*3, m*2)
  166.    end
  167.  
  168.    dfields.name:SetFont("TabLarge")
  169.  
  170.    dfields.type:SetFont("DermaDefault")
  171.    dfields.type:MoveBelow(dfields.name)
  172.  
  173.    dfields.desc:SetFont("DermaDefaultBold")
  174.    dfields.desc:SetContentAlignment(7)
  175.    dfields.desc:MoveBelow(dfields.type, 1)
  176.  
  177.    local iw, ih = dinfo:GetSize()
  178.  
  179.    local dhelp = vgui.Create("ColoredBox", dinfobg)
  180.    dhelp:SetColor(Color(90, 90, 95))
  181.    dhelp:SetSize(diw, dih - 205)
  182.    dhelp:MoveBelow(dinfo, m)
  183.  
  184.    local update_preqs = PreqLabels(dhelp, m*3, m*2)
  185.  
  186.    dhelp:SizeToContents()
  187.  
  188.    local dconfirm = vgui.Create("DButton", dinfobg)
  189.    dconfirm:SetPos(0, dih - bh*2)
  190.    dconfirm:SetSize(bw, bh)
  191.    dconfirm:SetDisabled(true)
  192.    dconfirm:SetText(GetTranslation("equip_confirm"))
  193.  
  194.  
  195.    dsheet:AddSheet(GetTranslation("equip_tabtitle"), dequip, "icon16/bomb.png", false, false, "Traitor equipment menu")

could anyone help with that?

Offline Dharmvir Sidhu

  • Newbie
  • *
  • Posts: 18
  • Karma: 1
    • OMENS Gaming
Re: Adding columns to detective/traitor shop
« Reply #1 on: December 24, 2014, 03:12:44 pm »
please close this thread, im stupid and while reading over the code again i realized all i had to do was change the line

Code: Lua
  1. local dlistw = 200
to whatever

  • Print