Roblox Car Crushers 2 Script Autofarm

Roblox Car Crushers 2 Script Autofarm

Script By LeviTheOtaku

local library = {count = 0, queue = {}, callbacks = {}, rainbowtable = {}, toggled = true, binds = {}};
local defaults; do
   local dragger = {}; do
       local mouse        = game:GetService("Players").LocalPlayer:GetMouse();
       local inputService = game:GetService('UserInputService');
       local heartbeat    = game:GetService("RunService").Heartbeat;
       -- // credits to Ririchi / Inori for this cute drag function :)
       function dragger.new(frame)
           local s, event = pcall(function()
               return frame.MouseEnter
           end)
   
           if s then
               frame.Active = true;
               
               event:connect(function()
                   local input = frame.InputBegan:connect(function(key)
                       if key.UserInputType == Enum.UserInputType.MouseButton1 then
                           local objectPosition = Vector2.new(mouse.X - frame.AbsolutePosition.X, mouse.Y - frame.AbsolutePosition.Y);
                           while heartbeat:wait() and inputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do
                               pcall(function()
                                   frame:TweenPosition(UDim2.new(0, mouse.X - objectPosition.X + (frame.Size.X.Offset * frame.AnchorPoint.X), 0, mouse.Y - objectPosition.Y + (frame.Size.Y.Offset * frame.AnchorPoint.Y)), 'Out', 'Linear', 0.1, true);
                               end)
                           end
                       end
                   end)
   
                   local leave;
                   leave = frame.MouseLeave:connect(function()
                       input:disconnect();
                       leave:disconnect();
                   end)
               end)
           end
       end

       game:GetService('UserInputService').InputBegan:connect(function(key, gpe)
           if (not gpe) then
               if key.KeyCode == Enum.KeyCode.RightControl then
                   library.toggled = not library.toggled;
                   for i, data in next, library.queue do
                       local pos = (library.toggled and data.p or UDim2.new(-1, 0, -0.5,0))
                       data.w:TweenPosition(pos, (library.toggled and 'Out' or 'In'), 'Quad', 0.15, true)
                       wait();
                   end
               end
           end
       end)
   end
   
   local types = {}; do
       types.__index = types;
       function types.window(name, options)
           library.count = library.count + 1
           local newWindow = library:Create('Frame', {
               Name = name;
               Size = UDim2.new(0, 190, 0, 30);
               BackgroundColor3 = options.topcolor;
               BorderSizePixel = 0;
               Parent = library.container;
               Position = UDim2.new(0, (15 + (200 * library.count) - 200), 0, 0);
               ZIndex = 3;
               library:Create('TextLabel', {
                   Text = name;
                   Size = UDim2.new(1, -10, 1, 0);
                   Position = UDim2.new(0, 5, 0, 0);
                   BackgroundTransparency = 1;
                   Font = Enum.Font.Code;
                   TextSize = options.titlesize;
                   Font = options.titlefont;
                   TextColor3 = options.titletextcolor;
                   TextStrokeTransparency = library.options.titlestroke;
                   TextStrokeColor3 = library.options.titlestrokecolor;
                   ZIndex = 3;
               });
               library:Create("TextButton", {
                   Size = UDim2.new(0, 30, 0, 30);
                   Position = UDim2.new(1, -35, 0, 0);
                   BackgroundTransparency = 1;
                   Text = "-";
                   TextSize = options.titlesize;
                   Font = options.titlefont;--Enum.Font.Code;
                   Name = 'window_toggle';
                   TextColor3 = options.titletextcolor;
                   TextStrokeTransparency = library.options.titlestroke;
                   TextStrokeColor3 = library.options.titlestrokecolor;
                   ZIndex = 3;
               });
               library:Create("Frame", {
                   Name = 'Underline';
                   Size = UDim2.new(1, 0, 0, 2);
                   Position = UDim2.new(0, 0, 1, -2);
                   BackgroundColor3 = (options.underlinecolor ~= "rainbow" and options.underlinecolor or Color3.new());
                   BorderSizePixel = 0;
                   ZIndex = 3;
               });
               library:Create('Frame', {
                   Name = 'container';
                   Position = UDim2.new(0, 0, 1, 0);
                   Size = UDim2.new(1, 0, 0, 0);
                   BorderSizePixel = 0;
                   BackgroundColor3 = options.bgcolor;
                   ClipsDescendants = false;
                   library:Create('UIListLayout', {
                       Name = 'List';
                       SortOrder = Enum.SortOrder.LayoutOrder;
                   })
               });
           })
           
           if options.underlinecolor == "rainbow" then
               table.insert(library.rainbowtable, newWindow:FindFirstChild('Underline'))
           end

           local window = setmetatable({
               count = 0;
               object = newWindow;
               container = newWindow.container;
               toggled = true;
               flags   = {};

           }, types)

           table.insert(library.queue, {
               w = window.object;
               p = window.object.Position;
           })

           newWindow:FindFirstChild("window_toggle").MouseButton1Click:connect(function()
               window.toggled = not window.toggled;
               newWindow:FindFirstChild("window_toggle").Text = (window.toggled and "+" or "-")
               if (not window.toggled) then
                   window.container.ClipsDescendants = true;
               end
               wait();
               local y = 0;
               for i, v in next, window.container:GetChildren() do
                   if (not v:IsA('UIListLayout')) then
                       y = y + v.AbsoluteSize.Y;
                   end
               end

               local targetSize = window.toggled and UDim2.new(1, 0, 0, y+5) or UDim2.new(1, 0, 0, 0);
               local targetDirection = window.toggled and "In" or "Out"

               window.container:TweenSize(targetSize, targetDirection, "Quad", 0.15, true)
               wait(.15)
               if window.toggled then
                   window.container.ClipsDescendants = false;
               end
           end)

           return window;
       end
       
       function types:Resize()
           local y = 0;
           for i, v in next, self.container:GetChildren() do
               if (not v:IsA('UIListLayout')) then
                   y = y + v.AbsoluteSize.Y;
               end
           end
           self.container.Size = UDim2.new(1, 0, 0, y+5)
       end
       
       function types:GetOrder()
           local c = 0;
           for i, v in next, self.container:GetChildren() do
               if (not v:IsA('UIListLayout')) then
                   c = c + 1
               end
           end
           return c
       end
       
       function types:Label(text)
           local v = game:GetService'TextService':GetTextSize(text, 18, Enum.Font.SourceSans, Vector2.new(math.huge, math.huge))
           local object = library:Create('Frame', {
               Size = UDim2.new(1, 0, 0, v.Y + 5);
               BackgroundTransparency  = 1;
               library:Create('TextLabel', {
                   Size = UDim2.new(1, 0, 1, 0);
                   Position = UDim2.new(0, 10, 0, 0);
                   LayoutOrder = self:GetOrder();

                   Text = text;
                   TextSize = 18;
                   Font = Enum.Font.SourceSans;
                   TextColor3 = Color3.fromRGB(255, 255, 255);
                   BackgroundTransparency = 1;
                   TextXAlignment = Enum.TextXAlignment.Left;
                   TextWrapped = true;
               });
               Parent = self.container
           })
           self:Resize();
       end

       function types:Toggle(name, options, callback)
           local default  = options.default or false;
           local location = options.location or self.flags;
           local flag     = options.flag or "";
           local callback = callback or function() end;
           
           location[flag] = default;

           local check = library:Create('Frame', {
               BackgroundTransparency = 1;
               Size = UDim2.new(1, 0, 0, 25);
               LayoutOrder = self:GetOrder();
               library:Create('TextLabel', {
                   Name = name;
                   Text = "\r" .. name;
                   BackgroundTransparency = 1;
                   TextColor3 = library.options.textcolor;
                   Position = UDim2.new(0, 5, 0, 0);
                   Size     = UDim2.new(1, -5, 1, 0);
                   TextXAlignment = Enum.TextXAlignment.Left;
                   Font = library.options.font;
                   TextSize = library.options.fontsize;
                   TextStrokeTransparency = library.options.textstroke;
                   TextStrokeColor3 = library.options.strokecolor;
                   library:Create('TextButton', {
                       Text = (location[flag] and utf8.char(10003) or "");
                       Font = library.options.font;
                       TextSize = library.options.fontsize;
                       Name = 'Checkmark';
                       Size = UDim2.new(0, 20, 0, 20);
                       Position = UDim2.new(1, -25, 0, 4);
                       TextColor3 = library.options.textcolor;
                       BackgroundColor3 = library.options.bgcolor;
                       BorderColor3 = library.options.bordercolor;
                       TextStrokeTransparency = library.options.textstroke;
                       TextStrokeColor3 = library.options.strokecolor;
                   })
               });
               Parent = self.container;
           });
               
           local function click(t)
               location[flag] = not location[flag];
               callback(location[flag])
               check:FindFirstChild(name).Checkmark.Text = location[flag] and utf8.char(10003) or "";
           end

           check:FindFirstChild(name).Checkmark.MouseButton1Click:connect(click)
           library.callbacks[flag] = click;

           if location[flag] == true then
               callback(location[flag])
           end

           self:Resize();
           return {
               Set = function(self, b)
                   location[flag] = b;
                   callback(location[flag])
                   check:FindFirstChild(name).Checkmark.Text = location[flag] and utf8.char(10003) or "";
               end
           }
       end
       
       function types:Button(name, callback)
           callback = callback or function() end;
           
           local check = library:Create('Frame', {
               BackgroundTransparency = 1;
               Size = UDim2.new(1, 0, 0, 25);
               LayoutOrder = self:GetOrder();
               library:Create('TextButton', {
                   Name = name;
                   Text = name;
                   BackgroundColor3 = library.options.btncolor;
                   BorderColor3 = library.options.bordercolor;
                   TextStrokeTransparency = library.options.textstroke;
                   TextStrokeColor3 = library.options.strokecolor;
                   TextColor3 = library.options.textcolor;
                   Position = UDim2.new(0, 5, 0, 5);
                   Size     = UDim2.new(1, -10, 0, 20);
                   Font = library.options.font;
                   TextSize = library.options.fontsize;
               });
               Parent = self.container;
           });
           
           check:FindFirstChild(name).MouseButton1Click:connect(callback)
           self:Resize();

           return {
               Fire = function()
                   callback();
               end
           }
       end
       
       function types:Box(name, options, callback) --type, default, data, location, flag)
           local type   = options.type or "";
           local default = options.default or "";
           local data = options.data
           local location = options.location or self.flags;
           local flag     = options.flag or "";
           local callback = callback or function() end;
           local min      = options.min or 0;
           local max      = options.max or 9e9;

           if type == 'number' and (not tonumber(default)) then
               location[flag] = default;
           else
               location[flag] = "";
               default = "";
           end

           local check = library:Create('Frame', {
               BackgroundTransparency = 1;
               Size = UDim2.new(1, 0, 0, 25);
               LayoutOrder = self:GetOrder();
               library:Create('TextLabel', {
                   Name = name;
                   Text = "\r" .. name;
                   BackgroundTransparency = 1;
                   TextColor3 = library.options.textcolor;
                   TextStrokeTransparency = library.options.textstroke;
                   TextStrokeColor3 = library.options.strokecolor;
                   Position = UDim2.new(0, 5, 0, 0);
                   Size     = UDim2.new(1, -5, 1, 0);
                   TextXAlignment = Enum.TextXAlignment.Left;
                   Font = library.options.font;
                   TextSize = library.options.fontsize;
                   library:Create('TextBox', {
                       TextStrokeTransparency = library.options.textstroke;
                       TextStrokeColor3 = library.options.strokecolor;
                       Text = tostring(default);
                       Font = library.options.font;
                       TextSize = library.options.fontsize;
                       Name = 'Box';
                       Size = UDim2.new(0, 60, 0, 20);
                       Position = UDim2.new(1, -65, 0, 3);
                       TextColor3 = library.options.textcolor;
                       BackgroundColor3 = library.options.boxcolor;
                       BorderColor3 = library.options.bordercolor;
                       PlaceholderColor3 = library.options.placeholdercolor;
                   })
               });
               Parent = self.container;
           });
       
           local box = check:FindFirstChild(name):FindFirstChild('Box');
           box.FocusLost:connect(function(e)
               local old = location[flag];
               if type == "number" then
                   local num = tonumber(box.Text)
                   if (not num) then
                       box.Text = tonumber(location[flag])
                   else
                       location[flag] = math.clamp(num, min, max)
                       box.Text = tonumber(location[flag])
                   end
               else
                   location[flag] = tostring(box.Text)
               end

               callback(location[flag], old, e)
           end)
           
           if type == 'number' then
               box:GetPropertyChangedSignal('Text'):connect(function()
                   box.Text = string.gsub(box.Text, "[%a+]", "");
               end)
           end
           
           self:Resize();
           return box
       end
       
       function types:Bind(name, options, callback)
           local location     = options.location or self.flags;
           local keyboardOnly = options.kbonly or false
           local flag         = options.flag or "";
           local callback     = callback or function() end;
           local default      = options.default;

           if keyboardOnly and (not tostring(default):find('MouseButton')) then
               location[flag] = default
           end
           
           local banned = {
               Return = true;
               Space = true;
               Tab = true;
               Unknown = true;
           }
           
           local shortNames = {
               RightControl = 'RightCtrl';
               LeftControl = 'LeftCtrl';
               LeftShift = 'LShift';
               RightShift = 'RShift';
               MouseButton1 = "Mouse1";
               MouseButton2 = "Mouse2";
           }
           
           local allowed = {
               MouseButton1 = true;
               MouseButton2 = true;
           }      

           local nm = (default and (shortNames[default.Name] or default.Name) or "None");
           local check = library:Create('Frame', {
               BackgroundTransparency = 1;
               Size = UDim2.new(1, 0, 0, 30);
               LayoutOrder = self:GetOrder();
               library:Create('TextLabel', {
                   Name = name;
                   Text = "\r" .. name;
                   BackgroundTransparency = 1;
                   TextColor3 = library.options.textcolor;
                   Position = UDim2.new(0, 5, 0, 0);
                   Size     = UDim2.new(1, -5, 1, 0);
                   TextXAlignment = Enum.TextXAlignment.Left;
                   Font = library.options.font;
                   TextSize = library.options.fontsize;
                   TextStrokeTransparency = library.options.textstroke;
                   TextStrokeColor3 = library.options.strokecolor;
                   BorderColor3     = library.options.bordercolor;
                   BorderSizePixel  = 1;
                   library:Create('TextButton', {
                       Name = 'Keybind';
                       Text = nm;
                       TextStrokeTransparency = library.options.textstroke;
                       TextStrokeColor3 = library.options.strokecolor;
                       Font = library.options.font;
                       TextSize = library.options.fontsize;
                       Size = UDim2.new(0, 60, 0, 20);
                       Position = UDim2.new(1, -65, 0, 5);
                       TextColor3 = library.options.textcolor;
                       BackgroundColor3 = library.options.bgcolor;
                       BorderColor3     = library.options.bordercolor;
                       BorderSizePixel  = 1;
                   })
               });
               Parent = self.container;
           });
           
           local button = check:FindFirstChild(name).Keybind;
           button.MouseButton1Click:connect(function()
               library.binding = true

               button.Text = "..."
               local a, b = game:GetService('UserInputService').InputBegan:wait();
               local name = tostring(a.KeyCode.Name);
               local typeName = tostring(a.UserInputType.Name);

               if (a.UserInputType ~= Enum.UserInputType.Keyboard and (allowed[a.UserInputType.Name]) and (not keyboardOnly)) or (a.KeyCode and (not banned[a.KeyCode.Name])) then
                   local name = (a.UserInputType ~= Enum.UserInputType.Keyboard and a.UserInputType.Name or a.KeyCode.Name);
                   location[flag] = (a);
                   button.Text = shortNames[name] or name;
                   
               else
                   if (location[flag]) then
                       if (not pcall(function()
                           return location[flag].UserInputType
                       end)) then
                           local name = tostring(location[flag])
                           button.Text = shortNames[name] or name
                       else
                           local name = (location[flag].UserInputType ~= Enum.UserInputType.Keyboard and location[flag].UserInputType.Name or location[flag].KeyCode.Name);
                           button.Text = shortNames[name] or name;
                       end
                   end
               end

               wait(0.1)  
               library.binding = false;
           end)
           
           if location[flag] then
               button.Text = shortNames[tostring(location[flag].Name)] or tostring(location[flag].Name)
           end

           library.binds[flag] = {
               location = location;
               callback = callback;
           };

           self:Resize();
       end
   
       function types:Section(name)
           local order = self:GetOrder();
           local determinedSize = UDim2.new(1, 0, 0, 25)
           local determinedPos = UDim2.new(0, 0, 0, 4);
           local secondarySize = UDim2.new(1, 0, 0, 20);
                       
           if order == 0 then
               determinedSize = UDim2.new(1, 0, 0, 21)
               determinedPos = UDim2.new(0, 0, 0, -1);
               secondarySize = nil
           end
           
           local check = library:Create('Frame', {
               Name = 'Section';
               BackgroundTransparency = 1;
               Size = determinedSize;
               BackgroundColor3 = library.options.sectncolor;
               BorderSizePixel = 0;
               LayoutOrder = order;
               library:Create('TextLabel', {
                   Name = 'section_lbl';
                   Text = name;
                   BackgroundTransparency = 0;
                   BorderSizePixel = 0;
                   BackgroundColor3 = library.options.sectncolor;
                   TextColor3 = library.options.textcolor;
                   Position = determinedPos;
                   Size     = (secondarySize or UDim2.new(1, 0, 1, 0));
                   Font = library.options.font;
                   TextSize = library.options.fontsize;
                   TextStrokeTransparency = library.options.textstroke;
                   TextStrokeColor3 = library.options.strokecolor;
               });
               Parent = self.container;
           });
       
           self:Resize();
       end

       function types:Slider(name, options, callback)
           local default = options.default or options.min;
           local min     = options.min or 0;
           local max      = options.max or 1;
           local location = options.location or self.flags;
           local precise  = options.precise  or false -- e.g 0, 1 vs 0, 0.1, 0.2, ...
           local flag     = options.flag or "";
           local callback = callback or function() end

           location[flag] = default;

           local check = library:Create('Frame', {
               BackgroundTransparency = 1;
               Size = UDim2.new(1, 0, 0, 25);
               LayoutOrder = self:GetOrder();
               library:Create('TextLabel', {
                   Name = name;
                   TextStrokeTransparency = library.options.textstroke;
                   TextStrokeColor3 = library.options.strokecolor;
                   Text = "\r" .. name;
                   BackgroundTransparency = 1;
                   TextColor3 = library.options.textcolor;
                   Position = UDim2.new(0, 5, 0, 2);
                   Size     = UDim2.new(1, -5, 1, 0);
                   TextXAlignment = Enum.TextXAlignment.Left;
                   Font = library.options.font;
                   TextSize = library.options.fontsize;
                   library:Create('Frame', {
                       Name = 'Container';
                       Size = UDim2.new(0, 60, 0, 20);
                       Position = UDim2.new(1, -65, 0, 3);
                       BackgroundTransparency = 1;
                       --BorderColor3 = library.options.bordercolor;
                       BorderSizePixel = 0;
                       library:Create('TextLabel', {
                           Name = 'ValueLabel';
                           Text = default;
                           BackgroundTransparency = 1;
                           TextColor3 = library.options.textcolor;
                           Position = UDim2.new(0, -10, 0, 0);
                           Size     = UDim2.new(0, 1, 1, 0);
                           TextXAlignment = Enum.TextXAlignment.Right;
                           Font = library.options.font;
                           TextSize = library.options.fontsize;
                           TextStrokeTransparency = library.options.textstroke;
                           TextStrokeColor3 = library.options.strokecolor;
                       });
                       library:Create('TextButton', {
                           Name = 'Button';
                           Size = UDim2.new(0, 5, 1, -2);
                           Position = UDim2.new(0, 0, 0, 1);
                           AutoButtonColor = false;
                           Text = "";
                           BackgroundColor3 = Color3.fromRGB(20, 20, 20);
                           BorderSizePixel = 0;
                           ZIndex = 2;
                           TextStrokeTransparency = library.options.textstroke;
                           TextStrokeColor3 = library.options.strokecolor;
                       });
                       library:Create('Frame', {
                           Name = 'Line';
                           BackgroundTransparency = 0;
                           Position = UDim2.new(0, 0, 0.5, 0);
                           Size     = UDim2.new(1, 0, 0, 1);
                           BackgroundColor3 = Color3.fromRGB(255, 255, 255);
                           BorderSizePixel = 0;
                       });
                   })
               });
               Parent = self.container;
           });

           local overlay = check:FindFirstChild(name);

           local renderSteppedConnection;
           local inputBeganConnection;
           local inputEndedConnection;
           local mouseLeaveConnection;
           local mouseDownConnection;
           local mouseUpConnection;

           check:FindFirstChild(name).Container.MouseEnter:connect(function()
               local function update()
                   if renderSteppedConnection then renderSteppedConnection:disconnect() end
                   

                   renderSteppedConnection = game:GetService('RunService').RenderStepped:connect(function()
                       local mouse = game:GetService("UserInputService"):GetMouseLocation()
                       local percent = (mouse.X - overlay.Container.AbsolutePosition.X) / (overlay.Container.AbsoluteSize.X)
                       percent = math.clamp(percent, 0, 1)
                       percent = tonumber(string.format("%.2f", percent))

                       overlay.Container.Button.Position = UDim2.new(math.clamp(percent, 0, 0.99), 0, 0, 1)
                       
                       local num = min + (max - min) * percent
                       local value = (precise and num or math.floor(num))

                       overlay.Container.ValueLabel.Text = value;
                       callback(tonumber(value))
                       location[flag] = tonumber(value)
                   end)
               end

               local function disconnect()
                   if renderSteppedConnection then renderSteppedConnection:disconnect() end
                   if inputBeganConnection then inputBeganConnection:disconnect() end
                   if inputEndedConnection then inputEndedConnection:disconnect() end
                   if mouseLeaveConnection then mouseLeaveConnection:disconnect() end
                   if mouseUpConnection then mouseUpConnection:disconnect() end
               end

               inputBeganConnection = check:FindFirstChild(name).Container.InputBegan:connect(function(input)
                   if input.UserInputType == Enum.UserInputType.MouseButton1 then
                       update()
                   end
               end)

               inputEndedConnection = check:FindFirstChild(name).Container.InputEnded:connect(function(input)
                   if input.UserInputType == Enum.UserInputType.MouseButton1 then
                       disconnect()
                   end
               end)

               mouseDownConnection = check:FindFirstChild(name).Container.Button.MouseButton1Down:connect(update)
               mouseUpConnection   = game:GetService("UserInputService").InputEnded:connect(function(a, b)
                   if a.UserInputType == Enum.UserInputType.MouseButton1 and (mouseDownConnection.Connected) then
                       disconnect()
                   end
               end)
           end)    

           if default ~= min then
               local percent = 1 - ((max - default) / (max - min))
               local number  = default

               number = tonumber(string.format("%.2f", number))
               if (not precise) then
                   number = math.floor(number)
               end

               overlay.Container.Button.Position  = UDim2.new(math.clamp(percent, 0, 0.99), 0,  0, 1)
               overlay.Container.ValueLabel.Text  = number
           end

           self:Resize();
           return {
               Set = function(self, value)
                   local percent = 1 - ((max - value) / (max - min))
                   local number  = value

                   number = tonumber(string.format("%.2f", number))
                   if (not precise) then
                       number = math.floor(number)
                   end

                   overlay.Container.Button.Position  = UDim2.new(math.clamp(percent, 0, 0.99), 0,  0, 1)
                   overlay.Container.ValueLabel.Text  = number
                   location[flag] = number
                   callback(number)
               end
           }
       end

       function types:SearchBox(text, options, callback)
           local list = options.list or {};
           local flag = options.flag or "";
           local location = options.location or self.flags;
           local callback = callback or function() end;

           local busy = false;
           local box = library:Create('Frame', {
               BackgroundTransparency = 1;
               Size = UDim2.new(1, 0, 0, 25);
               LayoutOrder = self:GetOrder();
               library:Create('TextBox', {
                   Text = "";
                   PlaceholderText = text;
                   PlaceholderColor3 = Color3.fromRGB(60, 60, 60);
                   Font = library.options.font;
                   TextSize = library.options.fontsize;
                   Name = 'Box';
                   Size = UDim2.new(1, -10, 0, 20);
                   Position = UDim2.new(0, 5, 0, 4);
                   TextColor3 = library.options.textcolor;
                   BackgroundColor3 = library.options.dropcolor;
                   BorderColor3 = library.options.bordercolor;
                   TextStrokeTransparency = library.options.textstroke;
                   TextStrokeColor3 = library.options.strokecolor;
                   library:Create('ScrollingFrame', {
                       Position = UDim2.new(0, 0, 1, 1);
                       Name = 'Container';
                       BackgroundColor3 = library.options.btncolor;
                       ScrollBarThickness = 0;
                       BorderSizePixel = 0;
                       BorderColor3 = library.options.bordercolor;
                       Size = UDim2.new(1, 0, 0, 0);
                       library:Create('UIListLayout', {
                           Name = 'ListLayout';
                           SortOrder = Enum.SortOrder.LayoutOrder;
                       });
                       ZIndex = 2;
                   });
               });
               Parent = self.container;
           })

           local function rebuild(text)
               box:FindFirstChild('Box').Container.ScrollBarThickness = 0
               for i, child in next, box:FindFirstChild('Box').Container:GetChildren() do
                   if (not child:IsA('UIListLayout')) then
                       child:Destroy();
                   end
               end

               if #text > 0 then
                   for i, v in next, list do
                       if string.sub(string.lower(v), 1, string.len(text)) == string.lower(text) then
                           local button = library:Create('TextButton', {
                               Text = v;
                               Font = library.options.font;
                               TextSize = library.options.fontsize;
                               TextColor3 = library.options.textcolor;
                               BorderColor3 = library.options.bordercolor;
                               TextStrokeTransparency = library.options.textstroke;
                               TextStrokeColor3 = library.options.strokecolor;
                               Parent = box:FindFirstChild('Box').Container;
                               Size = UDim2.new(1, 0, 0, 20);
                               LayoutOrder = i;
                               BackgroundColor3 = library.options.btncolor;
                               ZIndex = 2;
                           })

                           button.MouseButton1Click:connect(function()
                               busy = true;
                               box:FindFirstChild('Box').Text = button.Text;
                               wait();
                               busy = false;

                               location[flag] = button.Text;
                               callback(location[flag])

                               box:FindFirstChild('Box').Container.ScrollBarThickness = 0
                               for i, child in next, box:FindFirstChild('Box').Container:GetChildren() do
                                   if (not child:IsA('UIListLayout')) then
                                       child:Destroy();
                                   end
                               end
                               box:FindFirstChild('Box').Container:TweenSize(UDim2.new(1, 0, 0, 0), 'Out', 'Quad', 0.25, true)
                           end)
                       end
                   end
               end

               local c = box:FindFirstChild('Box').Container:GetChildren()
               local ry = (20 * (#c)) - 20

               local y = math.clamp((20 * (#c)) - 20, 0, 100)
               if ry > 100 then
                   box:FindFirstChild('Box').Container.ScrollBarThickness = 5;
               end

               box:FindFirstChild('Box').Container:TweenSize(UDim2.new(1, 0, 0, y), 'Out', 'Quad', 0.25, true)
               box:FindFirstChild('Box').Container.CanvasSize = UDim2.new(1, 0, 0, (20 * (#c)) - 20)
           end

           box:FindFirstChild('Box'):GetPropertyChangedSignal('Text'):connect(function()
               if (not busy) then
                   rebuild(box:FindFirstChild('Box').Text)
               end
           end);

           local function reload(new_list)
               list = new_list;
               rebuild("")
           end
           self:Resize();
           return reload, box:FindFirstChild('Box');
       end
       
       function types:Dropdown(name, options, callback)
           local location = options.location or self.flags;
           local flag = options.flag or "";
           local callback = callback or function() end;
           local list = options.list or {};

           location[flag] = list[1]
           local check = library:Create('Frame', {
               BackgroundTransparency = 1;
               Size = UDim2.new(1, 0, 0, 25);
               BackgroundColor3 = Color3.fromRGB(25, 25, 25);
               BorderSizePixel = 0;
               LayoutOrder = self:GetOrder();
               library:Create('Frame', {
                   Name = 'dropdown_lbl';
                   BackgroundTransparency = 0;
                   BackgroundColor3 = library.options.dropcolor;
                   Position = UDim2.new(0, 5, 0, 4);
                   BorderColor3 = library.options.bordercolor;
                   Size     = UDim2.new(1, -10, 0, 20);
                   library:Create('TextLabel', {
                       Name = 'Selection';
                       Size = UDim2.new(1, 0, 1, 0);
                       Text = list[1];
                       TextColor3 = library.options.textcolor;
                       BackgroundTransparency = 1;
                       Font = library.options.font;
                       TextSize = library.options.fontsize;
                       TextStrokeTransparency = library.options.textstroke;
                       TextStrokeColor3 = library.options.strokecolor;
                   });
                   library:Create("TextButton", {
                       Name = 'drop';
                       BackgroundTransparency = 1;
                       Size = UDim2.new(0, 20, 1, 0);
                       Position = UDim2.new(1, -25, 0, 0);
                       Text = 'v';
                       TextColor3 = library.options.textcolor;
                       Font = library.options.font;
                       TextSize = library.options.fontsize;
                       TextStrokeTransparency = library.options.textstroke;
                       TextStrokeColor3 = library.options.strokecolor;
                   })
               });
               Parent = self.container;
           });
           
           local button = check:FindFirstChild('dropdown_lbl').drop;
           local input;
           
           button.MouseButton1Click:connect(function()
               if (input and input.Connected) then
                   return
               end
               
               check:FindFirstChild('dropdown_lbl'):WaitForChild('Selection').TextColor3 = Color3.fromRGB(60, 60, 60);
               check:FindFirstChild('dropdown_lbl'):WaitForChild('Selection').Text = name;
               local c = 0;
               for i, v in next, list do
                   c = c + 20;
               end

               local size = UDim2.new(1, 0, 0, c)

               local clampedSize;
               local scrollSize = 0;
               if size.Y.Offset > 100 then
                   clampedSize = UDim2.new(1, 0, 0, 100)
                   scrollSize = 5;
               end
               
               local goSize = (clampedSize ~= nil and clampedSize) or size;    
               local container = library:Create('ScrollingFrame', {
                   TopImage = 'rbxasset://textures/ui/Scroll/scroll-middle.png';
                   BottomImage = 'rbxasset://textures/ui/Scroll/scroll-middle.png';
                   Name = 'DropContainer';
                   Parent = check:FindFirstChild('dropdown_lbl');
                   Size = UDim2.new(1, 0, 0, 0);
                   BackgroundColor3 = library.options.bgcolor;
                   BorderColor3 = library.options.bordercolor;
                   Position = UDim2.new(0, 0, 1, 0);
                   ScrollBarThickness = scrollSize;
                   CanvasSize = UDim2.new(0, 0, 0, size.Y.Offset);
                   ZIndex = 5;
                   ClipsDescendants = true;
                   library:Create('UIListLayout', {
                       Name = 'List';
                       SortOrder = Enum.SortOrder.LayoutOrder
                   })
               })

               for i, v in next, list do
                   local btn = library:Create('TextButton', {
                       Size = UDim2.new(1, 0, 0, 20);
                       BackgroundColor3 = library.options.btncolor;
                       BorderColor3 = library.options.bordercolor;
                       Text = v;
                       Font = library.options.font;
                       TextSize = library.options.fontsize;
                       LayoutOrder = i;
                       Parent = container;
                       ZIndex = 5;
                       TextColor3 = library.options.textcolor;
                       TextStrokeTransparency = library.options.textstroke;
                       TextStrokeColor3 = library.options.strokecolor;
                   })
                   
                   btn.MouseButton1Click:connect(function()
                       check:FindFirstChild('dropdown_lbl'):WaitForChild('Selection').TextColor3 = library.options.textcolor
                       check:FindFirstChild('dropdown_lbl'):WaitForChild('Selection').Text = btn.Text;

                       location[flag] = tostring(btn.Text);
                       callback(location[flag])

                       game:GetService('Debris'):AddItem(container, 0)
                       input:disconnect();
                   end)
               end
               
               container:TweenSize(goSize, 'Out', 'Quad', 0.15, true)
               
               local function isInGui(frame)
                   local mloc = game:GetService('UserInputService'):GetMouseLocation();
                   local mouse = Vector2.new(mloc.X, mloc.Y - 36);
                   
                   local x1, x2 = frame.AbsolutePosition.X, frame.AbsolutePosition.X + frame.AbsoluteSize.X;
                   local y1, y2 = frame.AbsolutePosition.Y, frame.AbsolutePosition.Y + frame.AbsoluteSize.Y;
               
                   return (mouse.X >= x1 and mouse.X <= x2) and (mouse.Y >= y1 and mouse.Y <= y2)
               end
               
               input = game:GetService('UserInputService').InputBegan:connect(function(a)
                   if a.UserInputType == Enum.UserInputType.MouseButton1 and (not isInGui(container)) then
                       check:FindFirstChild('dropdown_lbl'):WaitForChild('Selection').TextColor3 = library.options.textcolor
                       check:FindFirstChild('dropdown_lbl'):WaitForChild('Selection').Text       = location[flag];

                       container:TweenSize(UDim2.new(1, 0, 0, 0), 'In', 'Quad', 0.15, true)
                       wait(0.15)

                       game:GetService('Debris'):AddItem(container, 0)
                       input:disconnect();
                   end
               end)
           end)
           
           self:Resize();
           local function reload(self, array)
               options = array;
               location[flag] = array[1];
               pcall(function()
                   input:disconnect()
               end)
               check:WaitForChild('dropdown_lbl').Selection.Text = location[flag]
               check:FindFirstChild('dropdown_lbl'):WaitForChild('Selection').TextColor3 = library.options.textcolor
               game:GetService('Debris'):AddItem(container, 0)
           end

           return {
               Refresh = reload;
           }
       end
   end
   
   function library:Create(class, data)
       local obj = Instance.new(class);
       for i, v in next, data do
           if i ~= 'Parent' then
               
               if typeof(v) == "Instance" then
                   v.Parent = obj;
               else
                   obj[i] = v
               end
           end
       end
       
       obj.Parent = data.Parent;
       return obj
   end
   
   function library:CreateWindow(name, options)
       if (not library.container) then
           library.container = self:Create("ScreenGui", {
               self:Create('Frame', {
                   Name = 'Container';
                   Size = UDim2.new(1, -30, 1, 0);
                   Position = UDim2.new(0, 20, 0, 20);
                   BackgroundTransparency = 1;
                   Active = false;
               });
               Parent = game:GetService("CoreGui");
           }):FindFirstChild('Container');
       end
       
       if (not library.options) then
           library.options = setmetatable(options or {}, {__index = defaults})
       end
       
       local window = types.window(name, library.options);
       dragger.new(window.object);
       return window
   end
   
   default = {
       topcolor       = Color3.fromRGB(30, 30, 30);
       titlecolor     = Color3.fromRGB(255, 255, 255);
       
       underlinecolor = "rainbow";
       bgcolor        = Color3.fromRGB(35, 35, 35);
       boxcolor       = Color3.fromRGB(35, 35, 35);
       btncolor       = Color3.fromRGB(25, 25, 25);
       dropcolor      = Color3.fromRGB(25, 25, 25);
       sectncolor     = Color3.fromRGB(25, 25, 25);
       bordercolor    = Color3.fromRGB(60, 60, 60);

       font           = Enum.Font.SourceSans;
       titlefont      = Enum.Font.Code;

       fontsize       = 17;
       titlesize      = 18;

       textstroke     = 1;
       titlestroke    = 1;

       strokecolor    = Color3.fromRGB(0, 0, 0);

       textcolor      = Color3.fromRGB(255, 255, 255);
       titletextcolor = Color3.fromRGB(255, 255, 255);

       placeholdercolor = Color3.fromRGB(255, 255, 255);
       titlestrokecolor = Color3.fromRGB(0, 0, 0);
   }

   library.options = setmetatable({}, {__index = default})

   spawn(function()
       while true do
           for i=0, 1, 1 / 300 do              
               for _, obj in next, library.rainbowtable do
                   obj.BackgroundColor3 = Color3.fromHSV(i, 1, 1);
               end
               wait()
           end;
       end
   end)

   local function isreallypressed(bind, inp)
       local key = bind
       if typeof(key) == "Instance" then
           if key.UserInputType == Enum.UserInputType.Keyboard and inp.KeyCode == key.KeyCode then
               return true;
           elseif tostring(key.UserInputType):find('MouseButton') and inp.UserInputType == key.UserInputType then
               return true
           end
       end
       if tostring(key):find'MouseButton1' then
           return key == inp.UserInputType
       else
           return key == inp.KeyCode
       end
   end

   game:GetService("UserInputService").InputBegan:connect(function(input)
       if (not library.binding) then
           for idx, binds in next, library.binds do
               local real_binding = binds.location[idx];
               if real_binding and isreallypressed(real_binding, input) then
                   binds.callback()
               end
           end
       end
   end)
end

local w = library:CreateWindow("Car Crushers 2")
w:Section("Features")

local t = w:Toggle("Autofarm", {flag = "ccFarm"})
local t = w:Toggle("Auto Escape", {flag = "heliFarm"})

spawn(function()
if game.ReplicatedStorage:findFirstChild("ClientError") then
game.ReplicatedStorage.ClientError:remove() -- remove error logging to game devs
end

local info = game.ReplicatedStorage.VehicleInformation
if not game:GetService("MarketplaceService"):UserOwnsGamePassAsync(game.Players.LocalPlayer.UserId, 2465866) then
for i, v in pairs(info:GetChildren()) do
if v:findFirstChild("VipOnly") then
if v:findFirstChild("Price") then
if v.VipOnly.Value then
v.Price.Value = 0
end
end
end
end
end

local info = game.ReplicatedStorage.VehicleInformation
if not game.Players.LocalPlayer:IsInGroup(2726951) then
for i, v in pairs(info:GetChildren()) do
if v.GroupOnly.Value then
if v:findFirstChild("VipOnly") then
v.Price.Value = 0
end
end
end
end

while true do
wait()
if w.flags.ccFarm == true then
game.Players.LocalPlayer.Character:MoveTo(Vector3.new(144.74382, 33.0044632, -539.426025))
local info = game.ReplicatedStorage.VehicleInformation
local plr = game.Players.LocalPlayer
local money = plr.Money.Value

local bestName = ""
local bestPrice = 0
for i, car in pairs(info:GetChildren()) do
local name = car.Name
local price = car.Price.Value
if price > bestPrice and price <= money and car.TokenRequirement.Value <= plr.leaderstats.Tokens.Value then
bestName = name
bestPrice = price
end
end

game.ReplicatedStorage.rE.SaveCustoms:FireServer({true, "Institutional white", "Platinum"}, bestName)
wait(0.1)
game.ReplicatedStorage.rF.SpawnVehicle:InvokeServer(bestName)

for i=1,10 do
if workspace.CarCollection:findFirstChild(game.Players.LocalPlayer.Name) then
if workspace.CarCollection[game.Players.LocalPlayer.Name].Car.PrimaryPart ~= nil then
workspace.CarCollection[game.Players.LocalPlayer.Name].Car:SetPrimaryPartCFrame(CFrame.new(141.74382, -325.0044632, -539.426025))
wait()

function checkpart(obj)
if obj.ClassName == "Part" or
obj.ClassName == "MeshPart" or
obj.ClassName == "Wedge" then
return true
else
return false
end
end

if workspace.CarCollection:findFirstChild(game.Players.LocalPlayer.Name) then
local carparts = workspace.CarCollection[game.Players.LocalPlayer.Name].Car:getDescendants()
for i=1,#carparts do
if checkpart(carparts[i]) then
spawn(function()
if carparts[i] ~= nil then
carparts[i].Velocity = Vector3.new(0,-500,0)
end
wait(.1)
if carparts[i] ~= nil then
carparts[i].Velocity = Vector3.new(0,-500,0)
end
end)
end
end
end
end
end
end
end
end
end)

workspace.ChildAdded:Connect(function(newpart)
wait(1)
if newpart.Name == "Helicopter" then
wait(0.5)
if w.flags.heliFarm == true then
game.Players.LocalPlayer.Character.Humanoid:ChangeState("GettingUp")
wait(0.1)
game.Players.LocalPlayer.Character.Humanoid:ChangeState("Jumping")
wait(0.5)
game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = workspace.Helicopter.Start.CFrame
end
end
end)

%d bloggers like this: