Ulysses
General => Developers Corner => Topic started by: LuaTenshi on September 16, 2011, 11:49:40 PM
-
I have decided to make an ad-don for UPS, that allows you to target specific entity types and or models.
I am going to make additional commands that work as chat commands along with this add-on.
My first version works, but I am having trouble with this one.
module( "UPS", package.seeall )
function upsMenuOpen()
local DermaPanel = vgui.Create( "DFrame" )
DermaPanel:SetPos( 50,50 )
DermaPanel:SetSize( 250, 300 )
DermaPanel:SetTitle( "UPS Menu" )
DermaPanel:SetVisible( true )
DermaPanel:SetDraggable( true )
DermaPanel:ShowCloseButton( true )
DermaPanel:MakePopup()
-- panel:AddControl( "Label", { Text = "" } ) -- Spacing
local myLabelOne = vgui.Create("DLabel", DermaPanel)
myLabelOne:SetColor(Color(0,0,0,0)) // Color
myLabelOne:SetFont("default")
myLabelOne:SetText("Spacing") // Text
myLabelOne:SizeToContents() // make the control the same size as the text.
-- panel:AddControl( "Label", { Text = "Time until props are put up for grabs after player leaves:" } )
local myLabelTwo = vgui.Create("DLabel", DermaPanel)
myLabelTwo:SetColor(Color(255,255,255,255)) // Color
myLabelTwo:SetFont("default")
myLabelTwo:SetText("Time until props are put up for grabs after player leaves:") // Text
myLabelTwo:SizeToContents() // make the control the same size as the text.
-- panel:AddControl( "Slider", {
-- Label = "Set to -1 to disable",
-- Type = "Integer",
-- Min = -1,
-- Max = 1200,
-- Command = "ups_cl_cleartime",
-- } )
local NumSliderOne = vgui.Create( "DNumSlider", DermaPanel )
NumSliderOne:SizeToContents()
NumSliderOne:SetText( "Set to -1 to disable" )
NumSliderOne:SetMin( -1 ) -- Minimum number of the slider
NumSliderOne:SetMax( 1200 ) -- Maximum number of the slider
NumSliderOne:SetDecimals( 0 ) -- Sets a decimal. Zero means it's a whole number
NumSliderOne:SetConVar( "ups_cl_cleartime" ) -- Set the convar
-- panel:AddControl( "Label", { Text = "" } ) -- Spacing
local myLabelThree = vgui.Create("DLabel", DermaPanel)
myLabelThree:SetColor(Color(0,0,0,0)) // Color
myLabelThree:SetFont("default")
myLabelThree:SetText("Spacing") // Text
myLabelThree:SizeToContents() // make the control the same size as the text.
-- panel:AddControl( "Label", { Text = "Time until deletion after player leaves:" } )
local myLabelFour = vgui.Create("DLabel", DermaPanel)
myLabelFour:SetColor(Color(255,255,255,255)) // Color
myLabelFour:SetFont("default")
myLabelFour:SetText("Time until deletion after player leaves:") // Text
myLabelFour:SizeToContents() // make the control the same size as the text.
-- panel:AddControl( "Slider", {
-- Label = "Set to -1 to disable",
-- Type = "Integer",
-- Min = -1,
-- Max = 1200,
-- Command = "ups_cl_deletetime",
-- } )
local NumSliderTwo = vgui.Create( "DNumSlider", DermaPanel )
NumSliderTwo:SizeToContents()
NumSliderTwo:SetText( "Set to -1 to disable" )
NumSliderTwo:SetMin( -1 ) -- Minimum number of the slider
NumSliderTwo:SetMax( 1200 ) -- Maximum number of the slider
NumSliderTwo:SetDecimals( 0 ) -- Sets a decimal. Zero means it's a whole number
NumSliderTwo:SetConVar( "ups_cl_deletetime" ) -- Set the convar
-- panel:AddControl( "Checkbox", { Label = "Delete admin props on leave", Command = "ups_cl_deleteadmin" } )
local CheckBoxOne = vgui.Create( "DCheckBoxLabel", DermaPanel )
CheckBoxOne:SetText( "Delete admin props on leave" )
CheckBoxOne:SetConVar( "ups_cl_deleteadmin" )
CheckBoxOne:GetValue()
CheckBoxOne:SizeToContents()
-- panel:AddControl( "Checkbox", { Label = "Admins affected by restrictions", Command = "ups_cl_affectadmins" } )
local CheckBoxTwo = vgui.Create( "DCheckBoxLabel", DermaPanel )
CheckBoxTwo:SetText( "Admins affected by restrictions" )
CheckBoxTwo:SetConVar( "ups_cl_affectadmins" )
CheckBoxTwo:GetValue()
CheckBoxTwo:SizeToContents()
-- panel:AddControl( "Checkbox", { Label = "Enable world protection", Command = "ups_cl_worldprotection" } )
local CheckBoxTwo = vgui.Create( "DCheckBoxLabel", DermaPanel )
CheckBoxTwo:SetText( "Enable world protection" )
CheckBoxTwo:SetConVar( "ups_cl_worldprotection" )
CheckBoxTwo:GetValue()
CheckBoxTwo:SizeToContents()
-- panel:AddControl( "Label", { Text = "" } ) -- Spacing
local myLabelFive = vgui.Create("DLabel", DermaPanel)
myLabelFive:SetColor(Color(0,0,0,0)) // Color
myLabelFive:SetFont("default")
myLabelFive:SetText("Spacing") // Text
myLabelFive:SizeToContents() // make the control the same size as the text.
-- panel:AddControl( "Label", { Text = "There are " .. tostring( table.getn( ents.GetAll() ) ) .. " entities found on the map!" } ) -- Shows how many entities are found on the map
local myLabelSix = vgui.Create("DLabel", DermaPanel)
myLabelSix:SetColor(Color(255,255,255,255)) // Color
myLabelSix:SetFont("default")
myLabelSix:SetText("There are " .. tostring( table.getn( ents.GetAll() ) ) .. " entities found on the map!") // Text
myLabelSix:SizeToContents() // make the control the same size as the text.
local UpsMenuCC = vgui.Create("DCollapsibleCategory", DermaPanel)
UpsMenuCC:SetPos( 25,50 )
UpsMenuCC:SetSize( 200, 50 ) -- Keep the second number at 50
UpsMenuCC:SetExpanded( ) -- Expanded when popped up
UpsMenuCC:SetLabel( "Cleanup Controlls" )
CategoryList = vgui.Create( "DPanelList" )
CategoryList:SetAutoSize( true )
CategoryList:SetSpacing( 5 )
CategoryList:EnableHorizontal( false )
CategoryList:EnableVerticalScrollbar( true )
UpsMenuCC:SetContents( CategoryList ) -- Add our list above us as the contents of the collapsible category
-- panel:AddControl( "TextBox", { Label = "Cleanup", Command = "ups_clnstr_string", WaitForEnter = false } )
local textbox = vgui.Create("TextEntry")
textbox:SetConVar( "ups_clnstr_string" )
textbox:SetValue( "*" )
textbox:SizeToContents()
CategoryList:AddItem( textbox ) -- Add the above item to our list
-- panel:AddControl( "Button", { Text = "Cleanup!", Command = "ups_clnstr" } )
local button = vgui.Create( "DButton" )
button:SizeToContents()
button:SetText( "Cleanup!" )
button:SetConsoleCommand("ups_clnstr")
CategoryList:AddItem( button ) -- Add the above item to our list
local ClassCleanupMenu = vgui.Create("DCollapsibleCategory")
ClassCleanupMenu:SetPos( 25,50 )
ClassCleanupMenu:SetSize( 200, 50 ) -- Keep the second number at 50
ClassCleanupMenu:SetExpanded( 0 ) -- Expanded when popped up
ClassCleanupMenu:SetLabel( "Cleanup all props of a selected class:" )
ClassCleanupList = vgui.Create( "DPanelList" )
ClassCleanupList:SetAutoSize( true )
ClassCleanupList:SetSpacing( 5 )
ClassCleanupList:EnableHorizontal( false )
ClassCleanupList:EnableVerticalScrollbar( true )
ClassCleanupMenu:SetContents( ClassCleanupList ) -- Add our list above us as the contents of the collapsible category
local entClassTable = {}
for _, ent in pairs( ents.GetAll() ) do
if( ent:IsValid() ) then
if( ent:IsWorld() ) then
table.insert( entClassTable, ent:GetClass() )
if table.HasValue( entClassTable, ent:GetClass() ) then
local clnbutton = vgui.Create( "DButton" )
clnbutton:SizeToContents()
clnbutton:SetText( ent:GetClass() )
clnbutton:SetConsoleCommand("ups_clnstr_string" .. ent:GetClass() .. ";ups_clnstr")
end
ClassCleanupList:AddItem( clnbutton ) -- Add lines
end
end
end
CategoryList:AddItem( ClassCleanupList ) -- Add the above item to our list
local PlayerCleanupMenu = vgui.Create("DCollapsibleCategory")
PlayerCleanupMenu:SetPos( 25,50 )
PlayerCleanupMenu:SetSize( 200, 50 ) -- Keep the second number at 50
PlayerCleanupMenu:SetExpanded( 0 ) -- Expanded when popped up
PlayerCleanupMenu:SetLabel( "Delete all of a player's props:" )
PlayerCleanupList = vgui.Create( "DPanelList" )
PlayerCleanupList:SetAutoSize( true )
PlayerCleanupList:SetSpacing( 5 )
PlayerCleanupList:EnableHorizontal( false )
PlayerCleanupList:EnableVerticalScrollbar( true )
PlayerCleanupMenu:SetContents( PlayerCleanupList ) -- Add our list above us as the contents of the collapsible category
for uid, nick in pairs( playerTable ) do
local plybutton = vgui.Create( "DButton" )
plybutton:SizeToContents()
plybutton:SetText( nick )
plybutton:SetConsoleCommand("ups_remove " .. uid)
end
PlayerCleanupList:AddItem( PlayerCleanupList ) -- Add the above item to our list
local button = vgui.Create( "DButton", DermaPanel )
button:SizeToContents()
button:SetText( "Console Commands" )
button.DoClick = function()
Msg("---\n")
Msg("You can also use the following console commands!\n")
Msg("---\n")
Msg("ups_cl_cleartime # [Time until props are put up for grabs after player leaves]\n")
Msg("---\n")
Msg("ups_cl_deletetime # [Time until deletion after player leaves]\n")
Msg("---\n")
Msg("ups_cl_deleteadmin # [Delete admin props on leave]\n")
Msg("---\n")
Msg("ups_cl_affectadmins # [Admins affected by restrictions]\n")
Msg("---\n")
Msg("ups_cl_worldprotection # [Enable world protection]\n")
Msg("---\n")
Msg("ups_clnstr_string (model or class) [Set the model or class to be cleaned up]\n")
Msg("---\n")
Msg("ups_clnstr [Cleanup the entities selected by ups_clnstr_string]\n")
Msg("---\n")
end
end
concommand.Add( "ups_menu", upsMenuOpen )
I do not get any errors. And yes I made a GUI for UPS Menu. :)
-
Sounds useful! Hopefully you're able to get it to work :D (I can't be of any help, at all.) haha
-
I have edited my first post with my new problem, every thing else seems to be working fine.
I do not get any errors, that is the strange thing.
The commented lines of code are the old code.
(I accidentally removed the older comment so I just re-pasted it.)
Does any one have the slightest idea on how to fix this, because its bothering me that I can not get it 2 work.
Please Note: The commented lines of code are the original code, I modified it to change it into a GUI, but I cant seem to get it to work...