if not(ur) then ur = {} end function ur.openURestrict() gui.EnableScreenClicker( true ) RestoreCursorPosition( ) local PropertySheet = vgui.Create( "DPropertySheet", DermaPanel) PropertySheet:SetPos( ScrW()/2-255, ScrH()/2-150 ) PropertySheet:SetSize( 520, 300 ) PropertySheet:SetVisible(true) PropertySheet:SetMouseInputEnabled( true ) local LoadoutPanel = vgui.Create( "DPanel" ) LoadoutPanel:SetSize( 520, 300 ) LoadoutPanel:SetPos( 0, 0 ) local DermaListView = vgui.Create("DListView") DermaListView:SetParent(LoadoutPanel) DermaListView:SetPos(1, 1) DermaListView:SetSize(200, 265) DermaListView:SetMultiSelect(true) DermaListView:AddColumn("Group") -- Add column DermaListView:AddColumn("Loadout") local DermaListView2 = vgui.Create("DListView") DermaListView2:SetParent(LoadoutPanel) DermaListView2:SetPos(202, 1) DermaListView2:SetSize(100, 205) DermaListView2:SetMultiSelect(false) DermaListView2:AddColumn("Loadouts") local DermaListView3 = vgui.Create("DListView") DermaListView3:SetParent(LoadoutPanel) DermaListView3:SetPos(303, 1) DermaListView3:SetSize(207, 205) DermaListView3:SetMultiSelect(true) DermaListView3:AddColumn("Loadout") function ur.checkLoadouts() local lines = {} for k,v in pairs(DermaListView2:GetLines()) do table.insert(lines,v:GetColumnText(1)) end for k,v in pairs(lines) do if not(ur.loadouts[v]) then if v ~= "excluded" then return true end end end for k,v in pairs(ur.loadouts) do if not(table.HasValue(lines, k)) then return true end end end function ur.checkGroups() local lines = {} for k,v in pairs(DermaListView:GetLines()) do lines[v:GetColumnText(1)] = v:GetColumnText(2) end for k, v in pairs(ur.groups) do if not(lines[v]) then return true end if lines[v] then if not(ur.getGroupLoadout(v) == lines[v]) then return true end end end end function ur.checkLoadout() local lines = {} for k,v in pairs(DermaListView3:GetLines()) do table.insert(lines, v:GetColumnText(1)) end if DermaListView2:GetSelected()[1]:GetColumnText(1) ~= "excluded" then for k,v in pairs(ur.loadouts[DermaListView2:GetSelected()[1]:GetColumnText(1)]["loadout"]) do if not(table.HasValue(lines, v)) then return true end end for k,v in pairs(lines) do if not(table.HasValue(ur.loadouts[DermaListView2:GetSelected()[1]:GetColumnText(1)]["loadout"], v)) then return true end end else return true end end local DermaButton = vgui.Create( "DButton", LoadoutPanel ) DermaButton:SetText( "Apply" ) DermaButton:SetPos( 202, 207 ) DermaButton:SetSize( 100, 18 ) DermaButton.DoClick = function () if DermaListView:GetSelected()[1] and DermaListView2:GetSelected()[1] then local delay = ((table.Count(DermaListView:GetSelected())*5)/10) for k, v in pairs(DermaListView:GetSelected()) do RunConsoleCommand( "urestrict", "apply", DermaListView:GetSelected()[k]:GetColumnText(1), DermaListView2:GetSelected()[1]:GetColumnText(1) ) end else ULib.tsay(LocalPlayer(), "Please Select A Group And A Loadout") end end local DermaButton2 = vgui.Create( "DButton", LoadoutPanel ) DermaButton2:SetText( "Make" ) DermaButton2:SetPos( 202, 227 ) DermaButton2:SetSize( 100, 18 ) DermaButton2.DoClick = function () local DermaPanel2 = vgui.Create( "DFrame" ) DermaPanel2:SetPos( 250,250 ) DermaPanel2:SetSize( 500, 50 ) DermaPanel2:SetTitle( "URestrict Make") DermaPanel2:ShowCloseButton( true ) DermaPanel2:SetVisible( true ) DermaPanel2:MakePopup() local DermaText2 = vgui.Create( "DTextEntry", DermaPanel2 ) DermaText2:SetPos( 20,25 ) DermaText2:SetTall( 20 ) DermaText2:SetWide( 450 ) DermaText2:SetEnterAllowed( true ) DermaText2.OnEnter = function() for k,v in pairs(string.Explode(" ", DermaText2:GetValue())) do RunConsoleCommand( "urestrict", "make", v ) DermaPanel2:SetVisible(false) end end end local DermaButton3 = vgui.Create( "DButton", LoadoutPanel ) DermaButton3:SetText( "Remove" ) DermaButton3:SetPos( 202, 247 ) DermaButton3:SetSize( 100, 18 ) DermaButton3.DoClick = function () if DermaListView2:GetSelected()[1] then RunConsoleCommand( "urestrict", "remove", DermaListView2:GetSelected()[1]:GetColumnText(1) ) else ULib.tsay(LocalPlayer(), "Please Select A Loadout First") end end local DermaButton4 = vgui.Create("DSysButton", LoadoutPanel ) DermaButton4:SetType( "close" ) DermaButton4:SetPos( 492, 1 ) DermaButton4:SetSize( 18, 16 ) DermaButton4.DoClick = function () PropertySheet:SetVisible( false ) gui.EnableScreenClicker( false ) timer.Destroy("UR_GUI_Think") end local DermaButton5 = vgui.Create("DButton", LoadoutPanel ) DermaButton5:SetText("Loadouts Enabled:".. tostring(ur.config.loadouts) ) DermaButton5:SetPos( 303, 227 ) DermaButton5:SetSize( 207, 18 ) DermaButton5.DoClick = function () RunConsoleCommand( "urestrict", "toggle", "loadouts" ) DermaButton5:SetText("Loadouts Enabled:"..tostring(ur.config.loadouts)) end local DermaButton6 = vgui.Create("DButton", LoadoutPanel ) DermaButton6:SetText( "Exlcude Admins:"..tostring(ur.config.admin_exclude.loadouts) ) DermaButton6:SetPos( 303, 247 ) DermaButton6:SetSize( 207, 18 ) DermaButton6.DoClick = function () RunConsoleCommand( "urestrict", "adminexclude", "loadouts" ) DermaButton6:SetText("Exlcude Admins:"..tostring(ur.config.admin_exclude.loadouts)) end local DermaButton7 = vgui.Create("DButton", LoadoutPanel ) DermaButton7:SetText("Modify" ) DermaButton7:SetPos( 303, 207 ) DermaButton7:SetSize( 207, 18 ) DermaButton7.DoClick = function () if DermaListView2:GetSelected()[1] then if DermaListView3:GetSelected()[1] then for k,v in pairs(DermaListView3:GetSelected()) do RunConsoleCommand( "urestrict", "modify", DermaListView2:GetSelected()[1]:GetColumnText(1), v:GetColumnText(1) ) end else local DermaPanel2 = vgui.Create( "DFrame" ) DermaPanel2:SetPos( 250,250 ) DermaPanel2:SetSize( 500, 50 ) DermaPanel2:SetTitle( "URestrict Modify: " ..DermaListView2:GetSelected()[1]:GetColumnText(1) ) DermaPanel2:ShowCloseButton( true ) DermaPanel2:SetVisible( true ) DermaPanel2:MakePopup() local DermaText = vgui.Create( "DTextEntry", DermaPanel2 ) DermaText:SetPos( 20,25 ) DermaText:SetTall( 20 ) DermaText:SetWide( 450 ) DermaText:SetEnterAllowed( true ) DermaText.OnEnter = function() for k,v in pairs(string.Explode(" ", DermaText:GetValue())) do RunConsoleCommand( "urestrict", "modify", DermaListView2:GetSelected()[1]:GetColumnText(1), v ) DermaPanel2:SetVisible(false) end end end else ULib.tsay(LocalPlayer(), "Please Select A Loadout") end end -- Tools local ToolPanel = vgui.Create( "DPanel" ) ToolPanel:SetSize( 520, 300 ) ToolPanel:SetPos( 0, 0 ) local DermaListViewt = vgui.Create("DListView") DermaListViewt:SetParent(ToolPanel) DermaListViewt:SetPos(1, 1) DermaListViewt:SetSize(200, 265) DermaListViewt:SetMultiSelect(true) DermaListViewt:AddColumn("Tools") -- Add column for k,v in pairs(ur.tools.list) do DermaListViewt:AddLine( v ) end local DermaListViewt2 = vgui.Create("DListView") DermaListViewt2:SetParent(ToolPanel) DermaListViewt2:SetPos(202, 1) DermaListViewt2:SetSize(100, 205) DermaListViewt2:SetMultiSelect(false) DermaListViewt2:AddColumn("Restricted Tools") local DermaListViewt3 = vgui.Create("DListView") DermaListViewt3:SetParent(ToolPanel) DermaListViewt3:SetPos(303, 1) DermaListViewt3:SetSize(207, 205) DermaListViewt3:SetMultiSelect(true) DermaListViewt3:AddColumn("Allowed Groups") local DermaButtont4 = vgui.Create("DSysButton", ToolPanel ) DermaButtont4:SetType( "close" ) DermaButtont4:SetPos( 492, 1 ) DermaButtont4:SetSize( 18, 16 ) DermaButtont4.DoClick = function () PropertySheet:SetVisible( false ) gui.EnableScreenClicker( false ) timer.Destroy("UR_GUI_Think") end local DermaButtont5 = vgui.Create("DButton", ToolPanel ) DermaButtont5:SetText("Tools Enabled:".. tostring(ur.config.tools) ) DermaButtont5:SetPos( 303, 227 ) DermaButtont5:SetSize( 207, 18 ) DermaButtont5.DoClick = function () RunConsoleCommand( "urestrict", "toggle", "tools" ) DermaButtont5:SetText("Tools Enabled:"..tostring(ur.config.tools)) end local DermaButtont6 = vgui.Create("DButton", ToolPanel ) DermaButtont6:SetText( "Exlcude Admins:"..tostring(ur.config.admin_exclude.tools) ) DermaButtont6:SetPos( 303, 247 ) DermaButtont6:SetSize( 207, 18 ) DermaButtont6.DoClick = function () RunConsoleCommand( "urestrict", "adminexclude", "tools" ) DermaButtont6:SetText("Exlcude Admins:"..tostring(ur.config.admin_exclude.tools)) end local DermaButtont7 = vgui.Create("DButton", ToolPanel ) DermaButtont7:SetText("Allow" ) DermaButtont7:SetPos( 303, 207 ) DermaButtont7:SetSize( 66, 18 ) DermaButtont7.DoClick = function () local DermaPanel3 = vgui.Create( "DFrame" ) DermaPanel3:SetPos( 250,250 ) DermaPanel3:SetSize( 500, 50 ) DermaPanel3:SetTitle( "URestrict Allow") DermaPanel3:ShowCloseButton( true ) DermaPanel3:SetVisible( true ) DermaPanel3:MakePopup() local DermaText3 = vgui.Create( "DTextEntry", DermaPanel3 ) DermaText3:SetPos( 20,25 ) DermaText3:SetTall( 20 ) DermaText3:SetWide( 450 ) DermaText3:SetEnterAllowed( true ) DermaText3.OnEnter = function() if DermaListViewt2:GetSelected()[1] then RunConsoleCommand( "urestrict", "allow", DermaText3:GetValue(), DermaListViewt2:GetSelected()[1]:GetColumnText(1) ) DermaPanel3:SetVisible(false) else ULib.tsay(LocalPlayer(), "Please Select A Tool First") end end end local DermaButtont0 = vgui.Create( "DButton", ToolPanel ) DermaButtont0:SetText( "Add" ) DermaButtont0:SetPos( 202, 207 ) DermaButtont0:SetSize( 100, 28 ) DermaButtont0.DoClick = function () if DermaListViewt:GetSelected()[1]then for k, v in pairs(DermaListViewt:GetSelected()) do RunConsoleCommand( "urestrict", "tool", DermaListViewt:GetSelected()[k]:GetColumnText(1)) end else ULib.tsay(LocalPlayer(), "Please Select A Tool To Restrict") end end local DermaButtont02 = vgui.Create( "DButton", ToolPanel ) DermaButtont02:SetText( "Remove" ) DermaButtont02:SetPos( 202, 237 ) DermaButtont02:SetSize( 100, 28 ) DermaButtont02.DoClick = function () if DermaListViewt2:GetSelected()[1] then RunConsoleCommand("urestrict", "tool", DermaListViewt2:GetSelected()[1]:GetColumnText(1)) else ULib.tsay(LocalPlayer(), "Please Select A Tool To Remove Restrictions From") end end local DermaButtont8 = vgui.Create("DButton", ToolPanel ) DermaButtont8:SetText("Deny" ) DermaButtont8:SetPos( 374, 207 ) DermaButtont8:SetSize( 66, 18 ) DermaButtont8.DoClick = function() if DermaListViewt3:GetSelected()[1] then RunConsoleCommand("urestrict", "deny", DermaListViewt3:GetSelected()[1]:GetColumnText(1), DermaListViewt2:GetSelected()[1]:GetColumnText(1)) else ULib.tsay(LocalPlayer(), "Please Selected A Group") end end local DermaButtont9 = vgui.Create("DButton", ToolPanel ) DermaButtont9:SetText("Exclude" ) DermaButtont9:SetPos( 444, 207 ) DermaButtont9:SetSize( 66, 18 ) DermaButtont9.DoClick = function() local DermaPanel4 = vgui.Create( "DFrame" ) DermaPanel4:SetPos( 250,250 ) DermaPanel4:SetSize( 500, 50 ) DermaPanel4:SetTitle( "URestrict Exclude") DermaPanel4:ShowCloseButton( true ) DermaPanel4:SetVisible( true ) DermaPanel4:MakePopup() local DermaText4 = vgui.Create( "DTextEntry", DermaPanel4 ) DermaText4:SetPos( 20,25 ) DermaText4:SetTall( 20 ) DermaText4:SetWide( 450 ) DermaText4:SetEnterAllowed( true ) DermaText4.OnEnter = function() RunConsoleCommand( "urestrict", "toolexclude", DermaText4:GetValue()) DermaPanel4:SetVisible(false) end end -- Think function ur.checkTools() local lines = {} for k,v in pairs(DermaListViewt2:GetLines()) do table.insert(lines,v:GetColumnText(1)) end for k,v in pairs(lines) do if not(ur.tools[v]) then if v ~= "list" then return true end end end for k,v in pairs(ur.tools) do if not(table.HasValue(lines, k)) then if k ~= "list" then return true end end end end function ur.checkAllowed() local lines = {} for k,v in pairs(DermaListViewt3:GetLines()) do table.insert(lines, v:GetColumnText(1)) end if DermaListViewt2:GetSelected()[1] then if DermaListViewt2:GetSelected()[1]:GetColumnText(1) ~= "list" then for k,v in pairs(ur.tools[DermaListViewt2:GetSelected()[1]:GetColumnText(1)]) do if not(table.HasValue(lines, v)) then return true end end for k,v in pairs(lines) do if not(table.HasValue(ur.tools[DermaListViewt2:GetSelected()[1]:GetColumnText(1)], v)) then return true end end else return true end end end function ur.guiThink() gui.EnableScreenClicker( true ) if ur.checkGroups() then DermaListView:Clear() for k,v in pairs(ur.groups) do DermaListView:AddLine(v, ur.getGroupLoadout(v)) end end if (ur.checkLoadouts()) then DermaListView2:Clear() for k,v in pairs(ur.loadouts) do DermaListView2:AddLine( k ) end end if (ur.checkTools()) then DermaListViewt2:Clear() for k,v in pairs(ur.tools) do if k ~= "list" then DermaListViewt2:AddLine(k) end end end if DermaListViewt2:GetSelected()[1] then if ur.checkAllowed() then DermaListViewt3:Clear() if not(DermaListViewt2:GetSelected()[1]:GetColumnText(1) == "list") then if ur.tools[DermaListViewt2:GetSelected()[1]:GetColumnText(1)] then for k,v in pairs(ur.tools[DermaListViewt2:GetSelected()[1]:GetColumnText(1)]) do DermaListViewt3:AddLine( v ) end end end end end if DermaListView2:GetSelected()[1] then if ur.checkLoadout() then DermaListView3:Clear() if not(DermaListView2:GetSelected()[1]:GetColumnText(1) == "excluded") then if ur.loadouts[DermaListView2:GetSelected()[1]:GetColumnText(1)] then for k,v in pairs(ur.loadouts[DermaListView2:GetSelected()[1]:GetColumnText(1)]["loadout"]) do DermaListView3:AddLine( v ) end end else DermaListView3:AddLine("Excluded From Loadout Restrictions") end end end DermaButton6:SetText("Exlcude Admins:".. tostring(ur.config.admin_exclude.loadouts)) DermaButton5:SetText("Loadouts Enabled:".. tostring(ur.config.loadouts)) DermaButtont6:SetText("Exlcude Admins:".. tostring(ur.config.admin_exclude.tools)) DermaButtont5:SetText("Tools Enabled:".. tostring(ur.config.tools)) end timer.Create("UR_GUI_Think", 0.3, 0, ur.guiThink ) PropertySheet:AddSheet( "Loadouts", LoadoutPanel, "gui/silkicons/user", false, false, "Configurations For Loadouts" ) PropertySheet:AddSheet( "Tools", ToolPanel, "gui/silkicons/group", false, false, "Configurations For Tool Restrictions" ) end usermessage.Hook("URestrict", ur.openURestrict)