Advertisement
Guest User

Untitled

a guest
May 2nd, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.05 KB | None | 0 0
  1. --Some parts of this code writen by overv. I've got permission to use it.
  2.  
  3. --The current implementation of a combo box makes it almost the same as a drop down menu.
  4. --If you use SetMultiple to true the player can select multiples ONLY by dragging their mouse down on the options.
  5. --This means options have to be sequential for the player to select them.
  6.  
  7. include("vgui_commandbutton.lua")
  8.  
  9. local CheckBoxes = {}
  10. local Wangs = {}
  11. local Input = {}
  12.  
  13. local function TimerCaller( PlyId, id, value )
  14. RunConsoleCommand( "gmt_clientset", PlyId, id, value )
  15. end
  16.  
  17. local function InitItems()
  18.  
  19. for k, v in ipairs( ClientSettings.Items ) do
  20.  
  21. if v.Disabled != true then
  22. if ClientSettings.DEBUG then Msg("\tAdding ", v.Name, " (".. k .. ")\n") end
  23.  
  24. if v.NWType == "Bool" then
  25. table.insert( CheckBoxes, k )
  26. elseif ClientSettings:IsNumber( v.NWType ) && v.MinValue && v.MaxValue then
  27. table.insert( Wangs, k )
  28. else
  29. table.insert( Input, k )
  30. end
  31. end
  32.  
  33. end
  34.  
  35. local function SortingItems( a, b)
  36. local ItemA = ClientSettings.Items[ a ].Order
  37. local ItemB = ClientSettings.Items[ b ].Order
  38.  
  39. if ItemA then
  40. if ItemB then
  41. if ItemA == ItemB then
  42. return a < b
  43. end
  44.  
  45. return ItemA < ItemB
  46. end
  47. return true
  48. end
  49. return a < b
  50. end
  51.  
  52. table.sort( CheckBoxes, SortingItems )
  53. table.sort( Wangs, SortingItems )
  54. table.sort( Input, SortingItems )
  55. end
  56.  
  57. InitItems()
  58.  
  59. local function ShowMenu( ply )
  60. if !LocalPlayer():IsAdmin() then return nil end
  61. if !ClientSettings.AdminAllowSend then return nil end
  62. if ClientSettings.AdminPanel == nil then
  63. ClientSettings:CreateAdminPanel()
  64. else
  65. ClientSettings.AdminPanel:SetVisible( true ) ClientSettings:ScanPlayers()
  66. for _, v in pairs(ClientSettings.PlayerMenuItems) do if v.InvalidateLayout then v:InvalidateLayout() end end
  67. end
  68. end
  69. concommand.Add( "gmt_adminmenu", ShowMenu )
  70.  
  71. function ClientSettings:CreateAdminPanel()
  72. ClientSettings.AdminPanel = vgui.Create( "DFrame" )
  73. ClientSettings.AdminPanel:SetPos( ScrW() / 2 - 600 / 2, ScrH() / 2 - 425 / 2 )
  74. ClientSettings.AdminPanel:SetSize( 600, 425 )
  75. ClientSettings.AdminPanel:SetTitle( "Gmod Tower Admin Menu" )
  76. ClientSettings.AdminPanel:SetVisible( true )
  77. ClientSettings.AdminPanel:SetDraggable( false )
  78. ClientSettings.AdminPanel:ShowCloseButton( true )
  79. ClientSettings.AdminPanel:MakePopup()
  80. ClientSettings.AdminPanel.Close = function()
  81. ClientSettings.AdminPanel:SetVisible( false )
  82. end
  83.  
  84.  
  85. ClientSettings.Tabs = vgui.Create( "DPropertySheet" )
  86. ClientSettings.Tabs:SetParent( ClientSettings.AdminPanel )
  87. ClientSettings.Tabs:SetPos( 5, 25 )
  88. ClientSettings.Tabs:SetSize( 590, 395 )
  89.  
  90. ClientSettings.TabPlayers = vgui.Create( "DPanel", ClientSettings.Tabs )
  91. ClientSettings.TabPlayers:SetPos( 5, 10 )
  92. ClientSettings.TabPlayers:SetSize( 600 - 10, 400 - 15 )
  93. ClientSettings.TabPlayers.Paint = function()
  94. surface.SetDrawColor( 171, 171, 171, 255 )
  95. surface.DrawRect( 0, 0, ClientSettings.TabPlayers:GetWide(), ClientSettings.TabPlayers:GetTall() )
  96. end
  97.  
  98. ClientSettings.TabMultiPlayers = vgui.Create( "DPanel", ClientSettings.Tabs )
  99. ClientSettings.TabMultiPlayers:SetPos( 5, 10 )
  100. ClientSettings.TabMultiPlayers:SetSize( 600 - 10, 400 - 15 )
  101. ClientSettings.TabMultiPlayers.Paint = function()
  102. surface.SetDrawColor( 171, 171, 171, 255 )
  103. surface.DrawRect( 0, 0, ClientSettings.TabMultiPlayers:GetWide(), ClientSettings.TabMultiPlayers:GetTall() )
  104. end
  105.  
  106. ClientSettings.TabOther = vgui.Create( "DPanel", ClientSettings.Tabs )
  107. ClientSettings.TabOther:SetPos( 5, 10 )
  108. ClientSettings.TabOther:SetSize( 600 - 10, 400 - 15 )
  109. ClientSettings.TabOther.Paint = function()
  110. surface.SetDrawColor( 171, 171, 171, 255 )
  111. surface.DrawRect( 0, 0, ClientSettings.TabOther:GetWide(), ClientSettings.TabOther:GetTall() )
  112. end
  113.  
  114. ClientSettings.TabEvent = vgui.Create( "DPanel", ClientSettings.Tabs )
  115. ClientSettings.TabEvent:SetPos( 5, 10 )
  116. ClientSettings.TabEvent:SetSize( 600 - 10, 400 - 15 )
  117. ClientSettings.TabEvent.Paint = function()
  118. surface.SetDrawColor( 171, 171, 171, 255 )
  119. surface.DrawRect( 0, 0, ClientSettings.TabEvent:GetWide(), ClientSettings.TabEvent:GetTall() )
  120. end
  121.  
  122. ClientSettings.TabMiniGames = vgui.Create( "DPanel", ClientSettings.Tabs )
  123. ClientSettings.TabMiniGames:SetPos( 5, 10 )
  124. ClientSettings.TabMiniGames:SetSize( 600 - 10, 400 - 15 )
  125. ClientSettings.TabMiniGames.Paint = function()
  126. surface.SetDrawColor( 171, 171, 171, 255 )
  127. surface.DrawRect( 0, 0, ClientSettings.TabMiniGames:GetWide(), ClientSettings.TabMiniGames:GetTall() )
  128. end
  129.  
  130. --[[local button = vgui.Create( "DButton", ClientSettings.TabOther );
  131. button:SetSize( 100, 30 );
  132. button:SetPos( 50, 30 );
  133. button:SetText( "Admin Menu" );
  134. button.DoClick = function( button )
  135. GtowerClintClick:ClickOnPlayer( LocalPlayer(), 0 )
  136. end]]
  137.  
  138. CreateAdminControls()
  139.  
  140. ClientSettings.Tabs:AddSheet( "Players", ClientSettings.TabPlayers, "gui/silkicons/user", false, false, "Do something with players" )
  141. ClientSettings.Tabs:AddSheet( "Multiple Players", ClientSettings.TabMultiPlayers, "gui/silkicons/user", false, false, "Do something with multiple players" )
  142. ClientSettings.Tabs:AddSheet( "Other", ClientSettings.TabOther, "gui/silkicons/user", false, false, "Other server settings" )
  143. ClientSettings.Tabs:AddSheet( "Event System", ClientSettings.TabEvent, "gui/silkicons/user", false, false, "Event System settings" )
  144. ClientSettings.Tabs:AddSheet( "Mini Games", ClientSettings.TabMiniGames, "gui/silkicons/user", false, false, "Mini Games settings" )
  145.  
  146. end
  147.  
  148. function CreateAdminControls()
  149. local restartbutton = vgui.Create( "DButton", ClientSettings.TabOther );
  150. restartbutton:SetSize( 100, 30 );
  151. restartbutton:SetPos( 10, 10 );
  152. restartbutton:SetText( "Restart server" );
  153. restartbutton.DoClick = function( button )
  154. if !ClientSettings.AdminAllowSend and !LocalPlayer:IsSuperAdmin() then return nil end
  155. Derma_Query(
  156. "Are you sure you want to restart the server?",
  157. "SERVER RESTART",
  158. "Yes", function() RunConsoleCommand( "gmt_changelevel" ) end,
  159. "No", EmptyFunction
  160. )
  161. end
  162.  
  163. CreateEventControls()
  164. CreateMiniGamesControls()
  165.  
  166. ClientSettings.Players = vgui.Create( "DComboBox", ClientSettings.TabPlayers )
  167. ClientSettings.Players:SetPos( 0, 0 )
  168. ClientSettings.Players:SetSize( ClientSettings.TabPlayers:GetWide() - 220 , ClientSettings.TabPlayers:GetTall() - 19 )
  169. ClientSettings.Players:SetMultiple( false )
  170. ClientSettings.Players.DoClick = function()
  171. for _, v in pairs(ClientSettings.PlayerMenuItems) do if v.InvalidateLayout then v:InvalidateLayout() end end
  172. end
  173.  
  174. ClientSettings.MultiPlayers = vgui.Create( "DPanelList", ClientSettings.TabMultiPlayers )
  175. ClientSettings.MultiPlayers:SetPos( 0, 0 )
  176. ClientSettings.MultiPlayers:SetSize( ClientSettings.TabMultiPlayers:GetWide() - 220 , ClientSettings.TabMultiPlayers:GetTall() - 19 )
  177. ClientSettings.MultiPlayers.DoClick = function()
  178. for _, v in pairs(ClientSettings.PlayerMenuItems) do if v.InvalidateLayout then v:InvalidateLayout() end end
  179. end
  180.  
  181.  
  182. ClientSettings:ScanPlayers()
  183.  
  184. ClientSettings.CommandList = vgui.Create( "DPanelList", ClientSettings.TabPlayers )
  185. ClientSettings.CommandList:EnableVerticalScrollbar( true )
  186. ClientSettings.CommandList:SetPos( ClientSettings.TabPlayers:GetWide() - 220, 0 )
  187. ClientSettings.CommandList:SetTall( ClientSettings.TabPlayers:GetTall() - 20 )
  188. ClientSettings.CommandList:SetWide( 210 )
  189.  
  190. ClientSettings.MultiCommandList = vgui.Create( "DPanelList", ClientSettings.TabMultiPlayers )
  191. ClientSettings.MultiCommandList:EnableVerticalScrollbar( true )
  192. ClientSettings.MultiCommandList:SetPos( ClientSettings.TabMultiPlayers:GetWide() - 220, 0 )
  193. ClientSettings.MultiCommandList:SetTall( ClientSettings.TabMultiPlayers:GetTall() - 20 )
  194. ClientSettings.MultiCommandList:SetWide( 210 )
  195.  
  196. ClientSettings:CreateCategories()
  197.  
  198. ClientSettings:FillCommandList()
  199. end
  200.  
  201. function CreateMiniGamesControls()
  202.  
  203. ClientSettings.MiniGamesSettingsList = vgui.Create( "DPanelList", ClientSettings.TabMiniGames )
  204. ClientSettings.MiniGamesSettingsList:EnableVerticalScrollbar( true )
  205. ClientSettings.MiniGamesSettingsList:SetPos( ClientSettings.TabMiniGames:GetWide() - 220, 0 )
  206. ClientSettings.MiniGamesSettingsList:SetTall( ClientSettings.TabMiniGames:GetTall() - 20 )
  207. ClientSettings.MiniGamesSettingsList:SetWide( 210 )
  208.  
  209. ClientSettings.MiniGamesList = vgui.Create( "DComboBox", ClientSettings.TabMiniGames )
  210. ClientSettings.MiniGamesList:SetPos( 0, 0 )
  211. ClientSettings.MiniGamesList:SetSize( ClientSettings.TabMiniGames:GetWide() - 220 , ClientSettings.TabMiniGames:GetTall() - 19 )
  212. ClientSettings.MiniGamesList:SetMultiple( false )
  213. ClientSettings.MiniGamesList.DoClick = function()
  214. -- for _, v in pairs(ClientSettings.PlayerMenuItems) do if v.InvalidateLayout then v:InvalidateLayout() end end
  215. end
  216.  
  217. --WILL LOAD LIKE THIS:
  218. --for k,v in pairs(minigames.List) do
  219. --Add Controls here
  220. --end
  221. --for k,v in pairs(minigames.List[ClientSettings.MiniGamesList:GetSelected()].Settings) do
  222. --Add Controls here
  223. --end
  224.  
  225. end
  226.  
  227. function CreateEventControls()
  228. local disableeventbutton = vgui.Create( "DButton", ClientSettings.TabEvent );
  229. disableeventbutton:SetSize( 100, 30 );
  230. disableeventbutton:SetPos( 10, 10 );
  231. disableeventbutton:SetText( "Disable event system" );
  232. disableeventbutton.DoClick = function( button )
  233. if !ClientSettings.AdminAllowSend and !LocalPlayer:IsSuperAdmin() then return nil end
  234. Derma_Query(
  235. "Are you sure you want to disable event system?",
  236. "Event System",
  237. "Yes", function() RunConsoleCommand( "gmt_disableevent" ) end,
  238. "No", EmptyFunction
  239. )
  240. end
  241.  
  242. local enableeventbutton = vgui.Create( "DButton", ClientSettings.TabEvent );
  243. enableeventbutton:SetSize( 100, 30 );
  244. enableeventbutton:SetPos( 10, 50 );
  245. enableeventbutton:SetText( "Enable event system" );
  246. enableeventbutton.DoClick = function( button )
  247. if !ClientSettings.AdminAllowSend and !LocalPlayer:IsSuperAdmin() then return nil end
  248. Derma_Query(
  249. "Are you sure you want to enable event system?",
  250. "Event System",
  251. "Yes", function() RunConsoleCommand( "gmt_enableevent" ) end,
  252. "No", EmptyFunction
  253. )
  254. end
  255.  
  256. local manualeventbutton = vgui.Create( "DButton", ClientSettings.TabEvent );
  257. manualeventbutton:SetSize( 100, 30 );
  258. manualeventbutton:SetPos( 10, 90 );
  259. manualeventbutton:SetText( "Start event" );
  260. manualeventbutton.DoClick = function( button )
  261. if !ClientSettings.AdminAllowSend and !LocalPlayer:IsSuperAdmin() then return nil end
  262. Derma_Query(
  263. "Are you sure you want to start event?",
  264. "Event System",
  265. "Yes", function() RunConsoleCommand( "gmt_manualevent" ) end,
  266. "No", EmptyFunction
  267. )
  268. end
  269.  
  270. local skipeventbutton = vgui.Create( "DButton", ClientSettings.TabEvent );
  271. skipeventbutton:SetSize( 100, 30 );
  272. skipeventbutton:SetPos( 10, 130 );
  273. skipeventbutton:SetText( "Skip event" );
  274. skipeventbutton.DoClick = function( button )
  275. if !ClientSettings.AdminAllowSend and !LocalPlayer:IsSuperAdmin() then return nil end
  276. Derma_Query(
  277. "Are you sure you want to skip current event?",
  278. "Event System",
  279. "Yes", function() RunConsoleCommand( "gmt_skipevent" ) end,
  280. "No", EmptyFunction
  281. )
  282. end
  283.  
  284. --[[ ClientSettings.Events = vgui.Create( "DComboBox", ClientSettings.TabEvent )
  285. ClientSettings.Events:SetPos( 0, 0 )
  286. ClientSettings.Events:SetSize( ClientSettings.TabEvent:GetWide() - 420 , ClientSettings.TabEvent:GetTall() - 19 )
  287. ClientSettings.Events:SetMultiple( false )
  288. ClientSettings.Events.DoClick = function()
  289. --for _, v in pairs(ClientSettings.PlayerMenuItems) do if v.InvalidateLayout then v:InvalidateLayout() end end
  290. end
  291. ClientSettings.Events:AddItem( "Sale" )
  292. ClientSettings.Events:AddItem( "Mini Game" )]]
  293.  
  294. minimumsale = vgui.Create("DLabel", ClientSettings.TabEvent)
  295. minimumsale:SetText("Minimum sale (max 1)")
  296. minimumsale:SetPos( 200, 0 )
  297. minimumsale:SizeToContents()
  298.  
  299. minimumsaleval = vgui.Create("DTextEntry", ClientSettings.TabEvent)
  300. minimumsaleval:SetText("0.1")
  301. minimumsaleval:SetPos( 200, 20 )
  302.  
  303. maximumsale = vgui.Create("DLabel", ClientSettings.TabEvent)
  304. maximumsale:SetText("Maximum sale (max 1)")
  305. maximumsale:SetPos( 200, 50 )
  306. maximumsale:SizeToContents()
  307.  
  308. maximumsaleval = vgui.Create("DTextEntry", ClientSettings.TabEvent)
  309. maximumsaleval:SetText("0.5")
  310. maximumsaleval:SetPos( 200, 70 )
  311.  
  312. saletime = vgui.Create("DLabel", ClientSettings.TabEvent)
  313. saletime:SetText("Sale duration (in sec)")
  314. saletime:SetPos( 200, 100 )
  315. saletime:SizeToContents()
  316.  
  317. saletimeval = vgui.Create("DTextEntry", ClientSettings.TabEvent)
  318. saletimeval:SetText("60")
  319. saletimeval:SetPos( 200, 120 )
  320.  
  321. minigametime = vgui.Create("DLabel", ClientSettings.TabEvent)
  322. minigametime:SetText("Mini Game duration (in sec)")
  323. minigametime:SetPos( 200, 150 )
  324. minigametime:SizeToContents()
  325.  
  326. minigametimeval = vgui.Create("DTextEntry", ClientSettings.TabEvent)
  327. minigametimeval:SetText("600")
  328. minigametimeval:SetPos( 200, 170 )
  329.  
  330. local saveeventsettingsbutton = vgui.Create( "DButton", ClientSettings.TabEvent );
  331. saveeventsettingsbutton:SetSize( 100, 30 );
  332. saveeventsettingsbutton:SetPos( 200, 200 );
  333. saveeventsettingsbutton:SetText( "Save settings" );
  334. saveeventsettingsbutton.DoClick = function( button )
  335. if !LocalPlayer():IsPrivAdmin() then return nil end
  336. RunConsoleCommand("gmt_eventsettings", minimumsaleval:GetValue(), maximumsaleval:GetValue(), minigametimeval:GetValue(), saletimeval:GetValue())
  337. end
  338.  
  339. end
  340.  
  341. function ClientSettings:ScanPlayers()
  342. ClientSettings.Players:Clear()
  343.  
  344. for i, v in pairs(player.GetAll()) do
  345. FPlayer = ClientSettings.Players:AddItem( v:Nick() )
  346. FPlayer.Ply = v:EntIndex()
  347.  
  348. local PlayerChk = vgui.Create( "DCheckBoxLabel" )
  349. PlayerChk:SetText( v:Nick() )
  350. PlayerChk:SetValue( 0 )
  351. PlayerChk:SizeToContents()
  352. PlayerChk.Ply = v:EntIndex()
  353. ClientSettings.MultiPlayers:AddItem( PlayerChk ) -- Add the item above
  354.  
  355. if v == LocalPlayer() then ClientSettings.Players:SelectItem( FPlayer ) end
  356. end
  357. end
  358.  
  359. function ClientSettings:FillCommandList()
  360. for _, id in ipairs( CheckBoxes ) do
  361. local Item = ClientSettings:GetItem( id )
  362. ClientSettings:RegisterPlayerMenu( Item.Name, 1, true, true, id, nil, nil )
  363. end
  364.  
  365. for _, id in ipairs( Input ) do
  366. local Item = ClientSettings:GetItem( id )
  367. ClientSettings:RegisterPlayerMenu( Item.Name, 2, nil, nil, id, true, nil )
  368. end
  369.  
  370. --One bug, sliders should be in separate category or all positions will be screwed
  371. for _, id in ipairs( Wangs ) do
  372. local Item = ClientSettings:GetItem( id )
  373. ClientSettings:RegisterPlayerMenuSlider( Item.Name, 3, id, Item )
  374. end
  375.  
  376. --Reset Button
  377. ClientSettings:RegisterPlayerMenu( "RESET PLAYER SETTINGS", 2, nil, nil, id, nil, true )
  378.  
  379. for _, v in pairs(ClientSettings.PlayerMenuItems) do if v.InvalidateLayout then v:InvalidateLayout() end end
  380. end
  381.  
  382. ClientSettings.PlayerMenuItems = {}
  383. ClientSettings.Categories = {}
  384. function ClientSettings:RegisterPlayerMenu( Text, CategoryID, Command, CheckBoolean, id, input, resetplayer )
  385.  
  386. local temp = {}
  387. temp.Text = Text
  388. temp.CategoryID = CategoryID
  389. temp.CheckBoolean = CheckBoolean
  390. temp.Command = Command
  391.  
  392.  
  393. local Temp = vgui.Create( "CommandButton", ClientSettings:GetCategoryControlByCategoryID(CategoryID) )
  394. Temp:SetText( Text )
  395. Temp:SetPos( 0, ClientSettings:MenuItemsInCategory(CategoryID) * 15 )
  396. Temp:SetSize( ClientSettings.CommandList:GetWide() - 2, 15 )
  397. Temp.id = id
  398. Temp.Input = input
  399. Temp.Text = Text
  400. Temp.ResetPlayer = resetplayer
  401. if CheckBoolean ~= nil then
  402. Temp:AddCheckBox()
  403. Temp.CheckBoolean = CheckBoolean
  404. end
  405. Temp.Command = Command
  406. Temp.IgnoreResetFocus = false
  407.  
  408.  
  409. if ClientSettings:MenuItemsInCategory(CategoryID) / 2 == math.floor(ClientSettings:MenuItemsInCategory(CategoryID) / 2) then
  410. Temp:SetAlt( true )
  411. end
  412.  
  413. temp.Control = Temp
  414. table.insert( ClientSettings.PlayerMenuItems, temp )
  415. Temp = nil
  416. ClientSettings:GetCategoryControlByCategoryID(CategoryID):SetTall( 15 * ClientSettings:MenuItemsInCategory(CategoryID) )
  417. end
  418.  
  419. function ClientSettings:RegisterPlayerMenuSlider( Text, CategoryID, id, Item)
  420.  
  421. local temp = {}
  422. temp.Text = Text
  423. temp.CategoryID = CategoryID
  424. temp.CheckBoolean = nil
  425. temp.Command = nil
  426.  
  427.  
  428. local Temp = vgui.Create( "DNumSlider", ClientSettings:GetCategoryControlByCategoryID(CategoryID) )
  429. Temp:SetText( Text )
  430. Temp:SetPos( 0, ClientSettings:MenuItemsInCategory(CategoryID) * 35 )
  431. Temp:SetSize( ClientSettings.CommandList:GetWide() - 2, 35 )
  432. Temp:SetValue( ClientSettings:Get( ClientSettings:GetSelectedPlayer(), id ) )
  433. Temp:SetMin( Item.MinValue )
  434. Temp:SetMax( Item.MaxValue )
  435. Temp:SetDecimals( Item.Decimals or 2 )
  436. Temp.IgnoreResetFocus = true -- Required
  437.  
  438. Temp.OnValueChanged = function( _, value )
  439. for _, v in pairs(ClientSettings:GetSelectedPlayer()) do
  440. if ClientSettings.AdminAllowSend == true then
  441. timer.Create(id .. "-ClientSettingAdminWang", 0.3, 1, TimerCaller, ClientSettings:GetSelectedPlayer():EntIndex(), id, tostring(value) )
  442. end
  443. end
  444. end
  445.  
  446. temp.Control = Temp
  447. table.insert( ClientSettings.PlayerMenuItems, temp )
  448. Temp = nil
  449. ClientSettings:GetCategoryControlByCategoryID(CategoryID):SetTall( 35 * ClientSettings:MenuItemsInCategory(CategoryID) )
  450. end
  451.  
  452. function ClientSettings:AddCategory( Text, CategoryID )
  453. local CatTempHeader = vgui.Create( "DCollapsibleCategory", ClientSettings.CommandList )
  454. CatTempHeader:SetPos( 1, #ClientSettings.Categories * 23 )
  455. CatTempHeader:SetSize( ClientSettings.CommandList:GetWide() - 2, 50 )
  456. CatTempHeader:SetExpanded( 0 )
  457. CatTempHeader:SetLabel( Text )
  458.  
  459. local CatTempContainer = vgui.Create( "DPanelList" )
  460. CatTempContainer:SetAutoSize( false )
  461. CatTempContainer:SetWide( CatTempHeader:GetWide() )
  462. CatTempContainer:SetTall( 0 )
  463. CatTempContainer:SetSpacing( 5 )
  464. CatTempContainer:EnableHorizontal( false )
  465.  
  466. CatTempHeader:SetContents( CatTempContainer )
  467.  
  468. local Temp = {}
  469. Temp.Text = Text
  470. Temp.CategoryID = CategoryID
  471. Temp.Header = CatTempHeader
  472. Temp.Container = CatTempContainer
  473.  
  474. table.insert( ClientSettings.Categories, Temp )
  475. end
  476.  
  477. function ClientSettings:GetCategoryControlByCategoryID( CategoryID )
  478. for _, i in pairs( ClientSettings.Categories ) do
  479. if i.CategoryID == CategoryID then
  480. return i.Container
  481. end
  482. end
  483. end
  484.  
  485. function ClientSettings:MenuItemsInCategory( CategoryID )
  486. amount = 0
  487. for _, i in pairs(ClientSettings.PlayerMenuItems) do
  488. if i.CategoryID == CategoryID then amount = amount + 1 end
  489. end
  490.  
  491. return amount
  492. end
  493.  
  494. function ClientSettings:GetSelectedPlayer()
  495. --return ClientSettings.Players.SelectedItems
  496. local SelItem = ClientSettings.Players:GetSelected()
  497. return player.GetByID(SelItem.Ply)
  498. end
  499.  
  500. function ClientSettings:CreateCategories()
  501. ClientSettings:AddCategory( "Player Permissions", 1 )
  502. ClientSettings:AddCategory( "Player Control", 2 )
  503. ClientSettings:AddCategory( "Player Limits", 3 )
  504. --AddCategory( "Category 4", 4 )
  505. end
  506.  
  507. local function MoveCategories()
  508. local CurrentTop = 0
  509. for _, v in pairs(ClientSettings.Categories) do
  510. v.Header:SetPos( 0, CurrentTop )
  511. CurrentTop = CurrentTop + v.Header:GetTall() + 1
  512. end
  513. end
  514. timer.Create( "MoveStuff", 0.01, 0, MoveCategories )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement