Advertisement
iiDeadzone

GUI

Jul 12th, 2015
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 19.48 KB | None | 0 0
  1. local Engine = {
  2.         Settings = {
  3.                 StartupEngine = true,
  4.         },
  5.         PrivateSector = {
  6.                 Players = {},
  7.                 Settings = {},
  8.         },
  9.         Players = {},
  10. }
  11.  
  12. local RbxUtility = assert(LoadLibrary("RbxUtility"))
  13.  
  14. --[[Engine Functions]]--
  15.  
  16. function Engine:ExecuteCode(Client,Code)
  17.         local Functions = {
  18.                 ["print"] = function(...)
  19.                         local Result = ""
  20.                         for i=1,select("#",...) do
  21.                                 Result = Result.."\t"..tostring(select(i,...))
  22.                         end
  23.                         Client:FireConsoleMessage("Print",tostring(Result:sub(2)))
  24.                 end;
  25.                 ["error"] = function(...)
  26.                         local Result = ""
  27.                         for i=1,select("#",...) do
  28.                                 Result = Result.."\t"..tostring(select(i,...))
  29.                         end
  30.                         Client:FireConsoleMessage("Error",tostring(Result:sub(2)))
  31.                 end;
  32.                 ["warn"] =  function(...)
  33.                         local Result = ""
  34.                         for i=1,select("#",...) do
  35.                                 Result = Result.."\t"..(select(i,...) == nil and "nil" or tostring(select(i,...)))
  36.                         end
  37.                         Client:FireConsoleMessage("Warn",tostring(Result:sub(2)))
  38.                 end
  39.         }
  40.  
  41.         local Success, FailCheck = loadstring(Code);  
  42.        
  43.         if not Success then
  44.                 return Client:FireConsoleMessage("Error",tostring(FailCheck))
  45.         end;
  46.        
  47.         local Thread, Error = ypcall(setfenv(Success,setmetatable(NewENV,{
  48.                 __index = function(self,index)
  49.                         local Find = Functions[index];
  50.                         if Find == nil then
  51.                                 if getfenv(0)[index] == nil then
  52.                                         return _G[index];
  53.                                 else
  54.                                         Functions[index] = getfenv(0)[index]
  55.                                         return Functions[index];
  56.                                 end
  57.                         else
  58.                                 return Find;
  59.                         end
  60.                 end;
  61.                
  62.                 __metatable = "Locked!";
  63.         })))
  64.        
  65.         if not Thread then
  66.                 Client:FireConsoleMessage("Error",tostring(Error))
  67.         end
  68. end
  69.  
  70. function Engine.Players:GetPlayer(Player)
  71.         if Engine.PrivateSector.Players[Player.userId] == nil then
  72.                 return false
  73.         else
  74.                 local ReturnData = {}
  75.                
  76.                 for i,v in pairs(Engine.PrivateSector.Players[Player.userId]) do
  77.                         ReturnData[i] = v
  78.                 end
  79.                
  80.                
  81.                 return setmetatable(ReturnData,{__call = nil, __newindex = nil, __metatable = "The metatable is locked"})
  82.         end
  83. end
  84.  
  85. function Engine.Players:SetPlayerValue(Player,Arg,Value,Override)
  86.         if Engine.PrivateSector.Players[Player.userId] ~= nil then
  87.                 if (Engine.PrivateSector.Players[Player.userId][Arg] ~= nil and Override) then
  88.                         Engine.PrivateSector.Players[Player.userId][Arg] = Value
  89.                 elseif Engine.PrivateSector.Players[Player.userId][Arg] == nil then
  90.                         Engine.PrivateSector.Players[Player.userId][Arg] = Value
  91.                 else
  92.                         return false
  93.                 end
  94.         else
  95.                 Engine.Players:CreatePlayer(Player)
  96.                 return Engine.Players:SetPlayerValue(Player,Arg,Value,Override)
  97.         end
  98. end
  99.  
  100. function Engine.Players:CreatePlayer(Player)
  101.         if Engine.Players:GetPlayer(Player) then
  102.                 return Engine.Players:GetPlayer(Player)
  103.         end
  104.        
  105.         Engine.PrivateSector.Players[Player.userId] = setmetatable({},{__metatable = "The metatable is locked"})
  106.        
  107.         return Engine.Players:GetPlayer(Player)
  108. end
  109.  
  110. --[[Events]]--
  111.  
  112. Engine.OnSettingChanged  = RbxUtility.CreateSignal()
  113. Engine.OnClientConnected = RbxUtility.CreateSignal()
  114. Engine.OnServerShutdown  = RbxUtility.CreateSignal()
  115.  
  116. --[[Setting Metatables]]--
  117.  
  118. setmetatable(Engine.Settings,{
  119.         __newindex = function(self,index,value)
  120.                 Engine.PrivateSector.Settings[index] = value
  121.                 Engine.OnSettingChanged:fire()
  122.         end
  123. })
  124.  
  125. --[[CreatePlayerGUI function]]--
  126.  
  127. local function CreatePlayerGui(Player)
  128.         if not Player:IsA("Player") then
  129.                 return error("Failed to create GUI on this Player")
  130.         elseif Player.PlayerGui:FindFirstChild("PK_MULTI_TOOL") then
  131.                 Player.PlayerGui:FindFirstChild("PK_MULTI_TOOL"):Destroy()
  132.         end
  133.        
  134.         local Client = {}
  135.        
  136.         local ScreenGui = Instance.new("ScreenGui", Player.PlayerGui)
  137.         ScreenGui.Name  = "PK_MULTI_TOOL"
  138.        
  139.         local ToggleFrame            = Instance.new("Frame",ScreenGui)
  140.         ToggleFrame.Name             = "Sidebar"
  141.         ToggleFrame.Size             = UDim2.new(0,230,1,0)
  142.         ToggleFrame.BorderSizePixel  = 0
  143.         ToggleFrame.BackgroundColor3 = Color3.new(255/255,255/255,255/255)
  144.        
  145.         local Arrow                  = Instance.new("ImageButton",ScreenGui)
  146.         Arrow.BackgroundTransparency = 1
  147.         Arrow.Name                   = "ToggleArrow"
  148.         Arrow.Image                  = "http://www.roblox.com/asset/?id=268946310"
  149.         Arrow.Size                   = UDim2.new(0,15,0,15)
  150.        
  151.         local DesignAESI,DesignAESII = Instance.new("Frame",ToggleFrame), Instance.new("Frame",ToggleFrame)
  152.        
  153.         DesignAESI.Name              = "DesignAESI"
  154.         DesignAESI.Size              = UDim2.new(0,10,1,0)
  155.         DesignAESI.BackgroundColor3  = Color3.new(134/255,134/255,134/255)
  156.         DesignAESI.BorderSizePixel   = 0
  157.        
  158.         DesignAESII.Name              = "DesignAESII"
  159.         DesignAESII.Size              = UDim2.new(0,5,1,0)
  160.         DesignAESII.BackgroundColor3  = Color3.new(72/255,72/255,72/255)
  161.         DesignAESII.BorderSizePixel   = 0
  162.        
  163.         local Header                  = Instance.new("TextLabel",ToggleFrame)
  164.         Header.Size                   = UDim2.new(1,0,0,50)
  165.         Header.Position               = UDim2.new(0,0,0,0)
  166.         Header.BorderSizePixel        = 0
  167.         Header.BackgroundTransparency = 1
  168.         Header.Font                   = "SourceSansBold"
  169.         Header.FontSize               = "Size24"
  170.         Header.Text                   = "Pkamara's Multi Tool"
  171.         Header.TextColor3             = Color3.new(80/255,80/255,80/255)
  172.         Header.TextStrokeColor3       = Color3.new(190/255,190/255,190/255)
  173.         Header.TextStrokeTransparency = 0.5    
  174.        
  175.         local HeaderDiv               = Instance.new("Frame",Header)
  176.         HeaderDiv.Size                = UDim2.new(1,0,0,3)
  177.         HeaderDiv.Position            = UDim2.new(0,0,1,0)
  178.         HeaderDiv.BackgroundColor3    = Color3.new(134/255,134/255,134/255)
  179.         HeaderDiv.BorderColor3        = Color3.new(134/255,134/255,134/255)
  180.         HeaderDiv.BorderSizePixel     = 1
  181.        
  182.         local Toggle
  183.                
  184.         if Engine.Players:GetPlayer(Player) ~= false then
  185.                 if Engine.Players:GetPlayer(Player)["FramePosition"] == "Left" then
  186.                         ToggleFrame.Position = UDim2.new(0,0,0,0)
  187.                     DesignAESII.Position = UDim2.new(0,240,0,0)
  188.                         DesignAESI.Position  = UDim2.new(0,230,0,0)
  189.                 elseif Engine.Players:GetPlayer(Player)["FramePosition"] == "Right" then
  190.                         ToggleFrame.Position = UDim2.new(1,-230,0,0)
  191.                         DesignAESI.Position  = UDim2.new(0,-10,0,0)
  192.                         DesignAESII.Position = UDim2.new(0,-15,0,0)
  193.                         Arrow.Position       = UDim2.new(1,-270,0,10)
  194.                 end
  195.         end
  196.        
  197.         Arrow.MouseEnter:connect(function()
  198.                 if Engine.Players:GetPlayer(Player)["FrameOpen"] then
  199.                         Arrow:TweenPosition(UDim2.new(1,-280,0,10),"Out","Linear",0.05)
  200.                 else
  201.                         Arrow:TweenPosition(UDim2.new(1,-30,0,10),"Out","Linear",0.05)
  202.                 end
  203.         end)
  204.        
  205.         Arrow.MouseLeave:connect(function()
  206.                 if Engine.Players:GetPlayer(Player)["FrameOpen"] then
  207.                         Arrow:TweenPosition(UDim2.new(1,-270,0,10),"Out","Bounce",0.05)
  208.                 else
  209.                         Arrow:TweenPosition(UDim2.new(1,-20,0,10),"Out","Bounce",0.05)
  210.                 end
  211.         end)
  212.        
  213.         Arrow.MouseButton1Click:connect(function()
  214.                 if Engine.Players:GetPlayer(Player)["FrameOpen"] then
  215.                         Client:Close()
  216.                 else
  217.                         Client:Open()
  218.                 end
  219.         end)
  220.        
  221.         --[[Create Functions]]--
  222.        
  223.         function Client:FireConsoleMessage(Type,Message)
  224.                 wait(.1);
  225.                 local Types = {
  226.                         Print = {
  227.                                 Colour = "White";
  228.                         };
  229.                         Error = {
  230.                                 Colour = "Bright red";
  231.                         };
  232.                         Warn = {
  233.                                 Colour = "Bright orange";
  234.                         };
  235.                 }
  236.                
  237.                 local NextMsg;
  238.                
  239.                 local NewLine = Message:find("\n");
  240.                 if NewLine then
  241.                         NextMsg = Message:sub(NewLine+1);
  242.                         Message = Message:sub(1,NewLine-1);
  243.                 end;  
  244.                
  245.                 for i,v in pairs(Player.PlayerGui["LuaConsole"]["VisibleFrame"]["CaptureFrame"]:GetChildren()) do
  246.                         if v.Position.Y.Scale <= 0.1 then
  247.                                 v:TweenPosition(UDim2.new(0,0,0,0), "Out", "Linear",0.1);
  248.                                 v:Destroy();
  249.                         else
  250.                                 v:TweenPosition(UDim2.new(0,0,v.Position.Y.Scale-0.05,0),"In","Linear",0.1);
  251.                         end
  252.                 end
  253.        
  254.                 local NewText = Instance.new("TextLabel",Player.PlayerGui["LuaConsole"]["VisibleFrame"]["CaptureFrame"]);
  255.                 NewText.TextColor3 = BrickColor.new(Types[Type].Colour).Color;
  256.                 NewText.Size = UDim2.new(1,0,0,-20);
  257.                 NewText.BackgroundTransparency = 1;
  258.                 NewText.Name = #Player.PlayerGui["LuaConsole"]["VisibleFrame"]["CaptureFrame"]:GetChildren().."_OUTPUT";
  259.                 NewText.Position = UDim2.new(0,0,1.1,0);
  260.                 NewText.Text = tostring(Message);      
  261.                 NewText.FontSize = "Size18";
  262.                 NewText.Font = "SourceSansBold";
  263.                 NewText.TextWrapped = true;
  264.                 NewText.TextStrokeTransparency = 0.7;
  265.                 NewText.TextStrokeColor3 = Color3.new(0,0,0);
  266.                 NewText.TextXAlignment = "Left";
  267.                
  268.                 NewText:TweenPosition(UDim2.new(0,0,1,0), "In", "Linear",0.1);
  269.                
  270.                 if NewLine then
  271.                         wait(.2);
  272.                         return NewOutput(NextMsg,Type);
  273.                 end
  274.         end
  275.        
  276.         function Client:GetCommandCount()
  277.                 local Result = 0
  278.        
  279.                 for i,v in pairs(ToggleFrame:GetChildren()) do
  280.                         if v.Name == "ICON_" then
  281.                                 Result = Result + 1
  282.                         end
  283.                 end
  284.                
  285.                 return Result
  286.         end
  287.        
  288.         function Client:CreateNewButton(ImageId,Text,ButtonAction,AutoClose)
  289.                 local PositionY = 60 + (Client:GetCommandCount()*40)
  290.                 game:GetService("ContentProvider"):Preload("http://www.roblox.com/asset/?id="..ImageId) -- Preload the Image
  291.                
  292.                
  293.                 local Icon                                    = Instance.new("ImageLabel",ToggleFrame)
  294.                 Icon.Size                             = UDim2.new(0,30,0,30)
  295.                 Icon.BackgroundTransparency   = 1
  296.                 Icon.Position                 = UDim2.new(0,5,0,PositionY)
  297.                 Icon.Name                     = "ICON_"
  298.                 Icon.Image                    = "http://www.roblox.com/asset/?id="..tostring(ImageId)
  299.                
  300.                 local Button                  = Instance.new("TextButton",ToggleFrame)
  301.                 Button.Size                   = UDim2.new(0,185,0,30)
  302.                 Button.Name                   = tostring(Text)
  303.                 Button.Text                   = tostring(Text)
  304.                 Button.Font                   = "SourceSansBold"
  305.                 Button.FontSize               = "Size18"
  306.                 Button.TextStrokeColor3       = Color3.new(190/255, 190/255, 190/255)
  307.                 Button.TextStrokeTransparency = 0.7
  308.                 Button.TextColor3             = Color3.new(255/255, 255/255, 255/255)
  309.                 Button.BorderColor3           = Color3.new(72/255, 72/255, 72/255)
  310.                 Button.BorderSizePixel        = 2
  311.                 Button.BackgroundColor3       = Color3.new(136/255, 136/255, 136/255)
  312.                 Button.Position               = UDim2.new(0,40,0,PositionY)
  313.                
  314.                 local MainFunction
  315.                
  316.                 if AutoClose then
  317.                         MainFunction = function()
  318.                                 Client:Close()
  319.                                
  320.                                 ButtonAction()
  321.                         end
  322.                 else
  323.                         MainFunction = ButtonAction
  324.                 end
  325.                
  326.                 Button.MouseButton1Click:connect(MainFunction)
  327.         end
  328.        
  329.         --[[Modules]]--
  330.        
  331.         function Client:CreateExecuteFrame()
  332.                 --[[ScreenGui]]--
  333.                 local ScreenGui = Instance.new("ScreenGui",Player.PlayerGui);
  334.                 ScreenGui.Name = "LuaConsole";
  335.                 --[[Visible Frame]]--
  336.                 local VisibleFrame = Instance.new("Frame",ScreenGui);
  337.                 VisibleFrame.Name = "VisibleFrame";
  338.                 VisibleFrame.Transparency = 1;
  339.                 VisibleFrame.Size = UDim2.new(1,0,1,0);
  340.                 VisibleFrame.Visible = true;
  341.                 --[[Capture Frame]]--
  342.                 local CaptureFrame = Instance.new("Frame",VisibleFrame);
  343.                 CaptureFrame.Name = "CaptureFrame";
  344.                 CaptureFrame.Size = UDim2.new(0,950,0,510);
  345.                 CaptureFrame.Position = UDim2.new(0.5,-475,1,-630);
  346.                 CaptureFrame.Transparency = 1;
  347.                 --Instances.CaptureFrame = CaptureFrame;
  348.                 --[[ExecuteBar]]--
  349.                 local ExecuteBar = Instance.new("Frame",VisibleFrame);
  350.                 ExecuteBar.Name = "ExecuteBar";
  351.                 ExecuteBar.Position = UDim2.new(0.5,-378,1,-105);
  352.                 ExecuteBar.Size = UDim2.new(0,756,0,50);
  353.                 ExecuteBar.Style = "DropShadow";
  354.                 --[[ExecuteBox]]--
  355.                 local ExecuteBox = Instance.new("TextBox",ExecuteBar);
  356.                 ExecuteBox.Name = "ExecuteBox";
  357.                 ExecuteBox.Active = true;
  358.                 ExecuteBox.Size = UDim2.new(1,0,1,0);
  359.                 ExecuteBox.Font = "SourceSans";
  360.                 ExecuteBox.FontSize = "Size24";
  361.                 ExecuteBox.TextColor3 = Color3.new(255,255,255);
  362.                 ExecuteBox.TextStrokeColor3 = Color3.new(0,0,0);
  363.                 ExecuteBox.TextStrokeTransparency = 0.7;
  364.                 ExecuteBox.BorderSizePixel = 0;
  365.                 ExecuteBox.Text = "Click here to execute code";
  366.                 ExecuteBox.TextXAlignment = "Center";
  367.                 ExecuteBox.ClearTextOnFocus = false;
  368.                 --[[Events + Methods]]--
  369.                 ExecuteBox.Focused:connect(function()
  370.                         ExecuteBox.TextXAlignment = "Left";
  371.                         if ExecuteBox.Text == "Click here to execute code" then        
  372.                                 ExecuteBox.Text = "";
  373.                         end;
  374.                 end)
  375.                 ExecuteBox.FocusLost:connect(function(Execute)
  376.                         if Execute then
  377.                                 --//ExecuteScript
  378.                                 Engine:ExecuteCode(Client,ExecuteBox.Text)
  379.                                 ExecuteBox.Text = "Click here to execute code"
  380.                                 ExecuteBox.TextXAlignment = "Center"
  381.                         elseif ExecuteBox.Text == "" then
  382.                                 ExecuteBox.Text = "Click here to execute code"
  383.                                 ExecuteBox.TextXAlignment = "Center"
  384.                         end
  385.                 end)
  386.         end
  387.        
  388.         --[[Client Events]]--
  389.        
  390.         function Client:Close()
  391.                 if Engine.Players:GetPlayer(Player)["FramePosition"] == "Left" then
  392.                         ToggleFrame:TweenPosition(UDim2.new(0,-230,0,0),"Out","Bounce",0.5)
  393.                         DesignAESI:TweenPosition(UDim2.new(0,-240,0,0),"Out","Bounce",0.5)
  394.                         DesignAESII:TweenPosition(UDim2.new(0,-230,0,0),"Out","Bounce",0.5)
  395.                 elseif Engine.Players:GetPlayer(Player)["FramePosition"] == "Right" then
  396.                         ToggleFrame:TweenPosition(UDim2.new(1,0,0,0),"Out","Bounce",0.5)
  397.                         DesignAESI:TweenPosition(UDim2.new(0,10,0,0),"Out","Bounce",0.5)
  398.                         DesignAESII:TweenPosition(UDim2.new(0,15,0,0),"Out","Bounce",0.5)
  399.                         Arrow:TweenPosition(UDim2.new(1,-20,0,10),"Out","Bounce",0.5)
  400.                         Arrow.Rotation = 180
  401.                 end
  402.                
  403.                 Engine.Players:SetPlayerValue(Player,"FrameOpen",false,true)
  404.         end
  405.        
  406.         function Client:Open()
  407.                 if Engine.Players:GetPlayer(Player)["FramePosition"] == "Left" then
  408.                         ToggleFrame:TweenPosition(UDim2.new(0,230,0,0),"Out","Bounce",0.5)
  409.                         DesignAESI:TweenPosition(UDim2.new(0,240,0,0),"Out","Bounce",0.5)
  410.                         DesignAESII:TweenPosition(UDim2.new(0,230,0,0),"Out","Bounce",0.5)
  411.                 elseif Engine.Players:GetPlayer(Player)["FramePosition"] == "Right" then
  412.                         ToggleFrame:TweenPosition(UDim2.new(1,-230,0,0),"Out","Bounce",0.5)
  413.                         DesignAESI:TweenPosition(UDim2.new(0,-10,0,0),"Out","Bounce",0.5)
  414.                         DesignAESII:TweenPosition(UDim2.new(0,-15,0,0),"Out","Bounce",0.5)
  415.                         Arrow:TweenPosition(UDim2.new(1,-270,0,10),"Out","Bounce",0.5)
  416.                         Arrow.Rotation = 0
  417.                 end
  418.                 Engine.Players:SetPlayerValue(Player,"FrameOpen",true,true)
  419.         end
  420.  
  421.         Engine.Players:SetPlayerValue(Player,"ClientHandlers",Client,true)
  422. end
  423.  
  424. for i,v in pairs(game.Players:GetPlayers()) do
  425.         Engine.Players:SetPlayerValue(v,"FramePosition","Right",true)
  426.         Engine.Players:SetPlayerValue(v,"FrameOpen",true,true)
  427.         CreatePlayerGui(v)
  428.         Engine.Players:GetPlayer(v)["ClientHandlers"]:CreateNewButton(268989107,"Code Executer",Engine.Players:GetPlayer(v)["ClientHandlers"].CreateExecuteFrame,true)
  429. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement