From 3cc782a49c9f203d12d1e536c034ee9d7c9cb542 Mon Sep 17 00:00:00 2001 From: Lewin Kelly Date: Sat, 8 Apr 2023 22:01:38 +0100 Subject: [PATCH] Further clean up corescripts --- lua/107893730.lua | 2 +- lua/152908679.lua | 30 +- lua/153556783.lua | 6 +- lua/157877000.lua | 18 +- lua/45284430.lua | 132 ++-- lua/46295863.lua | 39 +- lua/48488235.lua | 96 ++- lua/48488398.lua | 28 +- lua/53878057.lua | 4 +- lua/60595411.lua | 14 +- lua/73157242.lua | 10 +- lua/89449008.lua | 6 +- lua/89449093.lua | 25 +- lua/97188756.lua | 52 +- mercury.yml | 17 + processed/107893730.lua | 282 ++++---- processed/152908679.lua | 75 +- processed/157877000.lua | 156 ++--- processed/45284430.lua | 1477 +++++++++++++++++++-------------------- processed/46295863.lua | 116 ++- processed/48488235.lua | 557 ++++++++------- processed/48488398.lua | 82 +-- processed/53878057.lua | 147 ++-- processed/60595411.lua | 25 +- processed/73157242.lua | 3 +- processed/89449008.lua | 58 +- processed/89449093.lua | 162 +++-- processed/97188756.lua | 361 +++++----- 28 files changed, 1964 insertions(+), 2016 deletions(-) diff --git a/lua/107893730.lua b/lua/107893730.lua index 51e23ed..108f2d4 100644 --- a/lua/107893730.lua +++ b/lua/107893730.lua @@ -29,7 +29,7 @@ local enableBrowserWindowClosedEvent = true -- gui variables local openBuyCurrencyWindowConnection = nil local currentlyPrompting = false -local purchaseDialog, errorDialog = nil +local purchaseDialog = nil local tweenTime = 0.3 local showPosition = UDim2.new(0.5, -330, 0.5, -200) local hidePosition = UDim2.new(0.5, -330, 1, 25) diff --git a/lua/152908679.lua b/lua/152908679.lua index c4dc31e..f3f5b33 100644 --- a/lua/152908679.lua +++ b/lua/152908679.lua @@ -54,20 +54,20 @@ function createContextActionGui() end -- functions -function setButtonSizeAndPosition(object) - local buttonSize = 55 - local xOffset = 10 - local yOffset = 95 +-- function setButtonSizeAndPosition(object) +-- local buttonSize = 55 +-- local xOffset = 10 +-- local yOffset = 95 - -- todo: better way to determine mobile sized screens - local onSmallScreen = (game.CoreGui.RobloxGui.AbsoluteSize.X < 600) - if not onSmallScreen then - buttonSize = 85 - xOffset = 40 - end +-- -- todo: better way to determine mobile sized screens +-- local onSmallScreen = (game.CoreGui.RobloxGui.AbsoluteSize.X < 600) +-- if not onSmallScreen then +-- buttonSize = 85 +-- xOffset = 40 +-- end - object.Size = UDim2.new(0, buttonSize, 0, buttonSize) -end +-- object.Size = UDim2.new(0, buttonSize, 0, buttonSize) +-- end function contextButtonDown(button, inputObject, actionName) if inputObject.UserInputType == Enum.UserInputType.Touch then @@ -248,8 +248,8 @@ contextActionService.BoundActionChanged:connect(function(actionName, changeName, button.ActionIcon.Image = changeTable[changeName] elseif changeName == "title" then button.ActionTitle.Text = changeTable[changeName] - elseif changeName == "description" then - -- todo: add description to menu + -- elseif changeName == "description" then + -- -- todo: add description to menu elseif changeName == "position" then button.Position = changeTable[changeName] end @@ -261,7 +261,7 @@ contextActionService.BoundActionAdded:connect(function(actionName, createTouchBu addAction(actionName, createTouchButton, functionInfoTable) end) -contextActionService.BoundActionRemoved:connect(function(actionName, functionInfoTable) +contextActionService.BoundActionRemoved:connect(function(actionName, _) removeAction(actionName) end) diff --git a/lua/153556783.lua b/lua/153556783.lua index 6d1e977..40e1bab 100644 --- a/lua/153556783.lua +++ b/lua/153556783.lua @@ -398,7 +398,7 @@ function setupJumpButton(parentFrame) if inputObject == cameraTouch then return end - for i, touch in pairs(oldJumpTouches) do + for _, touch in pairs(oldJumpTouches) do if touch == inputObject then return end @@ -444,7 +444,7 @@ function isTouchUsedByJumpButton(touch) if touch == currentJumpTouch then return true end - for i, touchToCompare in pairs(oldJumpTouches) do + for _, touchToCompare in pairs(oldJumpTouches) do if touch == touchToCompare then return true end @@ -454,7 +454,7 @@ function isTouchUsedByJumpButton(touch) end function isTouchUsedByThumbstick(touch) - for i, touchToCompare in pairs(thumbstickTouches) do + for _, touchToCompare in pairs(thumbstickTouches) do if touch == touchToCompare then return true end diff --git a/lua/157877000.lua b/lua/157877000.lua index d360d6e..d37aa8f 100644 --- a/lua/157877000.lua +++ b/lua/157877000.lua @@ -472,7 +472,7 @@ function initializeDeveloperConsole() pPos = Dev_Container.AbsolutePosition end) - Dev_TitleBar.TextButton.MouseButton1Up:connect(function(x, y) + Dev_TitleBar.TextButton.MouseButton1Up:connect(function(_, _) clean() end) @@ -819,7 +819,6 @@ function initializeDeveloperConsole() local minute = math.floor(dayTime / 60) dayTime = dayTime - (minute * 60) - local second = dayTime local h = numberWithZero(hour) local m = numberWithZero(minute) @@ -830,35 +829,35 @@ function initializeDeveloperConsole() --Filter - Dev_OptionsBar.ErrorToggleButton.MouseButton1Down:connect(function(x, y) + Dev_OptionsBar.ErrorToggleButton.MouseButton1Down:connect(function(_, _) errorToggleOn = not errorToggleOn Dev_OptionsBar.ErrorToggleButton.CheckFrame.Visible = errorToggleOn refreshTextHolder() repositionList() end) - Dev_OptionsBar.WarningToggleButton.MouseButton1Down:connect(function(x, y) + Dev_OptionsBar.WarningToggleButton.MouseButton1Down:connect(function(_, _) warningToggleOn = not warningToggleOn Dev_OptionsBar.WarningToggleButton.CheckFrame.Visible = warningToggleOn refreshTextHolder() repositionList() end) - Dev_OptionsBar.InfoToggleButton.MouseButton1Down:connect(function(x, y) + Dev_OptionsBar.InfoToggleButton.MouseButton1Down:connect(function(_, _) infoToggleOn = not infoToggleOn Dev_OptionsBar.InfoToggleButton.CheckFrame.Visible = infoToggleOn refreshTextHolder() repositionList() end) - Dev_OptionsBar.OutputToggleButton.MouseButton1Down:connect(function(x, y) + Dev_OptionsBar.OutputToggleButton.MouseButton1Down:connect(function(_, _) outputToggleOn = not outputToggleOn Dev_OptionsBar.OutputToggleButton.CheckFrame.Visible = outputToggleOn refreshTextHolder() repositionList() end) - Dev_OptionsBar.WordWrapToggleButton.MouseButton1Down:connect(function(x, y) + Dev_OptionsBar.WordWrapToggleButton.MouseButton1Down:connect(function(_, _) wordWrapToggleOn = not wordWrapToggleOn Dev_OptionsBar.WordWrapToggleButton.CheckFrame.Visible = wordWrapToggleOn refreshTextHolder() @@ -891,7 +890,7 @@ function initializeDeveloperConsole() end --Handle Dev-Console Local/Server Buttons - Dev_Container.Body.LocalConsole.MouseButton1Click:connect(function(x, y) + Dev_Container.Body.LocalConsole.MouseButton1Click:connect(function(_, _) if currentConsole == SERVER_CONSOLE then currentConsole = LOCAL_CONSOLE local localConsole = Dev_Container.Body.LocalConsole @@ -904,7 +903,6 @@ function initializeDeveloperConsole() if game:FindFirstChild "Players" and game.Players["LocalPlayer"] then local mouse = game.Players.LocalPlayer:GetMouse() - local mousePos = Vector2.new(mouse.X, mouse.Y) refreshConsolePosition(mouse.X, mouse.Y) refreshConsoleSize(mouse.X, mouse.Y) handleScroll(mouse.X, mouse.Y) @@ -921,7 +919,7 @@ function initializeDeveloperConsole() local serverHistoryRequested = false - Dev_Container.Body.ServerConsole.MouseButton1Click:connect(function(x, y) + Dev_Container.Body.ServerConsole.MouseButton1Click:connect(function(_, _) if not serverHistoryRequested then serverHistoryRequested = true game:GetService("LogService"):RequestServerOutput() diff --git a/lua/45284430.lua b/lua/45284430.lua index 1ae8983..04cbf14 100644 --- a/lua/45284430.lua +++ b/lua/45284430.lua @@ -44,7 +44,7 @@ end local function CreateButtons(frame, buttons, yPos, ySize) local buttonNum = 1 local buttonObjs = {} - for i, obj in ipairs(buttons) do + for _, obj in ipairs(buttons) do local button = Instance.new "TextButton" button.Name = "Button" .. buttonNum button.Font = Enum.Font.Arial @@ -217,7 +217,6 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox) local width = UDim.new(0, 100) local height = UDim.new(0, 32) - local xPos = 0.055 local frame = Instance.new "Frame" frame.Name = "DropDownMenu" frame.BackgroundTransparency = 1 @@ -315,7 +314,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox) local children = droppedDownMenu:GetChildren() if children then - for i, child in ipairs(children) do + for _, child in ipairs(children) do if child.Name == "ChoiceButton" then child.ZIndex = baseZIndex + 2 elseif child.Name == "ClickCaptureButton" then @@ -340,7 +339,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox) end local childNum = 1 - for i, obj in ipairs(children) do + for _, obj in ipairs(children) do if obj.Name == "ChoiceButton" then if childNum < scrollBarPosition or childNum >= scrollBarPosition + dropDownItemCount then obj.Visible = false @@ -378,7 +377,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox) local children = droppedDownMenu:GetChildren() local childNum = 1 if children then - for i, obj in ipairs(children) do + for _, obj in ipairs(children) do if obj.Name == "ChoiceButton" then if obj.Text == text then obj.Font = Enum.Font.ArialBold @@ -490,7 +489,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox) scrollbar.Parent = droppedDownMenu end - for i, item in ipairs(items) do + for _, item in ipairs(items) do -- needed to maintain local scope for items in event listeners below local button = choiceButton:clone() if forRoblox then @@ -524,7 +523,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox) --This does the initial layout of the buttons updateScroll() - frame.AncestryChanged:connect(function(child, parent) + frame.AncestryChanged:connect(function(_, parent) if parent == nil then areaSoak.Parent = nil else @@ -624,7 +623,7 @@ end local function layoutGuiObjectsHelper(frame, guiObjects, settingsTable) local totalPixels = frame.AbsoluteSize.Y local pixelsRemaining = frame.AbsoluteSize.Y - for i, child in ipairs(guiObjects) do + for _, child in ipairs(guiObjects) do if child:IsA "TextLabel" or child:IsA "TextButton" then local isLabel = child:IsA "TextLabel" if isLabel then @@ -712,7 +711,7 @@ t.LayoutGuiObjects = function(frame, guiObjects, settingsTable) wrapperFrame.Size = UDim2.new(1, 0, 1, 0) wrapperFrame.Parent = frame - for i, child in ipairs(guiObjects) do + for _, child in ipairs(guiObjects) do child.Parent = wrapperFrame end @@ -819,7 +818,7 @@ t.CreateSlider = function(steps, width, position) if areaSoakMouseMoveCon then areaSoakMouseMoveCon:disconnect() end - areaSoakMouseMoveCon = areaSoak.MouseMoved:connect(function(x, y) + areaSoakMouseMoveCon = areaSoak.MouseMoved:connect(function(x, _) setSliderPos(x, slider, sliderPosition, bar, steps) end) end) @@ -828,14 +827,14 @@ t.CreateSlider = function(steps, width, position) cancelSlide(areaSoak) end) - sliderPosition.Changed:connect(function(prop) + sliderPosition.Changed:connect(function(_) sliderPosition.Value = math.min(steps, math.max(1, sliderPosition.Value)) local relativePosX = (sliderPosition.Value - 1) / (steps - 1) slider.Position = UDim2.new(relativePosX, -slider.AbsoluteSize.X / 2, slider.Position.Y.Scale, slider.Position.Y.Offset) end) - bar.MouseButton1Down:connect(function(x, y) + bar.MouseButton1Down:connect(function(x, _) setSliderPos(x, slider, sliderPosition, bar, steps) end) @@ -994,7 +993,7 @@ t.CreateTrueScrollingFrame = function() mouseDrag.Position = UDim2.new(-0.25, 0, -0.25, 0) mouseDrag.ZIndex = 10 - local function positionScrollBar(x, y, offset) + local function positionScrollBar(_, y, offset) local oldPos = scrollbar.Position if y < scrollTrack.AbsolutePosition.y then @@ -1292,30 +1291,25 @@ t.CreateTrueScrollingFrame = function() scrollUpButton.MouseButton1Down:connect(function() scrollUp() end) - scrollUpButton.MouseButton1Up:connect(function() - scrollStamp = tick() - end) - - scrollDownButton.MouseButton1Up:connect(function() - scrollStamp = tick() - end) scrollDownButton.MouseButton1Down:connect(function() scrollDown() end) - scrollbar.MouseButton1Up:connect(function() + local function scrollTick() scrollStamp = tick() - end) - - local function heightCheck(instance) - if highY and (instance.AbsolutePosition.Y + instance.AbsoluteSize.Y) > highY then - highY = instance.AbsolutePosition.Y + instance.AbsoluteSize.Y - elseif not highY then - highY = instance.AbsolutePosition.Y + instance.AbsoluteSize.Y - end - setSliderSizeAndPosition() end + scrollUpButton.MouseButton1Up:connect(scrollTick) + scrollDownButton.MouseButton1Up:connect(scrollTick) + scrollbar.MouseButton1Up:connect(scrollTick) + + -- local function heightCheck(instance) + -- if (highY and (instance.AbsolutePosition.Y + instance.AbsoluteSize.Y) > highY) or not highY then + -- highY = instance.AbsolutePosition.Y + instance.AbsoluteSize.Y + -- end + -- setSliderSizeAndPosition() + -- end + local function highLowRecheck() local oldLowY = lowY local oldHighY = highY @@ -1439,7 +1433,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle) howManyDisplayed = 0 local guiObjects = {} if orderList then - for i, child in ipairs(orderList) do + for _, child in ipairs(orderList) do if child.Parent == frame then table.insert(guiObjects, child) end @@ -1447,7 +1441,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle) else local children = frame:GetChildren() if children then - for i, child in ipairs(children) do + for _, child in ipairs(children) do if child:IsA "GuiObject" then table.insert(guiObjects, child) end @@ -1696,7 +1690,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle) local guiObjects = 0 local children = frame:GetChildren() if children then - for i, child in ipairs(children) do + for _, child in ipairs(children) do if child:IsA "GuiObject" then guiObjects = guiObjects + 1 end @@ -1834,13 +1828,13 @@ t.CreateScrollingFrame = function(orderList, scrollStyle) end local y = 0 - scrollDrag.MouseButton1Down:connect(function(x, y) + scrollDrag.MouseButton1Down:connect(function(_, y) if scrollDrag.Active then scrollStamp = tick() local mouseOffset = y - scrollDrag.AbsolutePosition.y local dragCon local upCon - dragCon = mouseDrag.MouseMoved:connect(function(x, y) + dragCon = mouseDrag.MouseMoved:connect(function(_, y) local barAbsPos = scrollbar.AbsolutePosition.y local barAbsSize = scrollbar.AbsoluteSize.y @@ -1853,7 +1847,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle) local guiObjects = 0 local children = frame:GetChildren() if children then - for i, child in ipairs(children) do + for _, child in ipairs(children) do if child:IsA "GuiObject" then guiObjects = guiObjects + 1 end @@ -1906,7 +1900,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle) scrollbar.MouseButton1Up:connect(function() scrollStamp = tick() end) - scrollbar.MouseButton1Down:connect(function(x, y) + scrollbar.MouseButton1Down:connect(function(_, y) if y > (scrollDrag.AbsoluteSize.y + scrollDrag.AbsolutePosition.y) then scrollDown(y) elseif y < scrollDrag.AbsolutePosition.y then @@ -2098,7 +2092,7 @@ local function TransitionTutorialPages(fromPage, toPage, transitionFrame, curren transitionFrame.Visible = true currentPageValue.Value = nil - local newsize, newPosition + local newSize, newPosition if toPage then --Make it visible so it resizes toPage.Visible = true @@ -2165,7 +2159,7 @@ t.CreateTutorial = function(name, tutorialKey, createButtons) local visiblePage = nil local children = pages:GetChildren() if children then - for i, child in ipairs(children) do + for _, child in ipairs(children) do if child.Visible then if visiblePage then child.Visible = false @@ -2758,7 +2752,7 @@ t.CreateSetPanel = function( return setButton end - local function buildSetButton(name, setId, setImageId, i, count) + local function buildSetButton(name, setId, _, _, _) local button = createSetButton(name) button.Text = name button.Name = "SetButton" @@ -3095,7 +3089,7 @@ t.CreateSetPanel = function( end end - local function selectSet(button, setName, setId, setIndex) + local function selectSet(button, setName, setId, _) if button and Data.Category[Data.CurrentCategory] ~= nil then if button ~= Data.Category[Data.CurrentCategory].Button then Data.Category[Data.CurrentCategory].Button = button @@ -3112,10 +3106,10 @@ t.CreateSetPanel = function( end end - local function selectCategoryPage(buttons, page) + local function selectCategoryPage(buttons, _) if buttons ~= Data.CurrentCategory then if Data.CurrentCategory then - for key, button in pairs(Data.CurrentCategory) do + for _, button in pairs(Data.CurrentCategory) do button.Visible = false end end @@ -3232,7 +3226,7 @@ t.CreateSetPanel = function( controlFrame.Position = UDim2.new(0.76, 5, 0, 0) local debounce = false - controlFrame.ScrollBottom.Changed:connect(function(prop) + controlFrame.ScrollBottom.Changed:connect(function(_) if controlFrame.ScrollBottom.Value == true then if debounce then return @@ -3402,53 +3396,37 @@ t.CreateTerrainMaterialSelector = function(size, position) function getNameFromEnum(choice) if choice == Enum.CellMaterial.Grass or choice == 1 then return "Grass" - end - if choice == Enum.CellMaterial.Sand or choice == 2 then + elseif choice == Enum.CellMaterial.Sand or choice == 2 then return "Sand" - end - if choice == Enum.CellMaterial.Empty or choice == 0 then + elseif choice == Enum.CellMaterial.Empty or choice == 0 then return "Erase" - end - if choice == Enum.CellMaterial.Brick or choice == 3 then + elseif choice == Enum.CellMaterial.Brick or choice == 3 then return "Brick" - end - if choice == Enum.CellMaterial.Granite or choice == 4 then + elseif choice == Enum.CellMaterial.Granite or choice == 4 then return "Granite" - end - if choice == Enum.CellMaterial.Asphalt or choice == 5 then + elseif choice == Enum.CellMaterial.Asphalt or choice == 5 then return "Asphalt" - end - if choice == Enum.CellMaterial.Iron or choice == 6 then + elseif choice == Enum.CellMaterial.Iron or choice == 6 then return "Iron" - end - if choice == Enum.CellMaterial.Aluminum or choice == 7 then + elseif choice == Enum.CellMaterial.Aluminum or choice == 7 then return "Aluminum" - end - if choice == Enum.CellMaterial.Gold or choice == 8 then + elseif choice == Enum.CellMaterial.Gold or choice == 8 then return "Gold" - end - if choice == Enum.CellMaterial.WoodPlank or choice == 9 then + elseif choice == Enum.CellMaterial.WoodPlank or choice == 9 then return "Plank" - end - if choice == Enum.CellMaterial.WoodLog or choice == 10 then + elseif choice == Enum.CellMaterial.WoodLog or choice == 10 then return "Log" - end - if choice == Enum.CellMaterial.Gravel or choice == 11 then + elseif choice == Enum.CellMaterial.Gravel or choice == 11 then return "Gravel" - end - if choice == Enum.CellMaterial.CinderBlock or choice == 12 then + elseif choice == Enum.CellMaterial.CinderBlock or choice == 12 then return "Cinder Block" - end - if choice == Enum.CellMaterial.MossyStone or choice == 13 then + elseif choice == Enum.CellMaterial.MossyStone or choice == 13 then return "Stone Wall" - end - if choice == Enum.CellMaterial.Cement or choice == 14 then + elseif choice == Enum.CellMaterial.Cement or choice == 14 then return "Concrete" - end - if choice == Enum.CellMaterial.RedPlastic or choice == 15 then + elseif choice == Enum.CellMaterial.RedPlastic or choice == 15 then return "Plastic (red)" - end - if choice == Enum.CellMaterial.BluePlastic or choice == 16 then + elseif choice == Enum.CellMaterial.BluePlastic or choice == 16 then return "Plastic (blue)" end @@ -3465,7 +3443,7 @@ t.CreateTerrainMaterialSelector = function(size, position) end -- we so need a better way to do this - for i, v in pairs(materialNames) do + for _, v in pairs(materialNames) do materialToImageMap[v] = {} if v == "Grass" then materialToImageMap[v].Regular = "http://www.roblox.com/asset/?id=56563112" diff --git a/lua/46295863.lua b/lua/46295863.lua index 0a23a7f..090342f 100644 --- a/lua/46295863.lua +++ b/lua/46295863.lua @@ -55,7 +55,7 @@ local function robloxLock(instance) instance.RobloxLocked = true children = instance:GetChildren() if children then - for i, child in ipairs(children) do + for _, child in ipairs(children) do robloxLock(child) end end @@ -93,13 +93,12 @@ function goToMenu(container, menuName, moveDirection, size, position) end local containerChildren = container:GetChildren() - local selectedMenu = false for i = 1, #containerChildren do if containerChildren[i].Name == menuName then containerChildren[i].Visible = true currentMenuSelection = { container = container, name = menuName, direction = moveDirection, lastSize = size } - selectedMenu = true + -- selectedMenu = true if size and position then containerChildren[i]:TweenSizeAndPosition( size, @@ -198,7 +197,7 @@ local function CreateTextButtons(frame, buttons, yPos, ySize) local buttonObjs = {} local function toggleSelection(button) - for i, obj in ipairs(buttonObjs) do + for _, obj in ipairs(buttonObjs) do if obj == button then obj.Style = Enum.ButtonStyle.RobloxButtonDefault else @@ -207,7 +206,7 @@ local function CreateTextButtons(frame, buttons, yPos, ySize) end end - for i, obj in ipairs(buttons) do + for _, obj in ipairs(buttons) do local button = Instance.new "TextButton" button.Name = "Button" .. buttonNum button.Font = Enum.Font.Arial @@ -775,7 +774,7 @@ local function createGameMainMenu(baseZIndex, shield) return gameMainMenuFrame end -local function createGameSettingsMenu(baseZIndex, shield) +local function createGameSettingsMenu(baseZIndex, _) local gameSettingsMenuFrame = Instance.new "Frame" gameSettingsMenuFrame.Name = "GameSettingsMenu" gameSettingsMenuFrame.BackgroundTransparency = 1 @@ -1109,7 +1108,7 @@ local function createGameSettingsMenu(baseZIndex, shield) graphicsSetter.Text = tostring(graphicsLevel.Value) end) - graphicsLevel.Changed:connect(function(prop) + graphicsLevel.Changed:connect(function(_) if isAutoGraphics then return end @@ -1147,7 +1146,6 @@ local function createGameSettingsMenu(baseZIndex, shield) end end) - local lastUpdate = nil game.GraphicsQualityChangeRequest:connect(function(graphicsIncrease) if isAutoGraphics then return @@ -1314,7 +1312,7 @@ local function createGameSettingsMenu(baseZIndex, shield) backButton.ZIndex = baseZIndex + 4 backButton.Parent = gameSettingsMenuFrame - local syncVideoCaptureSetting = nil + local syncVideoCaptureSetting if not macClient then local videoCaptureLabel = Instance.new "TextLabel" @@ -2282,20 +2280,20 @@ if LoadLibrary then chatButton.MouseButton1Click:connect(activateChat) - local hotKeyEnabled = true - local toggleHotKey = function(value) - hotKeyEnabled = value + -- local hotKeyEnabled = true + local toggleHotKey = function(_) + -- hotKeyEnabled = value end - local guiService = game:GetService "GuiService" - local newChatMode = pcall(function() + -- local guiService = game:GetService "GuiService" + --[[local newChatMode = ]]pcall(function() --guiService:AddSpecialKey(Enum.SpecialKey.ChatHotkey) --guiService.SpecialKeyPressed:connect(function(key) if key == Enum.SpecialKey.ChatHotkey and hotKeyEnabled then activateChat() end end) end) - if not newChatMode then + -- if not newChatMode then --guiService:AddKey("/") --guiService.KeyPressed:connect(function(key) if key == "/" and hotKeyEnabled then activateChat() end end) - end + -- end chatBox.FocusLost:connect(function(enterPressed) if enterPressed then @@ -2318,7 +2316,7 @@ if LoadLibrary then --Spawn a thread for the Save dialogs local isSaveDialogSupported = pcall(function() - local var = game.LocalSaveEnabled + -- local var = game.LocalSaveEnabled end) if isSaveDialogSupported then delay(0, function() @@ -2357,11 +2355,10 @@ if LoadLibrary then end) --Spawn a thread for Chat Bar - local coreGuiVersion = game.CoreGui.Version - local success, luaChat = pcall(function() + --[[local success, luaChat = ]]pcall(function() return game.GuiService.UseLuaChat end) - if success and luaChat then + -- if success and luaChat then --[[delay(0, function() @@ -2395,7 +2392,7 @@ if LoadLibrary then --game.GuiService:SetGlobalSizeOffsetPixel(0,-22) end end)]] - end + -- end local BurningManPlaceID = 41324860 -- TODO: remove click to walk completely if testing shows we don't need it diff --git a/lua/48488235.lua b/lua/48488235.lua index 4fb6f38..2ffb2dc 100644 --- a/lua/48488235.lua +++ b/lua/48488235.lua @@ -984,25 +984,25 @@ end) ------------------------------- -- Static Functions ------------------------------- -function GetTotalEntries() - return math.min(#MiddleFrameBackgrounds, DefaultEntriesOnScreen) -end +-- function GetTotalEntries() +-- return math.min(#MiddleFrameBackgrounds, DefaultEntriesOnScreen) +-- end -function GetEntryListLength() - local numEnts = #PlayerFrames + #TeamFrames - if NeutralTeam then - numEnts = numEnts + 1 - end - return numEnts -end +-- function GetEntryListLength() +-- local numEnts = #PlayerFrames + #TeamFrames +-- if NeutralTeam then +-- numEnts = numEnts + 1 +-- end +-- return numEnts +-- end function AreAllEntriesOnScreen() return #MiddleFrameBackgrounds * MiddleTemplate.Size.Y.Scale <= 1 + DefaultBottomClipPos end -function GetLengthOfVisbleScroll() - return 1 + DefaultBottomClipPos -end +-- function GetLengthOfVisbleScroll() +-- return 1 + DefaultBottomClipPos +-- end function GetMaxScroll() return DefaultBottomClipPos * -1 @@ -1093,19 +1093,19 @@ end rank Integer rank value for player @Return Normalized integer value for rank? --]] -function GetPrivilegeType(rank) - if rank <= PrivilegeLevel["Banned"] then - return PrivilegeLevel["Banned"] - elseif rank <= PrivilegeLevel["Visitor"] then - return PrivilegeLevel["Visitor"] - elseif rank <= PrivilegeLevel["Member"] then - return PrivilegeLevel["Member"] - elseif rank <= PrivilegeLevel["Admin"] then - return PrivilegeLevel["Admin"] - else - return PrivilegeLevel["Owner"] - end -end +-- function GetPrivilegeType(rank) +-- if rank <= PrivilegeLevel["Banned"] then +-- return PrivilegeLevel["Banned"] +-- elseif rank <= PrivilegeLevel["Visitor"] then +-- return PrivilegeLevel["Visitor"] +-- elseif rank <= PrivilegeLevel["Member"] then +-- return PrivilegeLevel["Member"] +-- elseif rank <= PrivilegeLevel["Admin"] then +-- return PrivilegeLevel["Admin"] +-- else +-- return PrivilegeLevel["Owner"] +-- end +-- end --[[ gives a player a new privilage rank @@ -1220,7 +1220,7 @@ function InitReportAbuse() end end - AbuseDropDown, UpdateAbuseSelection = RbxGui.CreateDropDownMenu(Abuses, UpdateAbuseFunction, true) + AbuseDropDown, _ = RbxGui.CreateDropDownMenu(Abuses, UpdateAbuseFunction, true) AbuseDropDown.Name = "AbuseComboBox" AbuseDropDown.Position = UDim2.new(0.425, 0, 0, 142) AbuseDropDown.Size = UDim2.new(0.55, 0, 0, 32) @@ -1333,7 +1333,7 @@ end playerEntry Entry of player who had a stat change property Name of stat changed --]] -function StatChanged(playerEntry, property) +function StatChanged(_, _) --playerEntry, property) -- if(playerEntry['MyTeam']) then -- UpdateSingleTeam(playerEntry['MyTeam']) -- else @@ -1808,25 +1808,17 @@ function UpdateMaximize() end end - for i, entry in ipairs(TeamFrames) do + for _, entry in ipairs(TeamFrames) do WaitForChild(entry["Frame"], "TitleFrame").Size = UDim2.new(0, BaseScreenXSize * 0.9, entry["Frame"].TitleFrame.Size.Y.Scale, 0) end - for i, entry in ipairs(PlayerFrames) do + for _, entry in ipairs(PlayerFrames) do WaitForChild(entry["Frame"], "TitleFrame").Size = UDim2.new(0, BaseScreenXSize * 0.9, entry["Frame"].TitleFrame.Size.Y.Scale, 0) end end end -function UpdateStatNames() - if not AreNamesExpanded.Value or IsMinimized.Value then - CloseNames() - else - ExpandNames() - end -end - function ExpandNames() if #ScoreNames ~= 0 then for _, i in pairs(StatTitles:GetChildren()) do @@ -1884,6 +1876,14 @@ function CloseNames() end end +function UpdateStatNames() + if not AreNamesExpanded.Value or IsMinimized.Value then + CloseNames() + else + ExpandNames() + end +end + function OnScrollWheelMove(direction) if not (IsTabified.Value or IsMinimized.Value or InPopupWaitForClick) then local StartFrame = ListFrame.Position @@ -1980,12 +1980,11 @@ end Manages scrolling of the playerlist on mouse drag --]] function StartDrag(entry, startx, starty) - local startDragTime = tick() - local stopDrag = false local openPanel = true - local draggedFrame = WaitForChild(entry["Frame"], "ClickListener") + --[[local draggedFrame = ]] + WaitForChild(entry["Frame"], "ClickListener") local function dragExit() - stopDrag = true + -- stopDrag = true if entry["Player"] @@ -2021,7 +2020,6 @@ function StartMinimizeDrag() Delay(0, function() local startTime = tick() debugprint "Got Click2" - local stopDrag = false local function dragExit() --debugprint('undone click2') if tick() - startTime < 0.25 then --was click @@ -2032,7 +2030,7 @@ function StartMinimizeDrag() ToggleMinimize() end end - stopDrag = true + -- stopDrag = true end local startY = nil local StartFrame = DefaultBottomClipPos @@ -2225,7 +2223,7 @@ end oldLeaderstats leaderstats object to be removed playerEntry A reference to the ENTRY(table) of the player --]] -function LeaderstatsRemoved(oldLeaderstats, playerEntry) +function LeaderstatsRemoved(_, playerEntry) while AddingFrameLock do debugprint("waiting to insert " .. playerEntry["Player"].Name) wait(1 / 30) @@ -2449,8 +2447,8 @@ function InsertPlayerFrame(nplayer) dropShadow.Position = nFrame.TitleFrame.Title.Position + UDim2.new(0, 1, 0, 1) dropShadow.Name = "DropShadow" dropShadow.Parent = nFrame.TitleFrame - else - --Delay(2, function () OnFriendshipChanged(nplayer,LocalPlayer:GetFriendStatus(nplayer)) end) + -- else + -- --Delay(2, function () OnFriendshipChanged(nplayer,LocalPlayer:GetFriendStatus(nplayer)) end) end nFrame.TitleFrame.Title.Font = "ArialBold" @@ -3030,8 +3028,8 @@ function RemoveTeamFrame(nteam) wait(1 / 30) end AddingFrameLock = true - if IsMinimized.Value then - end + -- if IsMinimized.Value then + -- end local myEntry for i, key in ipairs(TeamFrames) do if nteam == key["MyTeam"] then diff --git a/lua/48488398.lua b/lua/48488398.lua index 7ca69bd..bb9e594 100644 --- a/lua/48488398.lua +++ b/lua/48488398.lua @@ -153,20 +153,6 @@ function showTwoButtons() end end -function onTeleport(teleportState, _, _) - if game:GetService("TeleportService").CustomizedTeleportUI == false then - if teleportState == Enum.TeleportState.Started then - showTeleportUI("Teleport started...", 0) - elseif teleportState == Enum.TeleportState.WaitingForServer then - showTeleportUI("Requesting server...", 0) - elseif teleportState == Enum.TeleportState.InProgress then - showTeleportUI("Teleporting...", 0) - elseif teleportState == Enum.TeleportState.Failed then - showTeleportUI("Teleport failed. Insufficient privileges or target place does not exist.", 3) - end - end -end - function showTeleportUI(message, timer) if teleportUI ~= nil then teleportUI:Remove() @@ -181,6 +167,20 @@ function showTeleportUI(message, timer) end end +function onTeleport(teleportState, _, _) + if game:GetService("TeleportService").CustomizedTeleportUI == false then + if teleportState == Enum.TeleportState.Started then + showTeleportUI("Teleport started...", 0) + elseif teleportState == Enum.TeleportState.WaitingForServer then + showTeleportUI("Requesting server...", 0) + elseif teleportState == Enum.TeleportState.InProgress then + showTeleportUI("Teleporting...", 0) + elseif teleportState == Enum.TeleportState.Failed then + showTeleportUI("Teleport failed. Insufficient privileges or target place does not exist.", 3) + end + end +end + if teleportEnabled then localPlayer.OnTeleport:connect(onTeleport) diff --git a/lua/53878057.lua b/lua/53878057.lua index 6e12e7d..bf3919f 100644 --- a/lua/53878057.lua +++ b/lua/53878057.lua @@ -183,8 +183,8 @@ function removeGear(gear) gearSlots[emptySlot] = "empty" - local centerizeX = gear.Size.X.Scale / 2 - local centerizeY = gear.Size.Y.Scale / 2 + -- local centerizeX = gear.Size.X.Scale / 2 + -- local centerizeY = gear.Size.Y.Scale / 2 --[[gear:TweenSizeAndPosition(UDim2.new(0,0,0,0), UDim2.new(gear.Position.X.Scale + centerizeX,gear.Position.X.Offset,gear.Position.Y.Scale + centerizeY,gear.Position.Y.Offset), Enum.EasingDirection.Out, Enum.EasingStyle.Quad,guiTweenSpeed/4,true)]] diff --git a/lua/60595411.lua b/lua/60595411.lua index e4e7ad0..32f068e 100644 --- a/lua/60595411.lua +++ b/lua/60595411.lua @@ -98,9 +98,7 @@ function JsonWriter:Write(o) local t = type(o) if t == "nil" then self:WriteNil() - elseif t == "boolean" then - self:WriteString(o) - elseif t == "number" then + elseif t == "boolean" or t == "number" then self:WriteString(o) elseif t == "string" then self:ParseString(o) @@ -108,9 +106,7 @@ function JsonWriter:Write(o) self:WriteTable(o) elseif t == "function" then self:WriteFunction(o) - elseif t == "thread" then - self:WriteError(o) - elseif t == "userdata" then + elseif t == "thread" or t == "userdata" then self:WriteError(o) end end @@ -145,7 +141,7 @@ function JsonWriter:IsArray(t) end return false end - for k, v in pairs(t) do + for k, _ in pairs(t) do if not isindex(k) then return false, "{", "}" else @@ -286,7 +282,7 @@ function JsonReader:ReadNull() end function JsonReader:TestReservedWord(t) - for i, v in ipairs(t) do + for _, v in ipairs(t) do if self:Next() ~= v then error(string.format("Error reading '%s': %s", table.concat(t), self:All())) end @@ -483,7 +479,7 @@ end --makes a wedge at location x, y, z --sets cell x, y, z to default material if parameter is provided, if not sets cell x, y, z to be whatever material it previously w --returns true if made a wedge, false if the cell remains a block -t.MakeWedge = function(x, y, z, defaultmaterial) +t.MakeWedge = function(x, y, z, _) return game:GetService("Terrain"):AutoWedgeCell(x, y, z) end diff --git a/lua/73157242.lua b/lua/73157242.lua index 201256e..b05d32a 100644 --- a/lua/73157242.lua +++ b/lua/73157242.lua @@ -1,10 +1,10 @@ local t = {} -function waitForChild(instance, name) - while not instance:FindFirstChild(name) do - instance.ChildAdded:wait() - end -end +-- function waitForChild(instance, name) +-- while not instance:FindFirstChild(name) do +-- instance.ChildAdded:wait() +-- end +-- end -- Do a line/plane intersection. The line starts at the camera. The plane is at y == 0, normal(0, 1, 0) -- diff --git a/lua/89449008.lua b/lua/89449008.lua index c409faf..91b1e44 100644 --- a/lua/89449008.lua +++ b/lua/89449008.lua @@ -204,9 +204,9 @@ function addToGrid(child) end end) local ancestryCon = nil - ancestryCon = child.AncestryChanged:connect(function(theChild, theParent) + ancestryCon = child.AncestryChanged:connect(function(_, _) local thisObject = nil - for k, v in pairs(backpackItems) do + for _, v in pairs(backpackItems) do if v == child then thisObject = v break @@ -223,7 +223,7 @@ function addToGrid(child) changeCon:disconnect() end - for k, v in pairs(backpackItems) do + for _, v in pairs(backpackItems) do if v == thisObject then if mouseEnterCons[buttons[v]] then mouseEnterCons[buttons[v]]:disconnect() diff --git a/lua/89449093.lua b/lua/89449093.lua index 340cdfc..c32368c 100644 --- a/lua/89449093.lua +++ b/lua/89449093.lua @@ -24,7 +24,6 @@ end -- make sure everything is loaded in before we do anything -- get our local player waitForProperty(game.Players, "LocalPlayer") -local player = game.Players.LocalPlayer ------------------------ Locals ------------------------------ local backpack = script.Parent @@ -39,9 +38,11 @@ local closeButton = backpack.Tabs.CloseButton waitForChild(backpack.Tabs, "InventoryButton") local inventoryButton = backpack.Tabs.InventoryButton + +local wardrobeButton if game.CoreGui.Version >= 8 then waitForChild(backpack.Tabs, "WardrobeButton") - local wardrobeButton = backpack.Tabs.WardrobeButton + wardrobeButton = backpack.Tabs.WardrobeButton end waitForChild(backpack.Parent, "ControlFrame") local backpackButton = waitForChild(backpack.Parent.ControlFrame, "BackpackButton") @@ -65,8 +66,6 @@ local disabledByDeveloper = false local humanoidDiedCon = nil -local backpackButtonPos - local guiTweenSpeed = 0.25 -- how quickly we open/close the backpack local searchDefaultText = "Search..." @@ -123,15 +122,6 @@ function deactivateBackpack() active = false end -function activateBackpack() - initHumanoidDiedConnections() - active = true - backpack.Visible = backpackIsOpen - if backpackIsOpen then - toggleBackpack() - end -end - function initHumanoidDiedConnections() if humanoidDiedCon then humanoidDiedCon:disconnect() @@ -141,6 +131,15 @@ function initHumanoidDiedConnections() humanoidDiedCon = game.Players.LocalPlayer.Character.Humanoid.Died:connect(deactivateBackpack) end +function activateBackpack() + initHumanoidDiedConnections() + active = true + backpack.Visible = backpackIsOpen + if backpackIsOpen then + toggleBackpack() + end +end + local hideBackpack = function() backpackIsOpen = false readyForNextEvent = false diff --git a/lua/97188756.lua b/lua/97188756.lua index 0ea82a3..b808b62 100644 --- a/lua/97188756.lua +++ b/lua/97188756.lua @@ -54,7 +54,6 @@ local Camera = Game.Workspace.CurrentCamera -- Services local CoreGuiService = Game:GetService "CoreGui" local PlayersService = Game:GetService "Players" -local DebrisService = Game:GetService "Debris" local GuiService = Game:GetService "GuiService" -- Lua Enums @@ -900,7 +899,6 @@ function Chat:EnableScrolling(toggle) self.RenderFrame.MouseEnter:connect(function() local character = Player.Character local torso = WaitForChild(character, "Torso") - local humanoid = WaitForChild(character, "Humanoid") local head = WaitForChild(character, "Head") if toggle then self.MouseOnFrame = true @@ -1111,13 +1109,13 @@ function Chat:RecalculateSpacing() end ]] end -function Chat:ApplyFilter(str) - --[[for _, word in pair(self.Filter_List) do - if string.find(str, word) then - str:gsub(word, '@#$^') - end - end ]] -end +-- function Chat:ApplyFilter(str) +-- --[[for _, word in pair(self.Filter_List) do +-- if string.find(str, word) then +-- str:gsub(word, '@#$^') +-- end +-- end ]] +-- end -- NOTE: Temporarily disabled ring buffer to allow for chat to always wrap around function Chat:CreateMessage(cPlayer, message) @@ -1173,7 +1171,7 @@ function Chat:CreateMessage(cPlayer, message) pLabel = Gui.Create "TextLabel" { Name = pName, Text = pName .. ":", - TextColor3 = pColor, + -- TextColor3 = pColor, FontSize = Chat.Configuration.FontSize, TextXAlignment = Enum.TextXAlignment.Left, TextYAlignment = Enum.TextYAlignment.Top, @@ -1188,7 +1186,6 @@ function Chat:CreateMessage(cPlayer, message) TextStrokeTransparency = 0.75, --Active = false; } - local pColor if cPlayer.Neutral then pLabel.TextColor3 = Chat:ComputeChatColor(pName) else @@ -1245,9 +1242,6 @@ function Chat:CreateMessage(cPlayer, message) mLabel.Size = UDim2.new(1, 0, heightField / self.RenderFrame.AbsoluteSize.Y, 0) pLabel.Size = mLabel.Size - local yPixels = self.RenderFrame.AbsoluteSize.Y - local yFieldSize = mLabel.TextBounds.Y - local queueField = {} queueField["Player"] = pLabel queueField["Message"] = mLabel @@ -1322,8 +1316,8 @@ function Chat:CreateSafeChatOptions(list, rootButton) if type(list[msg]) == "table" then text_List[rootButton][chatText] = Chat:CreateSafeChatOptions(list[msg], chatText) - else - --table.insert(text_List[chatText], true) + -- else + -- --table.insert(text_List[chatText], true) end chatText.MouseEnter:connect(function() Chat:ToggleSafeChatMenu(chatText) @@ -1335,11 +1329,11 @@ function Chat:CreateSafeChatOptions(list, rootButton) chatText.MouseButton1Click:connect(function() local lList = Chat:FindButtonTree(chatText) - if lList then - for i, v in pairs(lList) do - end - else - end + -- if lList then + -- for i, v in pairs(lList) do + -- end + -- else + -- end pcall(function() PlayersService:Chat(lList[1]) end) @@ -1471,7 +1465,6 @@ function Chat:CreateChatBar() TextColor3 = Color3.new(1, 1, 1), FontSize = Enum.FontSize.Size12, ClearTextOnFocus = false, - Text = "", } -- Engine has code to offset the entire world, so if we do it by -20 pixels nothing gets in our chat's way @@ -1672,7 +1665,7 @@ end -- Just a wrapper around our PlayerChatted event function Chat:PlayerChatted(...) local args = { ... } - local argCount = select("#", ...) + -- local argCount = select("#", ...) local player local message -- This doesn't look very good, but what else to do? @@ -1689,14 +1682,13 @@ function Chat:PlayerChatted(...) if PlayersService.ClassicChat then if string.sub(message, 1, 3) == "/e " or string.sub(message, 1, 7) == "/emote " then -- don't do anything right now - elseif forceChatGUI or Player.ChatMode == Enum.ChatMode.TextAndMenu then + -- print(1) + elseif + (forceChatGUI or Player.ChatMode == Enum.ChatMode.TextAndMenu) + or (Player.ChatMode == Enum.ChatMode.Menu and string.sub(message, 1, 3) == "/sc") + or (Chat:FindMessageInSafeChat(message, self.SafeChat_List)) + then Chat:UpdateChat(player, message) - elseif Player.ChatMode == Enum.ChatMode.Menu and string.sub(message, 1, 3) == "/sc" then - Chat:UpdateChat(player, message) - else - if Chat:FindMessageInSafeChat(message, self.SafeChat_List) then - Chat:UpdateChat(player, message) - end end end end diff --git a/mercury.yml b/mercury.yml index 4d24eeb..4db34f9 100644 --- a/mercury.yml +++ b/mercury.yml @@ -5510,6 +5510,10 @@ globals: args: - type: number - type: function + Delay: + args: + - type: number + - type: function dofile: removed: true elapsedTime: @@ -6896,6 +6900,17 @@ structs: deprecated: message: this property is deprecated. replace: [] + + SaveToRoblox: + method: true + args: + - required: false + type: any + FinishShutdown: + method: true + args: + - required: false + type: any GetService: args: - type: @@ -7002,6 +7017,7 @@ structs: - PackageUIService - PathfindingService - PermissionsService + - PersonalServerService - PhysicsService - PlayerEmulatorService - Players @@ -7055,6 +7071,7 @@ structs: - TeleportService - TemporaryCageMeshProvider - TemporaryScriptService + - Terrain - TestService - TextBoxService - TextChatService diff --git a/processed/107893730.lua b/processed/107893730.lua index 7eb0c39..79c02c5 100644 --- a/processed/107893730.lua +++ b/processed/107893730.lua @@ -1,59 +1,59 @@ while not Game do wait(0.1)end while not game:GetService'MarketplaceService'do wait(0.1)end while not game:FindFirstChild'CoreGui'do wait(0.1)end while not game.CoreGui:FindFirstChild'RobloxGui'do wait(0.1)end local a,b,c,d,e,f,g,h,i,j, -k,l,m,n,o,p,q=nil,game:GetService'ContentProvider'.BaseUrl:lower(),nil,nil,nil, -nil,nil,nil,nil,false,nil,false,true,nil,false,nil local r,s,t,u,v,w,x,y,z=0.3, -UDim2.new(0.5,-330,0.5,-200),UDim2.new(0.5,-330,1,25),nil,false,nil,450,{}, -'http://www.roblox.com/Asset/?id='local A=z..'42557901'table.insert(y,A)local B= -z..'104651457'table.insert(y,B)local C=z..'104651515'table.insert(y,C)local D=z -..'104651532'table.insert(y,D)local E=z..'104651592'table.insert(y,E)local F=z.. -'104651639'table.insert(y,F)local G=z..'104651665'table.insert(y,G)local H=z.. -'104651707'table.insert(y,H)local I=z..'104651733'table.insert(y,I)local J=z.. -'104651761'table.insert(y,J)local K=z..'102481431'table.insert(y,K)local L=z.. -'102481419'table.insert(y,L)local M,N,O,P,Q,R,S,T,U,V='Buy','Take', +k,l,m,n,o,p,q,r,s,t,u,v,w,x,y=nil,game:GetService'ContentProvider'.BaseUrl: +lower(),nil,nil,nil,nil,nil,nil,nil,false,nil,false,true,nil,false,nil,0.3,UDim2 +.new(0.5,-330,0.5,-200),UDim2.new(0.5,-330,1,25),nil,false,nil,450,{}, +'http://www.roblox.com/Asset/?id='local z=y..'42557901'table.insert(x,z)local A= +y..'104651457'table.insert(x,A)local B=y..'104651515'table.insert(x,B)local C=y +..'104651532'table.insert(x,C)local D=y..'104651592'table.insert(x,D)local E=y.. +'104651639'table.insert(x,E)local F=y..'104651665'table.insert(x,F)local G=y.. +'104651707'table.insert(x,G)local H=y..'104651733'table.insert(x,H)local I=y.. +'104651761'table.insert(x,I)local J=y..'102481431'table.insert(x,J)local K=y.. +'102481419'table.insert(x,K)local L,M,N,O,P,Q,R,S,T,U='Buy','Take', 'An Error Occurred','in-game purchases are disabled', 'Roblox is performing maintenance','Your purchase of itemName succeeded!', [[Your purchase of itemName failed because errorReason. Your account has not been charged. Please try again soon.]] ,[[Would you like to buy 'itemName' for currencyType currencyAmount?]], "Would you like to take the assetType 'itemName' for FREE?", [[Your balance of Robux or Tix will not be affected by this transaction.]] -function getSecureApiBaseUrl()local W=b W=string.gsub(W,'http','https')W=string. -gsub(W,'www','api')return W end function getRbxUtility()if not a then a= -LoadLibrary'RbxUtility'end return a end function preloadAssets()for W=1,#y do -game:GetService'ContentProvider':Preload(y[W])end end function +function getSecureApiBaseUrl()local V=b V=string.gsub(V,'http','https')V=string. +gsub(V,'www','api')return V end function getRbxUtility()if not a then a= +LoadLibrary'RbxUtility'end return a end function preloadAssets()for V=1,#x do +game:GetService'ContentProvider':Preload(x[V])end end function removeCurrentPurchaseInfo()d=nil e=nil f=nil g=nil h=nil c=nil i=nil j=false end -function closePurchasePrompt()p:TweenPosition(t,Enum.EasingDirection.Out,Enum. -EasingStyle.Quad,r,true,function()game.GuiService:RemoveCenterDialog(p) +function closePurchasePrompt()p:TweenPosition(s,Enum.EasingDirection.Out,Enum. +EasingStyle.Quad,q,true,function()game.GuiService:RemoveCenterDialog(p) hidePurchasing()p.Visible=false o=false end)end function -userPurchaseActionsEnded(W)j=false if W then local X=string.gsub(R,'itemName', -tostring(c['Name']))p.BodyFrame.ItemPreview.ItemDescription.Text=X +userPurchaseActionsEnded(V)j=false if V then local W=string.gsub(Q,'itemName', +tostring(c['Name']))p.BodyFrame.ItemPreview.ItemDescription.Text=W setButtonsVisible(p.BodyFrame.OkPurchasedButton)hidePurchasing()else -signalPromptEnded(W)end end function signalPromptEnded(W)closePurchasePrompt()if +signalPromptEnded(V)end end function signalPromptEnded(V)closePurchasePrompt()if l then game:GetService'MarketplaceService':SignalPromptProductPurchaseFinished( -game.Players.LocalPlayer.userId,h,W)else game:GetService'MarketplaceService': -SignalPromptPurchaseFinished(game.Players.LocalPlayer,d,W)end -removeCurrentPurchaseInfo()end function updatePurchasePromptData(W)local X=''if -not h then h=c['ProductId']end if isFreeItem()then X=string.gsub(U,'itemName', -tostring(c['Name']))X=string.gsub(X,'assetType',tostring(assetTypeToString(c[ -'AssetTypeId'])))setHeaderText(N)else X=string.gsub(T,'itemName',tostring(c[ -'Name']))X=string.gsub(X,'currencyType',tostring(currencyTypeToString(e)))X= -string.gsub(X,'currencyAmount',tostring(f))setHeaderText(M)end p.BodyFrame. -ItemPreview.ItemDescription.Text=X if l then p.BodyFrame.ItemPreview.Image=b.. +game.Players.LocalPlayer.userId,h,V)else game:GetService'MarketplaceService': +SignalPromptPurchaseFinished(game.Players.LocalPlayer,d,V)end +removeCurrentPurchaseInfo()end function updatePurchasePromptData(V)local W=''if +not h then h=c['ProductId']end if isFreeItem()then W=string.gsub(T,'itemName', +tostring(c['Name']))W=string.gsub(W,'assetType',tostring(assetTypeToString(c[ +'AssetTypeId'])))setHeaderText(M)else W=string.gsub(S,'itemName',tostring(c[ +'Name']))W=string.gsub(W,'currencyType',tostring(currencyTypeToString(e)))W= +string.gsub(W,'currencyAmount',tostring(f))setHeaderText(L)end p.BodyFrame. +ItemPreview.ItemDescription.Text=W if l then p.BodyFrame.ItemPreview.Image=b.. 'thumbs/asset.ashx?assetid='..tostring(c['IconImageAssetId']).. '&x=100&y=100&format=png'else p.BodyFrame.ItemPreview.Image=b.. 'thumbs/asset.ashx?assetid='..tostring(d)..'&x=100&y=100&format=png'end end -function doPlayerFundsCheck(W)if j then canPurchase,insufficientFunds= -canPurchaseItem()if canPurchase and insufficientFunds then local X=1000 while(X> -0 or W)and insufficientFunds and j and canPurchase do wait(0.1)canPurchase, -insufficientFunds=canPurchaseItem()X=X-1 end end if canPurchase and not +function doPlayerFundsCheck(V)if j then canPurchase,insufficientFunds= +canPurchaseItem()if canPurchase and insufficientFunds then local W=1000 while(W> +0 or V)and insufficientFunds and j and canPurchase do wait(0.1)canPurchase, +insufficientFunds=canPurchaseItem()W=W-1 end end if canPurchase and not insufficientFunds then setButtonsVisible(p.BodyFrame.BuyButton,p.BodyFrame. CancelButton,p.BodyFrame.AfterBalanceButton)end end end function -showPurchasePrompt()local W,X,Y,Z,_=canPurchaseItem()if W then -updatePurchasePromptData()if Z and _ then p.BodyFrame.ItemPreview. -ItemDescription.Text=_ p.BodyFrame.AfterBalanceButton.Visible=false end game. +showPurchasePrompt()local V,W,X,Y,Z=canPurchaseItem()if V then +updatePurchasePromptData()if Y and Z then p.BodyFrame.ItemPreview. +ItemDescription.Text=Z p.BodyFrame.AfterBalanceButton.Visible=false end game. GuiService:AddCenterDialog(p,Enum.CenterDialogType.ModalDialog,function()p. Visible=true if isFreeItem()then setButtonsVisible(p.BodyFrame.FreeButton,p. -BodyFrame.CancelButton,p.BodyFrame.AfterBalanceButton)elseif Y then p.BodyFrame. +BodyFrame.CancelButton,p.BodyFrame.AfterBalanceButton)elseif X then p.BodyFrame. AfterBalanceButton.Text= [[You require an upgrade to your Builders Club membership to purchase this item. Click here to upgrade.]] if not k then k=p.BodyFrame.AfterBalanceButton.MouseButton1Click:connect( @@ -61,43 +61,43 @@ function()if p.BodyFrame.AfterBalanceButton.Text== [[You require an upgrade to your Builders Club membership to purchase this item. Click here to upgrade.]] then openBCUpSellWindow()end end)end setButtonsVisible(p.BodyFrame. BuyDisabledButton,p.BodyFrame.CancelButton,p.BodyFrame.AfterBalanceButton)elseif -X then setButtonsVisible(p.BodyFrame.BuyDisabledButton,p.BodyFrame.CancelButton, -p.BodyFrame.AfterBalanceButton)elseif Z then setButtonsVisible(p.BodyFrame. +W then setButtonsVisible(p.BodyFrame.BuyDisabledButton,p.BodyFrame.CancelButton, +p.BodyFrame.AfterBalanceButton)elseif Y then setButtonsVisible(p.BodyFrame. BuyDisabledButton,p.BodyFrame.CancelButton)else setButtonsVisible(p.BodyFrame. -BuyButton,p.BodyFrame.CancelButton)end p:TweenPosition(s,Enum.EasingDirection. -Out,Enum.EasingStyle.Quad,r,true)if W and X and not m then j=true +BuyButton,p.BodyFrame.CancelButton)end p:TweenPosition(r,Enum.EasingDirection. +Out,Enum.EasingStyle.Quad,q,true)if V and W and not m then j=true doPlayerFundsCheck(true)end end,function()p.Visible=false end)else -doDeclinePurchase()end end function getToolAssetID(W)local X=game:GetService -'InsertService':LoadAsset(W)if not X then return nil end if X:IsA'Tool'then -return X end local Y=X:GetChildren()for Z=1,#Y do if Y[Z]:IsA'Tool'then return Y -[Z]end end return nil end function purchaseFailed(W)local X='Item'if c then X=c[ -'Name']end local Y=string.gsub(S,'itemName',tostring(X))if W then Y=string.gsub( -Y,'errorReason',tostring(P))else Y=string.gsub(Y,'errorReason',tostring(Q))end p -.BodyFrame.ItemPreview.ItemDescription.Text=Y p.BodyFrame.ItemPreview.Image=A -setButtonsVisible(p.BodyFrame.OkButton)setHeaderText(O)hidePurchasing()end -function doAcceptPurchase(W)showPurchasing()local X,Y,Z=tick(),'none',nil if l -then Z=getSecureApiBaseUrl()..'marketplace/submitpurchase?productId='..tostring( +doDeclinePurchase()end end function getToolAssetID(V)local W=game:GetService +'InsertService':LoadAsset(V)if not W then return nil end if W:IsA'Tool'then +return W end local X=W:GetChildren()for Y=1,#X do if X[Y]:IsA'Tool'then return X +[Y]end end return nil end function purchaseFailed(V)local W='Item'if c then W=c[ +'Name']end local X=string.gsub(R,'itemName',tostring(W))if V then X=string.gsub( +X,'errorReason',tostring(O))else X=string.gsub(X,'errorReason',tostring(P))end p +.BodyFrame.ItemPreview.ItemDescription.Text=X p.BodyFrame.ItemPreview.Image=z +setButtonsVisible(p.BodyFrame.OkButton)setHeaderText(N)hidePurchasing()end +function doAcceptPurchase(V)showPurchasing()local W,X,Y=tick(),'none',nil if l +then Y=getSecureApiBaseUrl()..'marketplace/submitpurchase?productId='..tostring( h)..'¤cyTypeId='..tostring(currencyEnumToInt(e))..'&expectedUnitPrice='.. -tostring(f)..'&placeId='..tostring(Game.PlaceId)else Z=getSecureApiBaseUrl().. +tostring(f)..'&placeId='..tostring(Game.PlaceId)else Y=getSecureApiBaseUrl().. 'marketplace/purchase?productId='..tostring(h)..'¤cyTypeId='..tostring( currencyEnumToInt(e))..'&purchasePrice='..tostring(f)..'&locationType=Game'.. -'&locationId='..Game.PlaceId end local _,aa=ypcall(function()Y=game: -HttpPostAsync(Z,'RobloxPurchaseRequest')end)print( -'doAcceptPurchase success from ypcall is ',_,'reason is',aa)if(tick()-X)<1 then -wait(1)end if Y=='none'or Y==nil or Y==''then print( +'&locationId='..Game.PlaceId end local Z,_=ypcall(function()X=game: +HttpPostAsync(Y,'RobloxPurchaseRequest')end)print( +'doAcceptPurchase success from ypcall is ',Z,'reason is',_)if(tick()-W)<1 then +wait(1)end if X=='none'or X==nil or X==''then print( 'did not get a proper response from web on purchase of',d,h)purchaseFailed() -return end Y=getRbxUtility().DecodeJSON(Y)if Y then if Y['success']==false then -if Y['status']~='AlreadyOwned'then print( -'web return response of fail on purchase of',d,h)purchaseFailed((Y['status']== +return end X=getRbxUtility().DecodeJSON(X)if X then if X['success']==false then +if X['status']~='AlreadyOwned'then print( +'web return response of fail on purchase of',d,h)purchaseFailed((X['status']== 'EconomyDisabled'))return end end else print( 'web return response of non parsable JSON on purchase of',d)purchaseFailed() -return end if g and _ and d and tonumber(c['AssetTypeId'])==19 then local ab= -getToolAssetID(tonumber(d))if ab then ab.Parent=game.Players.LocalPlayer. -Backpack end end if l then if not Y['receipt']then print( +return end if g and Z and d and tonumber(c['AssetTypeId'])==19 then local aa= +getToolAssetID(tonumber(d))if aa then aa.Parent=game.Players.LocalPlayer. +Backpack end end if l then if not X['receipt']then print( [[tried to buy productId, but no receipt returned. productId was]],h) purchaseFailed()return end Game:GetService'MarketplaceService': -SignalClientPurchaseSuccess(tostring(Y['receipt']),game.Players.LocalPlayer. -userId,h)else userPurchaseActionsEnded(_)end end function doDeclinePurchase() +SignalClientPurchaseSuccess(tostring(X['receipt']),game.Players.LocalPlayer. +userId,h)else userPurchaseActionsEnded(Z)end end function doDeclinePurchase() userPurchaseActionsEnded(false)end function currencyEnumToInt(aa)if aa==Enum. CurrencyType.Robux or aa==Enum.CurrencyType.Default then return 1 elseif aa== Enum.CurrencyType.Tix then return 2 end end function assetTypeToString(aa)if aa @@ -116,23 +116,23 @@ return'Left Arm'elseif aa==30 then return'Left Leg'elseif aa==31 then return 'YouTube Video'elseif aa==34 then return'Game Pass'elseif aa==0 then return 'Product'end return''end function currencyTypeToString(aa)if aa==Enum. CurrencyType.Tix then return'Tix'else return'R$'end end function -setCurrencyAmountAndType(aa,ab)if e==Enum.CurrencyType.Default or e==Enum. +setCurrencyAmountAndType(aa,V)if e==Enum.CurrencyType.Default or e==Enum. CurrencyType.Robux then if aa~=nil and aa~=0 then f=aa e=Enum.CurrencyType.Robux -else f=ab e=Enum.CurrencyType.Tix end elseif e==Enum.CurrencyType.Tix then if ab -~=nil and ab~=0 then f=ab e=Enum.CurrencyType.Tix else f=aa e=Enum.CurrencyType. +else f=V e=Enum.CurrencyType.Tix end elseif e==Enum.CurrencyType.Tix then if V~= +nil and V~=0 then f=V e=Enum.CurrencyType.Tix else f=aa e=Enum.CurrencyType. Robux end else return false end if f==nil then return false end return true end -function getPlayerBalance()local aa=nil local ab,W=ypcall(function()aa=game: -HttpGetAsync(getSecureApiBaseUrl()..'currency/balance')end)if not ab then print( +function getPlayerBalance()local aa=nil local V,W=ypcall(function()aa=game: +HttpGetAsync(getSecureApiBaseUrl()..'currency/balance')end)if not V then print( 'Get player balance failed because',W)return nil end if aa==''then return nil end aa=getRbxUtility().DecodeJSON(aa)return aa end function openBuyCurrencyWindow()j=true game:GetService'GuiService':OpenBrowserWindow(b.. 'Upgrades/Robux.aspx')end function openBCUpSellWindow()Game:GetService 'GuiService':OpenBrowserWindow(b..'Upgrades/BuildersClubMemberships.aspx')end -function updateAfterBalanceText(aa,ab)if isFreeItem()then p.BodyFrame. -AfterBalanceButton.Text=V return true,false end local W=nil if e==Enum. +function updateAfterBalanceText(aa,V)if isFreeItem()then p.BodyFrame. +AfterBalanceButton.Text=U return true,false end local W=nil if e==Enum. CurrencyType.Robux then W='robux'elseif e==Enum.CurrencyType.Tix then W= 'tickets'end if not W then return false end local X=tonumber(aa[W])if not X then -return false end local Y=X-f if not ab then if Y<0 and W=='robux'then if n==nil +return false end local Y=X-f if not V then if Y<0 and W=='robux'then if n==nil then n=p.BodyFrame.AfterBalanceButton.MouseButton1Click:connect( openBuyCurrencyWindow)end p.BodyFrame.AfterBalanceButton.Text='You need '.. currencyTypeToString(e)..' '..tostring(-Y).. @@ -147,11 +147,11 @@ membershipTypeToNumber(aa)if aa==Enum.MembershipType.None then return 0 elseif aa==Enum.MembershipType.BuildersClub then return 1 elseif aa==Enum. MembershipType.TurboBuildersClub then return 2 elseif aa==Enum.MembershipType. OutrageousBuildersClub then return 3 end return-1 end function canPurchaseItem() -local aa,ab,W,X=false,false,nil,false if l then local Y=nil X=ypcall(function()Y -=Game:HttpGetAsync(getSecureApiBaseUrl().. -'marketplace/productDetails?productid='..tostring(h))end)if X then c= -getRbxUtility().DecodeJSON(Y)end else X=ypcall(function()c=game:GetService -'MarketplaceService':GetProductInfo(d)end)end if c==nil or not X then W= +local aa,V,W,X=false,false,nil,false if l then local Y=nil X=ypcall(function()Y= +Game:HttpGetAsync(getSecureApiBaseUrl()..'marketplace/productDetails?productid=' +..tostring(h))end)if X then c=getRbxUtility().DecodeJSON(Y)end else X=ypcall( +function()c=game:GetService'MarketplaceService':GetProductInfo(d)end)end if c== +nil or not X then W= [[In-game sales are temporarily disabled. Please try again later.]]return true, nil,nil,true,W end if not l then if not d then print 'current asset id is nil, this should always have a value'return false end if d @@ -172,10 +172,10 @@ setCurrencyAmountAndType(tonumber(c['PriceInRobux']),tonumber(c['PriceInTickets' return true,nil,nil,true,W end local Y=getPlayerBalance()if not Y then W= 'Could not retrieve your balance. Please try again later.'return true,nil,nil, true,W end if tonumber(c['MinimumMembershipLevel'])>membershipTypeToNumber(game. -Players.LocalPlayer.MembershipType)then ab=true end local Z,_= -updateAfterBalanceText(Y,ab)if ab then p.BodyFrame.AfterBalanceButton.Active= -true return true,_,ab,false end if c['ContentRatingTypeId']==1 then if game. -Players.LocalPlayer:GetUnder13()then W= +Players.LocalPlayer.MembershipType)then V=true end local Z,_= +updateAfterBalanceText(Y,V)if V then p.BodyFrame.AfterBalanceButton.Active=true +return true,_,V,false end if c['ContentRatingTypeId']==1 then if game.Players. +LocalPlayer:GetUnder13()then W= [[Your account is under 13 so purchase of this item is not allowed.]]return true ,nil,nil,true,W end end if(c['IsLimited']==true or c['IsLimitedUnique']==true) and(c['Remaining']==''or c['Remaining']==0 or c['Remaining']==nil)then W= @@ -183,81 +183,81 @@ and(c['Remaining']==''or c['Remaining']==0 or c['Remaining']==nil)then W= return true,nil,nil,true,W end if not Z then W= [[Could not update your balance. Please check back after some time.]]return true ,nil,nil,true,W end p.BodyFrame.AfterBalanceButton.Active=true return true,_ end -function computeSpaceString(aa)local ab,W=' ',Instance.new'TextButton'W.Size= +function computeSpaceString(aa)local V,W=' ',Instance.new'TextButton'W.Size= UDim2.new(0,aa.AbsoluteSize.X,0,aa.AbsoluteSize.Y)W.FontSize=aa.FontSize W. -Parent=aa.Parent W.BackgroundTransparency=1 W.Text=ab W.Name='SpaceButton'while -W.TextBounds.Xk then return end d[o]=n c[l]['button']=n n.Position= -j[o]n.Parent=f if e and e.Parent==nil then e.Parent=Game.Players.LocalPlayer. -PlayerGui end end function removeAction(l)if not c[l]then return end local m=c[l -]['button']if m then m.Parent=nil for n=1,#d do if d[n]==m then d[n]='empty' -break end end m:Destroy()end c[l]=nil end function addAction(l,m,n)if c[l]then -removeAction(l)end c[l]={n}if m and b then createContextActionGui()createButton( -l,n)end end a.BoundActionChanged:connect(function(l,m,n)if c[l]and n then local -o=c[l]['button']if o then if m=='image'then o.ActionIcon.Image=n[m]elseif m== -'title'then o.ActionTitle.Text=n[m]elseif m=='description'then elseif m== -'position'then o.Position=n[m]end end end end)a.BoundActionAdded:connect( +,0.5,0)f.Name='ContextButtonFrame'f.Parent=e end end function contextButtonDown( +l,m,n)if m.UserInputType==Enum.UserInputType.Touch then l.Image=g a: +CallFunction(n,Enum.UserInputState.Begin,m)end end function contextButtonMoved(l +,m,n)if m.UserInputType==Enum.UserInputType.Touch then l.Image=g a:CallFunction( +n,Enum.UserInputState.Change,m)end end function contextButtonUp(l,m,n)l.Image=h +if m.UserInputType==Enum.UserInputType.Touch and m.UserInputState==Enum. +UserInputState.End then a:CallFunction(n,Enum.UserInputState.End,m)end end +function isSmallScreenDevice()return Game:GetService'GuiService': +GetScreenResolution().y<=320 end function createNewButton(l,m)local n=Instance. +new'ImageButton'n.Name='ContextActionButton'n.BackgroundTransparency=1 n.Size= +UDim2.new(0,90,0,90)n.Active=true if isSmallScreenDevice()then n.Size=UDim2.new( +0,70,0,70)end n.Image=h n.Parent=f local o=nil Game:GetService'UserInputService' +.InputEnded:connect(function(p)i[p]=nil end)n.InputBegan:connect(function(p)if i +[p]then return end if p.UserInputState==Enum.UserInputState.Begin and o==nil +then o=p contextButtonDown(n,p,l)end end)n.InputChanged:connect(function(p)if i[ +p]then return end if o~=p then return end contextButtonMoved(n,p,l)end)n. +InputEnded:connect(function(p)if i[p]then return end if o~=p then return end o= +nil i[p]=true contextButtonUp(n,p,l)end)local p=Instance.new'ImageLabel'p.Name= +'ActionIcon'p.Position=UDim2.new(0.175,0,0.175,0)p.Size=UDim2.new(0.65,0,0.65,0) +p.BackgroundTransparency=1 if m['image']and type(m['image'])=='string'then p. +Image=m['image']end p.Parent=n local q=Instance.new'TextLabel'q.Name= +'ActionTitle'q.Size=UDim2.new(1,0,1,0)q.BackgroundTransparency=1 q.Font=Enum. +Font.SourceSansBold q.TextColor3=Color3.new(1,1,1)q.TextStrokeTransparency=0 q. +FontSize=Enum.FontSize.Size18 q.TextWrapped=true q.Text=''if m['title']and type( +m['title'])=='string'then q.Text=m['title']end q.Parent=n return n end function +createButton(l,m)local n,o=createNewButton(l,m),nil for p=1,#d do if d[p]== +'empty'then o=p break end end if not o then o=#d+1 end if o>k then return end d[ +o]=n c[l]['button']=n n.Position=j[o]n.Parent=f if e and e.Parent==nil then e. +Parent=Game.Players.LocalPlayer.PlayerGui end end function removeAction(l)if not +c[l]then return end local m=c[l]['button']if m then m.Parent=nil for n=1,#d do +if d[n]==m then d[n]='empty'break end end m:Destroy()end c[l]=nil end function +addAction(l,m,n)if c[l]then removeAction(l)end c[l]={n}if m and b then +createContextActionGui()createButton(l,n)end end a.BoundActionChanged:connect( +function(l,m,n)if c[l]and n then local o=c[l]['button']if o then if m=='image' +then o.ActionIcon.Image=n[m]elseif m=='title'then o.ActionTitle.Text=n[m]elseif +m=='position'then o.Position=n[m]end end end end)a.BoundActionAdded:connect( function(l,m,n)addAction(l,m,n)end)a.BoundActionRemoved:connect(function(l,m) removeAction(l)end)a.GetActionButtonEvent:connect(function(l)if c[l]then a: FireActionButtonFoundSignal(l,c[l]['button'])end end)local l=a: diff --git a/processed/157877000.lua b/processed/157877000.lua index 8f29ef9..aebdd62 100644 --- a/processed/157877000.lua +++ b/processed/157877000.lua @@ -103,34 +103,34 @@ T=nil U=false V=false end function refreshConsolePosition(W,X)if not O then return end local Y=Vector2.new(W,X)-O c.Position=UDim2.new(0,P.X+Y.X,0,P.Y+Y.Y) end M.TextButton.MouseButton1Down:connect(function(W,X)O=Vector2.new(W,X)P=c. AbsolutePosition end)M.TextButton.MouseButton1Up:connect(function(W,X)clean()end -)function refreshConsoleSize(W,X)if not Q then return end local Y=Vector2.new(W, -X)-Q c.Size=UDim2.new(0,math.max(R.X+Y.X,i.X),0,math.max(R.Y+Y.Y,i.Y))end c.Body -.ResizeButton.MouseButton1Down:connect(function(W,X)Q=Vector2.new(W,X)R=c. -AbsoluteSize end)c.Body.ResizeButton.MouseButton1Up:connect(function(W,X)clean() -end)M.CloseButton.MouseButton1Down:connect(function(X,Y)c.Visible=false end)c. -TitleBar.CloseButton.MouseButton1Up:connect(function()clean()end)local Y,Z=true, -false function startAnimation()if Z then return end Z=true repeat if Y then u=u- -1 else u=u+1 end local _=u/5 local aa=_*_*(3-(2*_))K.ImageLabel.Rotation=aa*5*9 -x.Position=UDim2.new(0,(aa*5*50)-250,0,4)wait()if(u<=0 and Y)or(u>=5 and not Y) -then Z=false end until not Z end K.MouseButton1Down:connect(function(aa,_)Y=not -Y startAnimation()end)function changeOffset(_)if j==f then m=m+_ elseif j==g -then n=n+_ end repositionList()end function refreshTextHolderForReal()local _,ab -=J:GetChildren(),nil if j==f then ab=k elseif j==g then ab=l end local ac=0 for -ad=1,#_ do _[ad].Visible=false end for ad=1,#ab do local ae,af=nil,false if ad># -_ then ae=a'TextLabel'{Name='Message',Parent=J,BackgroundTransparency=1, -TextXAlignment='Left',Size=UDim2.new(1,0,0,14),FontSize='Size10',ZIndex=1}af= -true else ae=_[ad]end if(r or ab[ad].Type~=Enum.MessageType.MessageOutput)and(q -or ab[ad].Type~=Enum.MessageType.MessageInfo)and(p or ab[ad].Type~=Enum. -MessageType.MessageWarning)and(o or ab[ad].Type~=Enum.MessageType.MessageError) -then ae.TextWrapped=s ae.Size=UDim2.new(0.98,0,0,2000)ae.Parent=c ae.Text=ab[ad] -.Time..' -- '..ab[ad].Message ae.Size=UDim2.new(0.98,0,0,ae.TextBounds.Y)ae. -Position=UDim2.new(0,5,0,ac)ae.Parent=J ac=ac+ae.TextBounds.Y if af then if(j==f -and m>0)or(j==g and n>0)then changeOffset(ae.TextBounds.Y)end end ae.Visible= -true if ab[ad].Type==Enum.MessageType.MessageError then ae.TextColor3=Color3. -new(1,0,0)elseif ab[ad].Type==Enum.MessageType.MessageInfo then ae.TextColor3= -Color3.new(0.4,0.5,1)elseif ab[ad].Type==Enum.MessageType.MessageWarning then ae -.TextColor3=Color3.new(1,0.6,0.4)else ae.TextColor3=Color3.new(1,1,1)end end end -t=ac end local ab=false function refreshTextHolder()if ab then return end Delay( +)function refreshConsoleSize(X,Y)if not Q then return end local Z=Vector2.new(X, +Y)-Q c.Size=UDim2.new(0,math.max(R.X+Z.X,i.X),0,math.max(R.Y+Z.Y,i.Y))end c.Body +.ResizeButton.MouseButton1Down:connect(function(X,Y)Q=Vector2.new(X,Y)R=c. +AbsoluteSize end)c.Body.ResizeButton.MouseButton1Up:connect(function(X,Y)clean() +end)M.CloseButton.MouseButton1Down:connect(function(Y,Z)c.Visible=false end)c. +TitleBar.CloseButton.MouseButton1Up:connect(function()clean()end)local Z,_=true, +false function startAnimation()if _ then return end _=true repeat if Z then u=u- +1 else u=u+1 end local aa=u/5 local ab=aa*aa*(3-(2*aa))K.ImageLabel.Rotation=ab* +5*9 x.Position=UDim2.new(0,(ab*5*50)-250,0,4)wait()if(u<=0 and Z)or(u>=5 and not +Z)then _=false end until not _ end K.MouseButton1Down:connect(function(aa,ab)Z= +not Z startAnimation()end)function changeOffset(ab)if j==f then m=m+ab elseif j +==g then n=n+ab end repositionList()end function refreshTextHolderForReal()local +ab,ac=J:GetChildren(),nil if j==f then ac=k elseif j==g then ac=l end local ad=0 +for ae=1,#ab do ab[ae].Visible=false end for ae=1,#ac do local af,ag=nil,false +if ae>#ab then af=a'TextLabel'{Name='Message',Parent=J,BackgroundTransparency=1, +TextXAlignment='Left',Size=UDim2.new(1,0,0,14),FontSize='Size10',ZIndex=1}ag= +true else af=ab[ae]end if(r or ac[ae].Type~=Enum.MessageType.MessageOutput)and(q +or ac[ae].Type~=Enum.MessageType.MessageInfo)and(p or ac[ae].Type~=Enum. +MessageType.MessageWarning)and(o or ac[ae].Type~=Enum.MessageType.MessageError) +then af.TextWrapped=s af.Size=UDim2.new(0.98,0,0,2000)af.Parent=c af.Text=ac[ae] +.Time..' -- '..ac[ae].Message af.Size=UDim2.new(0.98,0,0,af.TextBounds.Y)af. +Position=UDim2.new(0,5,0,ad)af.Parent=J ad=ad+af.TextBounds.Y if ag then if(j==f +and m>0)or(j==g and n>0)then changeOffset(af.TextBounds.Y)end end af.Visible= +true if ac[ae].Type==Enum.MessageType.MessageError then af.TextColor3=Color3. +new(1,0,0)elseif ac[ae].Type==Enum.MessageType.MessageInfo then af.TextColor3= +Color3.new(0.4,0.5,1)elseif ac[ae].Type==Enum.MessageType.MessageWarning then af +.TextColor3=Color3.new(1,0.6,0.4)else af.TextColor3=Color3.new(1,1,1)end end end +t=ad end local ab=false function refreshTextHolder()if ab then return end Delay( 0.1,function()ab=false refreshTextHolderForReal()end)ab=true end local ac=0 function holdingUpButton()if U then return end U=true wait(0.6)ac=ac+1 while U and ac<2 do wait()changeOffset(12)end ac=ac-1 end function holdingDownButton()if @@ -141,10 +141,10 @@ function()changeOffset(10)holdingUpButton()end)c.Body.ScrollBar.Up. MouseButton1Up:connect(function()clean()end)c.Body.ScrollBar.Down. MouseButton1Down:connect(function()changeOffset(-10)holdingDownButton()end)c. Body.ScrollBar.Down.MouseButton1Up:connect(function()clean()end)function -handleScroll(ad,ae)if not S then return end local af,_,ag=(Vector2.new(ad,ae)-S) -.Y,1-(c.Body.TextBox.AbsoluteSize.Y/J.AbsoluteSize.Y),E.AbsoluteSize.Y-E.Handle. -AbsoluteSize.Y local ah=math.max(math.min(af,ag),0-ag)local ai,aj=ah/ag,(_*J. -AbsoluteSize.Y)local ak=aj*ai if j==f then m=T-ak elseif j==g then n=T-ak end +handleScroll(ad,ae)if not S then return end local af,ag,ah=(Vector2.new(ad,ae)-S +).Y,1-(c.Body.TextBox.AbsoluteSize.Y/J.AbsoluteSize.Y),E.AbsoluteSize.Y-E.Handle +.AbsoluteSize.Y local ai=math.max(math.min(af,ah),0-ah)local aj,ak=ai/ah,(ag*J. +AbsoluteSize.Y)local al=ak*aj if j==f then m=T-al elseif j==g then n=T-al end end E.Handle.MouseButton1Down:connect(function(ad,ae)S=Vector2.new(ad,ae) pScrollHandle=E.Handle.AbsolutePosition if j==f then T=m elseif j==g then T=n end end)E.Handle.MouseButton1Up:connect(function(ad,ae)clean()end)local function @@ -159,57 +159,57 @@ then J.Position=UDim2.new(0,0,1,0-t)end else c.Body.ScrollBar.Visible=true c. Body.TextBox.Size=UDim2.new(1,-25,1,-28)local af,ag=1-ae,nil if j==f then ag=m/J .AbsoluteSize.Y elseif j==g then ag=n/J.AbsoluteSize.Y end local ah,ai=math.max( 0,af-ag),math.max(E.AbsoluteSize.Y*ae,21)local aj=ai/E.AbsoluteSize.Y local ak=( -1-aj)/(1-ae)local _=ah*ak local al=math.min(E.AbsoluteSize.Y*_,E.AbsoluteSize.Y- -ai)E.Handle.Size=UDim2.new(1,0,0,ai)E.Handle.Position=UDim2.new(0,0,0,al)if j==f -then J.Position=UDim2.new(0,0,1,0-t+m)elseif j==g then J.Position=UDim2.new(0,0, -1,0-t+n)end end end local function numberWithZero(ae)return(ae<10 and'0'or'').. -ae end local ae='%s:%s:%s'function ConvertTimeStamp(af)local ag=af-os.time()+ +1-aj)/(1-ae)local al=ah*ak local am=math.min(E.AbsoluteSize.Y*al,E.AbsoluteSize. +Y-ai)E.Handle.Size=UDim2.new(1,0,0,ai)E.Handle.Position=UDim2.new(0,0,0,am)if j +==f then J.Position=UDim2.new(0,0,1,0-t+m)elseif j==g then J.Position=UDim2.new( +0,0,1,0-t+n)end end end local function numberWithZero(ae)return(ae<10 and'0'or'' +)..ae end local ae='%s:%s:%s'function ConvertTimeStamp(af)local ag=af-os.time()+ math.floor(tick())local ah=ag%86400 local ai=math.floor(ah/3600)ah=ah-(ai*3600) -local aj=math.floor(ah/60)ah=ah-(aj*60)local ak,al,_,am=ah,numberWithZero(ai), -numberWithZero(aj),numberWithZero(ah)return ae:format(al,_,am)end x. +local aj=math.floor(ah/60)ah=ah-(aj*60)local ak,al,am=numberWithZero(ai), +numberWithZero(aj),numberWithZero(ah)return ae:format(ak,al,am)end x. ErrorToggleButton.MouseButton1Down:connect(function(af,ag)o=not o x. ErrorToggleButton.CheckFrame.Visible=o refreshTextHolder()repositionList()end)x. -WarningToggleButton.MouseButton1Down:connect(function(af,ag)p=not p x. +WarningToggleButton.MouseButton1Down:connect(function(ag,ah)p=not p x. WarningToggleButton.CheckFrame.Visible=p refreshTextHolder()repositionList()end) -x.InfoToggleButton.MouseButton1Down:connect(function(af,ag)q=not q x. +x.InfoToggleButton.MouseButton1Down:connect(function(ah,ai)q=not q x. InfoToggleButton.CheckFrame.Visible=q refreshTextHolder()repositionList()end)x. -OutputToggleButton.MouseButton1Down:connect(function(af,ag)r=not r x. +OutputToggleButton.MouseButton1Down:connect(function(ai,aj)r=not r x. OutputToggleButton.CheckFrame.Visible=r refreshTextHolder()repositionList()end)x -.WordWrapToggleButton.MouseButton1Down:connect(function(af,ag)s=not s x. +.WordWrapToggleButton.MouseButton1Down:connect(function(aj,ak)s=not s x. WordWrapToggleButton.CheckFrame.Visible=s refreshTextHolder()repositionList()end -)function AddLocalMessage(af,ag,ah)k[#k+1]={Message=af,Time=ConvertTimeStamp(ah) -,Type=ag}while#k>h do table.remove(k,1)end refreshTextHolder()repositionList() -end function AddServerMessage(af,ag,ah)l[#l+1]={Message=af,Time= -ConvertTimeStamp(ah),Type=ag}while#l>h do table.remove(l,1)end +)function AddLocalMessage(ak,al,am)k[#k+1]={Message=ak,Time=ConvertTimeStamp(am) +,Type=al}while#k>h do table.remove(k,1)end refreshTextHolder()repositionList() +end function AddServerMessage(ak,al,am)l[#l+1]={Message=ak,Time= +ConvertTimeStamp(am),Type=al}while#l>h do table.remove(l,1)end refreshTextHolder()repositionList()end c.Body.LocalConsole.MouseButton1Click: -connect(function(af,ag)if j==g then j=f local ah,ai=c.Body.LocalConsole,c.Body. -ServerConsole ah.Size=UDim2.new(0,90,0,20)ai.Size=UDim2.new(0,90,0,17)ah. -BackgroundTransparency=0.6 ai.BackgroundTransparency=0.8 if game:FindFirstChild -'Players'and game.Players['LocalPlayer']then local aj=game.Players.LocalPlayer: -GetMouse()local ak=Vector2.new(aj.X,aj.Y)refreshConsolePosition(aj.X,aj.Y) -refreshConsoleSize(aj.X,aj.Y)handleScroll(aj.X,aj.Y)end refreshTextHolder() -repositionList()end end)c.Body.LocalConsole.MouseButton1Up:connect(function() -clean()end)local af=false c.Body.ServerConsole.MouseButton1Click:connect( -function(ag,ah)if not af then af=true game:GetService'LogService': -RequestServerOutput()end if j==f then j=g local ai,aj=c.Body.LocalConsole,c.Body -.ServerConsole aj.Size=UDim2.new(0,90,0,20)ai.Size=UDim2.new(0,90,0,17)aj. -BackgroundTransparency=0.6 ai.BackgroundTransparency=0.8 if game:FindFirstChild -'Players'and game.Players['LocalPlayer']then local ak=game.Players.LocalPlayer: -GetMouse()refreshConsolePosition(ak.X,ak.Y)refreshConsoleSize(ak.X,ak.Y) -handleScroll(ak.X,ak.Y)end refreshTextHolder()repositionList()end end)c.Body. -ServerConsole.MouseButton1Up:connect(function()clean()end)if game:FindFirstChild -'Players'and game.Players['LocalPlayer']then local ag=game.Players.LocalPlayer: -GetMouse()ag.Move:connect(function()if not c.Visible then return end local ah= -game.Players.LocalPlayer:GetMouse()refreshConsolePosition(ah.X,ah.Y) -refreshConsoleSize(ah.X,ah.Y)handleScroll(ah.X,ah.Y)refreshTextHolder() -repositionList()end)ag.Button1Up:connect(function()clean()end)ag.WheelForward: -connect(function()if not c.Visible then return end if existsInsideContainer(c,ag -.X,ag.Y)then changeOffset(10)end end)ag.WheelBackward:connect(function()if not c -.Visible then return end if existsInsideContainer(c,ag.X,ag.Y)then changeOffset( --10)end end)end E.Handle.MouseButton1Down:connect(function()repositionList()end) -local ag=game:GetService'LogService':GetLogHistory()for ah=1,#ag do -AddLocalMessage(ag[ah].message,ag[ah].messageType,ag[ah].timestamp)end game: -GetService'LogService'.MessageOut:connect(function(ah,ai)AddLocalMessage(ah,ai, -os.time())end)game:GetService'LogService'.ServerMessageOut:connect( -AddServerMessage)end local ab=false function d.OnInvoke()if ab then return end -ab=true initializeDeveloperConsole()c.Visible=not c.Visible ab=false end \ No newline at end of file +connect(function(ak,al)if j==g then j=f local am,an=c.Body.LocalConsole,c.Body. +ServerConsole am.Size=UDim2.new(0,90,0,20)an.Size=UDim2.new(0,90,0,17)am. +BackgroundTransparency=0.6 an.BackgroundTransparency=0.8 if game:FindFirstChild +'Players'and game.Players['LocalPlayer']then local ao=game.Players.LocalPlayer: +GetMouse()refreshConsolePosition(ao.X,ao.Y)refreshConsoleSize(ao.X,ao.Y) +handleScroll(ao.X,ao.Y)end refreshTextHolder()repositionList()end end)c.Body. +LocalConsole.MouseButton1Up:connect(function()clean()end)local al=false c.Body. +ServerConsole.MouseButton1Click:connect(function(am,an)if not al then al=true +game:GetService'LogService':RequestServerOutput()end if j==f then j=g local ao, +ap=c.Body.LocalConsole,c.Body.ServerConsole ap.Size=UDim2.new(0,90,0,20)ao.Size= +UDim2.new(0,90,0,17)ap.BackgroundTransparency=0.6 ao.BackgroundTransparency=0.8 +if game:FindFirstChild'Players'and game.Players['LocalPlayer']then local aq=game +.Players.LocalPlayer:GetMouse()refreshConsolePosition(aq.X,aq.Y) +refreshConsoleSize(aq.X,aq.Y)handleScroll(aq.X,aq.Y)end refreshTextHolder() +repositionList()end end)c.Body.ServerConsole.MouseButton1Up:connect(function() +clean()end)if game:FindFirstChild'Players'and game.Players['LocalPlayer']then +local an=game.Players.LocalPlayer:GetMouse()an.Move:connect(function()if not c. +Visible then return end local ao=game.Players.LocalPlayer:GetMouse() +refreshConsolePosition(ao.X,ao.Y)refreshConsoleSize(ao.X,ao.Y)handleScroll(ao.X, +ao.Y)refreshTextHolder()repositionList()end)an.Button1Up:connect(function() +clean()end)an.WheelForward:connect(function()if not c.Visible then return end if +existsInsideContainer(c,an.X,an.Y)then changeOffset(10)end end)an.WheelBackward: +connect(function()if not c.Visible then return end if existsInsideContainer(c,an +.X,an.Y)then changeOffset(-10)end end)end E.Handle.MouseButton1Down:connect( +function()repositionList()end)local an=game:GetService'LogService': +GetLogHistory()for ao=1,#an do AddLocalMessage(an[ao].message,an[ao].messageType +,an[ao].timestamp)end game:GetService'LogService'.MessageOut:connect(function(ao +,ap)AddLocalMessage(ao,ap,os.time())end)game:GetService'LogService'. +ServerMessageOut:connect(AddServerMessage)end local ab=false function d.OnInvoke +()if ab then return end ab=true initializeDeveloperConsole()c.Visible=not c. +Visible ab=false end \ No newline at end of file diff --git a/processed/45284430.lua b/processed/45284430.lua index 5ef0381..fcf0373 100644 --- a/processed/45284430.lua +++ b/processed/45284430.lua @@ -56,68 +56,68 @@ Enum.TextYAlignment.Center f.Parent=e local g=Instance.new'TextLabel'g.Name= FontSize.Size18 g.TextWrap=true g.TextXAlignment=Enum.TextXAlignment.Left g. TextYAlignment=Enum.TextYAlignment.Top g.Parent=e CreateButtons(e,d,UDim.new(0.8 ,0),UDim.new(0.15,0))return e end a.CreateDropDownMenu=function(b,c,d)local e,f, -g,h=UDim.new(0,100),UDim.new(0,32),0.055,Instance.new'Frame'h.Name= -'DropDownMenu'h.BackgroundTransparency=1 h.Size=UDim2.new(e,f)local i=Instance. -new'TextButton'i.Name='DropDownMenuButton'i.TextWrap=true i.TextColor3=Color3. -new(1,1,1)i.Text='Choose One'i.Font=Enum.Font.ArialBold i.FontSize=Enum.FontSize -.Size18 i.TextXAlignment=Enum.TextXAlignment.Left i.TextYAlignment=Enum. -TextYAlignment.Center i.BackgroundTransparency=1 i.AutoButtonColor=true i.Style= -Enum.ButtonStyle.RobloxButton i.Size=UDim2.new(1,0,1,0)i.Parent=h i.ZIndex=2 -local j=Instance.new'ImageLabel'j.Name='Icon'j.Active=false j.Image= -'http://www.roblox.com/asset/?id=45732894'j.BackgroundTransparency=1 j.Size= -UDim2.new(0,11,0,6)j.Position=UDim2.new(1,-11,0.5,-2)j.Parent=i j.ZIndex=2 local -k,l,m=#b,#b,false if l>6 then m=true l=6 end local n=Instance.new'TextButton'n. -Name='List'n.Text=''n.BackgroundTransparency=1 n.Style=Enum.ButtonStyle. -RobloxButton n.Visible=false n.Active=true n.Position=UDim2.new(0,0,0,0)n.Size= -UDim2.new(1,0,(1+l)*0.8,0)n.Parent=h n.ZIndex=2 local o=Instance.new'TextButton' -o.Name='ChoiceButton'o.BackgroundTransparency=1 o.BorderSizePixel=0 o.Text= -'ReplaceMe'o.TextColor3=Color3.new(1,1,1)o.TextXAlignment=Enum.TextXAlignment. -Left o.TextYAlignment=Enum.TextYAlignment.Center o.BackgroundColor3=Color3.new(1 -,1,1)o.Font=Enum.Font.Arial o.FontSize=Enum.FontSize.Size18 if m then o.Size= -UDim2.new(1,-13,0.8/((l+1)*0.8),0)else o.Size=UDim2.new(1,0,0.8/((l+1)*0.8),0) -end o.TextWrap=true o.ZIndex=2 local p=Instance.new'TextButton'p.Name='AreaSoak' -p.Text=''p.BackgroundTransparency=1 p.Active=true p.Size=UDim2.new(1,0,1,0)p. -Visible=false p.ZIndex=3 local q,r,s,t=false,nil,nil,0 local u,v=function(u)n. -ZIndex=u+1 if r then r.ZIndex=u+3 end if s then s.ZIndex=u+3 end local v=n: -GetChildren()if v then for w,x in ipairs(v)do if x.Name=='ChoiceButton'then x. -ZIndex=u+2 elseif x.Name=='ClickCaptureButton'then x.ZIndex=u end end end end,1 -local w=function()if r then r.Active=v>1 end if s then s.Active=v+l<=k end local -w=n:GetChildren()if not w then return end local x=1 for y,z in ipairs(w)do if z. -Name=='ChoiceButton'then if x=v+l then z.Visible=false else z.Position= -UDim2.new(0,0,((x-v+1)*0.8)/((l+1)*0.8),0)z.Visible=true end z.TextColor3=Color3 -.new(1,1,1)z.BackgroundTransparency=1 x=x+1 end end end local x=function()q=not -q p.Visible=not p.Visible i.Visible=not q n.Visible=q if q then u(4)else u(2)end -if m then w()end end n.MouseButton1Click:connect(x)local y=function(y)local z,A, -B=false,n:GetChildren(),1 if A then for C,D in ipairs(A)do if D.Name== -'ChoiceButton'then if D.Text==y then D.Font=Enum.Font.ArialBold z=true v=B else -D.Font=Enum.Font.Arial end B=B+1 end end end if not y then i.Text='Choose One'v= -1 else if not z then error('Invalid Selection Update -- '..y)end if v+l>k+1 then -v=k-l+1 end i.Text=y end end local function scrollDown()if v+l<=k then v=v+1 w() -return true end return false end local function scrollUp()if v>1 then v=v-1 w() -return true end return false end if m then r=Instance.new'ImageButton'r.Name= -'ScrollUpButton'r.BackgroundTransparency=1 r.Image= -'rbxasset://textures/ui/scrollbuttonUp.png'r.Size=UDim2.new(0,17,0,17)r.Position -=UDim2.new(1,-11,(0.8)/((l+1)*0.8),0)r.MouseButton1Click:connect(function()t=t+1 -end)r.MouseLeave:connect(function()t=t+1 end)r.MouseButton1Down:connect(function -()t=t+1 scrollUp()local z=t wait(0.5)while z==t do if scrollUp()==false then -break end wait(0.1)end end)r.Parent=n s=Instance.new'ImageButton's.Name= -'ScrollDownButton's.BackgroundTransparency=1 s.Image= -'rbxasset://textures/ui/scrollbuttonDown.png's.Size=UDim2.new(0,17,0,17)s. -Position=UDim2.new(1,-11,1,-11)s.Parent=n s.MouseButton1Click:connect(function() -t=t+1 end)s.MouseLeave:connect(function()t=t+1 end)s.MouseButton1Down:connect( -function()t=t+1 scrollDown()local z=t wait(0.5)while z==t do if scrollDown()== -false then break end wait(0.1)end end)local z=Instance.new'ImageLabel'z.Name= -'ScrollBar'z.Image='rbxasset://textures/ui/scrollbar.png'z. -BackgroundTransparency=1 z.Size=UDim2.new(0,18,(l*0.8)/((l+1)*0.8),-32)z. -Position=UDim2.new(1,-11,(0.8)/((l+1)*0.8),19)z.Parent=n end for z,A in ipairs(b -)do local B=o:clone()if d then B.RobloxLocked=true end B.Text=A B.Parent=n B. -MouseButton1Click:connect(function()B.TextColor3=Color3.new(1,1,1)B. -BackgroundTransparency=1 y(A)c(A)x()end)B.MouseEnter:connect(function()B. -TextColor3=Color3.new(0,0,0)B.BackgroundTransparency=0 end)B.MouseLeave:connect( -function()B.TextColor3=Color3.new(1,1,1)B.BackgroundTransparency=1 end)end w()h. -AncestryChanged:connect(function(B,C)if C==nil then p.Parent=nil else p.Parent= -getScreenGuiAncestor(h)end end)i.MouseButton1Click:connect(x)p.MouseButton1Click -:connect(x)return h,y end a.CreatePropertyDropDownMenu=function(b,c,d)local e,f, +g=UDim.new(0,100),UDim.new(0,32),Instance.new'Frame'g.Name='DropDownMenu'g. +BackgroundTransparency=1 g.Size=UDim2.new(e,f)local h=Instance.new'TextButton'h. +Name='DropDownMenuButton'h.TextWrap=true h.TextColor3=Color3.new(1,1,1)h.Text= +'Choose One'h.Font=Enum.Font.ArialBold h.FontSize=Enum.FontSize.Size18 h. +TextXAlignment=Enum.TextXAlignment.Left h.TextYAlignment=Enum.TextYAlignment. +Center h.BackgroundTransparency=1 h.AutoButtonColor=true h.Style=Enum. +ButtonStyle.RobloxButton h.Size=UDim2.new(1,0,1,0)h.Parent=g h.ZIndex=2 local i= +Instance.new'ImageLabel'i.Name='Icon'i.Active=false i.Image= +'http://www.roblox.com/asset/?id=45732894'i.BackgroundTransparency=1 i.Size= +UDim2.new(0,11,0,6)i.Position=UDim2.new(1,-11,0.5,-2)i.Parent=h i.ZIndex=2 local +j,k,l=#b,#b,false if k>6 then l=true k=6 end local m=Instance.new'TextButton'm. +Name='List'm.Text=''m.BackgroundTransparency=1 m.Style=Enum.ButtonStyle. +RobloxButton m.Visible=false m.Active=true m.Position=UDim2.new(0,0,0,0)m.Size= +UDim2.new(1,0,(1+k)*0.8,0)m.Parent=g m.ZIndex=2 local n=Instance.new'TextButton' +n.Name='ChoiceButton'n.BackgroundTransparency=1 n.BorderSizePixel=0 n.Text= +'ReplaceMe'n.TextColor3=Color3.new(1,1,1)n.TextXAlignment=Enum.TextXAlignment. +Left n.TextYAlignment=Enum.TextYAlignment.Center n.BackgroundColor3=Color3.new(1 +,1,1)n.Font=Enum.Font.Arial n.FontSize=Enum.FontSize.Size18 if l then n.Size= +UDim2.new(1,-13,0.8/((k+1)*0.8),0)else n.Size=UDim2.new(1,0,0.8/((k+1)*0.8),0) +end n.TextWrap=true n.ZIndex=2 local o=Instance.new'TextButton'o.Name='AreaSoak' +o.Text=''o.BackgroundTransparency=1 o.Active=true o.Size=UDim2.new(1,0,1,0)o. +Visible=false o.ZIndex=3 local p,q,r,s=false,nil,nil,0 local t,u=function(t)m. +ZIndex=t+1 if q then q.ZIndex=t+3 end if r then r.ZIndex=t+3 end local u=m: +GetChildren()if u then for v,w in ipairs(u)do if w.Name=='ChoiceButton'then w. +ZIndex=t+2 elseif w.Name=='ClickCaptureButton'then w.ZIndex=t end end end end,1 +local v=function()if q then q.Active=u>1 end if r then r.Active=u+k<=j end local +v=m:GetChildren()if not v then return end local w=1 for x,y in ipairs(v)do if y. +Name=='ChoiceButton'then if w=u+k then y.Visible=false else y.Position= +UDim2.new(0,0,((w-u+1)*0.8)/((k+1)*0.8),0)y.Visible=true end y.TextColor3=Color3 +.new(1,1,1)y.BackgroundTransparency=1 w=w+1 end end end local w=function()p=not +p o.Visible=not o.Visible h.Visible=not p m.Visible=p if p then t(4)else t(2)end +if l then v()end end m.MouseButton1Click:connect(w)local x=function(x)local y,z, +A=false,m:GetChildren(),1 if z then for B,C in ipairs(z)do if C.Name== +'ChoiceButton'then if C.Text==x then C.Font=Enum.Font.ArialBold y=true u=A else +C.Font=Enum.Font.Arial end A=A+1 end end end if not x then h.Text='Choose One'u= +1 else if not y then error('Invalid Selection Update -- '..x)end if u+k>j+1 then +u=j-k+1 end h.Text=x end end local function scrollDown()if u+k<=j then u=u+1 v() +return true end return false end local function scrollUp()if u>1 then u=u-1 v() +return true end return false end if l then q=Instance.new'ImageButton'q.Name= +'ScrollUpButton'q.BackgroundTransparency=1 q.Image= +'rbxasset://textures/ui/scrollbuttonUp.png'q.Size=UDim2.new(0,17,0,17)q.Position +=UDim2.new(1,-11,(0.8)/((k+1)*0.8),0)q.MouseButton1Click:connect(function()s=s+1 +end)q.MouseLeave:connect(function()s=s+1 end)q.MouseButton1Down:connect(function +()s=s+1 scrollUp()local y=s wait(0.5)while y==s do if scrollUp()==false then +break end wait(0.1)end end)q.Parent=m r=Instance.new'ImageButton'r.Name= +'ScrollDownButton'r.BackgroundTransparency=1 r.Image= +'rbxasset://textures/ui/scrollbuttonDown.png'r.Size=UDim2.new(0,17,0,17)r. +Position=UDim2.new(1,-11,1,-11)r.Parent=m r.MouseButton1Click:connect(function() +s=s+1 end)r.MouseLeave:connect(function()s=s+1 end)r.MouseButton1Down:connect( +function()s=s+1 scrollDown()local y=s wait(0.5)while y==s do if scrollDown()== +false then break end wait(0.1)end end)local y=Instance.new'ImageLabel'y.Name= +'ScrollBar'y.Image='rbxasset://textures/ui/scrollbar.png'y. +BackgroundTransparency=1 y.Size=UDim2.new(0,18,(k*0.8)/((k+1)*0.8),-32)y. +Position=UDim2.new(1,-11,(0.8)/((k+1)*0.8),19)y.Parent=m end for y,z in ipairs(b +)do local A=n:clone()if d then A.RobloxLocked=true end A.Text=z A.Parent=m A. +MouseButton1Click:connect(function()A.TextColor3=Color3.new(1,1,1)A. +BackgroundTransparency=1 x(z)c(z)w()end)A.MouseEnter:connect(function()A. +TextColor3=Color3.new(0,0,0)A.BackgroundTransparency=0 end)A.MouseLeave:connect( +function()A.TextColor3=Color3.new(1,1,1)A.BackgroundTransparency=1 end)end v()g. +AncestryChanged:connect(function(A,B)if B==nil then o.Parent=nil else o.Parent= +getScreenGuiAncestor(g)end end)h.MouseButton1Click:connect(w)o.MouseButton1Click +:connect(w)return g,x end a.CreatePropertyDropDownMenu=function(b,c,d)local e,f, g=d:GetEnumItems(),{},{}for h,i in ipairs(e)do f[h]=i.Name g[i.Name]=i end local j,k j,k=a.CreateDropDownMenu(f,function(l)b[c]=g[l]end)ScopedConnect(j,b, 'Changed',function(l)if l==c then k(b[c].Name)end end,function()k(b[c].Name)end) @@ -161,335 +161,330 @@ d={}end if not d['TextLabelSizePadY']then d['TextLabelSizePadY']=0 end if not d[ 1,0)g.Parent=b for h,i in ipairs(c)do i.Parent=g end local j=function()wait() layoutGuiObjectsHelper(g,c,d)end b.Changed:connect(function(k)if k== 'AbsoluteSize'then j(nil)end end)b.AncestryChanged:connect(j) -layoutGuiObjectsHelper(g,c,d)end a.CreateSlider=function(b,c,d)local g=Instance. -new'Frame'g.Size=UDim2.new(1,0,1,0)g.BackgroundTransparency=1 g.Name='SliderGui' -local h=Instance.new'IntValue'h.Name='SliderSteps'h.Value=b h.Parent=g local i= -Instance.new'TextButton'i.Name='AreaSoak'i.Text=''i.BackgroundTransparency=1 i. -Active=false i.Size=UDim2.new(1,0,1,0)i.Visible=false i.ZIndex=4 g. -AncestryChanged:connect(function(j,k)if k==nil then i.Parent=nil else i.Parent= -getScreenGuiAncestor(g)end end)local j=Instance.new'IntValue'j.Name= -'SliderPosition'j.Value=0 j.Parent=g local k,l=math.random(1,100),Instance.new -'TextButton'l.Text=''l.AutoButtonColor=false l.Name='Bar'l.BackgroundColor3= -Color3.new(0,0,0)if type(c)=='number'then l.Size=UDim2.new(0,c,0,5)else l.Size= -UDim2.new(0,200,0,5)end l.BorderColor3=Color3.new(0.37254901960784315, -0.37254901960784315,0.37254901960784315)l.ZIndex=2 l.Parent=g if d['X']and d['X' +layoutGuiObjectsHelper(g,c,d)end a.CreateSlider=function(b,c,d)local e=Instance. +new'Frame'e.Size=UDim2.new(1,0,1,0)e.BackgroundTransparency=1 e.Name='SliderGui' +local g=Instance.new'IntValue'g.Name='SliderSteps'g.Value=b g.Parent=e local h= +Instance.new'TextButton'h.Name='AreaSoak'h.Text=''h.BackgroundTransparency=1 h. +Active=false h.Size=UDim2.new(1,0,1,0)h.Visible=false h.ZIndex=4 e. +AncestryChanged:connect(function(i,j)if j==nil then h.Parent=nil else h.Parent= +getScreenGuiAncestor(e)end end)local i=Instance.new'IntValue'i.Name= +'SliderPosition'i.Value=0 i.Parent=e local j,k=math.random(1,100),Instance.new +'TextButton'k.Text=''k.AutoButtonColor=false k.Name='Bar'k.BackgroundColor3= +Color3.new(0,0,0)if type(c)=='number'then k.Size=UDim2.new(0,c,0,5)else k.Size= +UDim2.new(0,200,0,5)end k.BorderColor3=Color3.new(0.37254901960784315, +0.37254901960784315,0.37254901960784315)k.ZIndex=2 k.Parent=e if d['X']and d['X' ]['Scale']and d['X']['Offset']and d['Y']and d['Y']['Scale']and d['Y']['Offset'] -then l.Position=d end local m=Instance.new'ImageButton'm.Name='Slider'm. -BackgroundTransparency=1 m.Image='rbxasset://textures/ui/Slider.png'm.Position= -UDim2.new(0,0,0.5,-10)m.Size=UDim2.new(0,20,0,20)m.ZIndex=3 m.Parent=l local n= -nil i.MouseLeave:connect(function()if i.Visible then cancelSlide(i)end end)i. -MouseButton1Up:connect(function()if i.Visible then cancelSlide(i)end end)m. -MouseButton1Down:connect(function()i.Visible=true if n then n:disconnect()end n= -i.MouseMoved:connect(function(o,p)setSliderPos(o,m,j,l,b)end)end)m. -MouseButton1Up:connect(function()cancelSlide(i)end)j.Changed:connect(function(o) -j.Value=math.min(b,math.max(1,j.Value))local p=(j.Value-1)/(b-1)m.Position=UDim2 -.new(p,-m.AbsoluteSize.X/2,m.Position.Y.Scale,m.Position.Y.Offset)end)l. -MouseButton1Down:connect(function(o,p)setSliderPos(o,m,j,l,b)end)return g,j,h -end a.CreateTrueScrollingFrame=function()local b,c,d,g,h,i,j=nil,nil,nil,nil, -false,{},Instance.new'Frame'j.Name='ScrollingFrame'j.Active=true j.Size=UDim2. -new(1,0,1,0)j.ClipsDescendants=true local k=Instance.new'Frame'k.Name= -'ControlFrame'k.BackgroundTransparency=1 k.Size=UDim2.new(0,18,1,0)k.Position= -UDim2.new(1,-20,0,0)k.Parent=j local l=Instance.new'BoolValue'l.Value=false l. -Name='ScrollBottom'l.Parent=k local m=Instance.new'BoolValue'm.Value=false m. -Name='scrollUp'm.Parent=k local n=Instance.new'TextButton'n.Name= -'ScrollUpButton'n.Text=''n.AutoButtonColor=false n.BackgroundColor3=Color3.new(0 -,0,0)n.BorderColor3=Color3.new(1,1,1)n.BackgroundTransparency=0.5 n.Size=UDim2. -new(0,18,0,18)n.ZIndex=2 n.Parent=k for o=1,6 do local p=Instance.new'Frame'p. -BorderColor3=Color3.new(1,1,1)p.Name='tri'..tostring(o)p.ZIndex=3 p. -BackgroundTransparency=0.5 p.Size=UDim2.new(0,12-((o-1)*2),0,0)p.Position=UDim2. -new(0,3+(o-1),0.5,2-(o-1))p.Parent=n end n.MouseEnter:connect(function()n. -BackgroundTransparency=0.1 local o=n:GetChildren()for p=1,#o do o[p]. +then k.Position=d end local l=Instance.new'ImageButton'l.Name='Slider'l. +BackgroundTransparency=1 l.Image='rbxasset://textures/ui/Slider.png'l.Position= +UDim2.new(0,0,0.5,-10)l.Size=UDim2.new(0,20,0,20)l.ZIndex=3 l.Parent=k local m= +nil h.MouseLeave:connect(function()if h.Visible then cancelSlide(h)end end)h. +MouseButton1Up:connect(function()if h.Visible then cancelSlide(h)end end)l. +MouseButton1Down:connect(function()h.Visible=true if m then m:disconnect()end m= +h.MouseMoved:connect(function(n,o)setSliderPos(n,l,i,k,b)end)end)l. +MouseButton1Up:connect(function()cancelSlide(h)end)i.Changed:connect(function(n) +i.Value=math.min(b,math.max(1,i.Value))local o=(i.Value-1)/(b-1)l.Position=UDim2 +.new(o,-l.AbsoluteSize.X/2,l.Position.Y.Scale,l.Position.Y.Offset)end)k. +MouseButton1Down:connect(function(n,o)setSliderPos(n,l,i,k,b)end)return e,i,g +end a.CreateTrueScrollingFrame=function()local b,c,d,e,g,h,i=nil,nil,nil,nil, +false,{},Instance.new'Frame'i.Name='ScrollingFrame'i.Active=true i.Size=UDim2. +new(1,0,1,0)i.ClipsDescendants=true local j=Instance.new'Frame'j.Name= +'ControlFrame'j.BackgroundTransparency=1 j.Size=UDim2.new(0,18,1,0)j.Position= +UDim2.new(1,-20,0,0)j.Parent=i local k=Instance.new'BoolValue'k.Value=false k. +Name='ScrollBottom'k.Parent=j local l=Instance.new'BoolValue'l.Value=false l. +Name='scrollUp'l.Parent=j local m=Instance.new'TextButton'm.Name= +'ScrollUpButton'm.Text=''m.AutoButtonColor=false m.BackgroundColor3=Color3.new(0 +,0,0)m.BorderColor3=Color3.new(1,1,1)m.BackgroundTransparency=0.5 m.Size=UDim2. +new(0,18,0,18)m.ZIndex=2 m.Parent=j for n=1,6 do local o=Instance.new'Frame'o. +BorderColor3=Color3.new(1,1,1)o.Name='tri'..tostring(n)o.ZIndex=3 o. +BackgroundTransparency=0.5 o.Size=UDim2.new(0,12-((n-1)*2),0,0)o.Position=UDim2. +new(0,3+(n-1),0.5,2-(n-1))o.Parent=m end m.MouseEnter:connect(function()m. +BackgroundTransparency=0.1 local n=m:GetChildren()for o=1,#n do n[o]. +BackgroundTransparency=0.1 end end)m.MouseLeave:connect(function()m. +BackgroundTransparency=0.5 local n=m:GetChildren()for o=1,#n do n[o]. +BackgroundTransparency=0.5 end end)local n=m:clone()n.Name='ScrollDownButton'n. +Position=UDim2.new(0,0,1,-18)local o=n:GetChildren()for p=1,#o do o[p].Position= +UDim2.new(0,3+(p-1),0.5,-2+(p-1))end n.MouseEnter:connect(function()n. +BackgroundTransparency=0.1 local p=n:GetChildren()for q=1,#p do p[q]. BackgroundTransparency=0.1 end end)n.MouseLeave:connect(function()n. -BackgroundTransparency=0.5 local o=n:GetChildren()for p=1,#o do o[p]. -BackgroundTransparency=0.5 end end)local o=n:clone()o.Name='ScrollDownButton'o. -Position=UDim2.new(0,0,1,-18)local p=o:GetChildren()for q=1,#p do p[q].Position= -UDim2.new(0,3+(q-1),0.5,-2+(q-1))end o.MouseEnter:connect(function()o. -BackgroundTransparency=0.1 local q=o:GetChildren()for r=1,#q do q[r]. -BackgroundTransparency=0.1 end end)o.MouseLeave:connect(function()o. -BackgroundTransparency=0.5 local q=o:GetChildren()for r=1,#q do q[r]. -BackgroundTransparency=0.5 end end)o.Parent=k local q=Instance.new'Frame'q.Name= -'ScrollTrack'q.BackgroundTransparency=1 q.Size=UDim2.new(0,18,1,-38)q.Position= -UDim2.new(0,0,0,19)q.Parent=k local r=Instance.new'TextButton'r.BackgroundColor3 -=Color3.new(0,0,0)r.BorderColor3=Color3.new(1,1,1)r.BackgroundTransparency=0.5 r -.AutoButtonColor=false r.Text=''r.Active=true r.Name='ScrollBar'r.ZIndex=2 r. -BackgroundTransparency=0.5 r.Size=UDim2.new(0,18,0.1,0)r.Position=UDim2.new(0,0, -0,0)r.Parent=q local s=Instance.new'Frame's.Name='ScrollNub's.BorderColor3= -Color3.new(1,1,1)s.Size=UDim2.new(0,10,0,0)s.Position=UDim2.new(0.5,-5,0.5,0)s. -ZIndex=2 s.BackgroundTransparency=0.5 s.Parent=r local t=s:clone()t.Position= -UDim2.new(0.5,-5,0.5,-2)t.Parent=r local u=s:clone()u.Position=UDim2.new(0.5,-5, -0.5,2)u.Parent=r r.MouseEnter:connect(function()r.BackgroundTransparency=0.1 s. -BackgroundTransparency=0.1 t.BackgroundTransparency=0.1 u.BackgroundTransparency -=0.1 end)r.MouseLeave:connect(function()r.BackgroundTransparency=0.5 s. -BackgroundTransparency=0.5 t.BackgroundTransparency=0.5 u.BackgroundTransparency -=0.5 end)local v=Instance.new'ImageButton'v.Active=false v.Size=UDim2.new(1.5,0, -1.5,0)v.AutoButtonColor=false v.BackgroundTransparency=1 v.Name='mouseDrag'v. -Position=UDim2.new(-0.25,0,-0.25,0)v.ZIndex=10 local function positionScrollBar( -w,x,y)local z=r.Position if x(q.AbsolutePosition.y+q.AbsoluteSize.y)then -r.Position=UDim2.new(r.Position.X.Scale,r.Position.X.Offset,1-A,0)return(z~=r. -Position)end local B=(x-q.AbsolutePosition.y-y)/q.AbsoluteSize.y if B+A>1 then B -=1-A l.Value=true m.Value=false elseif B<=0 then B=0 m.Value=true l.Value=false -else m.Value=false l.Value=false end r.Position=UDim2.new(r.Position.X.Scale,r. -Position.X.Offset,B,0)return(z~=r.Position)end local function -drillDownSetHighLow(w)if not w or not w:IsA'GuiObject'then return end if w==k -then return end if w:IsDescendantOf(k)then return end if not w.Visible then -return end if b and b>w.AbsolutePosition.Y then b=w.AbsolutePosition.Y elseif -not b then b=w.AbsolutePosition.Y end if c and c<(w.AbsolutePosition.Y+w. -AbsoluteSize.Y)then c=w.AbsolutePosition.Y+w.AbsoluteSize.Y elseif not c then c= -w.AbsolutePosition.Y+w.AbsoluteSize.Y end local x=w:GetChildren()for y=1,#x do -drillDownSetHighLow(x[y])end end local function resetHighLow()local w=j: -GetChildren()for x=1,#w do drillDownSetHighLow(w[x])end end local function -recalculate()h=true local w=0 if r.Position.Y.Scale>0 then if r.Visible then w=r -.Position.Y.Scale/((q.AbsoluteSize.Y-r.AbsoluteSize.Y)/q.AbsoluteSize.Y)else w=0 -end end if w>0.99 then w=1 end local x,y=(j.AbsoluteSize.Y-(c-b))*w,j: -GetChildren()for z=1,#y do if y[z]~=k then y[z].Position=UDim2.new(y[z].Position -.X.Scale,y[z].Position.X.Offset,0,math.ceil(y[z].AbsolutePosition.Y)-math.ceil(b -)+x)end end b=nil c=nil resetHighLow()h=false end local function -setSliderSizeAndPosition()if not c or not b then return end local w=math.abs(c-b -)if w==0 then r.Visible=false o.Visible=false n.Visible=false if d then d: -disconnect()d=nil end if g then g:disconnect()g=nil end return end local x=j. -AbsoluteSize.Y/w if x>=1 then r.Visible=false o.Visible=false n.Visible=false -recalculate()else r.Visible=true o.Visible=true n.Visible=true r.Size=UDim2.new( -r.Size.X.Scale,r.Size.X.Offset,x,0)end local y=(j.AbsolutePosition.Y-b)/w r. -Position=UDim2.new(r.Position.X.Scale,r.Position.X.Offset,y,-r.AbsoluteSize.X/2) -if r.AbsolutePosition.y(q.AbsolutePosition.y+q.AbsoluteSize.y)then local z=r. -AbsoluteSize.Y/q.AbsoluteSize.Y r.Position=UDim2.new(r.Position.X.Scale,r. -Position.X.Offset,1-z,0)end end local w,x=7,false local function doScrollUp()if -x then return end x=true if positionScrollBar(0,r.AbsolutePosition.Y-w,0)then -recalculate()end x=false end local y=false local function doScrollDown()if y -then return end y=true if positionScrollBar(0,r.AbsolutePosition.Y+w,0)then -recalculate()end y=false end local function scrollUp(z)if n.Active then -scrollStamp=tick()local A,B=scrollStamp,nil B=v.MouseButton1Up:connect(function( -)scrollStamp=tick()v.Parent=nil B:disconnect()end)v.Parent=getScreenGuiAncestor( -r)doScrollUp()wait(0.2)local C,D=tick(),0.1 while scrollStamp==A do doScrollUp() -if z and z>r.AbsolutePosition.y then break end if not n.Active then break end if -tick()-C>5 then D=0 elseif tick()-C>2 then D=0.06 end wait(D)end end end -local function scrollDown(z)if o.Active then scrollStamp=tick()local A,B= -scrollStamp,nil B=v.MouseButton1Up:connect(function()scrollStamp=tick()v.Parent= -nil B:disconnect()end)v.Parent=getScreenGuiAncestor(r)doScrollDown()wait(0.2) -local C,D=tick(),0.1 while scrollStamp==A do doScrollDown()if z and z<(r. -AbsolutePosition.y+r.AbsoluteSize.x)then break end if not o.Active then break -end if tick()-C>5 then D=0 elseif tick()-C>2 then D=0.06 end wait(D)end end end -r.MouseButton1Down:connect(function(z,A)if r.Active then scrollStamp=tick()local -B=A-r.AbsolutePosition.y if d then d:disconnect()d=nil end if g then g: -disconnect()g=nil end local C,D=A,false d=v.MouseMoved:connect(function(E,F)if D -then return end D=true if positionScrollBar(E,F,B)then recalculate()end D=false -end)g=v.MouseButton1Up:connect(function()scrollStamp=tick()v.Parent=nil d: -disconnect()d=nil g:disconnect()drag=nil end)v.Parent=getScreenGuiAncestor(r)end -end)local z=0 n.MouseButton1Down:connect(function()m()end)n.MouseButton1Up: -connect(function()scrollStamp=tick()end)o.MouseButton1Up:connect(function() -scrollStamp=tick()end)o.MouseButton1Down:connect(function()scrollDown()end)r. -MouseButton1Up:connect(function()scrollStamp=tick()end)local function -heightCheck(A)if c and(A.AbsolutePosition.Y+A.AbsoluteSize.Y)>c then c=A. -AbsolutePosition.Y+A.AbsoluteSize.Y elseif not c then c=A.AbsolutePosition.Y+A. -AbsoluteSize.Y end setSliderSizeAndPosition()end local function highLowRecheck() -local A,B=b,c b=nil c=nil resetHighLow()if(b~=A)or(c~=B)then -setSliderSizeAndPosition()end end local function descendantChanged(A,B)if h then -return end if not A.Visible then return end if B=='Size'or B=='Position'then -wait()highLowRecheck()end end j.DescendantAdded:connect(function(A)if not A:IsA -'GuiObject'then return end if A.Visible then wait()highLowRecheck()end i[A]=A. -Changed:connect(function(B)descendantChanged(A,B)end)end)j.DescendantRemoving: -connect(function(A)if not A:IsA'GuiObject'then return end if i[A]then i[A]: -disconnect()i[A]=nil end wait()highLowRecheck()end)j.Changed:connect(function(A) -if A=='AbsoluteSize'then if not c or not b then return end highLowRecheck() -setSliderSizeAndPosition()end end)return j,k end a.CreateScrollingFrame=function -(b,c)local d=Instance.new'Frame'd.Name='ScrollingFrame'd.BackgroundTransparency= -1 d.Size=UDim2.new(1,0,1,0)local g=Instance.new'ImageButton'g.Name= -'ScrollUpButton'g.BackgroundTransparency=1 g.Image= -'rbxasset://textures/ui/scrollbuttonUp.png'g.Size=UDim2.new(0,17,0,17)local h= -Instance.new'ImageButton'h.Name='ScrollDownButton'h.BackgroundTransparency=1 h. -Image='rbxasset://textures/ui/scrollbuttonDown.png'h.Size=UDim2.new(0,17,0,17) -local i=Instance.new'ImageButton'i.Name='ScrollBar'i.Image= -'rbxasset://textures/ui/scrollbar.png'i.BackgroundTransparency=1 i.Size=UDim2. -new(0,18,0,150)local j,k=0,Instance.new'ImageButton'k.Image= -'http://www.roblox.com/asset/?id=61367186'k.Size=UDim2.new(1,0,0,16)k. -BackgroundTransparency=1 k.Name='ScrollDrag'k.Active=true k.Parent=i local l= -Instance.new'ImageButton'l.Active=false l.Size=UDim2.new(1.5,0,1.5,0)l. -AutoButtonColor=false l.BackgroundTransparency=1 l.Name='mouseDrag'l.Position= -UDim2.new(-0.25,0,-0.25,0)l.ZIndex=10 local m='simple'if c and tostring(c)then m -=c end local n,o,p=1,0,0 local q,r,s,t=function()p=0 local q={}if b then for r,s -in ipairs(b)do if s.Parent==d then table.insert(q,s)end end else local r=d: -GetChildren()if r then for s,t in ipairs(r)do if t:IsA'GuiObject'then table. -insert(q,t)end end end end if#q==0 then g.Active=false h.Active=false k.Active= -false n=1 return end if n>#q then n=#q end if n<1 then n=1 end local r,s,t,u,v,w -,x,y,z=d.AbsoluteSize.Y,d.AbsoluteSize.Y,d.AbsoluteSize.X,0,0,true,0,#q,0 y=n -while y<=#q and x=t then x=x+z z=0 u=q[y]. -AbsoluteSize.X end if q[y].AbsoluteSize.Y>z then z=q[y].AbsoluteSize.Y end y=y+1 -end x=x+z z=0 y=n-1 u=0 while x+z=1 do u=u+q[y].AbsoluteSize.X v=v+1 if -u>=t then o=v-1 v=0 u=q[y].AbsoluteSize.X if x+z<=r then x=x+z if n<=o then n=1 -break else n=n-o end z=0 else break end end if q[y].AbsoluteSize.Y>z then z=q[y] -.AbsoluteSize.Y end y=y-1 end if(y==0)and(x+z<=r)then n=1 end u=0 v=0 w=true -local A,B,C=0,0 if q[1]then C=math.ceil(math.floor(math.fmod(r,q[1].AbsoluteSize -.X))/2)B=math.ceil(math.floor(math.fmod(t,q[1].AbsoluteSize.Y))/2)end for D,E in -ipairs(q)do if D=t then if w then o=v-1 w=false end u=0 s -=s-E.AbsoluteSize.Y end E.Position=UDim2.new(E.Position.X.Scale,u+B,0,r-s+C)u=u+ -E.AbsoluteSize.X E.Visible=((s-E.AbsoluteSize.Y)>=0)if E.Visible then p=p+1 end -A=E.AbsoluteSize end end end g.Active=(n>1)if A==0 then h.Active=false else h. -Active=((s-A.Y)<0)end k.Active=#q>p k.Visible=k.Active end,function()local q={}p -=0 if b then for r,s in ipairs(b)do if s.Parent==d then table.insert(q,s)end end -else local r=d:GetChildren()if r then for s,t in ipairs(r)do if t:IsA'GuiObject' -then table.insert(q,t)end end end end if#q==0 then g.Active=false h.Active=false -k.Active=false n=1 return end if n>#q then n=#q end local r,s,t,u=d.AbsoluteSize -.Y,d.AbsoluteSize.Y,0,#q while t=1 do if u>=n then t=t+q[u]. -AbsoluteSize.Y else if t+q[u].AbsoluteSize.Y<=r then t=t+q[u].AbsoluteSize.Y if -n<=1 then n=1 break else n=n-1 end else break end end u=u-1 end u=n for v,w in -ipairs(q)do if v=0 then w.Visible=true p=p+1 else w.Visible=false end end -end end g.Active=(n>1)h.Active=(s<0)k.Active=#q>p k.Visible=k.Active end, -function()local q,r=0,d:GetChildren()if r then for s,t in ipairs(r)do if t:IsA -'GuiObject'then q=q+1 end end end if not k.Parent then return end local s=k. -Parent.AbsoluteSize.y*(1/(q-p+1))if s<16 then s=16 end k.Size=UDim2.new(k.Size.X -.Scale,k.Size.X.Offset,k.Size.Y.Scale,s)local t=(n-1)/(q-p)if t>1 then t=1 -elseif t<0 then t=0 end local u=0 if t~=0 then u=(t*i.AbsoluteSize.y)-(t*k. -AbsoluteSize.y)end k.Position=UDim2.new(k.Position.X.Scale,k.Position.X.Offset,k -.Position.Y.Scale,u)end,false local u=function()if t then return end t=true -wait()local u,v=nil if m=='grid'then u,v=pcall(function()q()end)elseif m== -'simple'then u,v=pcall(function()r()end)end if not u then print(v)end s()t=false -end local v,w=function()n=n-o if n<1 then n=1 end u(nil)end,function()n=n+o u( -nil)end local x,y,z=function(x)if g.Active then j=tick()local y,z=j,nil z=l. -MouseButton1Up:connect(function()j=tick()l.Parent=nil z:disconnect()end)l.Parent -=getScreenGuiAncestor(i)v()wait(0.2)local A,B=tick(),0.1 while j==y do v()if x -and x>k.AbsolutePosition.y then break end if not g.Active then break end if -tick()-A>5 then B=0 elseif tick()-A>2 then B=0.06 end wait(B)end end end, -function(x)if h.Active then j=tick()local y,z=j,nil z=l.MouseButton1Up:connect( -function()j=tick()l.Parent=nil z:disconnect()end)l.Parent=getScreenGuiAncestor(i -)w()wait(0.2)local A,B=tick(),0.1 while j==y do w()if x and x<(k. -AbsolutePosition.y+k.AbsoluteSize.x)then break end if not h.Active then break -end if tick()-A>5 then B=0 elseif tick()-A>2 then B=0.06 end wait(B)end end end, -0 k.MouseButton1Down:connect(function(A,B)if k.Active then j=tick()local C,D,E=B --k.AbsolutePosition.y,nil,nil D=l.MouseMoved:connect(function(F,G)local H,I,J=i. -AbsolutePosition.y,i.AbsoluteSize.y,k.AbsoluteSize.y local K=H+I-J G=G-C G=GK and K or G G=G-H local L,M=0,d:GetChildren()if M then for N,O in -ipairs(M)do if O:IsA'GuiObject'then L=L+1 end end end local N,O,P=G/(I-J),o,L-(p --1)local Q=math.floor((N*P)+0.5)+O if Q(k.AbsoluteSize.y+k. -AbsolutePosition.y)then y(C)elseif Cc then return b end local g=b while b<=c do local h=b+math -.floor((c-b)/2)if d(h)and(g==nil or gc then return b end local g=c while -b<=c do local h=b+math.floor((c-b)/2)if d(h)and(g==nil or g>h)then g=h c=h-1 -else b=h+1 end end return g end local function getGuiOwner(b)while b~=nil do if +BackgroundTransparency=0.5 local p=n:GetChildren()for q=1,#p do p[q]. +BackgroundTransparency=0.5 end end)n.Parent=j local p=Instance.new'Frame'p.Name= +'ScrollTrack'p.BackgroundTransparency=1 p.Size=UDim2.new(0,18,1,-38)p.Position= +UDim2.new(0,0,0,19)p.Parent=j local q=Instance.new'TextButton'q.BackgroundColor3 +=Color3.new(0,0,0)q.BorderColor3=Color3.new(1,1,1)q.BackgroundTransparency=0.5 q +.AutoButtonColor=false q.Text=''q.Active=true q.Name='ScrollBar'q.ZIndex=2 q. +BackgroundTransparency=0.5 q.Size=UDim2.new(0,18,0.1,0)q.Position=UDim2.new(0,0, +0,0)q.Parent=p local r=Instance.new'Frame'r.Name='ScrollNub'r.BorderColor3= +Color3.new(1,1,1)r.Size=UDim2.new(0,10,0,0)r.Position=UDim2.new(0.5,-5,0.5,0)r. +ZIndex=2 r.BackgroundTransparency=0.5 r.Parent=q local s=r:clone()s.Position= +UDim2.new(0.5,-5,0.5,-2)s.Parent=q local t=r:clone()t.Position=UDim2.new(0.5,-5, +0.5,2)t.Parent=q q.MouseEnter:connect(function()q.BackgroundTransparency=0.1 r. +BackgroundTransparency=0.1 s.BackgroundTransparency=0.1 t.BackgroundTransparency +=0.1 end)q.MouseLeave:connect(function()q.BackgroundTransparency=0.5 r. +BackgroundTransparency=0.5 s.BackgroundTransparency=0.5 t.BackgroundTransparency +=0.5 end)local u=Instance.new'ImageButton'u.Active=false u.Size=UDim2.new(1.5,0, +1.5,0)u.AutoButtonColor=false u.BackgroundTransparency=1 u.Name='mouseDrag'u. +Position=UDim2.new(-0.25,0,-0.25,0)u.ZIndex=10 local function positionScrollBar( +v,w,x)local y=q.Position if w(p.AbsolutePosition.y+p.AbsoluteSize.y)then +q.Position=UDim2.new(q.Position.X.Scale,q.Position.X.Offset,1-z,0)return(y~=q. +Position)end local A=(w-p.AbsolutePosition.y-x)/p.AbsoluteSize.y if A+z>1 then A +=1-z k.Value=true l.Value=false elseif A<=0 then A=0 l.Value=true k.Value=false +else l.Value=false k.Value=false end q.Position=UDim2.new(q.Position.X.Scale,q. +Position.X.Offset,A,0)return(y~=q.Position)end local function +drillDownSetHighLow(v)if not v or not v:IsA'GuiObject'then return end if v==j +then return end if v:IsDescendantOf(j)then return end if not v.Visible then +return end if b and b>v.AbsolutePosition.Y then b=v.AbsolutePosition.Y elseif +not b then b=v.AbsolutePosition.Y end if c and c<(v.AbsolutePosition.Y+v. +AbsoluteSize.Y)then c=v.AbsolutePosition.Y+v.AbsoluteSize.Y elseif not c then c= +v.AbsolutePosition.Y+v.AbsoluteSize.Y end local w=v:GetChildren()for x=1,#w do +drillDownSetHighLow(w[x])end end local function resetHighLow()local v=i: +GetChildren()for w=1,#v do drillDownSetHighLow(v[w])end end local function +recalculate()g=true local v=0 if q.Position.Y.Scale>0 then if q.Visible then v=q +.Position.Y.Scale/((p.AbsoluteSize.Y-q.AbsoluteSize.Y)/p.AbsoluteSize.Y)else v=0 +end end if v>0.99 then v=1 end local w,x=(i.AbsoluteSize.Y-(c-b))*v,i: +GetChildren()for y=1,#x do if x[y]~=j then x[y].Position=UDim2.new(x[y].Position +.X.Scale,x[y].Position.X.Offset,0,math.ceil(x[y].AbsolutePosition.Y)-math.ceil(b +)+w)end end b=nil c=nil resetHighLow()g=false end local function +setSliderSizeAndPosition()if not c or not b then return end local v=math.abs(c-b +)if v==0 then q.Visible=false n.Visible=false m.Visible=false if d then d: +disconnect()d=nil end if e then e:disconnect()e=nil end return end local w=i. +AbsoluteSize.Y/v if w>=1 then q.Visible=false n.Visible=false m.Visible=false +recalculate()else q.Visible=true n.Visible=true m.Visible=true q.Size=UDim2.new( +q.Size.X.Scale,q.Size.X.Offset,w,0)end local x=(i.AbsolutePosition.Y-b)/v q. +Position=UDim2.new(q.Position.X.Scale,q.Position.X.Offset,x,-q.AbsoluteSize.X/2) +if q.AbsolutePosition.y(p.AbsolutePosition.y+p.AbsoluteSize.y)then local y=q. +AbsoluteSize.Y/p.AbsoluteSize.Y q.Position=UDim2.new(q.Position.X.Scale,q. +Position.X.Offset,1-y,0)end end local v,w=7,false local function doScrollUp()if +w then return end w=true if positionScrollBar(0,q.AbsolutePosition.Y-v,0)then +recalculate()end w=false end local x=false local function doScrollDown()if x +then return end x=true if positionScrollBar(0,q.AbsolutePosition.Y+v,0)then +recalculate()end x=false end local function scrollUp(y)if m.Active then +scrollStamp=tick()local z,A=scrollStamp,nil A=u.MouseButton1Up:connect(function( +)scrollStamp=tick()u.Parent=nil A:disconnect()end)u.Parent=getScreenGuiAncestor( +q)doScrollUp()wait(0.2)local B,C=tick(),0.1 while scrollStamp==z do doScrollUp() +if y and y>q.AbsolutePosition.y then break end if not m.Active then break end if +tick()-B>5 then C=0 elseif tick()-B>2 then C=0.06 end wait(C)end end end +local function scrollDown(y)if n.Active then scrollStamp=tick()local z,A= +scrollStamp,nil A=u.MouseButton1Up:connect(function()scrollStamp=tick()u.Parent= +nil A:disconnect()end)u.Parent=getScreenGuiAncestor(q)doScrollDown()wait(0.2) +local B,C=tick(),0.1 while scrollStamp==z do doScrollDown()if y and y<(q. +AbsolutePosition.y+q.AbsoluteSize.x)then break end if not n.Active then break +end if tick()-B>5 then C=0 elseif tick()-B>2 then C=0.06 end wait(C)end end end +q.MouseButton1Down:connect(function(y,z)if q.Active then scrollStamp=tick()local +A=z-q.AbsolutePosition.y if d then d:disconnect()d=nil end if e then e: +disconnect()e=nil end local B,C=z,false d=u.MouseMoved:connect(function(D,E)if C +then return end C=true if positionScrollBar(D,E,A)then recalculate()end C=false +end)e=u.MouseButton1Up:connect(function()scrollStamp=tick()u.Parent=nil d: +disconnect()d=nil e:disconnect()drag=nil end)u.Parent=getScreenGuiAncestor(q)end +end)local y=0 m.MouseButton1Down:connect(function()l()end)n.MouseButton1Down: +connect(function()scrollDown()end)local function scrollTick()scrollStamp=tick() +end m.MouseButton1Up:connect(scrollTick)n.MouseButton1Up:connect(scrollTick)q. +MouseButton1Up:connect(scrollTick)local function highLowRecheck()local z,A=b,c b +=nil c=nil resetHighLow()if(b~=z)or(c~=A)then setSliderSizeAndPosition()end end +local function descendantChanged(z,A)if g then return end if not z.Visible then +return end if A=='Size'or A=='Position'then wait()highLowRecheck()end end i. +DescendantAdded:connect(function(z)if not z:IsA'GuiObject'then return end if z. +Visible then wait()highLowRecheck()end h[z]=z.Changed:connect(function(A) +descendantChanged(z,A)end)end)i.DescendantRemoving:connect(function(z)if not z: +IsA'GuiObject'then return end if h[z]then h[z]:disconnect()h[z]=nil end wait() +highLowRecheck()end)i.Changed:connect(function(z)if z=='AbsoluteSize'then if not +c or not b then return end highLowRecheck()setSliderSizeAndPosition()end end) +return i,j end a.CreateScrollingFrame=function(b,c)local d=Instance.new'Frame'd. +Name='ScrollingFrame'd.BackgroundTransparency=1 d.Size=UDim2.new(1,0,1,0)local e +=Instance.new'ImageButton'e.Name='ScrollUpButton'e.BackgroundTransparency=1 e. +Image='rbxasset://textures/ui/scrollbuttonUp.png'e.Size=UDim2.new(0,17,0,17) +local g=Instance.new'ImageButton'g.Name='ScrollDownButton'g. +BackgroundTransparency=1 g.Image='rbxasset://textures/ui/scrollbuttonDown.png'g. +Size=UDim2.new(0,17,0,17)local h=Instance.new'ImageButton'h.Name='ScrollBar'h. +Image='rbxasset://textures/ui/scrollbar.png'h.BackgroundTransparency=1 h.Size= +UDim2.new(0,18,0,150)local i,j=0,Instance.new'ImageButton'j.Image= +'http://www.roblox.com/asset/?id=61367186'j.Size=UDim2.new(1,0,0,16)j. +BackgroundTransparency=1 j.Name='ScrollDrag'j.Active=true j.Parent=h local k= +Instance.new'ImageButton'k.Active=false k.Size=UDim2.new(1.5,0,1.5,0)k. +AutoButtonColor=false k.BackgroundTransparency=1 k.Name='mouseDrag'k.Position= +UDim2.new(-0.25,0,-0.25,0)k.ZIndex=10 local l='simple'if c and tostring(c)then l +=c end local m,n,o=1,0,0 local p,q,r,s=function()o=0 local p={}if b then for q,r +in ipairs(b)do if r.Parent==d then table.insert(p,r)end end else local q=d: +GetChildren()if q then for r,s in ipairs(q)do if s:IsA'GuiObject'then table. +insert(p,s)end end end end if#p==0 then e.Active=false g.Active=false j.Active= +false m=1 return end if m>#p then m=#p end if m<1 then m=1 end local q,r,s,t,u,v +,w,x,y=d.AbsoluteSize.Y,d.AbsoluteSize.Y,d.AbsoluteSize.X,0,0,true,0,#p,0 x=m +while x<=#p and w=s then w=w+y y=0 t=p[x]. +AbsoluteSize.X end if p[x].AbsoluteSize.Y>y then y=p[x].AbsoluteSize.Y end x=x+1 +end w=w+y y=0 x=m-1 t=0 while w+y=1 do t=t+p[x].AbsoluteSize.X u=u+1 if +t>=s then n=u-1 u=0 t=p[x].AbsoluteSize.X if w+y<=q then w=w+y if m<=n then m=1 +break else m=m-n end y=0 else break end end if p[x].AbsoluteSize.Y>y then y=p[x] +.AbsoluteSize.Y end x=x-1 end if(x==0)and(w+y<=q)then m=1 end t=0 u=0 v=true +local z,A,B=0,0 if p[1]then B=math.ceil(math.floor(math.fmod(q,p[1].AbsoluteSize +.X))/2)A=math.ceil(math.floor(math.fmod(s,p[1].AbsoluteSize.Y))/2)end for C,D in +ipairs(p)do if C=s then if v then n=u-1 v=false end t=0 r +=r-D.AbsoluteSize.Y end D.Position=UDim2.new(D.Position.X.Scale,t+A,0,q-r+B)t=t+ +D.AbsoluteSize.X D.Visible=((r-D.AbsoluteSize.Y)>=0)if D.Visible then o=o+1 end +z=D.AbsoluteSize end end end e.Active=(m>1)if z==0 then g.Active=false else g. +Active=((r-z.Y)<0)end j.Active=#p>o j.Visible=j.Active end,function()local p={}o +=0 if b then for q,r in ipairs(b)do if r.Parent==d then table.insert(p,r)end end +else local q=d:GetChildren()if q then for r,s in ipairs(q)do if s:IsA'GuiObject' +then table.insert(p,s)end end end end if#p==0 then e.Active=false g.Active=false +j.Active=false m=1 return end if m>#p then m=#p end local q,r,s,t=d.AbsoluteSize +.Y,d.AbsoluteSize.Y,0,#p while s=1 do if t>=m then s=s+p[t]. +AbsoluteSize.Y else if s+p[t].AbsoluteSize.Y<=q then s=s+p[t].AbsoluteSize.Y if +m<=1 then m=1 break else m=m-1 end else break end end t=t-1 end t=m for u,v in +ipairs(p)do if u=0 then v.Visible=true o=o+1 else v.Visible=false end end +end end e.Active=(m>1)g.Active=(r<0)j.Active=#p>o j.Visible=j.Active end, +function()local p,q=0,d:GetChildren()if q then for r,s in ipairs(q)do if s:IsA +'GuiObject'then p=p+1 end end end if not j.Parent then return end local r=j. +Parent.AbsoluteSize.y*(1/(p-o+1))if r<16 then r=16 end j.Size=UDim2.new(j.Size.X +.Scale,j.Size.X.Offset,j.Size.Y.Scale,r)local s=(m-1)/(p-o)if s>1 then s=1 +elseif s<0 then s=0 end local t=0 if s~=0 then t=(s*h.AbsoluteSize.y)-(s*j. +AbsoluteSize.y)end j.Position=UDim2.new(j.Position.X.Scale,j.Position.X.Offset,j +.Position.Y.Scale,t)end,false local t=function()if s then return end s=true +wait()local t,u=nil if l=='grid'then t,u=pcall(function()p()end)elseif l== +'simple'then t,u=pcall(function()q()end)end if not t then print(u)end r()s=false +end local u,v=function()m=m-n if m<1 then m=1 end t(nil)end,function()m=m+n t( +nil)end local w,x,y=function(w)if e.Active then i=tick()local x,y=i,nil y=k. +MouseButton1Up:connect(function()i=tick()k.Parent=nil y:disconnect()end)k.Parent +=getScreenGuiAncestor(h)u()wait(0.2)local z,A=tick(),0.1 while i==x do u()if w +and w>j.AbsolutePosition.y then break end if not e.Active then break end if +tick()-z>5 then A=0 elseif tick()-z>2 then A=0.06 end wait(A)end end end, +function(w)if g.Active then i=tick()local x,y=i,nil y=k.MouseButton1Up:connect( +function()i=tick()k.Parent=nil y:disconnect()end)k.Parent=getScreenGuiAncestor(h +)v()wait(0.2)local z,A=tick(),0.1 while i==x do v()if w and w<(j. +AbsolutePosition.y+j.AbsoluteSize.x)then break end if not g.Active then break +end if tick()-z>5 then A=0 elseif tick()-z>2 then A=0.06 end wait(A)end end end, +0 j.MouseButton1Down:connect(function(z,A)if j.Active then i=tick()local B,C,D=A +-j.AbsolutePosition.y,nil,nil C=k.MouseMoved:connect(function(E,F)local G,H,I=h. +AbsolutePosition.y,h.AbsoluteSize.y,j.AbsoluteSize.y local J=G+H-I F=F-B F=FJ and J or F F=F-G local K,L=0,d:GetChildren()if L then for M,N in +ipairs(L)do if N:IsA'GuiObject'then K=K+1 end end end local M,N,O=F/(H-I),n,K-(o +-1)local P=math.floor((M*O)+0.5)+N if P(j.AbsoluteSize.y+j. +AbsolutePosition.y)then x(B)elseif Bc then return b end local e=b while b<=c do local g=b+math +.floor((c-b)/2)if d(g)and(e==nil or ec then return b end local e=c while +b<=c do local g=b+math.floor((c-b)/2)if d(g)and(e==nil or e>g)then e=g c=g-1 +else b=g+1 end end return e end local function getGuiOwner(b)while b~=nil do if b:IsA'ScreenGui'or b:IsA'BillboardGui'then return b end b=b.Parent end return nil end a.AutoTruncateTextObject=function(b)local c,d=b.Text,b:Clone()d.Name= 'Full'..b.Name d.BorderSizePixel=0 d.BackgroundTransparency=0 d.Text=c d. TextXAlignment=Enum.TextXAlignment.Center d.Position=UDim2.new(0,-3,0,0)d.Size= -UDim2.new(0,100,1,0)d.Visible=false d.Parent=b local g,h,i=nil,nil,nil local j= +UDim2.new(0,100,1,0)d.Visible=false d.Parent=b local e,g,h=nil,nil,nil local i= function()if getGuiOwner(b)==nil then return end b.Text=c if b.TextFits then if -h then h:disconnect()h=nil end if i then i:disconnect()i=nil end else local j= -string.len(c)b.Text=c..'~'local k=binaryGrow(0,j,function(k)if k==0 then b.Text= -'~'else b.Text=string.sub(c,1,k)..'~'end return b.TextFits end)g=string.sub(c,1, -k)..'~'b.Text=g if not d.TextFits then d.Size=UDim2.new(0,10000,1,0)end local l= -binaryShrink(b.AbsoluteSize.X,d.AbsoluteSize.X,function(l)d.Size=UDim2.new(0,l,1 -,0)return d.TextFits end)d.Size=UDim2.new(0,l+6,1,0)if h==nil then h=b. -MouseEnter:connect(function()d.ZIndex=b.ZIndex+1 d.Visible=true end)end if i== -nil then i=b.MouseLeave:connect(function()d.Visible=false end)end end end b. -AncestryChanged:connect(j)b.Changed:connect(function(k)if k=='AbsoluteSize'then -j()end end)j()local function changeText(k)c=k d.Text=c j()end return b, -changeText end local function TransitionTutorialPages(b,c,d,g)if b then b. +g then g:disconnect()g=nil end if h then h:disconnect()h=nil end else local i= +string.len(c)b.Text=c..'~'local j=binaryGrow(0,i,function(j)if j==0 then b.Text= +'~'else b.Text=string.sub(c,1,j)..'~'end return b.TextFits end)e=string.sub(c,1, +j)..'~'b.Text=e if not d.TextFits then d.Size=UDim2.new(0,10000,1,0)end local k= +binaryShrink(b.AbsoluteSize.X,d.AbsoluteSize.X,function(k)d.Size=UDim2.new(0,k,1 +,0)return d.TextFits end)d.Size=UDim2.new(0,k+6,1,0)if g==nil then g=b. +MouseEnter:connect(function()d.ZIndex=b.ZIndex+1 d.Visible=true end)end if h== +nil then h=b.MouseLeave:connect(function()d.Visible=false end)end end end b. +AncestryChanged:connect(i)b.Changed:connect(function(j)if j=='AbsoluteSize'then +i()end end)i()local function changeText(j)c=j d.Text=c i()end return b, +changeText end local function TransitionTutorialPages(b,c,d,e)if b then b. Visible=false if d.Visible==false then d.Size=b.Size d.Position=b.Position end else if d.Visible==false then d.Size=UDim2.new(0,50,0,50)d.Position=UDim2.new( -0.5,-25,0.5,-25)end end d.Visible=true g.Value=nil local h,i if c then c.Visible -=true newSize=c.Size i=c.Position c.Visible=false else newSize=UDim2.new(0,50,0, -50)i=UDim2.new(0.5,-25,0.5,-25)end d:TweenSizeAndPosition(newSize,i,Enum. -EasingDirection.InOut,Enum.EasingStyle.Quad,0.3,true,function(j)if j==Enum. -TweenStatus.Completed then d.Visible=false if c then c.Visible=true g.Value=c -end end end)end a.CreateTutorial=function(b,c,d)local g=Instance.new'Frame'g. -Name='Tutorial-'..b g.BackgroundTransparency=1 g.Size=UDim2.new(0.6,0,0.6,0)g. -Position=UDim2.new(0.2,0,0.2,0)local h=Instance.new'Frame'h.Name= -'TransitionFrame'h.Style=Enum.FrameStyle.RobloxRound h.Size=UDim2.new(0.6,0,0.6, -0)h.Position=UDim2.new(0.2,0,0.2,0)h.Visible=false h.Parent=g local i=Instance. -new'ObjectValue'i.Name='CurrentTutorialPage'i.Value=nil i.Parent=g local j= -Instance.new'BoolValue'j.Name='Buttons'j.Value=d j.Parent=g local k=Instance.new -'Frame'k.Name='Pages'k.BackgroundTransparency=1 k.Size=UDim2.new(1,0,1,0)k. -Parent=g local function getVisiblePageAndHideOthers()local l,m=nil,k: -GetChildren()if m then for n,o in ipairs(m)do if o.Visible then if l then o. -Visible=false else l=o end end end end return l end local l,m,n=function(l)if l -or UserSettings().GameSettings:GetTutorialState(c)==false then print( -'Showing tutorial-',c)local m,n=getVisiblePageAndHideOthers(),k:FindFirstChild -'TutorialPage1'if n then TransitionTutorialPages(m,n,h,i)else error -'Could not find TutorialPage1'end end end,function()local l= -getVisiblePageAndHideOthers()if l then TransitionTutorialPages(l,nil,h,i)end -UserSettings().GameSettings:SetTutorialState(c,true)end,function(l)local m,n=k: -FindFirstChild('TutorialPage'..l),getVisiblePageAndHideOthers() -TransitionTutorialPages(n,m,h,i)end return g,l,m,n end local function -CreateBasicTutorialPage(b,c,d,g)local h=Instance.new'Frame'h.Name='TutorialPage' -h.Style=Enum.FrameStyle.RobloxRound h.Size=UDim2.new(0.6,0,0.6,0)h.Position= -UDim2.new(0.2,0,0.2,0)h.Visible=false local i=Instance.new'TextLabel'i.Name= -'Header'i.Text=b i.BackgroundTransparency=1 i.FontSize=Enum.FontSize.Size24 i. -Font=Enum.Font.ArialBold i.TextColor3=Color3.new(1,1,1)i.TextXAlignment=Enum. -TextXAlignment.Center i.TextWrap=true i.Size=UDim2.new(1,-55,0,22)i.Position= -UDim2.new(0,0,0,0)i.Parent=h local j=Instance.new'ImageButton'j.Name= -'SkipButton'j.AutoButtonColor=false j.BackgroundTransparency=1 j.Image= -'rbxasset://textures/ui/closeButton.png'j.MouseButton1Click:connect(function()d( -)end)j.MouseEnter:connect(function()j.Image= -'rbxasset://textures/ui/closeButton_dn.png'end)j.MouseLeave:connect(function()j. -Image='rbxasset://textures/ui/closeButton.png'end)j.Size=UDim2.new(0,25,0,25)j. -Position=UDim2.new(1,-25,0,0)j.Parent=h if g then local k=Instance.new -'TextButton'k.Name='DoneButton'k.Style=Enum.ButtonStyle.RobloxButtonDefault k. -Text='Done'k.TextColor3=Color3.new(1,1,1)k.Font=Enum.Font.ArialBold k.FontSize= -Enum.FontSize.Size18 k.Size=UDim2.new(0,100,0,50)k.Position=UDim2.new(0.5,-50,1, --50)if d then k.MouseButton1Click:connect(function()d()end)end k.Parent=h end -local k=Instance.new'Frame'k.Name='ContentFrame'k.BackgroundTransparency=1 k. -Position=UDim2.new(0,0,0,25)k.Parent=h local l=Instance.new'TextButton'l.Name= -'NextButton'l.Text='Next'l.TextColor3=Color3.new(1,1,1)l.Font=Enum.Font.Arial l. -FontSize=Enum.FontSize.Size18 l.Style=Enum.ButtonStyle.RobloxButtonDefault l. -Size=UDim2.new(0,80,0,32)l.Position=UDim2.new(0.5,5,1,-32)l.Active=false l. -Visible=false l.Parent=h local m=Instance.new'TextButton'm.Name='PrevButton'm. -Text='Previous'm.TextColor3=Color3.new(1,1,1)m.Font=Enum.Font.Arial m.FontSize= -Enum.FontSize.Size18 m.Style=Enum.ButtonStyle.RobloxButton m.Size=UDim2.new(0,80 -,0,32)m.Position=UDim2.new(0.5,-85,1,-32)m.Active=false m.Visible=false m.Parent -=h if g then k.Size=UDim2.new(1,0,1,-75)else k.Size=UDim2.new(1,0,1,-22)end -local n=nil local function basicHandleResize()if h.Visible and h.Parent then -local o=math.min(h.Parent.AbsoluteSize.X,h.Parent.AbsoluteSize.Y)c(200,o)end end -h.Changed:connect(function(o)if o=='Parent'then if n~=nil then n:disconnect()n= -nil end if h.Parent and h.Parent:IsA'GuiObject'then n=h.Parent.Changed:connect( -function(p)if p=='AbsoluteSize'then wait()basicHandleResize()end end) -basicHandleResize()end end if o=='Visible'then basicHandleResize()end end)return -h,k end a.CreateTextTutorialPage=function(b,c,d)local g,h,i=nil,nil,Instance.new -'TextLabel'i.BackgroundTransparency=1 i.TextColor3=Color3.new(1,1,1)i.Text=c i. -TextWrap=true i.TextXAlignment=Enum.TextXAlignment.Left i.TextYAlignment=Enum. -TextYAlignment.Center i.Font=Enum.Font.Arial i.FontSize=Enum.FontSize.Size14 i. -Size=UDim2.new(1,0,1,0)local function handleResize(j,k)size=binaryShrink(j,k, -function(l)g.Size=UDim2.new(0,l,0,l)return i.TextFits end)g.Size=UDim2.new(0, -size,0,size)g.Position=UDim2.new(0.5,-size/2,0.5,-size/2)end g,h= -CreateBasicTutorialPage(b,handleResize,d)i.Parent=h return g end a. -CreateImageTutorialPage=function(b,c,d,g,h,i)local j,k,l=nil,nil,Instance.new -'ImageLabel'l.BackgroundTransparency=1 l.Image=c l.Size=UDim2.new(0,d,0,g)l. -Position=UDim2.new(0.5,-d/2,0.5,-g/2)local function handleResize(m,n)size= -binaryShrink(m,n,function(o)return o>=d and o>=g end)if size>=d and size>=g then -l.Size=UDim2.new(0,d,0,g)l.Position=UDim2.new(0.5,-d/2,0.5,-g/2)else if d>g then -l.Size=UDim2.new(1,0,g/d,0)l.Position=UDim2.new(0,0,0.5-(g/d)/2,0)else l.Size= -UDim2.new(d/g,0,1,0)l.Position=UDim2.new(0.5-(d/g)/2,0,0,0)end end size=size+50 -j.Size=UDim2.new(0,size,0,size)j.Position=UDim2.new(0.5,-size/2,0.5,-size/2)end -j,k=CreateBasicTutorialPage(b,handleResize,h,i)l.Parent=k return j end a. -AddTutorialPage=function(b,c)local d,g=b.TransitionFrame,b.CurrentTutorialPage +0.5,-25,0.5,-25)end end d.Visible=true e.Value=nil local g,h if c then c.Visible +=true g=c.Size h=c.Position c.Visible=false else g=UDim2.new(0,50,0,50)h=UDim2. +new(0.5,-25,0.5,-25)end d:TweenSizeAndPosition(g,h,Enum.EasingDirection.InOut, +Enum.EasingStyle.Quad,0.3,true,function(i)if i==Enum.TweenStatus.Completed then +d.Visible=false if c then c.Visible=true e.Value=c end end end)end a. +CreateTutorial=function(b,c,d)local e=Instance.new'Frame'e.Name='Tutorial-'..b e +.BackgroundTransparency=1 e.Size=UDim2.new(0.6,0,0.6,0)e.Position=UDim2.new(0.2, +0,0.2,0)local g=Instance.new'Frame'g.Name='TransitionFrame'g.Style=Enum. +FrameStyle.RobloxRound g.Size=UDim2.new(0.6,0,0.6,0)g.Position=UDim2.new(0.2,0, +0.2,0)g.Visible=false g.Parent=e local h=Instance.new'ObjectValue'h.Name= +'CurrentTutorialPage'h.Value=nil h.Parent=e local i=Instance.new'BoolValue'i. +Name='Buttons'i.Value=d i.Parent=e local j=Instance.new'Frame'j.Name='Pages'j. +BackgroundTransparency=1 j.Size=UDim2.new(1,0,1,0)j.Parent=e local function +getVisiblePageAndHideOthers()local k,l=nil,j:GetChildren()if l then for m,n in +ipairs(l)do if n.Visible then if k then n.Visible=false else k=n end end end end +return k end local k,l,m=function(k)if k or UserSettings().GameSettings: +GetTutorialState(c)==false then print('Showing tutorial-',c)local l,m= +getVisiblePageAndHideOthers(),j:FindFirstChild'TutorialPage1'if m then +TransitionTutorialPages(l,m,g,h)else error'Could not find TutorialPage1'end end +end,function()local k=getVisiblePageAndHideOthers()if k then +TransitionTutorialPages(k,nil,g,h)end UserSettings().GameSettings: +SetTutorialState(c,true)end,function(k)local l,m=j:FindFirstChild('TutorialPage' +..k),getVisiblePageAndHideOthers()TransitionTutorialPages(m,l,g,h)end return e,k +,l,m end local function CreateBasicTutorialPage(b,c,d,e)local g=Instance.new +'Frame'g.Name='TutorialPage'g.Style=Enum.FrameStyle.RobloxRound g.Size=UDim2. +new(0.6,0,0.6,0)g.Position=UDim2.new(0.2,0,0.2,0)g.Visible=false local h= +Instance.new'TextLabel'h.Name='Header'h.Text=b h.BackgroundTransparency=1 h. +FontSize=Enum.FontSize.Size24 h.Font=Enum.Font.ArialBold h.TextColor3=Color3. +new(1,1,1)h.TextXAlignment=Enum.TextXAlignment.Center h.TextWrap=true h.Size= +UDim2.new(1,-55,0,22)h.Position=UDim2.new(0,0,0,0)h.Parent=g local i=Instance. +new'ImageButton'i.Name='SkipButton'i.AutoButtonColor=false i. +BackgroundTransparency=1 i.Image='rbxasset://textures/ui/closeButton.png'i. +MouseButton1Click:connect(function()d()end)i.MouseEnter:connect(function()i. +Image='rbxasset://textures/ui/closeButton_dn.png'end)i.MouseLeave:connect( +function()i.Image='rbxasset://textures/ui/closeButton.png'end)i.Size=UDim2.new(0 +,25,0,25)i.Position=UDim2.new(1,-25,0,0)i.Parent=g if e then local j=Instance. +new'TextButton'j.Name='DoneButton'j.Style=Enum.ButtonStyle.RobloxButtonDefault j +.Text='Done'j.TextColor3=Color3.new(1,1,1)j.Font=Enum.Font.ArialBold j.FontSize= +Enum.FontSize.Size18 j.Size=UDim2.new(0,100,0,50)j.Position=UDim2.new(0.5,-50,1, +-50)if d then j.MouseButton1Click:connect(function()d()end)end j.Parent=g end +local j=Instance.new'Frame'j.Name='ContentFrame'j.BackgroundTransparency=1 j. +Position=UDim2.new(0,0,0,25)j.Parent=g local k=Instance.new'TextButton'k.Name= +'NextButton'k.Text='Next'k.TextColor3=Color3.new(1,1,1)k.Font=Enum.Font.Arial k. +FontSize=Enum.FontSize.Size18 k.Style=Enum.ButtonStyle.RobloxButtonDefault k. +Size=UDim2.new(0,80,0,32)k.Position=UDim2.new(0.5,5,1,-32)k.Active=false k. +Visible=false k.Parent=g local l=Instance.new'TextButton'l.Name='PrevButton'l. +Text='Previous'l.TextColor3=Color3.new(1,1,1)l.Font=Enum.Font.Arial l.FontSize= +Enum.FontSize.Size18 l.Style=Enum.ButtonStyle.RobloxButton l.Size=UDim2.new(0,80 +,0,32)l.Position=UDim2.new(0.5,-85,1,-32)l.Active=false l.Visible=false l.Parent +=g if e then j.Size=UDim2.new(1,0,1,-75)else j.Size=UDim2.new(1,0,1,-22)end +local m=nil local function basicHandleResize()if g.Visible and g.Parent then +local n=math.min(g.Parent.AbsoluteSize.X,g.Parent.AbsoluteSize.Y)c(200,n)end end +g.Changed:connect(function(n)if n=='Parent'then if m~=nil then m:disconnect()m= +nil end if g.Parent and g.Parent:IsA'GuiObject'then m=g.Parent.Changed:connect( +function(o)if o=='AbsoluteSize'then wait()basicHandleResize()end end) +basicHandleResize()end end if n=='Visible'then basicHandleResize()end end)return +g,j end a.CreateTextTutorialPage=function(b,c,d)local e,g,h=nil,nil,Instance.new +'TextLabel'h.BackgroundTransparency=1 h.TextColor3=Color3.new(1,1,1)h.Text=c h. +TextWrap=true h.TextXAlignment=Enum.TextXAlignment.Left h.TextYAlignment=Enum. +TextYAlignment.Center h.Font=Enum.Font.Arial h.FontSize=Enum.FontSize.Size14 h. +Size=UDim2.new(1,0,1,0)local function handleResize(i,j)size=binaryShrink(i,j, +function(k)e.Size=UDim2.new(0,k,0,k)return h.TextFits end)e.Size=UDim2.new(0, +size,0,size)e.Position=UDim2.new(0.5,-size/2,0.5,-size/2)end e,g= +CreateBasicTutorialPage(b,handleResize,d)h.Parent=g return e end a. +CreateImageTutorialPage=function(b,c,d,e,g,h)local i,j,k=nil,nil,Instance.new +'ImageLabel'k.BackgroundTransparency=1 k.Image=c k.Size=UDim2.new(0,d,0,e)k. +Position=UDim2.new(0.5,-d/2,0.5,-e/2)local function handleResize(l,m)size= +binaryShrink(l,m,function(n)return n>=d and n>=e end)if size>=d and size>=e then +k.Size=UDim2.new(0,d,0,e)k.Position=UDim2.new(0.5,-d/2,0.5,-e/2)else if d>e then +k.Size=UDim2.new(1,0,e/d,0)k.Position=UDim2.new(0,0,0.5-(e/d)/2,0)else k.Size= +UDim2.new(d/e,0,1,0)k.Position=UDim2.new(0.5-(d/e)/2,0,0,0)end end size=size+50 +i.Size=UDim2.new(0,size,0,size)i.Position=UDim2.new(0.5,-size/2,0.5,-size/2)end +i,j=CreateBasicTutorialPage(b,handleResize,g,h)k.Parent=j return i end a. +AddTutorialPage=function(b,c)local d,e=b.TransitionFrame,b.CurrentTutorialPage if not b.Buttons.Value then c.NextButton.Parent=nil c.PrevButton.Parent=nil end -local h=b.Pages:GetChildren()if h and#h>0 then c.Name='TutorialPage'..(#h+1) -local i=h[#h]if not i:IsA'GuiObject'then error -'All elements under Pages must be GuiObjects'end if b.Buttons.Value then if i. +local g=b.Pages:GetChildren()if g and#g>0 then c.Name='TutorialPage'..(#g+1) +local h=g[#g]if not h:IsA'GuiObject'then error +'All elements under Pages must be GuiObjects'end if b.Buttons.Value then if h. NextButton.Active then error [[NextButton already Active on previousPage, please only add pages with RbxGui.AddTutorialPage function]] -end i.NextButton.MouseButton1Click:connect(function()TransitionTutorialPages(i,c -,d,g)end)i.NextButton.Active=true i.NextButton.Visible=true if c.PrevButton. +end h.NextButton.MouseButton1Click:connect(function()TransitionTutorialPages(h,c +,d,e)end)h.NextButton.Active=true h.NextButton.Visible=true if c.PrevButton. Active then error [[PrevButton already Active on tutorialPage, please only add pages with RbxGui.AddTutorialPage function]] -end c.PrevButton.MouseButton1Click:connect(function()TransitionTutorialPages(c,i -,d,g)end)c.PrevButton.Active=true c.PrevButton.Visible=true end c.Parent=b.Pages +end c.PrevButton.MouseButton1Click:connect(function()TransitionTutorialPages(c,h +,d,e)end)c.PrevButton.Active=true c.PrevButton.Visible=true end c.Parent=b.Pages else c.Name='TutorialPage1'c.Parent=b.Pages end end a.CreateSetPanel=function(b, -c,d,g,h,i,j)if not b then error +c,d,e,g,h,i)if not b then error [[CreateSetPanel: userIdsForSets (first arg) is nil, should be a table of number ids]] end if type(b)~='table'and type(b)~='userdata'then error( 'CreateSetPanel: userIdsForSets (first arg) is of type '..type(b).. @@ -499,383 +494,383 @@ end if type(c)~='function'then error( 'CreateSetPanel: objectSelected (second arg) is of type '..type(c).. ', should be of type function!')end if d and type(d)~='function'then error( 'CreateSetPanel: dialogClosed (third arg) is of type '..type(d).. -', should be of type function!')end if i==nil then i=false end local k,l,m,n,o,p -,q,r,s=1,{},{},nil,nil,'NegX','None',nil local t={}t.CurrentCategory=nil t. -Category={}local u,v,w={},nil,64 local x,y,z,A=w,nil,nil,game:GetService -'ContentProvider'.BaseUrl:lower()if j then z=A.. -[[Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=420&ht=420&assetversionid=]]y=A.. -[[Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=75&ht=75&assetversionid=]]else z=A.. -'Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=420&ht=420&aid='y=A.. +', should be of type function!')end if h==nil then h=false end local j,k,l,m,n,o +,p,q,r=1,{},{},nil,nil,'NegX','None',nil local s={}s.CurrentCategory=nil s. +Category={}local t,u,v={},nil,64 local w,x,y,z=v,nil,nil,game:GetService +'ContentProvider'.BaseUrl:lower()if i then y=z.. +[[Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=420&ht=420&assetversionid=]]x=z.. +[[Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=75&ht=75&assetversionid=]]else y=z.. +'Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=420&ht=420&aid='x=z.. 'Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=75&ht=75&aid='end local function -drillDownSetZIndex(B,C)local D=B:GetChildren()for E=1,#D do if D[E]:IsA -'GuiObject'then D[E].ZIndex=C end drillDownSetZIndex(D[E],C)end end local B,C,D= +drillDownSetZIndex(A,B)local C=A:GetChildren()for D=1,#C do if C[D]:IsA +'GuiObject'then C[D].ZIndex=B end drillDownSetZIndex(C[D],B)end end local A,B,C= nil,{'Block','Vertical Ramp','Corner Wedge','Inverse Corner Wedge', -'Horizontal Ramp','Auto-Wedge'},{}for E=1,#C do D[C[E]]=E-1 end D[C[#C]]=6 -local function createWaterGui()local E,F,G={'NegX','X','NegY','Y','NegZ','Z'},{ -'None','Small','Medium','Strong','Max'},Instance.new'Frame'G.Name='WaterFrame'G. -Style=Enum.FrameStyle.RobloxSquare G.Size=UDim2.new(0,150,0,110)G.Visible=false -local H=Instance.new'TextLabel'H.Name='WaterForceLabel'H.BackgroundTransparency= -1 H.Size=UDim2.new(1,0,0,12)H.Font=Enum.Font.ArialBold H.FontSize=Enum.FontSize. -Size12 H.TextColor3=Color3.new(1,1,1)H.TextXAlignment=Enum.TextXAlignment.Left H -.Text='Water Force'H.Parent=G local I=H:Clone()I.Name='WaterForceDirectionLabel' -I.Text='Water Force Direction'I.Position=UDim2.new(0,0,0,50)I.Parent=G local J= -Instance.new'BindableEvent'J.Name='WaterTypeChangedEvent'J.Parent=G local K,L= -function(K)p=K J:Fire{q,p}end,function(K)q=K J:Fire{q,p}end local M,N=a. -CreateDropDownMenu(E,K)M.Size=UDim2.new(1,0,0,25)M.Position=UDim2.new(0,0,1,3)N -'NegX'M.Parent=I local O,P=a.CreateDropDownMenu(F,L)P'None'O.Size=UDim2.new(1,0, -0,25)O.Position=UDim2.new(0,0,1,3)O.Parent=H return G,J end local function -createSetGui()local E=Instance.new'ScreenGui'E.Name='SetGui'local F=Instance.new -'Frame'F.Name='SetPanel'F.Active=true F.BackgroundTransparency=1 if h then F. -Position=h else F.Position=UDim2.new(0.2,29,0.1,24)end if g then F.Size=g else F -.Size=UDim2.new(0.6,-58,0.64,0)end F.Style=Enum.FrameStyle.RobloxRound F.ZIndex= -6 F.Parent=E local G=Instance.new'Frame'G.Name='ItemPreview'G. -BackgroundTransparency=1 G.Position=UDim2.new(0.8,5,0.085,0)G.Size=UDim2.new( -0.21,0,0.9,0)G.ZIndex=6 G.Parent=F local H=Instance.new'Frame'H.Name='TextPanel' -H.BackgroundTransparency=1 H.Position=UDim2.new(0,0,0.45,0)H.Size=UDim2.new(1,0, -0.55,0)H.ZIndex=6 H.Parent=G local I=Instance.new'TextLabel'I.Name= -'RolloverText'I.BackgroundTransparency=1 I.Size=UDim2.new(1,0,0,48)I.ZIndex=6 I. -Font=Enum.Font.ArialBold I.FontSize=Enum.FontSize.Size24 I.Text=''I.TextColor3= -Color3.new(1,1,1)I.TextWrap=true I.TextXAlignment=Enum.TextXAlignment.Left I. -TextYAlignment=Enum.TextYAlignment.Top I.Parent=H local J=Instance.new -'ImageLabel'J.Name='LargePreview'J.BackgroundTransparency=1 J.Image=''J.Size= -UDim2.new(1,0,0,170)J.ZIndex=6 J.Parent=G local K=Instance.new'Frame'K.Name= -'Sets'K.BackgroundTransparency=1 K.Position=UDim2.new(0,0,0,5)K.Size=UDim2.new( -0.23,0,1,-5)K.ZIndex=6 K.Parent=F local L=Instance.new'Frame'L.Name='Line'L. -BackgroundColor3=Color3.new(1,1,1)L.BackgroundTransparency=0.7 L.BorderSizePixel -=0 L.Position=UDim2.new(1,-3,0.06,0)L.Size=UDim2.new(0,3,0.9,0)L.ZIndex=6 L. -Parent=K local M,N=a.CreateTrueScrollingFrame()M.Size=UDim2.new(1,-6,0.94,0)M. -Position=UDim2.new(0,0,0.06,0)M.BackgroundTransparency=1 M.Name='SetsLists'M. -ZIndex=6 M.Parent=K drillDownSetZIndex(N,7)local O=Instance.new'TextLabel'O.Name -='SetsHeader'O.BackgroundTransparency=1 O.Size=UDim2.new(0,47,0,24)O.ZIndex=6 O. -Font=Enum.Font.ArialBold O.FontSize=Enum.FontSize.Size24 O.Text='Sets'O. -TextColor3=Color3.new(1,1,1)O.TextXAlignment=Enum.TextXAlignment.Left O. -TextYAlignment=Enum.TextYAlignment.Top O.Parent=K local P=Instance.new -'TextButton'P.Name='CancelButton'P.Position=UDim2.new(1,-32,0,-2)P.Size=UDim2. -new(0,34,0,34)P.Style=Enum.ButtonStyle.RobloxButtonDefault P.ZIndex=6 P.Text=''P -.Modal=true P.Parent=F local Q=Instance.new'ImageLabel'Q.Name='CancelImage'Q. -BackgroundTransparency=1 Q.Image='http://www.roblox.com/asset?id=54135717'Q. -Position=UDim2.new(0,-2,0,-2)Q.Size=UDim2.new(0,16,0,16)Q.ZIndex=6 Q.Parent=P -return E end local function createSetButton(E)local F=Instance.new'TextButton'if -E then F.Text=E else F.Text=''end F.AutoButtonColor=false F. -BackgroundTransparency=1 F.BackgroundColor3=Color3.new(1,1,1)F.BorderSizePixel=0 -F.Size=UDim2.new(1,-5,0,18)F.ZIndex=6 F.Visible=false F.Font=Enum.Font.Arial F. -FontSize=Enum.FontSize.Size18 F.TextColor3=Color3.new(1,1,1)F.TextXAlignment= -Enum.TextXAlignment.Left return F end local function buildSetButton(E,F,G,H,I) -local J=createSetButton(E)J.Text=E J.Name='SetButton'J.Visible=true local K= -Instance.new'IntValue'K.Name='SetId'K.Value=F K.Parent=J local L=Instance.new -'StringValue'L.Name='SetName'L.Value=E L.Parent=J return J end local function -processCategory(E)local F,G={},0 for H=1,#E do if not i and E[H].Name=='Beta' -then G=G+1 else F[H-G]=buildSetButton(E[H].Name,E[H].CategoryId,E[H]. -ImageAssetId,H-G,#E)end end return F end local function handleResize()wait() -local E=o.SetPanel.ItemPreview E.LargePreview.Size=UDim2.new(1,0,0,E. -AbsoluteSize.X)E.LargePreview.Position=UDim2.new(0.5,-E.LargePreview. -AbsoluteSize.X/2,0,0)E.TextPanel.Position=UDim2.new(0,0,0,E.LargePreview. -AbsoluteSize.Y)E.TextPanel.Size=UDim2.new(1,0,0,E.AbsoluteSize.Y-E.LargePreview. -AbsoluteSize.Y)end local function makeInsertAssetButton()local E=Instance.new -'Frame'E.Name='InsertAssetButtonExample'E.Position=UDim2.new(0,128,0,64)E.Size= -UDim2.new(0,64,0,64)E.BackgroundTransparency=1 E.ZIndex=6 E.Visible=false local -F=Instance.new'IntValue'F.Name='AssetId'F.Value=0 F.Parent=E local G=Instance. -new'StringValue'G.Name='AssetName'G.Value=''G.Parent=E local H=Instance.new -'TextButton'H.Name='Button'H.Text=''H.Style=Enum.ButtonStyle.RobloxButton H. -Position=UDim2.new(0.025,0,0.025,0)H.Size=UDim2.new(0.95,0,0.95,0)H.ZIndex=6 H. -Parent=E local I=Instance.new'ImageLabel'I.Name='ButtonImage'I.Image=''I. -Position=UDim2.new(0,-7,0,-7)I.Size=UDim2.new(1,14,1,14)I.BackgroundTransparency -=1 I.ZIndex=7 I.Parent=H local J=I:clone()J.Name='ConfigIcon'J.Visible=false J. -Position=UDim2.new(1,-23,1,-24)J.Size=UDim2.new(0,16,0,16)J.Image=''J.ZIndex=6 J -.Parent=E return E end local function showLargePreview(E)if E:FindFirstChild -'AssetId'then delay(0,function()game:GetService'ContentProvider':Preload(z.. -tostring(E.AssetId.Value))o.SetPanel.ItemPreview.LargePreview.Image=z..tostring( -E.AssetId.Value)end)end if E:FindFirstChild'AssetName'then o.SetPanel. -ItemPreview.TextPanel.RolloverText.Text=E.AssetName.Value end end local function -selectTerrainShape(E)if B then c(tostring(B.AssetName.Value),tonumber(B.AssetId. -Value),E)end end local function createTerrainTypeButton(E,F)local G=Instance.new -'TextButton'G.Name=E..'Button'G.Font=Enum.Font.ArialBold G.FontSize=Enum. -FontSize.Size14 G.BorderSizePixel=0 G.TextColor3=Color3.new(1,1,1)G.Text=E G. -TextXAlignment=Enum.TextXAlignment.Left G.BackgroundTransparency=1 G.ZIndex=F. -ZIndex+1 G.Size=UDim2.new(0,F.Size.X.Offset-2,0,16)G.Position=UDim2.new(0,1,0,0) -G.MouseEnter:connect(function()G.BackgroundTransparency=0 G.TextColor3=Color3. -new(0,0,0)end)G.MouseLeave:connect(function()G.BackgroundTransparency=1 G. -TextColor3=Color3.new(1,1,1)end)G.MouseButton1Click:connect(function()G. -BackgroundTransparency=1 G.TextColor3=Color3.new(1,1,1)if G.Parent and G.Parent: -IsA'GuiObject'then G.Parent.Visible=false end selectTerrainShape(D[G.Text])end) -return G end local function createTerrainDropDownMenu(E)local F=Instance.new -'Frame'F.Name='TerrainDropDown'F.BackgroundColor3=Color3.new(0,0,0)F. -BorderColor3=Color3.new(1,0,0)F.Size=UDim2.new(0,200,0,0)F.Visible=false F. -ZIndex=E F.Parent=o for G=1,#C do local H=createTerrainTypeButton(C[G],F)H. -Position=UDim2.new(0,1,0,(G-1)*H.Size.Y.Offset)H.Parent=F F.Size=UDim2.new(0,200 -,0,F.Size.Y.Offset+H.Size.Y.Offset)end F.MouseLeave:connect(function()F.Visible= -false end)end local function createDropDownMenuButton(E)local F=Instance.new -'ImageButton'F.Name='DropDownButton'F.Image= -'http://www.roblox.com/asset/?id=67581509'F.BackgroundTransparency=1 F.Size= -UDim2.new(0,16,0,16)F.Position=UDim2.new(1,-24,0,6)F.ZIndex=E.ZIndex+2 F.Parent= -E if not o:FindFirstChild'TerrainDropDown'then createTerrainDropDownMenu(8)end F -.MouseButton1Click:connect(function()o.TerrainDropDown.Visible=true o. -TerrainDropDown.Position=UDim2.new(0,E.AbsolutePosition.X,0,E.AbsolutePosition.Y -)B=E end)end local function buildInsertButton()local E=makeInsertAssetButton()E. -Name='InsertAssetButton'E.Visible=true if t.Category[t.CurrentCategory].SetName -=='High Scalability'then createDropDownMenuButton(E)end local F=nil local G=E. -MouseEnter:connect(function()F=E delay(0.1,function()if F==E then -showLargePreview(E)end end)end)return E,G end local function realignButtonGrid(E -)local F,G=0,0 for H=1,#l do l[H].Position=UDim2.new(0,w*F,0,x*G)F=F+1 if F>=E -then F=0 G=G+1 end end end local function setInsertButtonImageBehavior(E,F,G,H) -if F then E.AssetName.Value=G E.AssetId.Value=H local I=y..H if I~=E.Button. +'Horizontal Ramp','Auto-Wedge'},{}for D=1,#B do C[B[D]]=D-1 end C[B[#B]]=6 +local function createWaterGui()local D,E,F={'NegX','X','NegY','Y','NegZ','Z'},{ +'None','Small','Medium','Strong','Max'},Instance.new'Frame'F.Name='WaterFrame'F. +Style=Enum.FrameStyle.RobloxSquare F.Size=UDim2.new(0,150,0,110)F.Visible=false +local G=Instance.new'TextLabel'G.Name='WaterForceLabel'G.BackgroundTransparency= +1 G.Size=UDim2.new(1,0,0,12)G.Font=Enum.Font.ArialBold G.FontSize=Enum.FontSize. +Size12 G.TextColor3=Color3.new(1,1,1)G.TextXAlignment=Enum.TextXAlignment.Left G +.Text='Water Force'G.Parent=F local H=G:Clone()H.Name='WaterForceDirectionLabel' +H.Text='Water Force Direction'H.Position=UDim2.new(0,0,0,50)H.Parent=F local I= +Instance.new'BindableEvent'I.Name='WaterTypeChangedEvent'I.Parent=F local J,K= +function(J)o=J I:Fire{p,o}end,function(J)p=J I:Fire{p,o}end local L,M=a. +CreateDropDownMenu(D,J)L.Size=UDim2.new(1,0,0,25)L.Position=UDim2.new(0,0,1,3)M +'NegX'L.Parent=H local N,O=a.CreateDropDownMenu(E,K)O'None'N.Size=UDim2.new(1,0, +0,25)N.Position=UDim2.new(0,0,1,3)N.Parent=G return F,I end local function +createSetGui()local D=Instance.new'ScreenGui'D.Name='SetGui'local E=Instance.new +'Frame'E.Name='SetPanel'E.Active=true E.BackgroundTransparency=1 if g then E. +Position=g else E.Position=UDim2.new(0.2,29,0.1,24)end if e then E.Size=e else E +.Size=UDim2.new(0.6,-58,0.64,0)end E.Style=Enum.FrameStyle.RobloxRound E.ZIndex= +6 E.Parent=D local F=Instance.new'Frame'F.Name='ItemPreview'F. +BackgroundTransparency=1 F.Position=UDim2.new(0.8,5,0.085,0)F.Size=UDim2.new( +0.21,0,0.9,0)F.ZIndex=6 F.Parent=E local G=Instance.new'Frame'G.Name='TextPanel' +G.BackgroundTransparency=1 G.Position=UDim2.new(0,0,0.45,0)G.Size=UDim2.new(1,0, +0.55,0)G.ZIndex=6 G.Parent=F local H=Instance.new'TextLabel'H.Name= +'RolloverText'H.BackgroundTransparency=1 H.Size=UDim2.new(1,0,0,48)H.ZIndex=6 H. +Font=Enum.Font.ArialBold H.FontSize=Enum.FontSize.Size24 H.Text=''H.TextColor3= +Color3.new(1,1,1)H.TextWrap=true H.TextXAlignment=Enum.TextXAlignment.Left H. +TextYAlignment=Enum.TextYAlignment.Top H.Parent=G local I=Instance.new +'ImageLabel'I.Name='LargePreview'I.BackgroundTransparency=1 I.Image=''I.Size= +UDim2.new(1,0,0,170)I.ZIndex=6 I.Parent=F local J=Instance.new'Frame'J.Name= +'Sets'J.BackgroundTransparency=1 J.Position=UDim2.new(0,0,0,5)J.Size=UDim2.new( +0.23,0,1,-5)J.ZIndex=6 J.Parent=E local K=Instance.new'Frame'K.Name='Line'K. +BackgroundColor3=Color3.new(1,1,1)K.BackgroundTransparency=0.7 K.BorderSizePixel +=0 K.Position=UDim2.new(1,-3,0.06,0)K.Size=UDim2.new(0,3,0.9,0)K.ZIndex=6 K. +Parent=J local L,M=a.CreateTrueScrollingFrame()L.Size=UDim2.new(1,-6,0.94,0)L. +Position=UDim2.new(0,0,0.06,0)L.BackgroundTransparency=1 L.Name='SetsLists'L. +ZIndex=6 L.Parent=J drillDownSetZIndex(M,7)local N=Instance.new'TextLabel'N.Name +='SetsHeader'N.BackgroundTransparency=1 N.Size=UDim2.new(0,47,0,24)N.ZIndex=6 N. +Font=Enum.Font.ArialBold N.FontSize=Enum.FontSize.Size24 N.Text='Sets'N. +TextColor3=Color3.new(1,1,1)N.TextXAlignment=Enum.TextXAlignment.Left N. +TextYAlignment=Enum.TextYAlignment.Top N.Parent=J local O=Instance.new +'TextButton'O.Name='CancelButton'O.Position=UDim2.new(1,-32,0,-2)O.Size=UDim2. +new(0,34,0,34)O.Style=Enum.ButtonStyle.RobloxButtonDefault O.ZIndex=6 O.Text=''O +.Modal=true O.Parent=E local P=Instance.new'ImageLabel'P.Name='CancelImage'P. +BackgroundTransparency=1 P.Image='http://www.roblox.com/asset?id=54135717'P. +Position=UDim2.new(0,-2,0,-2)P.Size=UDim2.new(0,16,0,16)P.ZIndex=6 P.Parent=O +return D end local function createSetButton(D)local E=Instance.new'TextButton'if +D then E.Text=D else E.Text=''end E.AutoButtonColor=false E. +BackgroundTransparency=1 E.BackgroundColor3=Color3.new(1,1,1)E.BorderSizePixel=0 +E.Size=UDim2.new(1,-5,0,18)E.ZIndex=6 E.Visible=false E.Font=Enum.Font.Arial E. +FontSize=Enum.FontSize.Size18 E.TextColor3=Color3.new(1,1,1)E.TextXAlignment= +Enum.TextXAlignment.Left return E end local function buildSetButton(D,E,F,G,H) +local I=createSetButton(D)I.Text=D I.Name='SetButton'I.Visible=true local J= +Instance.new'IntValue'J.Name='SetId'J.Value=E J.Parent=I local K=Instance.new +'StringValue'K.Name='SetName'K.Value=D K.Parent=I return I end local function +processCategory(D)local E,H={},0 for I=1,#D do if not h and D[I].Name=='Beta' +then H=H+1 else E[I-H]=buildSetButton(D[I].Name,D[I].CategoryId,D[I]. +ImageAssetId,I-H,#D)end end return E end local function handleResize()wait() +local D=n.SetPanel.ItemPreview D.LargePreview.Size=UDim2.new(1,0,0,D. +AbsoluteSize.X)D.LargePreview.Position=UDim2.new(0.5,-D.LargePreview. +AbsoluteSize.X/2,0,0)D.TextPanel.Position=UDim2.new(0,0,0,D.LargePreview. +AbsoluteSize.Y)D.TextPanel.Size=UDim2.new(1,0,0,D.AbsoluteSize.Y-D.LargePreview. +AbsoluteSize.Y)end local function makeInsertAssetButton()local D=Instance.new +'Frame'D.Name='InsertAssetButtonExample'D.Position=UDim2.new(0,128,0,64)D.Size= +UDim2.new(0,64,0,64)D.BackgroundTransparency=1 D.ZIndex=6 D.Visible=false local +E=Instance.new'IntValue'E.Name='AssetId'E.Value=0 E.Parent=D local H=Instance. +new'StringValue'H.Name='AssetName'H.Value=''H.Parent=D local I=Instance.new +'TextButton'I.Name='Button'I.Text=''I.Style=Enum.ButtonStyle.RobloxButton I. +Position=UDim2.new(0.025,0,0.025,0)I.Size=UDim2.new(0.95,0,0.95,0)I.ZIndex=6 I. +Parent=D local J=Instance.new'ImageLabel'J.Name='ButtonImage'J.Image=''J. +Position=UDim2.new(0,-7,0,-7)J.Size=UDim2.new(1,14,1,14)J.BackgroundTransparency +=1 J.ZIndex=7 J.Parent=I local K=J:clone()K.Name='ConfigIcon'K.Visible=false K. +Position=UDim2.new(1,-23,1,-24)K.Size=UDim2.new(0,16,0,16)K.Image=''K.ZIndex=6 K +.Parent=D return D end local function showLargePreview(D)if D:FindFirstChild +'AssetId'then delay(0,function()game:GetService'ContentProvider':Preload(y.. +tostring(D.AssetId.Value))n.SetPanel.ItemPreview.LargePreview.Image=y..tostring( +D.AssetId.Value)end)end if D:FindFirstChild'AssetName'then n.SetPanel. +ItemPreview.TextPanel.RolloverText.Text=D.AssetName.Value end end local function +selectTerrainShape(D)if A then c(tostring(A.AssetName.Value),tonumber(A.AssetId. +Value),D)end end local function createTerrainTypeButton(D,E)local H=Instance.new +'TextButton'H.Name=D..'Button'H.Font=Enum.Font.ArialBold H.FontSize=Enum. +FontSize.Size14 H.BorderSizePixel=0 H.TextColor3=Color3.new(1,1,1)H.Text=D H. +TextXAlignment=Enum.TextXAlignment.Left H.BackgroundTransparency=1 H.ZIndex=E. +ZIndex+1 H.Size=UDim2.new(0,E.Size.X.Offset-2,0,16)H.Position=UDim2.new(0,1,0,0) +H.MouseEnter:connect(function()H.BackgroundTransparency=0 H.TextColor3=Color3. +new(0,0,0)end)H.MouseLeave:connect(function()H.BackgroundTransparency=1 H. +TextColor3=Color3.new(1,1,1)end)H.MouseButton1Click:connect(function()H. +BackgroundTransparency=1 H.TextColor3=Color3.new(1,1,1)if H.Parent and H.Parent: +IsA'GuiObject'then H.Parent.Visible=false end selectTerrainShape(C[H.Text])end) +return H end local function createTerrainDropDownMenu(D)local E=Instance.new +'Frame'E.Name='TerrainDropDown'E.BackgroundColor3=Color3.new(0,0,0)E. +BorderColor3=Color3.new(1,0,0)E.Size=UDim2.new(0,200,0,0)E.Visible=false E. +ZIndex=D E.Parent=n for H=1,#B do local I=createTerrainTypeButton(B[H],E)I. +Position=UDim2.new(0,1,0,(H-1)*I.Size.Y.Offset)I.Parent=E E.Size=UDim2.new(0,200 +,0,E.Size.Y.Offset+I.Size.Y.Offset)end E.MouseLeave:connect(function()E.Visible= +false end)end local function createDropDownMenuButton(D)local E=Instance.new +'ImageButton'E.Name='DropDownButton'E.Image= +'http://www.roblox.com/asset/?id=67581509'E.BackgroundTransparency=1 E.Size= +UDim2.new(0,16,0,16)E.Position=UDim2.new(1,-24,0,6)E.ZIndex=D.ZIndex+2 E.Parent= +D if not n:FindFirstChild'TerrainDropDown'then createTerrainDropDownMenu(8)end E +.MouseButton1Click:connect(function()n.TerrainDropDown.Visible=true n. +TerrainDropDown.Position=UDim2.new(0,D.AbsolutePosition.X,0,D.AbsolutePosition.Y +)A=D end)end local function buildInsertButton()local D=makeInsertAssetButton()D. +Name='InsertAssetButton'D.Visible=true if s.Category[s.CurrentCategory].SetName +=='High Scalability'then createDropDownMenuButton(D)end local E=nil local H=D. +MouseEnter:connect(function()E=D delay(0.1,function()if E==D then +showLargePreview(D)end end)end)return D,H end local function realignButtonGrid(D +)local E,H=0,0 for I=1,#k do k[I].Position=UDim2.new(0,v*E,0,w*H)E=E+1 if E>=D +then E=0 H=H+1 end end end local function setInsertButtonImageBehavior(D,E,H,I) +if E then D.AssetName.Value=H D.AssetId.Value=I local J=x..I if J~=D.Button. ButtonImage.Image then delay(0,function()game:GetService'ContentProvider': -Preload(y..H)E.Button.ButtonImage.Image=y..H end)end table.insert(m,E.Button. -MouseButton1Click:connect(function()local J=(G=='Water')and(t.Category[t. -CurrentCategory].SetName=='High Scalability')r.Visible=J if J then c(G,tonumber( -H),nil)else c(G,tonumber(H))end end))E.Visible=true else E.Visible=false end end -local function loadSectionOfItems(E,F,G)local H=F*G if k>#n then return end -local I,J=k,0 for K=1,H+1 do if k>=#n+1 then break end local L l[k],L= -buildInsertButton()table.insert(m,L)l[k].Parent=E.SetPanel.ItemsFrame k=k+1 end -realignButtonGrid(G)local K=I for L=I,k do if l[L]then if n[L]then if n[L].Name -=='Water'then if t.Category[t.CurrentCategory].SetName=='High Scalability'then l -[L]:FindFirstChild('DropDownButton',true):Destroy()end end local M if j then M=n -[L].AssetVersionId else M=n[L].AssetId end setInsertButtonImageBehavior(l[L], -true,n[L].Name,M)else break end else break end K=L end end local function -setSetIndex()t.Category[t.CurrentCategory].Index=0 rows=7 columns=math.floor(o. -SetPanel.ItemsFrame.AbsoluteSize.X/w)n=t.Category[t.CurrentCategory].Contents if -n then for E=1,#l do l[E]:remove()end for E=1,#m do if m[E]then m[E]:disconnect( -)end end m={}l={}k=1 loadSectionOfItems(o,rows,columns)end end local function -selectSet(E,F,G,H)if E and t.Category[t.CurrentCategory]~=nil then if E~=t. -Category[t.CurrentCategory].Button then t.Category[t.CurrentCategory].Button=E -if u[G]==nil then u[G]=game:GetService'InsertService':GetCollection(G)end t. -Category[t.CurrentCategory].Contents=u[G]t.Category[t.CurrentCategory].SetName=F -t.Category[t.CurrentCategory].SetId=G end setSetIndex()end end local function -selectCategoryPage(E,F)if E~=t.CurrentCategory then if t.CurrentCategory then -for G,H in pairs(t.CurrentCategory)do H.Visible=false end end t.CurrentCategory= -E if t.Category[t.CurrentCategory]==nil then t.Category[t.CurrentCategory]={}if# -E>0 then selectSet(E[1],E[1].SetName.Value,E[1].SetId.Value,0)end else t. -Category[t.CurrentCategory].Button=nil selectSet(t.Category[t.CurrentCategory]. -ButtonFrame,t.Category[t.CurrentCategory].SetName,t.Category[t.CurrentCategory]. -SetId,t.Category[t.CurrentCategory].Index)end end end local function -selectCategory(E)selectCategoryPage(E,0)end local function -resetAllSetButtonSelection()local E=o.SetPanel.Sets.SetsLists:GetChildren()for F -=1,#E do if E[F]:IsA'TextButton'then E[F].Selected=false E[F]. -BackgroundTransparency=1 E[F].TextColor3=Color3.new(1,1,1)E[F].BackgroundColor3= -Color3.new(1,1,1)end end end local function populateSetsFrame()local E=0 for F=1 -,#v do local G=v[F]G.Visible=true G.Position=UDim2.new(0,5,0,E*G.Size.Y.Offset)G -.Parent=o.SetPanel.Sets.SetsLists if F==1 then G.Selected=true G. -BackgroundColor3=Color3.new(0,0.8,0)G.TextColor3=Color3.new(0,0,0)G. -BackgroundTransparency=0 end G.MouseEnter:connect(function()if not G.Selected -then G.BackgroundTransparency=0 G.TextColor3=Color3.new(0,0,0)end end)G. -MouseLeave:connect(function()if not G.Selected then G.BackgroundTransparency=1 G -.TextColor3=Color3.new(1,1,1)end end)G.MouseButton1Click:connect(function() -resetAllSetButtonSelection()G.Selected=not G.Selected G.BackgroundColor3=Color3. -new(0,0.8,0)G.TextColor3=Color3.new(0,0,0)G.BackgroundTransparency=0 selectSet(G -,G.Text,v[F].SetId.Value,0)end)E=E+1 end local F=o.SetPanel.Sets.SetsLists: -GetChildren()if F then for G=1,#F do if F[G]:IsA'TextButton'then selectSet(F[G], -F[G].Text,v[G].SetId.Value,0)selectCategory(v)break end end end end o= -createSetGui()r,s=createWaterGui()r.Position=UDim2.new(0,55,0,0)r.Parent=o o. -Changed:connect(function(E)if E=='AbsoluteSize'then handleResize()setSetIndex() -end end)local E,F=a.CreateTrueScrollingFrame()E.Size=UDim2.new(0.54,0,0.85,0)E. -Position=UDim2.new(0.24,0,0.085,0)E.Name='ItemsFrame'E.ZIndex=6 E.Parent=o. -SetPanel E.BackgroundTransparency=1 drillDownSetZIndex(F,7)F.Parent=o.SetPanel F -.Position=UDim2.new(0.76,5,0,0)local G=false F.ScrollBottom.Changed:connect( -function(H)if F.ScrollBottom.Value==true then if G then return end G=true -loadSectionOfItems(o,rows,columns)G=false end end)local H={}for I=1,#b do local -J=game:GetService'InsertService':GetUserSets(b[I])if J and#J>2 then for K=3,#J -do if J[K].Name=='High Scalability'then table.insert(H,1,J[K])else table.insert( -H,J[K])end end end end if H then v=processCategory(H)end rows=math.floor(o. -SetPanel.ItemsFrame.AbsoluteSize.Y/x)columns=math.floor(o.SetPanel.ItemsFrame. -AbsoluteSize.X/w)populateSetsFrame()insertPanelCloseCon=o.SetPanel.CancelButton. -MouseButton1Click:connect(function()o.SetPanel.Visible=false if d then d()end -end)local I,J=function(I)if I then o.SetPanel.Visible=true else o.SetPanel. -Visible=false end end,function()if o then if o:FindFirstChild'SetPanel'then -return o.SetPanel.Visible end end return false end return o,I,J,s end a. +Preload(x..I)D.Button.ButtonImage.Image=x..I end)end table.insert(l,D.Button. +MouseButton1Click:connect(function()local K=(H=='Water')and(s.Category[s. +CurrentCategory].SetName=='High Scalability')q.Visible=K if K then c(H,tonumber( +I),nil)else c(H,tonumber(I))end end))D.Visible=true else D.Visible=false end end +local function loadSectionOfItems(D,E,H)local I=E*H if j>#m then return end +local J,K=j,0 for L=1,I+1 do if j>=#m+1 then break end local M k[j],M= +buildInsertButton()table.insert(l,M)k[j].Parent=D.SetPanel.ItemsFrame j=j+1 end +realignButtonGrid(H)local L=J for M=J,j do if k[M]then if m[M]then if m[M].Name +=='Water'then if s.Category[s.CurrentCategory].SetName=='High Scalability'then k +[M]:FindFirstChild('DropDownButton',true):Destroy()end end local N if i then N=m +[M].AssetVersionId else N=m[M].AssetId end setInsertButtonImageBehavior(k[M], +true,m[M].Name,N)else break end else break end L=M end end local function +setSetIndex()s.Category[s.CurrentCategory].Index=0 rows=7 columns=math.floor(n. +SetPanel.ItemsFrame.AbsoluteSize.X/v)m=s.Category[s.CurrentCategory].Contents if +m then for D=1,#k do k[D]:remove()end for D=1,#l do if l[D]then l[D]:disconnect( +)end end l={}k={}j=1 loadSectionOfItems(n,rows,columns)end end local function +selectSet(D,E,H,I)if D and s.Category[s.CurrentCategory]~=nil then if D~=s. +Category[s.CurrentCategory].Button then s.Category[s.CurrentCategory].Button=D +if t[H]==nil then t[H]=game:GetService'InsertService':GetCollection(H)end s. +Category[s.CurrentCategory].Contents=t[H]s.Category[s.CurrentCategory].SetName=E +s.Category[s.CurrentCategory].SetId=H end setSetIndex()end end local function +selectCategoryPage(D,E)if D~=s.CurrentCategory then if s.CurrentCategory then +for H,I in pairs(s.CurrentCategory)do I.Visible=false end end s.CurrentCategory= +D if s.Category[s.CurrentCategory]==nil then s.Category[s.CurrentCategory]={}if# +D>0 then selectSet(D[1],D[1].SetName.Value,D[1].SetId.Value,0)end else s. +Category[s.CurrentCategory].Button=nil selectSet(s.Category[s.CurrentCategory]. +ButtonFrame,s.Category[s.CurrentCategory].SetName,s.Category[s.CurrentCategory]. +SetId,s.Category[s.CurrentCategory].Index)end end end local function +selectCategory(D)selectCategoryPage(D,0)end local function +resetAllSetButtonSelection()local D=n.SetPanel.Sets.SetsLists:GetChildren()for E +=1,#D do if D[E]:IsA'TextButton'then D[E].Selected=false D[E]. +BackgroundTransparency=1 D[E].TextColor3=Color3.new(1,1,1)D[E].BackgroundColor3= +Color3.new(1,1,1)end end end local function populateSetsFrame()local D=0 for E=1 +,#u do local H=u[E]H.Visible=true H.Position=UDim2.new(0,5,0,D*H.Size.Y.Offset)H +.Parent=n.SetPanel.Sets.SetsLists if E==1 then H.Selected=true H. +BackgroundColor3=Color3.new(0,0.8,0)H.TextColor3=Color3.new(0,0,0)H. +BackgroundTransparency=0 end H.MouseEnter:connect(function()if not H.Selected +then H.BackgroundTransparency=0 H.TextColor3=Color3.new(0,0,0)end end)H. +MouseLeave:connect(function()if not H.Selected then H.BackgroundTransparency=1 H +.TextColor3=Color3.new(1,1,1)end end)H.MouseButton1Click:connect(function() +resetAllSetButtonSelection()H.Selected=not H.Selected H.BackgroundColor3=Color3. +new(0,0.8,0)H.TextColor3=Color3.new(0,0,0)H.BackgroundTransparency=0 selectSet(H +,H.Text,u[E].SetId.Value,0)end)D=D+1 end local E=n.SetPanel.Sets.SetsLists: +GetChildren()if E then for H=1,#E do if E[H]:IsA'TextButton'then selectSet(E[H], +E[H].Text,u[H].SetId.Value,0)selectCategory(u)break end end end end n= +createSetGui()q,r=createWaterGui()q.Position=UDim2.new(0,55,0,0)q.Parent=n n. +Changed:connect(function(D)if D=='AbsoluteSize'then handleResize()setSetIndex() +end end)local D,E=a.CreateTrueScrollingFrame()D.Size=UDim2.new(0.54,0,0.85,0)D. +Position=UDim2.new(0.24,0,0.085,0)D.Name='ItemsFrame'D.ZIndex=6 D.Parent=n. +SetPanel D.BackgroundTransparency=1 drillDownSetZIndex(E,7)E.Parent=n.SetPanel E +.Position=UDim2.new(0.76,5,0,0)local H=false E.ScrollBottom.Changed:connect( +function(I)if E.ScrollBottom.Value==true then if H then return end H=true +loadSectionOfItems(n,rows,columns)H=false end end)local I={}for J=1,#b do local +K=game:GetService'InsertService':GetUserSets(b[J])if K and#K>2 then for L=3,#K +do if K[L].Name=='High Scalability'then table.insert(I,1,K[L])else table.insert( +I,K[L])end end end end if I then u=processCategory(I)end rows=math.floor(n. +SetPanel.ItemsFrame.AbsoluteSize.Y/w)columns=math.floor(n.SetPanel.ItemsFrame. +AbsoluteSize.X/v)populateSetsFrame()insertPanelCloseCon=n.SetPanel.CancelButton. +MouseButton1Click:connect(function()n.SetPanel.Visible=false if d then d()end +end)local J,K=function(J)if J then n.SetPanel.Visible=true else n.SetPanel. +Visible=false end end,function()if n then if n:FindFirstChild'SetPanel'then +return n.SetPanel.Visible end end return false end return n,J,K,r end a. CreateTerrainMaterialSelector=function(b,c)local d=Instance.new'BindableEvent'd. -Name='TerrainMaterialSelectionChanged'local g,h=nil,Instance.new'Frame'h.Name= -'TerrainMaterialSelector'if b then h.Size=b else h.Size=UDim2.new(0,245,0,230) -end if c then h.Position=c end h.BorderSizePixel=0 h.BackgroundColor3=Color3. -new(0,0,0)h.Active=true d.Parent=h local i,j,k=true,{},{'Grass','Sand','Brick', +Name='TerrainMaterialSelectionChanged'local e,g=nil,Instance.new'Frame'g.Name= +'TerrainMaterialSelector'if b then g.Size=b else g.Size=UDim2.new(0,245,0,230) +end if c then g.Position=c end g.BorderSizePixel=0 g.BackgroundColor3=Color3. +new(0,0,0)g.Active=true d.Parent=g local h,i,j=true,{},{'Grass','Sand','Brick', 'Granite','Asphalt','Iron','Aluminum','Gold','Plank','Log','Gravel', -'Cinder Block','Stone Wall','Concrete','Plastic (red)','Plastic (blue)'}if i -then table.insert(k,'Water')end local l=1 function getEnumFromName(m)if m== -'Grass'then return 1 end if m=='Sand'then return 2 end if m=='Erase'then return -0 end if m=='Brick'then return 3 end if m=='Granite'then return 4 end if m== -'Asphalt'then return 5 end if m=='Iron'then return 6 end if m=='Aluminum'then -return 7 end if m=='Gold'then return 8 end if m=='Plank'then return 9 end if m== -'Log'then return 10 end if m=='Gravel'then return 11 end if m=='Cinder Block' -then return 12 end if m=='Stone Wall'then return 13 end if m=='Concrete'then -return 14 end if m=='Plastic (red)'then return 15 end if m=='Plastic (blue)'then -return 16 end if m=='Water'then return 17 end end function getNameFromEnum(m)if -m==Enum.CellMaterial.Grass or m==1 then return'Grass'end if m==Enum.CellMaterial -.Sand or m==2 then return'Sand'end if m==Enum.CellMaterial.Empty or m==0 then -return'Erase'end if m==Enum.CellMaterial.Brick or m==3 then return'Brick'end if -m==Enum.CellMaterial.Granite or m==4 then return'Granite'end if m==Enum. -CellMaterial.Asphalt or m==5 then return'Asphalt'end if m==Enum.CellMaterial. -Iron or m==6 then return'Iron'end if m==Enum.CellMaterial.Aluminum or m==7 then -return'Aluminum'end if m==Enum.CellMaterial.Gold or m==8 then return'Gold'end if -m==Enum.CellMaterial.WoodPlank or m==9 then return'Plank'end if m==Enum. -CellMaterial.WoodLog or m==10 then return'Log'end if m==Enum.CellMaterial.Gravel -or m==11 then return'Gravel'end if m==Enum.CellMaterial.CinderBlock or m==12 -then return'Cinder Block'end if m==Enum.CellMaterial.MossyStone or m==13 then -return'Stone Wall'end if m==Enum.CellMaterial.Cement or m==14 then return -'Concrete'end if m==Enum.CellMaterial.RedPlastic or m==15 then return -'Plastic (red)'end if m==Enum.CellMaterial.BluePlastic or m==16 then return -'Plastic (blue)'end if i then if m==Enum.CellMaterial.Water or m==17 then return -'Water'end end end local function updateMaterialChoice(m)l=getEnumFromName(m)d: -Fire(l)end for m,n in pairs(k)do j[n]={}if n=='Grass'then j[n].Regular= -'http://www.roblox.com/asset/?id=56563112'elseif n=='Sand'then j[n].Regular= -'http://www.roblox.com/asset/?id=62356652'elseif n=='Brick'then j[n].Regular= -'http://www.roblox.com/asset/?id=65961537'elseif n=='Granite'then j[n].Regular= -'http://www.roblox.com/asset/?id=67532153'elseif n=='Asphalt'then j[n].Regular= -'http://www.roblox.com/asset/?id=67532038'elseif n=='Iron'then j[n].Regular= -'http://www.roblox.com/asset/?id=67532093'elseif n=='Aluminum'then j[n].Regular= -'http://www.roblox.com/asset/?id=67531995'elseif n=='Gold'then j[n].Regular= -'http://www.roblox.com/asset/?id=67532118'elseif n=='Plastic (red)'then j[n]. -Regular='http://www.roblox.com/asset/?id=67531848'elseif n=='Plastic (blue)'then -j[n].Regular='http://www.roblox.com/asset/?id=67531924'elseif n=='Plank'then j[n -].Regular='http://www.roblox.com/asset/?id=67532015'elseif n=='Log'then j[n]. -Regular='http://www.roblox.com/asset/?id=67532051'elseif n=='Gravel'then j[n]. -Regular='http://www.roblox.com/asset/?id=67532206'elseif n=='Cinder Block'then j -[n].Regular='http://www.roblox.com/asset/?id=67532103'elseif n=='Stone Wall'then -j[n].Regular='http://www.roblox.com/asset/?id=67531804'elseif n=='Concrete'then -j[n].Regular='http://www.roblox.com/asset/?id=67532059'elseif n=='Water'then j[n -].Regular='http://www.roblox.com/asset/?id=81407474'else j[n].Regular= -'http://www.roblox.com/asset/?id=66887593'end end local o,p,q,r=a. -CreateScrollingFrame(nil,'grid')o.Size=UDim2.new(0.85,0,1,0)o.Position=UDim2. -new(0,0,0,0)o.Parent=h p.Parent=h p.Visible=true p.Position=UDim2.new(1,-19,0,0) -q.Parent=h q.Visible=true q.Position=UDim2.new(1,-19,1,-17)local function -goToNewMaterial(s,t)updateMaterialChoice(t)s.BackgroundTransparency=0 g. -BackgroundTransparency=1 g=s end local function createMaterialButton(s)local t= -Instance.new'TextButton't.Text=''t.Size=UDim2.new(0,32,0,32)t.BackgroundColor3= -Color3.new(1,1,1)t.BorderSizePixel=0 t.BackgroundTransparency=1 t. -AutoButtonColor=false t.Name=tostring(s)local u=Instance.new'ImageButton'u. -AutoButtonColor=false u.BackgroundTransparency=1 u.Size=UDim2.new(0,30,0,30)u. -Position=UDim2.new(0,1,0,1)u.Name=tostring(s)u.Parent=t u.Image=j[s].Regular -local v=Instance.new'NumberValue'v.Name='EnumType'v.Parent=t v.Value=0 u. -MouseEnter:connect(function()t.BackgroundTransparency=0 end)u.MouseLeave: -connect(function()if g~=t then t.BackgroundTransparency=1 end end)u. -MouseButton1Click:connect(function()if g~=t then goToNewMaterial(t,tostring(s)) -end end)return t end for s=1,#k do local t=createMaterialButton(k[s])if k[s]== -'Grass'then g=t t.BackgroundTransparency=0 end t.Parent=o end local s=function(s -)if not s then return end if l==s then return end local t,u=getNameFromEnum(s),o -:GetChildren()for v=1,#u do if u[v].Name=='Plastic (blue)'and t== -'Plastic (blue)'then goToNewMaterial(u[v],t)return end if u[v].Name== -'Plastic (red)'and t=='Plastic (red)'then goToNewMaterial(u[v],t)return end if -string.find(u[v].Name,t)then goToNewMaterial(u[v],t)return end end end h.Changed -:connect(function(t)if t=='AbsoluteSize'then r()end end)r()return h,d,s end a. +'Cinder Block','Stone Wall','Concrete','Plastic (red)','Plastic (blue)'}if h +then table.insert(j,'Water')end local k=1 function getEnumFromName(l)if l== +'Grass'then return 1 end if l=='Sand'then return 2 end if l=='Erase'then return +0 end if l=='Brick'then return 3 end if l=='Granite'then return 4 end if l== +'Asphalt'then return 5 end if l=='Iron'then return 6 end if l=='Aluminum'then +return 7 end if l=='Gold'then return 8 end if l=='Plank'then return 9 end if l== +'Log'then return 10 end if l=='Gravel'then return 11 end if l=='Cinder Block' +then return 12 end if l=='Stone Wall'then return 13 end if l=='Concrete'then +return 14 end if l=='Plastic (red)'then return 15 end if l=='Plastic (blue)'then +return 16 end if l=='Water'then return 17 end end function getNameFromEnum(l)if +l==Enum.CellMaterial.Grass or l==1 then return'Grass'elseif l==Enum.CellMaterial +.Sand or l==2 then return'Sand'elseif l==Enum.CellMaterial.Empty or l==0 then +return'Erase'elseif l==Enum.CellMaterial.Brick or l==3 then return'Brick'elseif +l==Enum.CellMaterial.Granite or l==4 then return'Granite'elseif l==Enum. +CellMaterial.Asphalt or l==5 then return'Asphalt'elseif l==Enum.CellMaterial. +Iron or l==6 then return'Iron'elseif l==Enum.CellMaterial.Aluminum or l==7 then +return'Aluminum'elseif l==Enum.CellMaterial.Gold or l==8 then return'Gold'elseif +l==Enum.CellMaterial.WoodPlank or l==9 then return'Plank'elseif l==Enum. +CellMaterial.WoodLog or l==10 then return'Log'elseif l==Enum.CellMaterial.Gravel +or l==11 then return'Gravel'elseif l==Enum.CellMaterial.CinderBlock or l==12 +then return'Cinder Block'elseif l==Enum.CellMaterial.MossyStone or l==13 then +return'Stone Wall'elseif l==Enum.CellMaterial.Cement or l==14 then return +'Concrete'elseif l==Enum.CellMaterial.RedPlastic or l==15 then return +'Plastic (red)'elseif l==Enum.CellMaterial.BluePlastic or l==16 then return +'Plastic (blue)'end if h then if l==Enum.CellMaterial.Water or l==17 then return +'Water'end end end local function updateMaterialChoice(l)k=getEnumFromName(l)d: +Fire(k)end for l,m in pairs(j)do i[m]={}if m=='Grass'then i[m].Regular= +'http://www.roblox.com/asset/?id=56563112'elseif m=='Sand'then i[m].Regular= +'http://www.roblox.com/asset/?id=62356652'elseif m=='Brick'then i[m].Regular= +'http://www.roblox.com/asset/?id=65961537'elseif m=='Granite'then i[m].Regular= +'http://www.roblox.com/asset/?id=67532153'elseif m=='Asphalt'then i[m].Regular= +'http://www.roblox.com/asset/?id=67532038'elseif m=='Iron'then i[m].Regular= +'http://www.roblox.com/asset/?id=67532093'elseif m=='Aluminum'then i[m].Regular= +'http://www.roblox.com/asset/?id=67531995'elseif m=='Gold'then i[m].Regular= +'http://www.roblox.com/asset/?id=67532118'elseif m=='Plastic (red)'then i[m]. +Regular='http://www.roblox.com/asset/?id=67531848'elseif m=='Plastic (blue)'then +i[m].Regular='http://www.roblox.com/asset/?id=67531924'elseif m=='Plank'then i[m +].Regular='http://www.roblox.com/asset/?id=67532015'elseif m=='Log'then i[m]. +Regular='http://www.roblox.com/asset/?id=67532051'elseif m=='Gravel'then i[m]. +Regular='http://www.roblox.com/asset/?id=67532206'elseif m=='Cinder Block'then i +[m].Regular='http://www.roblox.com/asset/?id=67532103'elseif m=='Stone Wall'then +i[m].Regular='http://www.roblox.com/asset/?id=67531804'elseif m=='Concrete'then +i[m].Regular='http://www.roblox.com/asset/?id=67532059'elseif m=='Water'then i[m +].Regular='http://www.roblox.com/asset/?id=81407474'else i[m].Regular= +'http://www.roblox.com/asset/?id=66887593'end end local n,o,p,q=a. +CreateScrollingFrame(nil,'grid')n.Size=UDim2.new(0.85,0,1,0)n.Position=UDim2. +new(0,0,0,0)n.Parent=g o.Parent=g o.Visible=true o.Position=UDim2.new(1,-19,0,0) +p.Parent=g p.Visible=true p.Position=UDim2.new(1,-19,1,-17)local function +goToNewMaterial(r,s)updateMaterialChoice(s)r.BackgroundTransparency=0 e. +BackgroundTransparency=1 e=r end local function createMaterialButton(r)local s= +Instance.new'TextButton's.Text=''s.Size=UDim2.new(0,32,0,32)s.BackgroundColor3= +Color3.new(1,1,1)s.BorderSizePixel=0 s.BackgroundTransparency=1 s. +AutoButtonColor=false s.Name=tostring(r)local t=Instance.new'ImageButton't. +AutoButtonColor=false t.BackgroundTransparency=1 t.Size=UDim2.new(0,30,0,30)t. +Position=UDim2.new(0,1,0,1)t.Name=tostring(r)t.Parent=s t.Image=i[r].Regular +local u=Instance.new'NumberValue'u.Name='EnumType'u.Parent=s u.Value=0 t. +MouseEnter:connect(function()s.BackgroundTransparency=0 end)t.MouseLeave: +connect(function()if e~=s then s.BackgroundTransparency=1 end end)t. +MouseButton1Click:connect(function()if e~=s then goToNewMaterial(s,tostring(r)) +end end)return s end for r=1,#j do local s=createMaterialButton(j[r])if j[r]== +'Grass'then e=s s.BackgroundTransparency=0 end s.Parent=n end local r=function(r +)if not r then return end if k==r then return end local s,t=getNameFromEnum(r),n +:GetChildren()for u=1,#t do if t[u].Name=='Plastic (blue)'and s== +'Plastic (blue)'then goToNewMaterial(t[u],s)return end if t[u].Name== +'Plastic (red)'and s=='Plastic (red)'then goToNewMaterial(t[u],s)return end if +string.find(t[u].Name,s)then goToNewMaterial(t[u],s)return end end end g.Changed +:connect(function(s)if s=='AbsoluteSize'then q()end end)q()return g,d,r end a. CreateLoadingFrame=function(b,c,d)game:GetService'ContentProvider':Preload -'http://www.roblox.com/asset/?id=35238053'local g=Instance.new'Frame'g.Name= -'LoadingFrame'g.Style=Enum.FrameStyle.RobloxRound if c then g.Size=c else g.Size -=UDim2.new(0,300,0,160)end if d then g.Position=d else g.Position=UDim2.new(0.5, --150,0.5,-80)end local h=Instance.new'Frame'h.Name='LoadingBar'h. -BackgroundColor3=Color3.new(0,0,0)h.BorderColor3=Color3.new(0.30980392156862746, -0.30980392156862746,0.30980392156862746)h.Position=UDim2.new(0,0,0,41)h.Size= -UDim2.new(1,0,0,30)h.Parent=g local i=Instance.new'ImageLabel'i.Name= -'LoadingGreenBar'i.Image='http://www.roblox.com/asset/?id=35238053'i.Position= -UDim2.new(0,0,0,0)i.Size=UDim2.new(0,0,1,0)i.Visible=false i.Parent=h local j= -Instance.new'TextLabel'j.Name='LoadingPercent'j.BackgroundTransparency=1 j. -Position=UDim2.new(0,0,1,0)j.Size=UDim2.new(1,0,0,14)j.Font=Enum.Font.Arial j. -Text='0%'j.FontSize=Enum.FontSize.Size14 j.TextColor3=Color3.new(1,1,1)j.Parent= -h local k=Instance.new'TextButton'k.Name='CancelButton'k.Position=UDim2.new(0.5, --60,1,-40)k.Size=UDim2.new(0,120,0,40)k.Font=Enum.Font.Arial k.FontSize=Enum. -FontSize.Size18 k.TextColor3=Color3.new(1,1,1)k.Text='Cancel'k.Style=Enum. -ButtonStyle.RobloxButton k.Parent=g local l=Instance.new'TextLabel'l.Name= -'loadingName'l.BackgroundTransparency=1 l.Size=UDim2.new(1,0,0,18)l.Position= -UDim2.new(0,0,0,2)l.Font=Enum.Font.Arial l.Text=b l.TextColor3=Color3.new(1,1,1) -l.TextStrokeTransparency=1 l.FontSize=Enum.FontSize.Size18 l.Parent=g local m= -Instance.new'BindableEvent'm.Name='CancelButtonClicked'm.Parent=k k. -MouseButton1Click:connect(function()m:Fire()end)local n=function(n,o,p)if n and -type(n)~='number'then error( -'updateLoadingGuiPercent expects number as argument, got',type(n),'instead')end -local q=nil if n<0 then q=UDim2.new(0,0,1,0)elseif n>1 then q=UDim2.new(1,0,1,0) -else q=UDim2.new(n,0,1,0)end if o then if not p then error +'http://www.roblox.com/asset/?id=35238053'local e=Instance.new'Frame'e.Name= +'LoadingFrame'e.Style=Enum.FrameStyle.RobloxRound if c then e.Size=c else e.Size +=UDim2.new(0,300,0,160)end if d then e.Position=d else e.Position=UDim2.new(0.5, +-150,0.5,-80)end local g=Instance.new'Frame'g.Name='LoadingBar'g. +BackgroundColor3=Color3.new(0,0,0)g.BorderColor3=Color3.new(0.30980392156862746, +0.30980392156862746,0.30980392156862746)g.Position=UDim2.new(0,0,0,41)g.Size= +UDim2.new(1,0,0,30)g.Parent=e local h=Instance.new'ImageLabel'h.Name= +'LoadingGreenBar'h.Image='http://www.roblox.com/asset/?id=35238053'h.Position= +UDim2.new(0,0,0,0)h.Size=UDim2.new(0,0,1,0)h.Visible=false h.Parent=g local i= +Instance.new'TextLabel'i.Name='LoadingPercent'i.BackgroundTransparency=1 i. +Position=UDim2.new(0,0,1,0)i.Size=UDim2.new(1,0,0,14)i.Font=Enum.Font.Arial i. +Text='0%'i.FontSize=Enum.FontSize.Size14 i.TextColor3=Color3.new(1,1,1)i.Parent= +g local j=Instance.new'TextButton'j.Name='CancelButton'j.Position=UDim2.new(0.5, +-60,1,-40)j.Size=UDim2.new(0,120,0,40)j.Font=Enum.Font.Arial j.FontSize=Enum. +FontSize.Size18 j.TextColor3=Color3.new(1,1,1)j.Text='Cancel'j.Style=Enum. +ButtonStyle.RobloxButton j.Parent=e local k=Instance.new'TextLabel'k.Name= +'loadingName'k.BackgroundTransparency=1 k.Size=UDim2.new(1,0,0,18)k.Position= +UDim2.new(0,0,0,2)k.Font=Enum.Font.Arial k.Text=b k.TextColor3=Color3.new(1,1,1) +k.TextStrokeTransparency=1 k.FontSize=Enum.FontSize.Size18 k.Parent=e local l= +Instance.new'BindableEvent'l.Name='CancelButtonClicked'l.Parent=j j. +MouseButton1Click:connect(function()l:Fire()end)local m=function(m,n,o)if m and +type(m)~='number'then error( +'updateLoadingGuiPercent expects number as argument, got',type(m),'instead')end +local p=nil if m<0 then p=UDim2.new(0,0,1,0)elseif m>1 then p=UDim2.new(1,0,1,0) +else p=UDim2.new(m,0,1,0)end if n then if not o then error [[updateLoadingGuiPercent is set to tween new percentage, but got no tween time length! Please pass this in as third argument]] -end if q.X.Scale>0 then i.Visible=true i:TweenSize(q,Enum.EasingDirection.Out, -Enum.EasingStyle.Quad,p,true)else i:TweenSize(q,Enum.EasingDirection.Out,Enum. -EasingStyle.Quad,p,true,function()if q.X.Scale<0 then i.Visible=false end end) -end else i.Size=q i.Visible=(q.X.Scale>0)end end i.Changed:connect(function(o)if -o=='Size'then j.Text=tostring(math.ceil(i.Size.X.Scale*100))..'%'end end)return -g,n,m end a.CreatePluginFrame=function(b,c,d,g,h)function createMenuButton(i,j,k -,l,m,n)local o=Instance.new'TextButton'o.AutoButtonColor=false o.Name=m o. -BackgroundTransparency=1 o.Position=j o.Size=i o.Font=Enum.Font.ArialBold o. -FontSize=l o.Text=k o.TextColor3=Color3.new(1,1,1)o.BorderSizePixel=0 o. +end if p.X.Scale>0 then h.Visible=true h:TweenSize(p,Enum.EasingDirection.Out, +Enum.EasingStyle.Quad,o,true)else h:TweenSize(p,Enum.EasingDirection.Out,Enum. +EasingStyle.Quad,o,true,function()if p.X.Scale<0 then h.Visible=false end end) +end else h.Size=p h.Visible=(p.X.Scale>0)end end h.Changed:connect(function(n)if +n=='Size'then i.Text=tostring(math.ceil(h.Size.X.Scale*100))..'%'end end)return +e,m,l end a.CreatePluginFrame=function(b,c,d,e,g)function createMenuButton(h,i,j +,k,l,m)local n=Instance.new'TextButton'n.AutoButtonColor=false n.Name=l n. +BackgroundTransparency=1 n.Position=i n.Size=h n.Font=Enum.Font.ArialBold n. +FontSize=k n.Text=j n.TextColor3=Color3.new(1,1,1)n.BorderSizePixel=0 n. BackgroundColor3=Color3.new(7.8431372549019605E-2,7.8431372549019605E-2, -7.8431372549019605E-2)o.MouseEnter:connect(function()if o.Selected then return -end o.BackgroundTransparency=0 end)o.MouseLeave:connect(function()if o.Selected -then return end o.BackgroundTransparency=1 end)o.Parent=n return o end local i= -Instance.new'Frame'i.Name=tostring(b)..'DragBar'i.BackgroundColor3=Color3.new( -0.15294117647058825,0.15294117647058825,0.15294117647058825)i.BorderColor3= -Color3.new(0,0,0)if c then i.Size=UDim2.new(c.X.Scale,c.X.Offset,0,20)+UDim2. -new(0,20,0,0)else i.Size=UDim2.new(0,183,0,20)end if d then i.Position=d end i. -Active=true i.Draggable=true i.MouseEnter:connect(function()i.BackgroundColor3= -Color3.new(0.19215686274509805,0.19215686274509805,0.19215686274509805)end)i. -MouseLeave:connect(function()i.BackgroundColor3=Color3.new(0.15294117647058825, -0.15294117647058825,0.15294117647058825)end)i.Parent=h local j=Instance.new -'TextLabel'j.Name='BarNameLabel'j.Text=' '..tostring(b)j.TextColor3=Color3.new(1 -,1,1)j.TextStrokeTransparency=0 j.Size=UDim2.new(1,0,1,0)j.Font=Enum.Font. -ArialBold j.FontSize=Enum.FontSize.Size18 j.TextXAlignment=Enum.TextXAlignment. -Left j.BackgroundTransparency=1 j.Parent=i local k,l=createMenuButton(UDim2.new( -0,15,0,17),UDim2.new(1,-16,0.5,-8),'X',Enum.FontSize.Size14,'CloseButton',i), -Instance.new'BindableEvent'l.Name='CloseEvent'l.Parent=k k.MouseButton1Click: -connect(function()l:Fire()k.BackgroundTransparency=1 end)local m,n= +7.8431372549019605E-2)n.MouseEnter:connect(function()if n.Selected then return +end n.BackgroundTransparency=0 end)n.MouseLeave:connect(function()if n.Selected +then return end n.BackgroundTransparency=1 end)n.Parent=m return n end local h= +Instance.new'Frame'h.Name=tostring(b)..'DragBar'h.BackgroundColor3=Color3.new( +0.15294117647058825,0.15294117647058825,0.15294117647058825)h.BorderColor3= +Color3.new(0,0,0)if c then h.Size=UDim2.new(c.X.Scale,c.X.Offset,0,20)+UDim2. +new(0,20,0,0)else h.Size=UDim2.new(0,183,0,20)end if d then h.Position=d end h. +Active=true h.Draggable=true h.MouseEnter:connect(function()h.BackgroundColor3= +Color3.new(0.19215686274509805,0.19215686274509805,0.19215686274509805)end)h. +MouseLeave:connect(function()h.BackgroundColor3=Color3.new(0.15294117647058825, +0.15294117647058825,0.15294117647058825)end)h.Parent=g local i=Instance.new +'TextLabel'i.Name='BarNameLabel'i.Text=' '..tostring(b)i.TextColor3=Color3.new(1 +,1,1)i.TextStrokeTransparency=0 i.Size=UDim2.new(1,0,1,0)i.Font=Enum.Font. +ArialBold i.FontSize=Enum.FontSize.Size18 i.TextXAlignment=Enum.TextXAlignment. +Left i.BackgroundTransparency=1 i.Parent=h local j,k=createMenuButton(UDim2.new( +0,15,0,17),UDim2.new(1,-16,0.5,-8),'X',Enum.FontSize.Size14,'CloseButton',h), +Instance.new'BindableEvent'k.Name='CloseEvent'k.Parent=j j.MouseButton1Click: +connect(function()k:Fire()j.BackgroundTransparency=1 end)local l,m= createMenuButton(UDim2.new(0,15,0,17),UDim2.new(1,-51,0.5,-8),'?',Enum.FontSize. -Size14,'HelpButton',i),Instance.new'Frame'n.Name='HelpFrame'n.BackgroundColor3= -Color3.new(0,0,0)n.Size=UDim2.new(0,300,0,552)n.Position=UDim2.new(1,5,0,0)n. -Active=true n.BorderSizePixel=0 n.Visible=false n.Parent=i m.MouseButton1Click: -connect(function()n.Visible=not n.Visible if n.Visible then m.Selected=true m. -BackgroundTransparency=0 local o=getScreenGuiAncestor(n)if o then if n. -AbsolutePosition.X+n.AbsoluteSize.X>o.AbsoluteSize.X then n.Position=UDim2.new(0 -,-5-n.AbsoluteSize.X,0,0)else n.Position=UDim2.new(1,5,0,0)end else n.Position= -UDim2.new(1,5,0,0)end else m.Selected=false m.BackgroundTransparency=1 end end) -local o=createMenuButton(UDim2.new(0,16,0,17),UDim2.new(1,-34,0.5,-8),'-',Enum. -FontSize.Size14,'MinimizeButton',i)o.TextYAlignment=Enum.TextYAlignment.Top -local p=Instance.new'Frame'p.Name='MinimizeFrame'p.BackgroundColor3=Color3.new( -0.28627450980392155,0.28627450980392155,0.28627450980392155)p.BorderColor3= -Color3.new(0,0,0)p.Position=UDim2.new(0,0,1,0)if c then p.Size=UDim2.new(c.X. -Scale,c.X.Offset,0,50)+UDim2.new(0,20,0,0)else p.Size=UDim2.new(0,183,0,50)end p -.Visible=false p.Parent=i local q=Instance.new'TextButton'q.Position=UDim2.new( -0.5,-50,0.5,-20)q.Name='MinimizeButton'q.Size=UDim2.new(0,100,0,40)q.Style=Enum. -ButtonStyle.RobloxButton q.Font=Enum.Font.ArialBold q.FontSize=Enum.FontSize. -Size18 q.TextColor3=Color3.new(1,1,1)q.Text='Show'q.Parent=p local r=Instance. -new'Frame'r.Name='SeparatingLine'r.BackgroundColor3=Color3.new( -0.45098039215686275,0.45098039215686275,0.45098039215686275)r.BorderSizePixel=0 -r.Position=UDim2.new(1,-18,0.5,-7)r.Size=UDim2.new(0,1,0,14)r.Parent=i local s=r -:clone()s.Position=UDim2.new(1,-35,0.5,-7)s.Parent=i local t=Instance.new'Frame' -t.Name='WidgetContainer't.BackgroundTransparency=1 t.Position=UDim2.new(0,0,1,0) -t.BorderColor3=Color3.new(0,0,0)if not g then t.BackgroundTransparency=0 t. +Size14,'HelpButton',h),Instance.new'Frame'm.Name='HelpFrame'm.BackgroundColor3= +Color3.new(0,0,0)m.Size=UDim2.new(0,300,0,552)m.Position=UDim2.new(1,5,0,0)m. +Active=true m.BorderSizePixel=0 m.Visible=false m.Parent=h l.MouseButton1Click: +connect(function()m.Visible=not m.Visible if m.Visible then l.Selected=true l. +BackgroundTransparency=0 local n=getScreenGuiAncestor(m)if n then if m. +AbsolutePosition.X+m.AbsoluteSize.X>n.AbsoluteSize.X then m.Position=UDim2.new(0 +,-5-m.AbsoluteSize.X,0,0)else m.Position=UDim2.new(1,5,0,0)end else m.Position= +UDim2.new(1,5,0,0)end else l.Selected=false l.BackgroundTransparency=1 end end) +local n=createMenuButton(UDim2.new(0,16,0,17),UDim2.new(1,-34,0.5,-8),'-',Enum. +FontSize.Size14,'MinimizeButton',h)n.TextYAlignment=Enum.TextYAlignment.Top +local o=Instance.new'Frame'o.Name='MinimizeFrame'o.BackgroundColor3=Color3.new( +0.28627450980392155,0.28627450980392155,0.28627450980392155)o.BorderColor3= +Color3.new(0,0,0)o.Position=UDim2.new(0,0,1,0)if c then o.Size=UDim2.new(c.X. +Scale,c.X.Offset,0,50)+UDim2.new(0,20,0,0)else o.Size=UDim2.new(0,183,0,50)end o +.Visible=false o.Parent=h local p=Instance.new'TextButton'p.Position=UDim2.new( +0.5,-50,0.5,-20)p.Name='MinimizeButton'p.Size=UDim2.new(0,100,0,40)p.Style=Enum. +ButtonStyle.RobloxButton p.Font=Enum.Font.ArialBold p.FontSize=Enum.FontSize. +Size18 p.TextColor3=Color3.new(1,1,1)p.Text='Show'p.Parent=o local q=Instance. +new'Frame'q.Name='SeparatingLine'q.BackgroundColor3=Color3.new( +0.45098039215686275,0.45098039215686275,0.45098039215686275)q.BorderSizePixel=0 +q.Position=UDim2.new(1,-18,0.5,-7)q.Size=UDim2.new(0,1,0,14)q.Parent=h local r=q +:clone()r.Position=UDim2.new(1,-35,0.5,-7)r.Parent=h local s=Instance.new'Frame' +s.Name='WidgetContainer's.BackgroundTransparency=1 s.Position=UDim2.new(0,0,1,0) +s.BorderColor3=Color3.new(0,0,0)if not e then s.BackgroundTransparency=0 s. BackgroundColor3=Color3.new(0.2823529411764706,0.2823529411764706, -0.2823529411764706)end t.Parent=i if c then if g then t.Size=c else t.Size=UDim2 -.new(0,i.AbsoluteSize.X,c.Y.Scale,c.Y.Offset)end else if g then t.Size=UDim2. -new(0,163,0,400)else t.Size=UDim2.new(0,i.AbsoluteSize.X,0,400)end end if d then -t.Position=d+UDim2.new(0,0,0,20)end local u,v,w=nil if g then u,v=a. -CreateTrueScrollingFrame()u.Size=UDim2.new(1,0,1,0)u.BackgroundColor3=Color3. -new(0.2823529411764706,0.2823529411764706,0.2823529411764706)u.BorderColor3= -Color3.new(0,0,0)u.Active=true u.Parent=t v.Parent=i v.BackgroundColor3=Color3. -new(0.2823529411764706,0.2823529411764706,0.2823529411764706)v.BorderSizePixel=0 -v.BackgroundTransparency=0 v.Position=UDim2.new(1,-21,1,1)if c then v.Size=UDim2 -.new(0,21,c.Y.Scale,c.Y.Offset)else v.Size=UDim2.new(0,21,0,400)end v: -FindFirstChild'ScrollDownButton'.Position=UDim2.new(0,0,1,-20)local x=Instance. -new'Frame'x.Name='FakeLine'x.BorderSizePixel=0 x.BackgroundColor3=Color3.new(0,0 -,0)x.Size=UDim2.new(0,1,1,1)x.Position=UDim2.new(1,0,0,0)x.Parent=v w=Instance. -new'TextButton'w.ZIndex=2 w.AutoButtonColor=false w.Name='VerticalDragger'w. +0.2823529411764706)end s.Parent=h if c then if e then s.Size=c else s.Size=UDim2 +.new(0,h.AbsoluteSize.X,c.Y.Scale,c.Y.Offset)end else if e then s.Size=UDim2. +new(0,163,0,400)else s.Size=UDim2.new(0,h.AbsoluteSize.X,0,400)end end if d then +s.Position=d+UDim2.new(0,0,0,20)end local t,u,v=nil if e then t,u=a. +CreateTrueScrollingFrame()t.Size=UDim2.new(1,0,1,0)t.BackgroundColor3=Color3. +new(0.2823529411764706,0.2823529411764706,0.2823529411764706)t.BorderColor3= +Color3.new(0,0,0)t.Active=true t.Parent=s u.Parent=h u.BackgroundColor3=Color3. +new(0.2823529411764706,0.2823529411764706,0.2823529411764706)u.BorderSizePixel=0 +u.BackgroundTransparency=0 u.Position=UDim2.new(1,-21,1,1)if c then u.Size=UDim2 +.new(0,21,c.Y.Scale,c.Y.Offset)else u.Size=UDim2.new(0,21,0,400)end u: +FindFirstChild'ScrollDownButton'.Position=UDim2.new(0,0,1,-20)local w=Instance. +new'Frame'w.Name='FakeLine'w.BorderSizePixel=0 w.BackgroundColor3=Color3.new(0,0 +,0)w.Size=UDim2.new(0,1,1,1)w.Position=UDim2.new(1,0,0,0)w.Parent=u v=Instance. +new'TextButton'v.ZIndex=2 v.AutoButtonColor=false v.Name='VerticalDragger'v. BackgroundColor3=Color3.new(0.19607843137254902,0.19607843137254902, -0.19607843137254902)w.BorderColor3=Color3.new(0,0,0)w.Size=UDim2.new(1,20,0,20)w -.Position=UDim2.new(0,0,1,0)w.Active=true w.Text=''w.Parent=t local y=Instance. -new'Frame'y.Name='ScrubFrame'y.BackgroundColor3=Color3.new(1,1,1)y. -BorderSizePixel=0 y.Position=UDim2.new(0.5,-5,0.5,0)y.Size=UDim2.new(0,10,0,1)y. -ZIndex=5 y.Parent=w local z=y:clone()z.Position=UDim2.new(0.5,-5,0.5,-2)z.Parent -=w local A=y:clone()A.Position=UDim2.new(0.5,-5,0.5,2)A.Parent=w local B= -Instance.new'TextButton'B.Name='AreaSoak'B.Size=UDim2.new(1,0,1,0)B. -BackgroundTransparency=1 B.BorderSizePixel=0 B.Text=''B.ZIndex=10 B.Visible= -false B.Active=true B.Parent=getScreenGuiAncestor(h)local C,D=false,nil w. -MouseEnter:connect(function()w.BackgroundColor3=Color3.new(0.23529411764705882, -0.23529411764705882,0.23529411764705882)end)w.MouseLeave:connect(function()w. +0.19607843137254902)v.BorderColor3=Color3.new(0,0,0)v.Size=UDim2.new(1,20,0,20)v +.Position=UDim2.new(0,0,1,0)v.Active=true v.Text=''v.Parent=s local x=Instance. +new'Frame'x.Name='ScrubFrame'x.BackgroundColor3=Color3.new(1,1,1)x. +BorderSizePixel=0 x.Position=UDim2.new(0.5,-5,0.5,0)x.Size=UDim2.new(0,10,0,1)x. +ZIndex=5 x.Parent=v local y=x:clone()y.Position=UDim2.new(0.5,-5,0.5,-2)y.Parent +=v local z=x:clone()z.Position=UDim2.new(0.5,-5,0.5,2)z.Parent=v local A= +Instance.new'TextButton'A.Name='AreaSoak'A.Size=UDim2.new(1,0,1,0)A. +BackgroundTransparency=1 A.BorderSizePixel=0 A.Text=''A.ZIndex=10 A.Visible= +false A.Active=true A.Parent=getScreenGuiAncestor(g)local B,C=false,nil v. +MouseEnter:connect(function()v.BackgroundColor3=Color3.new(0.23529411764705882, +0.23529411764705882,0.23529411764705882)end)v.MouseLeave:connect(function()v. BackgroundColor3=Color3.new(0.19607843137254902,0.19607843137254902, -0.19607843137254902)end)w.MouseButton1Down:connect(function(E,F)C=true B.Visible -=true D=F end)B.MouseButton1Up:connect(function()C=false B.Visible=false end)B. -MouseMoved:connect(function(E,F)if not C then return end local G=F-D if not v. -ScrollDownButton.Visible and G>0 then return end if(t.Size.Y.Offset+G)<150 then -t.Size=UDim2.new(t.Size.X.Scale,t.Size.X.Offset,t.Size.Y.Scale,150)v.Size=UDim2. -new(0,21,0,150)return end D=F if t.Size.Y.Offset+G>=0 then t.Size=UDim2.new(t. -Size.X.Scale,t.Size.X.Offset,t.Size.Y.Scale,t.Size.Y.Offset+G)v.Size=UDim2.new(0 -,21,0,v.Size.Y.Offset+G)end end)end local function switchMinimize()p.Visible=not -p.Visible if g then u.Visible=not u.Visible w.Visible=not w.Visible v.Visible= -not v.Visible else t.Visible=not t.Visible end if p.Visible then o.Text='+'else -o.Text='-'end end q.MouseButton1Click:connect(function()switchMinimize()end)o. -MouseButton1Click:connect(function()switchMinimize()end)if g then return i,u,n,l -else return i,t,n,l end end a.Help=function(b)if b=='CreatePropertyDropDownMenu' +0.19607843137254902)end)v.MouseButton1Down:connect(function(D,E)B=true A.Visible +=true C=E end)A.MouseButton1Up:connect(function()B=false A.Visible=false end)A. +MouseMoved:connect(function(D,E)if not B then return end local H=E-C if not u. +ScrollDownButton.Visible and H>0 then return end if(s.Size.Y.Offset+H)<150 then +s.Size=UDim2.new(s.Size.X.Scale,s.Size.X.Offset,s.Size.Y.Scale,150)u.Size=UDim2. +new(0,21,0,150)return end C=E if s.Size.Y.Offset+H>=0 then s.Size=UDim2.new(s. +Size.X.Scale,s.Size.X.Offset,s.Size.Y.Scale,s.Size.Y.Offset+H)u.Size=UDim2.new(0 +,21,0,u.Size.Y.Offset+H)end end)end local function switchMinimize()o.Visible=not +o.Visible if e then t.Visible=not t.Visible v.Visible=not v.Visible u.Visible= +not u.Visible else s.Visible=not s.Visible end if o.Visible then n.Text='+'else +n.Text='-'end end p.MouseButton1Click:connect(function()switchMinimize()end)n. +MouseButton1Click:connect(function()switchMinimize()end)if e then return h,t,m,k +else return h,s,m,k end end a.Help=function(b)if b=='CreatePropertyDropDownMenu' or b==a.CreatePropertyDropDownMenu then return [[Function CreatePropertyDropDownMenu. Arguments: (instance, propertyName, enumType). Side effect: returns a container with a drop-down-box that is linked to the 'property' field of 'instance' which is of type 'enumType']] end if b=='CreateDropDownMenu'or b==a.CreateDropDownMenu then return diff --git a/processed/46295863.lua b/processed/46295863.lua index e6de718..7b46f22 100644 --- a/processed/46295863.lua +++ b/processed/46295863.lua @@ -15,25 +15,25 @@ end function resumeGameFunction(u)u.Settings:TweenPosition(UDim2.new(0.5,-262,- function()u.Visible=false for v=1,#o do o[v].Visible=false game.GuiService: RemoveCenterDialog(o[v])end game.GuiService:RemoveCenterDialog(u)settingsButton. Active=true k=nil l={}end)end function goToMenu(u,v,w,x,y)if type(v)~='string' -then return end table.insert(l,k)if v=='GameMainMenu'then l={}end local z,A=u: -GetChildren(),false for B=1,#z do if z[B].Name==v then z[B].Visible=true k={ -container=u,name=v,direction=w,lastSize=x}A=true if x and y then z[B]: -TweenSizeAndPosition(x,y,Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true -)elseif x then z[B]:TweenSizeAndPosition(x,UDim2.new(0.5,-x.X.Offset/2,0.5,-x.Y. -Offset/2),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)else z[B]: -TweenPosition(UDim2.new(0,0,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle. -Sine,e,true)end else if w=='left'then z[B]:TweenPosition(UDim2.new(-1,-525,0,0), -Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)elseif w=='right'then z[ -B]:TweenPosition(UDim2.new(1,525,0,0),Enum.EasingDirection.InOut,Enum. -EasingStyle.Sine,e,true)elseif w=='up'then z[B]:TweenPosition(UDim2.new(0,0,-1,- -400),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)elseif w=='down' -then z[B]:TweenPosition(UDim2.new(0,0,1,400),Enum.EasingDirection.InOut,Enum. -EasingStyle.Sine,e,true)end delay(e,function()z[B].Visible=false end)end end end -function resetLocalCharacter()local u=game.Players.LocalPlayer if u then if u. -Character and u.Character:FindFirstChild'Humanoid'then u.Character.Humanoid. -Health=0 end end end local function createTextButton(u,v,w,x,y)local z=Instance. -new'TextButton'z.Font=Enum.Font.Arial z.FontSize=w z.Size=x z.Position=y z.Style -=v z.TextColor3=Color3.new(1,1,1)z.Text=u return z end local function +then return end table.insert(l,k)if v=='GameMainMenu'then l={}end local z=u: +GetChildren()for A=1,#z do if z[A].Name==v then z[A].Visible=true k={container=u +,name=v,direction=w,lastSize=x}if x and y then z[A]:TweenSizeAndPosition(x,y, +Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)elseif x then z[A]: +TweenSizeAndPosition(x,UDim2.new(0.5,-x.X.Offset/2,0.5,-x.Y.Offset/2),Enum. +EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)else z[A]:TweenPosition(UDim2 +.new(0,0,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)end else +if w=='left'then z[A]:TweenPosition(UDim2.new(-1,-525,0,0),Enum.EasingDirection. +InOut,Enum.EasingStyle.Sine,e,true)elseif w=='right'then z[A]:TweenPosition( +UDim2.new(1,525,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true) +elseif w=='up'then z[A]:TweenPosition(UDim2.new(0,0,-1,-400),Enum. +EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)elseif w=='down'then z[A]: +TweenPosition(UDim2.new(0,0,1,400),Enum.EasingDirection.InOut,Enum.EasingStyle. +Sine,e,true)end delay(e,function()z[A].Visible=false end)end end end function +resetLocalCharacter()local u=game.Players.LocalPlayer if u then if u.Character +and u.Character:FindFirstChild'Humanoid'then u.Character.Humanoid.Health=0 end +end end local function createTextButton(u,v,w,x,y)local z=Instance.new +'TextButton'z.Font=Enum.Font.Arial z.FontSize=w z.Size=x z.Position=y z.Style=v +z.TextColor3=Color3.new(1,1,1)z.Text=u return z end local function CreateTextButtons(u,v,w,x)if#v<1 then error'Must have more than one button'end local y,z=1,{}local function toggleSelection(A)for B,C in ipairs(z)do if C==A then C.Style=Enum.ButtonStyle.RobloxButtonDefault else C.Style=Enum.ButtonStyle. @@ -279,25 +279,25 @@ goToAutoGraphics()end else settings().Rendering.EnableFRM=true goToManualGraphics(translateSavedQualityLevelToInt(UserSettings().GameSettings. SavedQualityLevel))end J.MouseButton1Click:connect(function()if q and not game. Players.LocalPlayer then return end if not N then goToAutoGraphics()else -goToManualGraphics(L.Value)end end)local P=nil game.GraphicsQualityChangeRequest -:connect(function(Q)if N then return end if Q then if(L.Value+1)>i then return -end L.Value=L.Value+1 M.Text=tostring(L.Value)setGraphicsQualityLevel(L.Value) -game:GetService'GuiService':SendNotification('Graphics Quality','Increased to (' -..M.Text..')','',2,function()end)else if(L.Value-1)<=0 then return end L.Value=L -.Value-1 M.Text=tostring(L.Value)setGraphicsQualityLevel(L.Value)game:GetService +goToManualGraphics(L.Value)end end)game.GraphicsQualityChangeRequest:connect( +function(P)if N then return end if P then if(L.Value+1)>i then return end L. +Value=L.Value+1 M.Text=tostring(L.Value)setGraphicsQualityLevel(L.Value)game: +GetService'GuiService':SendNotification('Graphics Quality','Increased to ('..M. +Text..')','',2,function()end)else if(L.Value-1)<=0 then return end L.Value=L. +Value-1 M.Text=tostring(L.Value)setGraphicsQualityLevel(L.Value)game:GetService 'GuiService':SendNotification('Graphics Quality','Decreased to ('..M.Text..')', -'',2,function()end)end end)game.Players.PlayerAdded:connect(function(Q)if Q== +'',2,function()end)end end)game.Players.PlayerAdded:connect(function(P)if P== game.Players.LocalPlayer and q then enableGraphicsWidget()end end)game.Players. -PlayerRemoving:connect(function(Q)if Q==game.Players.LocalPlayer and q then +PlayerRemoving:connect(function(P)if P==game.Players.LocalPlayer and q then disableGraphicsWidget()end end)C=createTextButton('',Enum.ButtonStyle. RobloxButton,Enum.FontSize.Size18,UDim2.new(0,25,0,25),UDim2.new(0,30,0,176))C. Name='StudioCheckbox'C.ZIndex=u+4 C:SetVerb'TogglePlayMode'C.Visible=false local -Q=(settings().Rendering.QualityLevel~=Enum.QualityLevel.Automatic)if q and not +P=(settings().Rendering.QualityLevel~=Enum.QualityLevel.Automatic)if q and not game.Players.LocalPlayer then C.Text='X'disableGraphicsWidget()elseif q then C. Text='X'enableGraphicsWidget()end if h then UserSettings().GameSettings. -StudioModeChanged:connect(function(R)q=R if R then Q=(settings().Rendering. +StudioModeChanged:connect(function(Q)q=Q if Q then P=(settings().Rendering. QualityLevel~=Enum.QualityLevel.Automatic)goToAutoGraphics()C.Text='X'J.ZIndex=1 -E.ZIndex=1 else if Q then goToManualGraphics()end C.Text=''J.ZIndex=u+4 E.ZIndex +E.ZIndex=1 else if P then goToManualGraphics()end C.Text=''J.ZIndex=u+4 E.ZIndex =u+4 end end)else C.MouseButton1Click:connect(function()if not C.Active then return end if C.Text==''then C.Text='X'else C.Text=''end end)end end local D= createTextButton('',Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size18,UDim2. @@ -312,14 +312,14 @@ setDisabledState(B)setDisabledState(C)end local E if h then E=createTextButton( ,50),UDim2.new(0,170,0,330))E.Modal=true else E=createTextButton('OK',Enum. ButtonStyle.RobloxButtonDefault,Enum.FontSize.Size24,UDim2.new(0,180,0,50),UDim2 .new(0,170,0,270))E.Modal=true end E.Name='BackButton'E.ZIndex=u+4 E.Parent=w -local F=nil if not r then local G=Instance.new'TextLabel'G.Name= -'VideoCaptureLabel'G.Text='After Capturing Video'G.Font=Enum.Font.Arial G. -FontSize=Enum.FontSize.Size18 G.Position=UDim2.new(0,32,0,100)G.Size=UDim2.new(0 -,164,0,18)G.BackgroundTransparency=1 G.TextColor3=Color3I(255,255,255)G. -TextXAlignment=Enum.TextXAlignment.Left G.ZIndex=u+4 G.Parent=w local H,I={},{}H -[1]='Just Save to Disk'I[H[1]]=Enum.UploadSetting['Never']H[2]= -'Upload to YouTube'I[H[2]]=Enum.UploadSetting['Ask me first']local J=nil J,d= -RbxGui.CreateDropDownMenu(H,function(K)UserSettings().GameSettings. +local F if not r then local G=Instance.new'TextLabel'G.Name='VideoCaptureLabel'G +.Text='After Capturing Video'G.Font=Enum.Font.Arial G.FontSize=Enum.FontSize. +Size18 G.Position=UDim2.new(0,32,0,100)G.Size=UDim2.new(0,164,0,18)G. +BackgroundTransparency=1 G.TextColor3=Color3I(255,255,255)G.TextXAlignment=Enum. +TextXAlignment.Left G.ZIndex=u+4 G.Parent=w local H,I={},{}H[1]= +'Just Save to Disk'I[H[1]]=Enum.UploadSetting['Never']H[2]='Upload to YouTube'I[ +H[2]]=Enum.UploadSetting['Ask me first']local J=nil J,d=RbxGui. +CreateDropDownMenu(H,function(K)UserSettings().GameSettings. VideoUploadPromptBehavior=I[K]end)J.Name='VideoCaptureField'J.ZIndex=u+4 J. DropDownMenuButton.ZIndex=u+4 J.DropDownMenuButton.Icon.ZIndex=u+4 J.Position= UDim2.new(0,270,0,94)J.Size=UDim2.new(0,200,0,32)J.Parent=w F=function()if @@ -553,26 +553,24 @@ new(1,-4,1,0)x.Position=UDim2.new(0,2,0,0)x.AutoButtonColor=false x.Text= .Font=Enum.Font.Arial x.FontSize=Enum.FontSize.Size14 x.TextColor3=Color3.new(1, 1,1)x.BackgroundTransparency=1 local y=function()if w.Visible then return end x. Visible=false w.Text=''w.Visible=true w:CaptureFocus()end x.MouseButton1Click: -connect(y)local z=true local A,B,C=function(A)z=A end,game:GetService -'GuiService',pcall(function()end)if not C then end w.FocusLost:connect(function( -D)if D then if w.Text~=''then local E=w.Text if string.sub(E,1,1)=='%'then game. -Players:TeamChat(string.sub(E,2))else game.Players:Chat(E)end end end w.Text=''w -.Visible=false x.Visible=true end)robloxLock(v)return v,A end,pcall(function() -local v=game.LocalSaveEnabled end)if y then delay(0,function()local z=v()z. -Parent=a game.RequestShutdown=function()table.insert(o,z)game.GuiService: -AddCenterDialog(z,Enum.CenterDialogType.QuitDialog,function()z.Visible=true end, -function()z.Visible=false end)return true end end)end delay(0,function()w(). -Parent=a waitForChild(a,'UserSettingsShield')waitForChild(a.UserSettingsShield, -'Settings')waitForChild(a.UserSettingsShield.Settings,'SettingsStyle') -waitForChild(a.UserSettingsShield.Settings.SettingsStyle,'GameMainMenu') -waitForChild(a.UserSettingsShield.Settings.SettingsStyle.GameMainMenu, -'ReportAbuseButton')a.UserSettingsShield.Settings.SettingsStyle.GameMainMenu. -ReportAbuseButton.Active=true end)local z,A,B=game.CoreGui.Version,pcall( -function()return game.GuiService.UseLuaChat end)if A and B then end local C= -41324860 delay(0,function()waitForChild(game,'NetworkClient')waitForChild(game, -'Players')waitForProperty(game.Players,'LocalPlayer')waitForProperty(game. -Players.LocalPlayer,'Character')waitForChild(game.Players.LocalPlayer.Character, -'Humanoid')waitForProperty(game,'PlaceId')if game.PlaceId==C then game.Players. +connect(y)local z=function(z)end pcall(function()end)w.FocusLost:connect( +function(A)if A then if w.Text~=''then local B=w.Text if string.sub(B,1,1)=='%' +then game.Players:TeamChat(string.sub(B,2))else game.Players:Chat(B)end end end +w.Text=''w.Visible=false x.Visible=true end)robloxLock(v)return v,z end,pcall( +function()end)if y then delay(0,function()local z=v()z.Parent=a game. +RequestShutdown=function()table.insert(o,z)game.GuiService:AddCenterDialog(z, +Enum.CenterDialogType.QuitDialog,function()z.Visible=true end,function()z. +Visible=false end)return true end end)end delay(0,function()w().Parent=a +waitForChild(a,'UserSettingsShield')waitForChild(a.UserSettingsShield,'Settings' +)waitForChild(a.UserSettingsShield.Settings,'SettingsStyle')waitForChild(a. +UserSettingsShield.Settings.SettingsStyle,'GameMainMenu')waitForChild(a. +UserSettingsShield.Settings.SettingsStyle.GameMainMenu,'ReportAbuseButton')a. +UserSettingsShield.Settings.SettingsStyle.GameMainMenu.ReportAbuseButton.Active= +true end)pcall(function()return game.GuiService.UseLuaChat end)local z=41324860 +delay(0,function()waitForChild(game,'NetworkClient')waitForChild(game,'Players') +waitForProperty(game.Players,'LocalPlayer')waitForProperty(game.Players. +LocalPlayer,'Character')waitForChild(game.Players.LocalPlayer.Character, +'Humanoid')waitForProperty(game,'PlaceId')if game.PlaceId==z then game.Players. LocalPlayer.Character.Humanoid:SetClickToWalkEnabled(false)game.Players. -LocalPlayer.CharacterAdded:connect(function(D)waitForChild(D,'Humanoid')D. +LocalPlayer.CharacterAdded:connect(function(A)waitForChild(A,'Humanoid')A. Humanoid:SetClickToWalkEnabled(false)end)end end)end \ No newline at end of file diff --git a/processed/48488235.lua b/processed/48488235.lua index dee7ce8..72fbbf7 100644 --- a/processed/48488235.lua +++ b/processed/48488235.lua @@ -205,28 +205,22 @@ false,false,false,false,false,false,false,{},8 if not am then aF=12 end local aG 'Rude or Mean Behavior','False Reporting Me'},nil,nil,{Owner=255,Admin=240, Member=128,Visitor=10,Banned=0},not not game.Workspace:FindFirstChild 'PSVariable'game.Workspace.ChildAdded:connect(function(aN)if aN.Name== -'PSVariable'and aN:IsA'BoolValue'then aM=true end end)function GetTotalEntries() -return math.min(#ai,_)end function GetEntryListLength()local aN=#ae+#af if ag -then aN=aN+1 end return aN end function AreAllEntriesOnScreen()return#ai*H.Size. -Y.Scale<=1+au end function GetLengthOfVisbleScroll()return 1+au end function -GetMaxScroll()return au*-1 end function GetMinScroll()if AreAllEntriesOnScreen() -then return GetMaxScroll()else return(GetMaxScroll()-(#ai*H.Size.Y.Scale))+(1+au -)end end function AbsoluteToPercent(aN,aO)return Vector2.new(aN,aO)/i. -AbsoluteSize end function TweenProperty(aN,aO,aP,aQ,aR)local aS=tick()while -tick()-aSaO do game: -GetService'PersonalServerService':Demote(aN)end end function +'PSVariable'and aN:IsA'BoolValue'then aM=true end end)function +AreAllEntriesOnScreen()return#ai*H.Size.Y.Scale<=1+au end function GetMaxScroll( +)return au*-1 end function GetMinScroll()if AreAllEntriesOnScreen()then return +GetMaxScroll()else return(GetMaxScroll()-(#ai*H.Size.Y.Scale))+(1+au)end end +function AbsoluteToPercent(aN,aO)return Vector2.new(aN,aO)/i.AbsoluteSize end +function TweenProperty(aN,aO,aP,aQ,aR)local aS=tick()while tick()-aSaO +do game:GetService'PersonalServerService':Demote(aN)end end function OnPrivilegeLevelSelect(aN,aO,aP,aQ,aR,aS)debugprint'setting privilege level' SetPrivilegeRank(aN,aO)HighlightMyRank(aN,aP,aQ,aR,aS)end function HighlightMyRank(aN,aO,aP,aQ,aR)aO.Image='http://www.roblox.com/asset/?id='..b[ @@ -249,10 +243,10 @@ CloseAbuseDialog()aH=nil N.Active=false N.Image= 'http://www.roblox.com/asset/?id=96502438'Q:Destroy()S.Parent=nil T.Parent=nil J .Parent=nil L.Visible=true end function InitReportAbuse()aJ=function(aN)aH=aN if aH and aw then N.Active=true N.Image='http://www.roblox.com/asset/?id=96501119' -end end aK,UpdateAbuseSelection=Z.CreateDropDownMenu(aI,aJ,true)aK.Name= -'AbuseComboBox'aK.Position=UDim2.new(0.425,0,0,142)aK.Size=UDim2.new(0.55,0,0,32 -)aK.Parent=L O.MouseButton1Click:connect(CloseAbuseDialog)N.MouseButton1Click: -connect(OnSubmitAbuse)S:FindFirstChild'OkButton'.MouseButton1Down:connect( +end end aK,aa=Z.CreateDropDownMenu(aI,aJ,true)aK.Name='AbuseComboBox'aK.Position +=UDim2.new(0.425,0,0,142)aK.Size=UDim2.new(0.55,0,0,32)aK.Parent=L O. +MouseButton1Click:connect(CloseAbuseDialog)N.MouseButton1Click:connect( +OnSubmitAbuse)S:FindFirstChild'OkButton'.MouseButton1Down:connect( CloseAbuseDialog)T:FindFirstChild'OkButton'.MouseButton1Down:connect( CloseAbuseDialog)end local function GetFriendStatus(aN)if aN==game.Players. LocalPlayer then return Enum.FriendStatus.NotFriend else local aO,aP=pcall( @@ -270,57 +264,57 @@ return false end if not aO['Score']then return true end return aN['Score']1 and g.userId>1 then ActivatePlayerEntryPanel(aT)end end local a2,a3=nil,y. -Position local function dragpoll(a4,a5)if not a2 then a2=AbsoluteToPercent(a4,a5 -).Y end local a6=AbsoluteToPercent(a4,a5).Y debugprint('drag dist:'..Vector2. -new(aX-a4,aY-a5).magnitude)if Vector2.new(aX-a4,aY-a5).magnitude>d then a0=false -end local a7=math.max(math.min(a3.Y.Scale+(a6-a2),GetMaxScroll()),GetMinScroll() -)y.Position=UDim2.new(a3.X.Scale,a3.X.Offset,a7,a3.Y.Offset) -UpdateScrollPosition()end WaitForClick(i,dragpoll,dragExit)end function -StartMinimizeDrag()Delay(0,function()local aT=tick()debugprint'Got Click2'local -aX=false local function dragExit()if tick()-aT<0.25 then ToggleMinimize()else aG -=true if D.Value then ToggleMinimize()end end aX=true end local aY,aZ=nil,au -local function dragpoll(a_,a0)if not D.Value then if not aY then aY= -AbsoluteToPercent(a_,a0).Y end local a1,a2=AbsoluteToPercent(a_,a0).Y,nil a2= -math.min(math.max(aZ+(a1-aY),-1),-1+(#ai*I.Size.Y.Scale))au=a2 UpdateMinimize()w -.Size=UDim2.new(w.Size.X.Scale,0,(au+v.Size.Y.Scale),0)w.Position=UDim2.new(w. -Position.X.Scale,0,1-w.Size.Y.Scale,0)UpdateScrollBarSize()UpdateScrollPosition( -)UpdateScrollBarVisibility()end end Spawn(function()WaitForClick(i,dragpoll, -dragExit)end)end)end E.Value=false D.Value=false E.Changed:connect( -UpdateMaximize)D.Changed:connect(UpdateMinimize)s.MouseButton1Down:connect( -function()if(time()-ak1 and g.userId>1 then +ActivatePlayerEntryPanel(aU)end end local a_,a0=nil,y.Position local function +dragpoll(a1,a2)if not a_ then a_=AbsoluteToPercent(a1,a2).Y end local a3= +AbsoluteToPercent(a1,a2).Y debugprint('drag dist:'..Vector2.new(aV-a1,aY-a2). +magnitude)if Vector2.new(aV-a1,aY-a2).magnitude>d then aZ=false end local a4= +math.max(math.min(a0.Y.Scale+(a3-a_),GetMaxScroll()),GetMinScroll())y.Position= +UDim2.new(a0.X.Scale,a0.X.Offset,a4,a0.Y.Offset)UpdateScrollPosition()end +WaitForClick(i,dragpoll,dragExit)end function StartMinimizeDrag()Delay(0, +function()local aU=tick()debugprint'Got Click2'local function dragExit()if tick( +)-aU<0.25 then ToggleMinimize()else aG=true if D.Value then ToggleMinimize()end +end end local aV,aY=nil,au local function dragpoll(aZ,a_)if not D.Value then if +not aV then aV=AbsoluteToPercent(aZ,a_).Y end local a0,a1=AbsoluteToPercent(aZ, +a_).Y,nil a1=math.min(math.max(aY+(a0-aV),-1),-1+(#ai*I.Size.Y.Scale))au=a1 +UpdateMinimize()w.Size=UDim2.new(w.Size.X.Scale,0,(au+v.Size.Y.Scale),0)w. +Position=UDim2.new(w.Position.X.Scale,0,1-w.Size.Y.Scale,0)UpdateScrollBarSize() +UpdateScrollPosition()UpdateScrollBarVisibility()end end Spawn(function() +WaitForClick(i,dragpoll,dragExit)end)end)end E.Value=false D.Value=false E. +Changed:connect(UpdateMaximize)D.Changed:connect(UpdateMinimize)s. +MouseButton1Down:connect(function()if(time()-ak1 do aY -=aY-1 aX.FontSize=aT[aY]wait(0.2)end o.FontSize=aX.FontSize aX:Destroy()end)end -i.Changed:connect(UpdateHeaderNameSize)function LeaderstatsAdded(aX)local aY=aX[ -'Player']for aZ,a_ in pairs(aY.leaderstats:GetChildren())do StatAdded(a_,aX)end -aY.leaderstats.ChildAdded:connect(function(a0)StatAdded(a0,aX)end)aY.leaderstats -.ChildRemoved:connect(function(a0)StatRemoved(a0,aX)end)end function -LeaderstatsRemoved(aX,aY)while ax do debugprint('waiting to insert '..aY[ +local aU={'Size8','Size9','Size10','Size11','Size12','Size14','Size24','Size36', +'Size48'}function ChangeHeaderName(aV)o.Text=aV UpdateHeaderNameSize()end +function UpdateHeaderNameSize()local aV=o:Clone()aV.Position=UDim2.new(2,0,2,0) +aV.Parent=i local aY=7 aV.FontSize=aU[aY]Delay(0.2,function()while aV.TextBounds +.x==0 do wait(3.333333333333333E-2)end while aV.TextBounds.x-ar.X.Offset>1 do aY +=aY-1 aV.FontSize=aU[aY]wait(0.2)end o.FontSize=aV.FontSize aV:Destroy()end)end +i.Changed:connect(UpdateHeaderNameSize)function LeaderstatsAdded(aV)local aY=aV[ +'Player']for aZ,a_ in pairs(aY.leaderstats:GetChildren())do StatAdded(a_,aV)end +aY.leaderstats.ChildAdded:connect(function(a0)StatAdded(a0,aV)end)aY.leaderstats +.ChildRemoved:connect(function(a0)StatRemoved(a0,aV)end)end function +LeaderstatsRemoved(aV,aY)while ax do debugprint('waiting to insert '..aY[ 'Player'].Name)wait(3.333333333333333E-2)end ax=true RemoveAllStats(aY)ax=false -end function ClosePopUpPanel()if av then local aX=av['Frame']Spawn(function() -TweenProperty(aX,'BackgroundTransparency',0.5,1,c)end)end A:TweenPosition(UDim2. +end function ClosePopUpPanel()if av then local aV=av['Frame']Spawn(function() +TweenProperty(aV,'BackgroundTransparency',0.5,1,c)end)end A:TweenPosition(UDim2. new(1,0,0,0),'Out','Linear',c,true)wait(0.1)aB=false av=nil end function -InitMovingPanel(aX,aY)z.Parent=i if A then A:Destroy()end A=B:Clone()A.Parent=z +InitMovingPanel(aV,aY)z.Parent=i if A then A:Destroy()end A=B:Clone()A.Parent=z local aZ,a_=2,GetFriendStatus(aY)debugprint(tostring(a_))local a0,a1=aM and g. PersonalServerRank>=aL['Admin']and g.PersonalServerRank>aw.PersonalServerRank, MakePopupButton(A,'Report Player',0)a1.MouseButton1Click:connect(function() @@ -476,112 +469,112 @@ a4,a5,a6)end)a5.MouseButton1Click:connect(function()OnPrivilegeLevelSelect(aY,aL OnPrivilegeLevelSelect(aY,aL['Admin'],a3,a4,a5,a6)end)HighlightMyRank(aw,a3,a4, a5,a6)end A:TweenPosition(UDim2.new(0,0,0,0),'Out','Linear',c,true)Delay(0, function()local a3 a3=h.Button1Down:connect(function()a3:disconnect() -ClosePopUpPanel()end)end)local a3=aX['Frame']Spawn(function()while aB do z. +ClosePopUpPanel()end)end)local a3=aV['Frame']Spawn(function()while aB do z. Position=UDim2.new(0,a3.AbsolutePosition.X-z.Size.X.Offset,0,a3.AbsolutePosition -.Y)wait()end end)end function OnPlayerEntrySelect(aX,aY,aZ)if not aB then av=aX -aw=aX['Player']StartDrag(aX,aY,aZ)end end function ActivatePlayerEntryPanel(aX) -aX['Frame'].BackgroundColor3=Color3.new(0,1,1)Spawn(function()TweenProperty(aX[ -'Frame'],'BackgroundTransparency',1,0.5,0.5)end)aB=true InitMovingPanel(aX,aX[ +.Y)wait()end end)end function OnPlayerEntrySelect(aV,aY,aZ)if not aB then av=aV +aw=aV['Player']StartDrag(aV,aY,aZ)end end function ActivatePlayerEntryPanel(aV) +aV['Frame'].BackgroundColor3=Color3.new(0,1,1)Spawn(function()TweenProperty(aV[ +'Frame'],'BackgroundTransparency',1,0.5,0.5)end)aB=true InitMovingPanel(aV,aV[ 'Player'])end function PlayerListModeUpdate()RecreateScoreColumns(ae)table.sort( -ae,PlayerSortFunction)for aX,aY in ipairs(ae)do ah[aX]=aY['Frame']end for aZ=#ae -+1,#ah,1 do ah[aZ]=nil end UpdateMinimize()end function InsertPlayerFrame(aX) -while ax do debugprint('waiting to insert '..aX.Name)wait(3.333333333333333E-2) +ae,PlayerSortFunction)for aV,aY in ipairs(ae)do ah[aV]=aY['Frame']end for aZ=#ae ++1,#ah,1 do ah[aZ]=nil end UpdateMinimize()end function InsertPlayerFrame(aV) +while ax do debugprint('waiting to insert '..aV.Name)wait(3.333333333333333E-2) end ax=true local aY=H:Clone()WaitForChild(WaitForChild(aY,'TitleFrame'),'Title' -).Text=aX.Name aY.Position=UDim2.new(1,0,(#ah*aY.Size.Y.Scale),0)local aZ= -GetFriendStatus(aX)aY:FindFirstChild'BCLabel'.Image=getMembershipTypeIcon(aX. -MembershipType,aX.Name)aY:FindFirstChild'FriendLabel'.Image=getFriendStatusIcon( -aZ)aY.Name=aX.Name WaitForChild(WaitForChild(aY,'TitleFrame'),'Title').Text=aX. +).Text=aV.Name aY.Position=UDim2.new(1,0,(#ah*aY.Size.Y.Scale),0)local aZ= +GetFriendStatus(aV)aY:FindFirstChild'BCLabel'.Image=getMembershipTypeIcon(aV. +MembershipType,aV.Name)aY:FindFirstChild'FriendLabel'.Image=getFriendStatusIcon( +aZ)aY.Name=aV.Name WaitForChild(WaitForChild(aY,'TitleFrame'),'Title').Text=aV. Name aY.FriendLabel.Position=aY.FriendLabel.Position+UDim2.new(0,17,0,0)aY. TitleFrame.Title.Position=aY.TitleFrame.Title.Position+UDim2.new(0,17,0,0)if aY: FindFirstChild'FriendLabel'.Image~=''then aY.TitleFrame.Title.Position=aY. -TitleFrame.Title.Position+UDim2.new(0,17,0,0)end if aX.Name==g.Name then aY. +TitleFrame.Title.Position+UDim2.new(0,17,0,0)end if aV.Name==g.Name then aY. TitleFrame.Title.Font='ArialBold'aY.PlayerScore.Font='ArialBold' -ChangeHeaderName(aX.Name)local a_=aY.TitleFrame.Title:Clone()a_.TextColor3= +ChangeHeaderName(aV.Name)local a_=aY.TitleFrame.Title:Clone()a_.TextColor3= Color3.new(0,0,0)a_.TextTransparency=0 a_.ZIndex=2 a_.Position=aY.TitleFrame. -Title.Position+UDim2.new(0,1,0,1)a_.Name='DropShadow'a_.Parent=aY.TitleFrame -else end aY.TitleFrame.Title.Font='ArialBold'aY.Parent=y aY:TweenPosition(UDim2. -new(0.5,0,(#ah*aY.Size.Y.Scale),0),'Out','Linear',c,true)UpdateMinimize()local -a_={}a_['Frame']=aY a_['Player']=aX a_['ID']=ad ad=ad+1 table.insert(ae,a_)if#af -~=0 then if aX.Neutral then a_['MyTeam']=nil if not ag then AddNeutralTeam()else +Title.Position+UDim2.new(0,1,0,1)a_.Name='DropShadow'a_.Parent=aY.TitleFrame end +aY.TitleFrame.Title.Font='ArialBold'aY.Parent=y aY:TweenPosition(UDim2.new(0.5,0 +,(#ah*aY.Size.Y.Scale),0),'Out','Linear',c,true)UpdateMinimize()local a_={}a_[ +'Frame']=aY a_['Player']=aV a_['ID']=ad ad=ad+1 table.insert(ae,a_)if#af~=0 then +if aV.Neutral then a_['MyTeam']=nil if not ag then AddNeutralTeam()else AddPlayerToTeam(ag,a_)end else local a0=false for a1,a2 in ipairs(af)do if a2[ -'MyTeam'].TeamColor==aX.TeamColor then AddPlayerToTeam(a2,a_)a_['MyTeam']=a2 a0= +'MyTeam'].TeamColor==aV.TeamColor then AddPlayerToTeam(a2,a_)a_['MyTeam']=a2 a0= true end end if not a0 then a_['MyTeam']=nil if not ag then AddNeutralTeam()else -AddPlayerToTeam(ag,a_)end a_['MyTeam']=ag end end end if aX:FindFirstChild -'leaderstats'then LeaderstatsAdded(a_)end aX.ChildAdded:connect(function(a0)if +AddPlayerToTeam(ag,a_)end a_['MyTeam']=ag end end end if aV:FindFirstChild +'leaderstats'then LeaderstatsAdded(a_)end aV.ChildAdded:connect(function(a0)if a0.Name=='leaderstats'then while ax do debugprint'in adding leaderstats lock' -wait(3.333333333333333E-2)end ax=true LeaderstatsAdded(a_)ax=false end end)aX. -ChildRemoved:connect(function(a0)if aX==g and a0.Name=='leaderstats'then -LeaderstatsRemoved(a0,a_)end end)aX.Changed:connect(function(a0)PlayerChanged(a_ +wait(3.333333333333333E-2)end ax=true LeaderstatsAdded(a_)ax=false end end)aV. +ChildRemoved:connect(function(a0)if aV==g and a0.Name=='leaderstats'then +LeaderstatsRemoved(a0,a_)end end)aV.Changed:connect(function(a0)PlayerChanged(a_ ,a0)end)local a0=WaitForChild(aY,'ClickListener')a0.Active=true a0. MouseButton1Down:connect(function(a1,a2)OnPlayerEntrySelect(a_,a1,a2)end) -AddMiddleBGFrame()BaseUpdate()ax=false end function RemovePlayerFrame(aX)while +AddMiddleBGFrame()BaseUpdate()ax=false end function RemovePlayerFrame(aV)while ax do debugprint'in removing player frame lock'wait(3.333333333333333E-2)end ax= -true local aY for aZ,a_ in ipairs(ae)do if aX==a_['Player']then if z.Parent==a_[ +true local aY for aZ,a_ in ipairs(ae)do if aV==a_['Player']then if z.Parent==a_[ 'Frame']then z.Parent=nil end a_['Frame']:Destroy()aY=a_['MyTeam']table.remove( ae,aZ)end end if aY then for a0,a1 in ipairs(aY['MyPlayers'])do if a1['Player'] -==aX then RemovePlayerFromTeam(aY,a0)end end end RemoveMiddleBGFrame() +==aV then RemovePlayerFromTeam(aY,a0)end end end RemoveMiddleBGFrame() UpdateMinimize()BaseUpdate()ax=false end f.ChildRemoved:connect( -RemovePlayerFrame)function UnrollTeams(aX,aY)local aZ=0 if ag and not ag[ +RemovePlayerFrame)function UnrollTeams(aV,aY)local aZ=0 if ag and not ag[ 'IsHidden']then for a_,a0 in ipairs(ag['MyPlayers'])do aZ=aZ+1 aY[aZ]=a0['Frame' -]end aZ=aZ+1 aY[aZ]=ag['Frame']end for a_,a0 in ipairs(aX)do if not a0[ +]end aZ=aZ+1 aY[aZ]=ag['Frame']end for a_,a0 in ipairs(aV)do if not a0[ 'IsHidden']then for a1,a2 in ipairs(a0.MyPlayers)do aZ=aZ+1 aY[aZ]=a2['Frame'] end aZ=aZ+1 aY[aZ]=a0['Frame']end end for a1=aZ+1,#aY,1 do aY[a1]=nil end end -function TeamSortFunc(aX,aY)if aX['TeamScore']==aY['TeamScore']then return aX[ -'ID']0 -then debugprint(aX['Player'].Name..'could not find team')aX['MyTeam']=nil if not -ag then AddNeutralTeam()else AddPlayerToTeam(ag,aX)end end end function -PlayerChanged(aX,aY)while aC do debugprint'in playerchanged lock'wait( -3.333333333333333E-2)end aC=true if aY=='Neutral'then if aX['Player'].Neutral -and#(game.Teams:GetTeams())>0 then debugprint(aX['Player'].Name.. -'setting to neutral')FindRemovePlayerFromTeam(aX)aX['MyTeam']=nil if not ag then -debugprint(aX['Player'].Name..'creating neutral team')AddNeutralTeam()else -debugprint(aX['Player'].Name..'adding to neutral team')AddPlayerToTeam(ag,aX)end -elseif#(game.Teams:GetTeams())>0 then debugprint(aX['Player'].Name.. -'has been set non-neutral')SetPlayerToTeam(aX)end BaseUpdate()elseif aY== -'TeamColor'and not aX['Player'].Neutral and aX['Player']~=aX['MyTeam']then -debugprint(aX['Player'].Name..'setting to new team')SetPlayerToTeam(aX) -BaseUpdate()elseif aY=='Name'or aY=='MembershipType'then aX['Frame']: -FindFirstChild'BCLabel'.Image=getMembershipTypeIcon(aX['Player'].MembershipType, -aX['Player'].Name)aX['Frame'].Name=aX['Player'].Name aX['Frame'].TitleFrame. -Title.Text=aX['Player'].Name if aX['Frame'].BCLabel.Image~=''then aX['Frame']. -TitleFrame.Title.Position=UDim2.new(0.01,30,0.1,0)end if aX['Player']==g then aX -['Frame'].TitleFrame.DropShadow.Text=aX['Player'].Name ChangeHeaderName(aX[ -'Player'].Name)end BaseUpdate()end aC=false end function OnFriendshipChanged(aX, -aY)Delay(0.5,function()debugprint('friend status changed for:'..aX.Name..' '.. -tostring(aY)..' vs '..tostring(GetFriendStatus(aX)))for aZ,a_ in ipairs(ae)do if -a_['Player']==aX then local a0=getFriendStatusIcon(aY)if a0==''and a_['Frame']. +aV,aY)table.remove(aV['MyPlayers'],aY)if aV==ag and#aV['MyPlayers']==0 then +RemoveNeutralTeam()end end function AddPlayerToTeam(aV,aY) +FindRemovePlayerFromTeam(aY)table.insert(aV['MyPlayers'],aY)aY['MyTeam']=aV if +aV['IsHidden']then aV['Frame'].Parent=y AddMiddleBGFrame()end aV['IsHidden']= +false end function SetPlayerToTeam(aV)FindRemovePlayerFromTeam(aV)local aY=false +for aZ,a_ in ipairs(af)do if a_['MyTeam'].TeamColor==aV['Player'].TeamColor then +AddPlayerToTeam(a_,aV)aY=true end end if not aY and#(game.Teams:GetTeams())>0 +then debugprint(aV['Player'].Name..'could not find team')aV['MyTeam']=nil if not +ag then AddNeutralTeam()else AddPlayerToTeam(ag,aV)end end end function +PlayerChanged(aV,aY)while aC do debugprint'in playerchanged lock'wait( +3.333333333333333E-2)end aC=true if aY=='Neutral'then if aV['Player'].Neutral +and#(game.Teams:GetTeams())>0 then debugprint(aV['Player'].Name.. +'setting to neutral')FindRemovePlayerFromTeam(aV)aV['MyTeam']=nil if not ag then +debugprint(aV['Player'].Name..'creating neutral team')AddNeutralTeam()else +debugprint(aV['Player'].Name..'adding to neutral team')AddPlayerToTeam(ag,aV)end +elseif#(game.Teams:GetTeams())>0 then debugprint(aV['Player'].Name.. +'has been set non-neutral')SetPlayerToTeam(aV)end BaseUpdate()elseif aY== +'TeamColor'and not aV['Player'].Neutral and aV['Player']~=aV['MyTeam']then +debugprint(aV['Player'].Name..'setting to new team')SetPlayerToTeam(aV) +BaseUpdate()elseif aY=='Name'or aY=='MembershipType'then aV['Frame']: +FindFirstChild'BCLabel'.Image=getMembershipTypeIcon(aV['Player'].MembershipType, +aV['Player'].Name)aV['Frame'].Name=aV['Player'].Name aV['Frame'].TitleFrame. +Title.Text=aV['Player'].Name if aV['Frame'].BCLabel.Image~=''then aV['Frame']. +TitleFrame.Title.Position=UDim2.new(0.01,30,0.1,0)end if aV['Player']==g then aV +['Frame'].TitleFrame.DropShadow.Text=aV['Player'].Name ChangeHeaderName(aV[ +'Player'].Name)end BaseUpdate()end aC=false end function OnFriendshipChanged(aV, +aY)Delay(0.5,function()debugprint('friend status changed for:'..aV.Name..' '.. +tostring(aY)..' vs '..tostring(GetFriendStatus(aV)))for aZ,a_ in ipairs(ae)do if +a_['Player']==aV then local a0=getFriendStatusIcon(aY)if a0==''and a_['Frame']. FriendLabel.Image~=''then a_['Frame'].TitleFrame.Title.Position=a_['Frame']. TitleFrame.Title.Position-UDim2.new(0,17,0,0)elseif a0~=''and a_['Frame']. FriendLabel.Image==''then a_['Frame'].TitleFrame.Title.Position=a_['Frame']. -TitleFrame.Title.Position+UDim2.new(0,17,0,0)debugprint('confirmed status:'..aX. +TitleFrame.Title.Position+UDim2.new(0,17,0,0)debugprint('confirmed status:'..aV. Name)end a_['Frame'].FriendLabel.Image=a0 return end end end)end g. FriendStatusChanged:connect(OnFriendshipChanged)function AddNeutralTeam()while -aD do debugprint'in neutral team 2 lock'wait()end aD=true local aX=Instance.new -'Team'aX.TeamColor=BrickColor.new'White'aX.Name='Neutral'local aY={}aY['MyTeam'] -=aX aY['MyPlayers']={}aY['Frame']=H:Clone()WaitForChild(WaitForChild(aY['Frame'] -,'TitleFrame'),'Title').Text=aX.Name aY['Frame'].TitleFrame.Position=UDim2.new( +aD do debugprint'in neutral team 2 lock'wait()end aD=true local aV=Instance.new +'Team'aV.TeamColor=BrickColor.new'White'aV.Name='Neutral'local aY={}aY['MyTeam'] +=aV aY['MyPlayers']={}aY['Frame']=H:Clone()WaitForChild(WaitForChild(aY['Frame'] +,'TitleFrame'),'Title').Text=aV.Name aY['Frame'].TitleFrame.Position=UDim2.new( aY['Frame'].TitleFrame.Position.X.Scale,aY['Frame'].TitleFrame.Position.X.Offset ,0.1,0)aY['Frame'].TitleFrame.Size=UDim2.new(aY['Frame'].TitleFrame.Size.X.Scale ,aY['Frame'].TitleFrame.Size.X.Offset,0.8,0)aY['Frame'].TitleFrame.Title.Font= @@ -594,61 +587,61 @@ aZ,a_ in pairs(ae)do if a_['Player'].Neutral or not a_['MyTeam']then AddPlayerToTeam(aY,a_)end end if#aY['MyPlayers']>0 then ag=aY UpdateMinimize() BaseUpdate()end aD=false end function RemoveNeutralTeam()while aD do debugprint 'in neutral team lock'wait()end aD=true ag['Frame']:Destroy()ag=nil -RemoveMiddleBGFrame()aD=false end function TeamScoreChanged(aX,aY)WaitForChild( -aX['Frame'],'PlayerScore').Text=tostring(aY)aX['TeamScore']=aY end function -TeamChildAdded(aX,aY)if aY.Name=='AutoHide'then aX['AutoHide']=true elseif aY. -Name=='TeamScore'then WaitForChild(aX['Frame'],'PlayerScore').Text=tostring(aY. -Value)aX['TeamScore']=aY.Value aY.Changed:connect(function()TeamScoreChanged(aX, -aY.Value)end)end end function TeamChildRemoved(aX,aY)if aY.Name=='AutoHide'then -aX['AutoHide']=false elseif aY.Name=='TeamScore'then WaitForChild(aX['Frame'], -'PlayerScore').Text=''aX['TeamScore']=nil end end function TeamChanged(aX,aY)if -aY=='Name'then WaitForChild(WaitForChild(aX['Frame'],'TitleFrame'),'Title').Text -=aX['MyTeam'].Name elseif aY=='TeamColor'then aX['Frame'].ClickListener. -BackgroundColor3=aX['MyTeam'].TeamColor.Color for aZ,a_ in pairs(af)do if a_[ -'MyTeam'].TeamColor==aX['MyTeam']then RemoveTeamFrame(aX['MyTeam'])end end aX[ +RemoveMiddleBGFrame()aD=false end function TeamScoreChanged(aV,aY)WaitForChild( +aV['Frame'],'PlayerScore').Text=tostring(aY)aV['TeamScore']=aY end function +TeamChildAdded(aV,aY)if aY.Name=='AutoHide'then aV['AutoHide']=true elseif aY. +Name=='TeamScore'then WaitForChild(aV['Frame'],'PlayerScore').Text=tostring(aY. +Value)aV['TeamScore']=aY.Value aY.Changed:connect(function()TeamScoreChanged(aV, +aY.Value)end)end end function TeamChildRemoved(aV,aY)if aY.Name=='AutoHide'then +aV['AutoHide']=false elseif aY.Name=='TeamScore'then WaitForChild(aV['Frame'], +'PlayerScore').Text=''aV['TeamScore']=nil end end function TeamChanged(aV,aY)if +aY=='Name'then WaitForChild(WaitForChild(aV['Frame'],'TitleFrame'),'Title').Text +=aV['MyTeam'].Name elseif aY=='TeamColor'then aV['Frame'].ClickListener. +BackgroundColor3=aV['MyTeam'].TeamColor.Color for aZ,a_ in pairs(af)do if a_[ +'MyTeam'].TeamColor==aV['MyTeam']then RemoveTeamFrame(aV['MyTeam'])end end aV[ 'MyPlayers']={}for a0,a1 in pairs(ae)do SetPlayerToTeam(a1)end BaseUpdate()end -end function InsertTeamFrame(aX)while ax do debugprint +end function InsertTeamFrame(aV)while ax do debugprint 'in adding team frame lock'wait(3.333333333333333E-2)end ax=true local aY={}aY[ -'MyTeam']=aX aY['MyPlayers']={}aY['Frame']=H:Clone()WaitForChild(WaitForChild(aY -['Frame'],'TitleFrame'),'Title').Text=aX.Name aY['Frame'].TitleFrame.Title.Font= +'MyTeam']=aV aY['MyPlayers']={}aY['Frame']=H:Clone()WaitForChild(WaitForChild(aY +['Frame'],'TitleFrame'),'Title').Text=aV.Name aY['Frame'].TitleFrame.Title.Font= 'ArialBold'aY['Frame'].TitleFrame.Title.FontSize='Size18'aY['Frame'].TitleFrame. Position=UDim2.new(aY['Frame'].TitleFrame.Position.X.Scale,aY['Frame']. TitleFrame.Position.X.Offset,0.1,0)aY['Frame'].TitleFrame.Size=UDim2.new(aY[ 'Frame'].TitleFrame.Size.X.Scale,aY['Frame'].TitleFrame.Size.X.Offset,0.8,0)aY[ 'Frame'].Position=UDim2.new(1,0,(#ah*aY['Frame'].Size.Y.Scale),0)WaitForChild(aY ['Frame'],'ClickListener').MouseButton1Down:connect(function(a0,a1)StartDrag(aY, -a0,a1)end)aY['Frame'].ClickListener.BackgroundColor3=aX.TeamColor.Color aY[ +a0,a1)end)aY['Frame'].ClickListener.BackgroundColor3=aV.TeamColor.Color aY[ 'Frame'].ClickListener.BackgroundTransparency=0.7 aY['Frame'].ClickListener. -AutoButtonColor=false ad=ad+1 aY['ID']=ad aY['AutoHide']=false if aX: -FindFirstChild'AutoHide'then aY['AutoHide']=true end if aX:FindFirstChild -'TeamScore'then TeamChildAdded(aY,aX.TeamScore)end aX.ChildAdded:connect( -function(a0)TeamChildAdded(aY,a0)end)aX.ChildRemoved:connect(function(a0) -TeamChildRemoved(aY,a0)end)aX.Changed:connect(function(a0)TeamChanged(aY,a0)end) +AutoButtonColor=false ad=ad+1 aY['ID']=ad aY['AutoHide']=false if aV: +FindFirstChild'AutoHide'then aY['AutoHide']=true end if aV:FindFirstChild +'TeamScore'then TeamChildAdded(aY,aV.TeamScore)end aV.ChildAdded:connect( +function(a0)TeamChildAdded(aY,a0)end)aV.ChildRemoved:connect(function(a0) +TeamChildRemoved(aY,a0)end)aV.Changed:connect(function(a0)TeamChanged(aY,a0)end) for a0,a1 in pairs(ae)do if not a1['Player'].Neutral and a1['Player'].TeamColor -==aX.TeamColor then AddPlayerToTeam(aY,a1)end end aY['IsHidden']=false if not aY +==aV.TeamColor then AddPlayerToTeam(aY,a1)end end aY['IsHidden']=false if not aY ['AutoHide']or#aY['MyPlayers']>0 then aY['Frame'].Parent=y aY['Frame']: TweenPosition(UDim2.new(0.5,0,(#ah*aY['Frame'].Size.Y.Scale),0),'Out','Linear',c ,true)AddMiddleBGFrame()else aY['IsHidden']=true aY['Frame'].Parent=nil end table.insert(af,aY)UpdateMinimize()BaseUpdate()if#af==1 and not ag then -AddNeutralTeam()end ax=false end function RemoveTeamFrame(aX)while ax do -debugprint'in removing team frame lock'wait(3.333333333333333E-2)end ax=true if -D.Value then end local aY for a0,a1 in ipairs(af)do if aX==a1['MyTeam']then aY= -a1 a1['Frame']:Destroy()table.remove(af,a0)end end if#af==0 then debugprint +AddNeutralTeam()end ax=false end function RemoveTeamFrame(aV)while ax do +debugprint'in removing team frame lock'wait(3.333333333333333E-2)end ax=true +local aY for a0,a1 in ipairs(af)do if aV==a1['MyTeam']then aY=a1 a1['Frame']: +Destroy()table.remove(af,a0)end end if#af==0 then debugprint 'removeteamframe, remove neutral'if ag then RemoveNeutralTeam()end end for a2,a3 in ipairs(aY['MyPlayers'])do RemovePlayerFromTeam(aY,a2)PlayerChanged(a3, 'TeamColor')end RemoveMiddleBGFrame()BaseUpdate()ax=false end function TeamAdded -(aX)InsertTeamFrame(aX)end function TeamRemoved(aX)RemoveTeamFrame(aX)end +(aV)InsertTeamFrame(aV)end function TeamRemoved(aV)RemoveTeamFrame(aV)end function BaseUpdate()while az do debugprint'in baseupdate lock'wait( 3.333333333333333E-2)end az=true UpdateStatNames()if#af==0 and not ag then -PlayerListModeUpdate()else TeamListModeUpdate()end for aX,aY in ipairs(ah)do if -aY.Parent~=nil then aY:TweenPosition(UDim2.new(0.5,0,((#ah-aX)*aY.Size.Y.Scale), +PlayerListModeUpdate()else TeamListModeUpdate()end for aV,aY in ipairs(ah)do if +aY.Parent~=nil then aY:TweenPosition(UDim2.new(0.5,0,((#ah-aV)*aY.Size.Y.Scale), 0),'Out','Linear',c,true)end end if not D.Value and#ah>_ then UpdateScrollPosition()end UpdateMinimize()UpdateScrollBarSize() UpdateScrollPosition()UpdateScrollBarVisibility()az=false end game.GuiService: -AddKey'\t'local aX=time()game.GuiService.KeyPressed:connect(function(aY)if aY== +AddKey'\t'local aV=time()game.GuiService.KeyPressed:connect(function(aY)if aY== '\t'then debugprint'caught tab key'local a2,a3=pcall(function()return game. -GuiService.IsModalDialog end)if a2==false or(a2 and a3==false)then if time()-aX> -0.4 then aX=time()if F.Value then if not E.Value then i:TweenPosition(UDim2.new( +GuiService.IsModalDialog end)if a2==false or(a2 and a3==false)then if time()-aV> +0.4 then aV=time()if F.Value then if not E.Value then i:TweenPosition(UDim2.new( 0,0,0,0),'Out','Linear',c*1.2,true)E.Value=true else i:TweenPosition(UDim2.new( ar.X.Scale,ar.X.Offset-10,0,0),'Out','Linear',c*1.2,true)E.Value=false D.Value= true end else ToggleMaximize()end end end end end)function PlayersChildAdded(aY) diff --git a/processed/48488398.lua b/processed/48488398.lua index 3c17725..b2ca654 100644 --- a/processed/48488398.lua +++ b/processed/48488398.lua @@ -34,51 +34,51 @@ showOneButton()local f=script.Parent:FindFirstChild'Popup'if f then f.OKButton. Visible=true f.DeclineButton.Visible=false f.AcceptButton.Visible=false end end function showTwoButtons()local f=script.Parent:FindFirstChild'Popup'if f then f. OKButton.Visible=false f.DeclineButton.Visible=true f.AcceptButton.Visible=true -end end function onTeleport(f,g,h)if game:GetService'TeleportService'. -CustomizedTeleportUI==false then if f==Enum.TeleportState.Started then -showTeleportUI('Teleport started...',0)elseif f==Enum.TeleportState. -WaitingForServer then showTeleportUI('Requesting server...',0)elseif f==Enum. +end end function showTeleportUI(f,g)if b~=nil then b:Remove()end waitForChild(a, +'PlayerGui')b=Instance.new'Message'b.Text=f b.Parent=a.PlayerGui if g>0 then +wait(g)b:Remove()end end function onTeleport(f,g,h)if game:GetService +'TeleportService'.CustomizedTeleportUI==false then if f==Enum.TeleportState. +Started then showTeleportUI('Teleport started...',0)elseif f==Enum.TeleportState +.WaitingForServer then showTeleportUI('Requesting server...',0)elseif f==Enum. TeleportState.InProgress then showTeleportUI('Teleporting...',0)elseif f==Enum. TeleportState.Failed then showTeleportUI( [[Teleport failed. Insufficient privileges or target place does not exist.]],3) -end end end function showTeleportUI(f,h)if b~=nil then b:Remove()end -waitForChild(a,'PlayerGui')b=Instance.new'Message'b.Text=f b.Parent=a.PlayerGui -if h>0 then wait(h)b:Remove()end end if d then a.OnTeleport:connect(onTeleport) -game:GetService'TeleportService'.ErrorCallback=function(f)local h=script.Parent: -FindFirstChild'Popup'showOneButton()h.PopupText.Text=f local i i=h.OKButton. -MouseButton1Click:connect(function()game:GetService'TeleportService': -TeleportCancel()if i then i:disconnect()end game.GuiService:RemoveCenterDialog( -script.Parent:FindFirstChild'Popup')h:TweenSize(UDim2.new(0,0,0,0),Enum. -EasingDirection.Out,Enum.EasingStyle.Quart,1,true,e())end)game.GuiService: -AddCenterDialog(script.Parent:FindFirstChild'Popup',Enum.CenterDialogType. -QuitDialog,function()showOneButton()script.Parent:FindFirstChild'Popup'.Visible= -true h:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection.Out,Enum. -EasingStyle.Quart,1,true)end,function()h:TweenSize(UDim2.new(0,0,0,0),Enum. -EasingDirection.Out,Enum.EasingStyle.Quart,1,true,e())end)end game:GetService -'TeleportService'.ConfirmationCallback=function(f,h,i)local j=script.Parent: -FindFirstChild'Popup'j.PopupText.Text=f j.PopupImage.Image=''local k,l -local function killCons()if k then k:disconnect()end if l then l:disconnect()end -game.GuiService:RemoveCenterDialog(script.Parent:FindFirstChild'Popup')j: +end end end if d then a.OnTeleport:connect(onTeleport)game:GetService +'TeleportService'.ErrorCallback=function(f)local h=script.Parent:FindFirstChild +'Popup'showOneButton()h.PopupText.Text=f local i i=h.OKButton.MouseButton1Click: +connect(function()game:GetService'TeleportService':TeleportCancel()if i then i: +disconnect()end game.GuiService:RemoveCenterDialog(script.Parent:FindFirstChild +'Popup')h:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle +.Quart,1,true,e())end)game.GuiService:AddCenterDialog(script.Parent: +FindFirstChild'Popup',Enum.CenterDialogType.QuitDialog,function()showOneButton() +script.Parent:FindFirstChild'Popup'.Visible=true h:TweenSize(UDim2.new(0,330,0, +350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)end,function()h: TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1, -true,e())end k=j.AcceptButton.MouseButton1Click:connect(function()killCons() -local m,n=pcall(function()game:GetService'TeleportService':TeleportImpl(h,i)end) -if not m then showOneButton()j.PopupText.Text=n local o o=j.OKButton. -MouseButton1Click:connect(function()if o then o:disconnect()end game.GuiService: -RemoveCenterDialog(script.Parent:FindFirstChild'Popup')j:TweenSize(UDim2.new(0,0 -,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,e())end)game. -GuiService:AddCenterDialog(script.Parent:FindFirstChild'Popup',Enum. -CenterDialogType.QuitDialog,function()showOneButton()script.Parent: +true,e())end)end game:GetService'TeleportService'.ConfirmationCallback=function( +f,h,i)local j=script.Parent:FindFirstChild'Popup'j.PopupText.Text=f j.PopupImage +.Image=''local k,l local function killCons()if k then k:disconnect()end if l +then l:disconnect()end game.GuiService:RemoveCenterDialog(script.Parent: +FindFirstChild'Popup')j:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out, +Enum.EasingStyle.Quart,1,true,e())end k=j.AcceptButton.MouseButton1Click: +connect(function()killCons()local m,n=pcall(function()game:GetService +'TeleportService':TeleportImpl(h,i)end)if not m then showOneButton()j.PopupText. +Text=n local o o=j.OKButton.MouseButton1Click:connect(function()if o then o: +disconnect()end game.GuiService:RemoveCenterDialog(script.Parent:FindFirstChild +'Popup')j:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle +.Quart,1,true,e())end)game.GuiService:AddCenterDialog(script.Parent: +FindFirstChild'Popup',Enum.CenterDialogType.QuitDialog,function()showOneButton() +script.Parent:FindFirstChild'Popup'.Visible=true j:TweenSize(UDim2.new(0,330,0, +350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)end,function()j: +TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1, +true,e())end)end end)l=j.DeclineButton.MouseButton1Click:connect(function() +killCons()pcall(function()game:GetService'TeleportService':TeleportCancel()end) +end)local m=pcall(function()game.GuiService:AddCenterDialog(script.Parent: +FindFirstChild'Popup',Enum.CenterDialogType.QuitDialog,function()showTwoButtons( +)j.AcceptButton.Text='Leave'j.DeclineButton.Text='Stay'script.Parent: FindFirstChild'Popup'.Visible=true j:TweenSize(UDim2.new(0,330,0,350),Enum. EasingDirection.Out,Enum.EasingStyle.Quart,1,true)end,function()j:TweenSize( UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,e()) -end)end end)l=j.DeclineButton.MouseButton1Click:connect(function()killCons() -pcall(function()game:GetService'TeleportService':TeleportCancel()end)end)local m -=pcall(function()game.GuiService:AddCenterDialog(script.Parent:FindFirstChild -'Popup',Enum.CenterDialogType.QuitDialog,function()showTwoButtons()j. -AcceptButton.Text='Leave'j.DeclineButton.Text='Stay'script.Parent:FindFirstChild -'Popup'.Visible=true j:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection.Out -,Enum.EasingStyle.Quart,1,true)end,function()j:TweenSize(UDim2.new(0,0,0,0),Enum -.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,e())end)end)if m==false then -script.Parent:FindFirstChild'Popup'.Visible=true j.AcceptButton.Text='Leave'j. -DeclineButton.Text='Stay'j:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection -.Out,Enum.EasingStyle.Quart,1,true)end return true end end \ No newline at end of file +end)end)if m==false then script.Parent:FindFirstChild'Popup'.Visible=true j. +AcceptButton.Text='Leave'j.DeclineButton.Text='Stay'j:TweenSize(UDim2.new(0,330, +0,350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)end return true +end end \ No newline at end of file diff --git a/processed/53878057.lua b/processed/53878057.lua index f6e4131..a67ae7c 100644 --- a/processed/53878057.lua +++ b/processed/53878057.lua @@ -37,80 +37,79 @@ F then if C[F].GearReference.Value then if C[F].GearReference.Value.Parent==game .Players.LocalPlayer.Character then C[F].GearReference.Value.Parent=game.Players .LocalPlayer.Backpack end if C[F].GearReference.Value:IsA'HopperBin'and C[F]. GearReference.Value.Active then C[F].GearReference.Value:Disable()C[F]. -GearReference.Value.Active=false end end C[F]='empty'local G,H=E.Size.X.Scale/2, -E.Size.Y.Scale/2 delay(0,function()E:remove()end)Spawn(function()while -backpackIsOpen()do wait(0.03)end waitForChild(i,'Backpack')local I=true for J=1, -#C do if C[J]~='empty'then I=false end end if I then if#i.Backpack:GetChildren() -<1 then f.Visible=false else f.Position=UDim2.new(0.5,-60,1,-44)end h.Visible= -false end end)end end function insertGear(E,F)local G=nil if not F then for H=1, -#C do if C[H]=='empty'then G=H break end end if G==1 and C[1]~='empty'then E: -remove()return end else G=F local H=1 for I=1,#C do if C[I]=='empty'then H=I -break end end for I=H,G+1,-1 do C[I]=C[I-1]if I==10 then C[I].SlotNumber.Text= -'0'C[I].SlotNumberDownShadow.Text='0'C[I].SlotNumberUpShadow.Text='0'else C[I]. -SlotNumber.Text=I C[I].SlotNumberDownShadow.Text=I C[I].SlotNumberUpShadow.Text= -I end end end C[G]=E if G~=r then if type(tostring(G))=='string'then local H= -tostring(G)E.SlotNumber.Text=H E.SlotNumberDownShadow.Text=H E. -SlotNumberUpShadow.Text=H end else E.SlotNumber.Text='0'E.SlotNumberDownShadow. -Text='0'E.SlotNumberUpShadow.Text='0'end E.Visible=true local H=nil H=E.Kill. -Changed:connect(function(I)kill(I,H,E)end)end function reorganizeLoadout(E,F,G,H -)if F then insertGear(E,H)else removeGear(E)end if E~='empty'then E.ZIndex=1 end -end function checkToolAncestry(E,F)if E:FindFirstChild'RobloxBuildTool'then -return end if E:IsA'Tool'or E:IsA'HopperBin'then for G=1,#C do if C[G]~='empty' -and C[G].GearReference.Value==E then if F==nil then C[G].Kill.Value=true return -false elseif E.Parent==i.Character then C[G].Selected=true return true elseif E. -Parent==i.Backpack then if E:IsA'Tool'or E:IsA'HopperBin'then C[G].Selected= -false end return true else C[G].Kill.Value=true return false end return true end -end end end function removeAllEquippedGear(E)local F=i.Character:GetChildren() -for G=1,#F do if(F[G]:IsA'Tool'or F[G]:IsA'HopperBin')and F[G]~=E then if F[G]: -IsA'Tool'then F[G].Parent=i.Backpack end if F[G]:IsA'HopperBin'then F[G]: -Disable()end end end end function hopperBinSwitcher(E,F)if not F then return end -F:ToggleSelect()if C[E]=='empty'then return end if not F.Active then C[E]. -Selected=false normalizeButton(C[E])else C[E].Selected=true enlargeButton(C[E]) -end end function toolSwitcher(E)if not C[E]then return end local F=C[E]. -GearReference.Value if F==nil then return end removeAllEquippedGear(F)local G=E -if E==0 then G=10 end for H=1,#C do if C[H]and C[H]~='empty'and H~=G then -normalizeButton(C[H])C[H].Selected=false if C[H].GearReference and C[H]. -GearReference.Value and C[H].GearReference.Value:IsA'HopperBin'and C[H]. -GearReference.Value.Active then C[H].GearReference.Value:ToggleSelect()end end -end if F:IsA'HopperBin'then hopperBinSwitcher(E,F)else if F.Parent==i.Character -then F.Parent=i.Backpack if C[E]~='empty'then C[E].Selected=false -normalizeButton(C[E])end else F.Parent=i.Character C[E].Selected=true -enlargeButton(C[E])end end end function activateGear(E)local F=nil if E=='0'then -F=10 else F=tonumber(E)end if F==nil then return end if C[F]~='empty'then -toolSwitcher(F)end end enlargeButton=function(E)if E.Size.Y.Scale>1 then return -end if not E.Parent then return end if not E.Selected then return end for F=1,#C -do if C[F]=='empty'then break end if C[F]~=E then normalizeButton(C[F])end end -if not y then return end if E:FindFirstChild'Highlight'then E.Highlight.Visible= -true end if E:IsA'ImageButton'or E:IsA'TextButton'then E.ZIndex=5 local F,G=-(w. -X.Scale-E.Size.X.Scale)/2,-(w.Y.Scale-E.Size.Y.Scale)/2 E:TweenSizeAndPosition(w -,UDim2.new(E.Position.X.Scale+F,E.Position.X.Offset,E.Position.Y.Scale+G,E. -Position.Y.Offset),Enum.EasingDirection.Out,Enum.EasingStyle.Quad,z/5,y)end end -normalizeAllButtons=function()for E=1,#C do if C[E]=='empty'then break end if C[ -E]~=button then normalizeButton(C[E],0.1)end end end normalizeButton=function(E, -F)if not E then return end if E.Size.Y.Scale<=1 then return end if E.Selected -then return end if not E.Parent then return end local G=F if G==nil or type(G)~= -'number'then G=z/5 end if E:FindFirstChild'Highlight'then E.Highlight.Visible= -false end if E:IsA'ImageButton'or E:IsA'TextButton'then E.ZIndex=1 local H,I,J=1 -/v,-(x.X.Scale-E.Size.X.Scale)/2,-(x.Y.Scale-E.Size.Y.Scale)/2 E: -TweenSizeAndPosition(x,UDim2.new(E.Position.X.Scale+I,E.Position.X.Offset,E. -Position.Y.Scale+J,E.Position.Y.Offset),Enum.EasingDirection.Out,Enum. -EasingStyle.Quad,G,y)end end local E=function()while u do wait()end end function -pointInRectangle(F,G,H)if F.x>G.x and F.x<(G.x+H.x)then if F.y>G.y and F.y<(G.y+ -H.y)then return true end end return false end function swapGear(F,G)local H=G: -GetChildren()if#H==1 then if H[1]:FindFirstChild'SlotNumber'then local I,J= -tonumber(H[1].SlotNumber.Text),tonumber(F.SlotNumber.Text)if I==0 then I=10 end -if J==0 then J=10 end C[I]=F C[J]=H[1]H[1].SlotNumber.Text=F.SlotNumber.Text H[1 -].SlotNumberDownShadow.Text=F.SlotNumber.Text H[1].SlotNumberUpShadow.Text=F. -SlotNumber.Text local K=string.sub(G.Name,5)F.SlotNumber.Text=K F. -SlotNumberDownShadow.Text=K F.SlotNumberUpShadow.Text=K F.Position=UDim2.new(F. -Position.X.Scale,0,F.Position.Y.Scale,0)H[1].Position=UDim2.new(H[1].Position.X. -Scale,0,H[1].Position.Y.Scale,0)H[1].Parent=F.Parent F.Parent=G end else local I -=tonumber(F.SlotNumber.Text)if I==0 then I=10 end C[I]='empty'local J=string. -sub(G.Name,5)F.SlotNumber.Text=J F.SlotNumberDownShadow.Text=J F. -SlotNumberUpShadow.Text=J local K=tonumber(F.SlotNumber.Text)if K==0 then K=10 -end C[K]=F F.Position=UDim2.new(F.Position.X.Scale,0,F.Position.Y.Scale,0)F. -Parent=G end end function resolveDrag(F,G,H)local I,J=Vector2.new(G,H),F.Parent -local K=J.Parent:GetChildren()for L=1,#K do if K[L]:IsA'Frame'then if +GearReference.Value.Active=false end end C[F]='empty'delay(0,function()E:remove( +)end)Spawn(function()while backpackIsOpen()do wait(0.03)end waitForChild(i, +'Backpack')local G=true for H=1,#C do if C[H]~='empty'then G=false end end if G +then if#i.Backpack:GetChildren()<1 then f.Visible=false else f.Position=UDim2. +new(0.5,-60,1,-44)end h.Visible=false end end)end end function insertGear(E,F) +local G=nil if not F then for H=1,#C do if C[H]=='empty'then G=H break end end +if G==1 and C[1]~='empty'then E:remove()return end else G=F local H=1 for I=1,#C +do if C[I]=='empty'then H=I break end end for I=H,G+1,-1 do C[I]=C[I-1]if I==10 +then C[I].SlotNumber.Text='0'C[I].SlotNumberDownShadow.Text='0'C[I]. +SlotNumberUpShadow.Text='0'else C[I].SlotNumber.Text=I C[I].SlotNumberDownShadow +.Text=I C[I].SlotNumberUpShadow.Text=I end end end C[G]=E if G~=r then if type( +tostring(G))=='string'then local H=tostring(G)E.SlotNumber.Text=H E. +SlotNumberDownShadow.Text=H E.SlotNumberUpShadow.Text=H end else E.SlotNumber. +Text='0'E.SlotNumberDownShadow.Text='0'E.SlotNumberUpShadow.Text='0'end E. +Visible=true local H=nil H=E.Kill.Changed:connect(function(I)kill(I,H,E)end)end +function reorganizeLoadout(E,F,G,H)if F then insertGear(E,H)else removeGear(E) +end if E~='empty'then E.ZIndex=1 end end function checkToolAncestry(E,F)if E: +FindFirstChild'RobloxBuildTool'then return end if E:IsA'Tool'or E:IsA'HopperBin' +then for G=1,#C do if C[G]~='empty'and C[G].GearReference.Value==E then if F== +nil then C[G].Kill.Value=true return false elseif E.Parent==i.Character then C[G +].Selected=true return true elseif E.Parent==i.Backpack then if E:IsA'Tool'or E: +IsA'HopperBin'then C[G].Selected=false end return true else C[G].Kill.Value=true +return false end return true end end end end function removeAllEquippedGear(E) +local F=i.Character:GetChildren()for G=1,#F do if(F[G]:IsA'Tool'or F[G]:IsA +'HopperBin')and F[G]~=E then if F[G]:IsA'Tool'then F[G].Parent=i.Backpack end if +F[G]:IsA'HopperBin'then F[G]:Disable()end end end end function hopperBinSwitcher +(E,F)if not F then return end F:ToggleSelect()if C[E]=='empty'then return end if +not F.Active then C[E].Selected=false normalizeButton(C[E])else C[E].Selected= +true enlargeButton(C[E])end end function toolSwitcher(E)if not C[E]then return +end local F=C[E].GearReference.Value if F==nil then return end +removeAllEquippedGear(F)local G=E if E==0 then G=10 end for H=1,#C do if C[H]and +C[H]~='empty'and H~=G then normalizeButton(C[H])C[H].Selected=false if C[H]. +GearReference and C[H].GearReference.Value and C[H].GearReference.Value:IsA +'HopperBin'and C[H].GearReference.Value.Active then C[H].GearReference.Value: +ToggleSelect()end end end if F:IsA'HopperBin'then hopperBinSwitcher(E,F)else if +F.Parent==i.Character then F.Parent=i.Backpack if C[E]~='empty'then C[E]. +Selected=false normalizeButton(C[E])end else F.Parent=i.Character C[E].Selected= +true enlargeButton(C[E])end end end function activateGear(E)local F=nil if E== +'0'then F=10 else F=tonumber(E)end if F==nil then return end if C[F]~='empty' +then toolSwitcher(F)end end enlargeButton=function(E)if E.Size.Y.Scale>1 then +return end if not E.Parent then return end if not E.Selected then return end for +F=1,#C do if C[F]=='empty'then break end if C[F]~=E then normalizeButton(C[F]) +end end if not y then return end if E:FindFirstChild'Highlight'then E.Highlight. +Visible=true end if E:IsA'ImageButton'or E:IsA'TextButton'then E.ZIndex=5 local +F,G=-(w.X.Scale-E.Size.X.Scale)/2,-(w.Y.Scale-E.Size.Y.Scale)/2 E: +TweenSizeAndPosition(w,UDim2.new(E.Position.X.Scale+F,E.Position.X.Offset,E. +Position.Y.Scale+G,E.Position.Y.Offset),Enum.EasingDirection.Out,Enum. +EasingStyle.Quad,z/5,y)end end normalizeAllButtons=function()for E=1,#C do if C[ +E]=='empty'then break end if C[E]~=button then normalizeButton(C[E],0.1)end end +end normalizeButton=function(E,F)if not E then return end if E.Size.Y.Scale<=1 +then return end if E.Selected then return end if not E.Parent then return end +local G=F if G==nil or type(G)~='number'then G=z/5 end if E:FindFirstChild +'Highlight'then E.Highlight.Visible=false end if E:IsA'ImageButton'or E:IsA +'TextButton'then E.ZIndex=1 local H,I,J=1/v,-(x.X.Scale-E.Size.X.Scale)/2,-(x.Y. +Scale-E.Size.Y.Scale)/2 E:TweenSizeAndPosition(x,UDim2.new(E.Position.X.Scale+I, +E.Position.X.Offset,E.Position.Y.Scale+J,E.Position.Y.Offset),Enum. +EasingDirection.Out,Enum.EasingStyle.Quad,G,y)end end local E=function()while u +do wait()end end function pointInRectangle(F,G,H)if F.x>G.x and F.x<(G.x+H.x) +then if F.y>G.y and F.y<(G.y+H.y)then return true end end return false end +function swapGear(F,G)local H=G:GetChildren()if#H==1 then if H[1]:FindFirstChild +'SlotNumber'then local I,J=tonumber(H[1].SlotNumber.Text),tonumber(F.SlotNumber. +Text)if I==0 then I=10 end if J==0 then J=10 end C[I]=F C[J]=H[1]H[1].SlotNumber +.Text=F.SlotNumber.Text H[1].SlotNumberDownShadow.Text=F.SlotNumber.Text H[1]. +SlotNumberUpShadow.Text=F.SlotNumber.Text local K=string.sub(G.Name,5)F. +SlotNumber.Text=K F.SlotNumberDownShadow.Text=K F.SlotNumberUpShadow.Text=K F. +Position=UDim2.new(F.Position.X.Scale,0,F.Position.Y.Scale,0)H[1].Position=UDim2 +.new(H[1].Position.X.Scale,0,H[1].Position.Y.Scale,0)H[1].Parent=F.Parent F. +Parent=G end else local I=tonumber(F.SlotNumber.Text)if I==0 then I=10 end C[I]= +'empty'local J=string.sub(G.Name,5)F.SlotNumber.Text=J F.SlotNumberDownShadow. +Text=J F.SlotNumberUpShadow.Text=J local K=tonumber(F.SlotNumber.Text)if K==0 +then K=10 end C[K]=F F.Position=UDim2.new(F.Position.X.Scale,0,F.Position.Y. +Scale,0)F.Parent=G end end function resolveDrag(F,G,H)local I,J=Vector2.new(G,H) +,F.Parent local K=J.Parent:GetChildren()for L=1,#K do if K[L]:IsA'Frame'then if pointInRectangle(I,K[L].AbsolutePosition,K[L].AbsoluteSize)then swapGear(F,K[L]) return true end end end if G(J.AbsolutePosition.x+J. AbsoluteSize.x)then reorganizeLoadout(F,false)return false elseif H0 then if c.floor(q)==q then return true end -end return false end for s,t in j(p)do if not r(s)then return false,'{','}'else -q=c.max(q,s)end end return true,'[',']',q end function o:WriteTable(p)local q,r, -s,t=self:IsArray(p)self:Append(r)if q then for u=1,t do self:Write(p[u])if u0 then if c.floor(q)==q then return true +end end return false end for s,t in j(p)do if not r(s)then return false,'{','}' +else q=c.max(q,s)end end return true,'[',']',q end function o:WriteTable(p)local +q,r,s,t=self:IsArray(p)self:Append(r)if q then for u=1,t do self:Write(p[u])if u +=0 and k diff --git a/processed/89449008.lua b/processed/89449008.lua index 7c2ef6e..261150c 100644 --- a/processed/89449008.lua +++ b/processed/89449008.lua @@ -75,7 +75,7 @@ ZIndex=10 S=T end)R.DragStopped:connect(function(T,U)waitForChild(R,'Background' true)R.Draggable=false delay(0.5,function()R.Draggable=true end)else R.Position= S end end end)local T=tick()j[R]=R.MouseEnter:connect(function()previewGear(R) end)k[R]=R.MouseButton1Click:connect(function()local U=tick()if R.Active and(U-T -)<0.5 then local V=findEmptySlot()if V then R.ZIndex=1 swapGearSlot(V,R)end else +)<0.5 then local W=findEmptySlot()if W then R.ZIndex=1 swapGearSlot(W,R)end else buttonClick(R)end T=U end)end end end F()end function showPartialGrid(aa)for Q,R in pairs(g)do R.Parent=nil end if aa then for S,T in pairs(aa)do T.Parent=s. ScrollingFrame end end F()end function showEntireGrid()for aa,Q in pairs(g)do Q. @@ -110,9 +110,9 @@ new(0.8,0.8,0.8)end function clearHighlight(aa)aa.TextColor3=Color3.new(1,1,1)aa then u.Slot.Value=aa u.GearButton.Value=Q u.Value=true updateGridActive()end end local aa=function(aa,Q)if type(aa.Action)~='number'then return end local R=aa. Action if R==1 then unequipGear(Q.Parent.GearReference.Value)local S=Q.Parent -local T,U,V=S.GearReference.Value,r:GetChildren(),-1 for W=1,#U do if U[W]:IsA -'Frame'then local X=U[W]:GetChildren()if X[1]and X[1].GearReference.Value==T -then V=X[1].SlotNumber.Text break end end end swapGearSlot(V,nil)end end +local T,U,W=S.GearReference.Value,r:GetChildren(),-1 for X=1,#U do if U[X]:IsA +'Frame'then local Y=U[X]:GetChildren()if Y[1]and Y[1].GearReference.Value==T +then W=Y[1].SlotNumber.Text break end end end swapGearSlot(W,nil)end end function setupCharacterConnections()if n then n:disconnect()end n=game.Players. LocalPlayer.Backpack.ChildAdded:connect(function(Q)addToGrid(Q)end)local Q=game. Players.LocalPlayer.Backpack:GetChildren()for R=1,#Q do addToGrid(Q[R])end if l @@ -123,7 +123,7 @@ end)wait()centerGear(r:GetChildren())end function removeCharacterConnections()if l then l:disconnect()end if m then m:disconnect()end if n then n:disconnect()end end function trim(Q)return(Q:gsub('^%s*(.-)%s*$','%1'))end function filterGear(Q )local R={}for S,T in pairs(f)do if g[T]then local U=string.lower(g[T]. -GearReference.Value.Name)U=trim(U)for V=1,#Q do if string.match(U,Q[V])then +GearReference.Value.Name)U=trim(U)for W=1,#Q do if string.match(U,Q[W])then table.insert(R,g[T])break end end end end return R end function splitByWhitespace(Q)if type(Q)~='string'then return nil end local R={}for S in string.gmatch(Q,'[^%s]+')do if string.len(S)>0 then table.insert(R,S)end end @@ -138,30 +138,30 @@ getGearContextMenu()local Q=Instance.new'Frame'Q.Active=true Q.Name= )Q.BackgroundTransparency=1 Q.Visible=false local R=Instance.new'TextButton'R. Name='UnequipContextMenuButton'R.Text=''R.Style=Enum.ButtonStyle. RobloxButtonDefault R.ZIndex=8 R.Size=UDim2.new(1,0,1,-20)R.Visible=true R. -Parent=Q local S,T,U=12,{},{'Remove Hotkey'}for V=1,#U do local W={}W.Type= -'Button'W.Text=U[V]W.Action=V W.DoIt=aa table.insert(T,W)end for V,W in ipairs(T -)do local X=W if X.Type=='Button'then local Y=Instance.new'TextButton'Y.Name= -'UnequipContextButton'..V Y.BackgroundColor3=Color3.new(0,0,0)Y.BorderSizePixel= -0 Y.TextXAlignment=Enum.TextXAlignment.Left Y.Text=' '..W.Text Y.Font=Enum.Font. -Arial Y.FontSize=Enum.FontSize.Size14 Y.Size=UDim2.new(1,8,0,S)Y.Position=UDim2. -new(0,0,0,S*V)Y.TextColor3=Color3.new(1,1,1)Y.ZIndex=9 Y.Parent=R if not -IsTouchDevice()then Y.MouseButton1Click:connect(function()if Y.Active and not Q. -Parent.Active then pcall(function()X.DoIt(X,Q)end)i=false Q.Visible=false -clearHighlight(Y)clearPreview()end end)Y.MouseEnter:connect(function()if Y. -Active and Q.Parent.Active then highlight(Y)end end)Y.MouseLeave:connect( -function()if Y.Active and Q.Parent.Active then clearHighlight(Y)end end)end W. -Button=Y W.Element=Y elseif X.Type=='Label'then local Y=Instance.new'Frame'Y. -Name='ContextLabel'..V Y.BackgroundTransparency=1 Y.Size=UDim2.new(1,8,0,S)local -Z=Instance.new'TextLabel'Z.Name='Text1'Z.BackgroundTransparency=1 Z. -BackgroundColor3=Color3.new(1,1,1)Z.BorderSizePixel=0 Z.TextXAlignment=Enum. -TextXAlignment.Left Z.Font=Enum.Font.ArialBold Z.FontSize=Enum.FontSize.Size14 Z -.Position=UDim2.new(0,0,0,0)Z.Size=UDim2.new(0.5,0,1,0)Z.TextColor3=Color3.new(1 -,1,1)Z.ZIndex=9 Z.Parent=Y X.Label1=Z if X.GetText2 then Z=Instance.new -'TextLabel'Z.Name='Text2'Z.BackgroundTransparency=1 Z.BackgroundColor3=Color3. -new(1,1,1)Z.BorderSizePixel=0 Z.TextXAlignment=Enum.TextXAlignment.Right Z.Font= -Enum.Font.Arial Z.FontSize=Enum.FontSize.Size14 Z.Position=UDim2.new(0.5,0,0,0)Z -.Size=UDim2.new(0.5,0,1,0)Z.TextColor3=Color3.new(1,1,1)Z.ZIndex=9 Z.Parent=Y X. -Label2=Z end Y.Parent=R X.Label=Y X.Element=Y end end Q.ZIndex=4 Q.MouseLeave: +Parent=Q local S,T,U=12,{},{'Remove Hotkey'}for W=1,#U do local X={}X.Type= +'Button'X.Text=U[W]X.Action=W X.DoIt=aa table.insert(T,X)end for W,X in ipairs(T +)do local Y=X if Y.Type=='Button'then local Z=Instance.new'TextButton'Z.Name= +'UnequipContextButton'..W Z.BackgroundColor3=Color3.new(0,0,0)Z.BorderSizePixel= +0 Z.TextXAlignment=Enum.TextXAlignment.Left Z.Text=' '..X.Text Z.Font=Enum.Font. +Arial Z.FontSize=Enum.FontSize.Size14 Z.Size=UDim2.new(1,8,0,S)Z.Position=UDim2. +new(0,0,0,S*W)Z.TextColor3=Color3.new(1,1,1)Z.ZIndex=9 Z.Parent=R if not +IsTouchDevice()then Z.MouseButton1Click:connect(function()if Z.Active and not Q. +Parent.Active then pcall(function()Y.DoIt(Y,Q)end)i=false Q.Visible=false +clearHighlight(Z)clearPreview()end end)Z.MouseEnter:connect(function()if Z. +Active and Q.Parent.Active then highlight(Z)end end)Z.MouseLeave:connect( +function()if Z.Active and Q.Parent.Active then clearHighlight(Z)end end)end X. +Button=Z X.Element=Z elseif Y.Type=='Label'then local Z=Instance.new'Frame'Z. +Name='ContextLabel'..W Z.BackgroundTransparency=1 Z.Size=UDim2.new(1,8,0,S)local +_=Instance.new'TextLabel'_.Name='Text1'_.BackgroundTransparency=1 _. +BackgroundColor3=Color3.new(1,1,1)_.BorderSizePixel=0 _.TextXAlignment=Enum. +TextXAlignment.Left _.Font=Enum.Font.ArialBold _.FontSize=Enum.FontSize.Size14 _ +.Position=UDim2.new(0,0,0,0)_.Size=UDim2.new(0.5,0,1,0)_.TextColor3=Color3.new(1 +,1,1)_.ZIndex=9 _.Parent=Z Y.Label1=_ if Y.GetText2 then _=Instance.new +'TextLabel'_.Name='Text2'_.BackgroundTransparency=1 _.BackgroundColor3=Color3. +new(1,1,1)_.BorderSizePixel=0 _.TextXAlignment=Enum.TextXAlignment.Right _.Font= +Enum.Font.Arial _.FontSize=Enum.FontSize.Size14 _.Position=UDim2.new(0.5,0,0,0)_ +.Size=UDim2.new(0.5,0,1,0)_.TextColor3=Color3.new(1,1,1)_.ZIndex=9 _.Parent=Z Y. +Label2=_ end Z.Parent=R Y.Label=Z Y.Element=Z end end Q.ZIndex=4 Q.MouseLeave: connect(function()i=false Q.Visible=false clearPreview()end)robloxLock(Q)return Q end function coreGuiChanged(Q,R)if Q==Enum.CoreGuiType.Backpack or Q==Enum. CoreGuiType.All then if not R then e.Gear.Visible=false end end end local Q=a. diff --git a/processed/89449093.lua b/processed/89449093.lua index 115bb1b..5548425 100644 --- a/processed/89449093.lua +++ b/processed/89449093.lua @@ -2,101 +2,99 @@ if game.CoreGui.Version<7 then return end local function waitForChild(a,b)while not a:FindFirstChild(b)do a.ChildAdded:wait()end return a:FindFirstChild(b)end local function waitForProperty(a,b)while not a[b]do a.Changed:wait()end end waitForChild(game,'Players')if#game.Players:GetChildren()<1 then game.Players. -ChildAdded:wait()end waitForProperty(game.Players,'LocalPlayer')local a,b=game. -Players.LocalPlayer,script.Parent waitForChild(b,'Gear')local c=script.Parent. -Parent assert(c:IsA'ScreenGui')waitForChild(b,'Tabs')waitForChild(b.Tabs, -'CloseButton')local d=b.Tabs.CloseButton waitForChild(b.Tabs,'InventoryButton') -local e=b.Tabs.InventoryButton if game.CoreGui.Version>=8 then waitForChild(b. -Tabs,'WardrobeButton')local f=b.Tabs.WardrobeButton end waitForChild(b.Parent, -'ControlFrame')local f,g,h=waitForChild(b.Parent.ControlFrame,'BackpackButton'), -'gear',waitForChild(b,'SearchFrame')waitForChild(b.SearchFrame,'SearchBoxFrame') -local i,j,k,l=waitForChild(b.SearchFrame.SearchBoxFrame,'SearchBox'), -waitForChild(b.SearchFrame,'SearchButton'),waitForChild(b.SearchFrame, +ChildAdded:wait()end waitForProperty(game.Players,'LocalPlayer')local a=script. +Parent waitForChild(a,'Gear')local b=script.Parent.Parent assert(b:IsA +'ScreenGui')waitForChild(a,'Tabs')waitForChild(a.Tabs,'CloseButton')local c=a. +Tabs.CloseButton waitForChild(a.Tabs,'InventoryButton')local d,e=a.Tabs. +InventoryButton,nil if game.CoreGui.Version>=8 then waitForChild(a.Tabs, +'WardrobeButton')e=a.Tabs.WardrobeButton end waitForChild(a.Parent, +'ControlFrame')local f,g,h=waitForChild(a.Parent.ControlFrame,'BackpackButton'), +'gear',waitForChild(a,'SearchFrame')waitForChild(a.SearchFrame,'SearchBoxFrame') +local i,j,k,l=waitForChild(a.SearchFrame.SearchBoxFrame,'SearchBox'), +waitForChild(a.SearchFrame,'SearchButton'),waitForChild(a.SearchFrame, 'ResetButton'),waitForChild(Game.CoreGui,'RobloxGui')local m=waitForChild(l, -'CurrentLoadout')local n,o,p,q,r,s,t,u,v,w,x,y,z=waitForChild(m,'Background'), -true,true,false,true,false,nil,nil,0.25,'Search...','~','`',UDim2.new(0,600,0, -400)if l.AbsoluteSize.Y<=320 then z=UDim2.new(0,200,0,140)end function -createPublicEvent(A)assert(A,'eventName is nil')assert(tostring(A), -'eventName is not a string')local B=Instance.new'BindableEvent'B.Name=tostring(A -)B.Parent=script return B end function createPublicFunction(A,B)assert(A, -'funcName is nil')assert(tostring(A),'funcName is not a string')assert(B, -'invokeFunc is nil')assert(type(B)=='function', -"invokeFunc should be of type 'function'")local C=Instance.new'BindableFunction' -C.Name=tostring(A)C.OnInvoke=B C.Parent=script return C end local A,B,C,D,E= -createPublicEvent'ResizeEvent',createPublicEvent'BackpackOpenEvent', -createPublicEvent'BackpackCloseEvent',createPublicEvent'TabClickedEvent', -createPublicEvent'SearchRequestedEvent'function deactivateBackpack()b.Visible= -false r=false end function activateBackpack()initHumanoidDiedConnections()r=true -b.Visible=q if q then toggleBackpack()end end function +'CurrentLoadout')local n,o,p,q,r,s,t,u,v,w,x,y=waitForChild(m,'Background'),true +,true,false,true,false,nil,0.25,'Search...','~','`',UDim2.new(0,600,0,400)if l. +AbsoluteSize.Y<=320 then y=UDim2.new(0,200,0,140)end function createPublicEvent( +z)assert(z,'eventName is nil')assert(tostring(z),'eventName is not a string') +local A=Instance.new'BindableEvent'A.Name=tostring(z)A.Parent=script return A +end function createPublicFunction(z,A)assert(z,'funcName is nil')assert( +tostring(z),'funcName is not a string')assert(A,'invokeFunc is nil')assert(type( +A)=='function',"invokeFunc should be of type 'function'")local B=Instance.new +'BindableFunction'B.Name=tostring(z)B.OnInvoke=A B.Parent=script return B end +local z,A,B,C,D=createPublicEvent'ResizeEvent',createPublicEvent +'BackpackOpenEvent',createPublicEvent'BackpackCloseEvent',createPublicEvent +'TabClickedEvent',createPublicEvent'SearchRequestedEvent'function +deactivateBackpack()a.Visible=false r=false end function initHumanoidDiedConnections()if t then t:disconnect()end waitForProperty(game. Players.LocalPlayer,'Character')waitForChild(game.Players.LocalPlayer.Character, 'Humanoid')t=game.Players.LocalPlayer.Character.Humanoid.Died:connect( -deactivateBackpack)end local F=function()q=false p=false f.Selected=false -resetSearch()C:Fire(g)b.Tabs.Visible=false h.Visible=false b: -TweenSizeAndPosition(UDim2.new(0,z.X.Offset,0,0),UDim2.new(0.5,-z.X.Offset/2,1,- -85),Enum.EasingDirection.Out,Enum.EasingStyle.Quad,v,true,function()game. -GuiService:RemoveCenterDialog(b)b.Visible=false f.Selected=false end)delay(v, -function()game.GuiService:RemoveCenterDialog(b)b.Visible=false f.Selected=false -p=true o=true end)end function showBackpack()game.GuiService:AddCenterDialog(b, -Enum.CenterDialogType.PlayerInitiatedDialog,function()b.Visible=true f.Selected= -true end,function()b.Visible=false f.Selected=false end)b.Visible=true f. -Selected=true b:TweenSizeAndPosition(z,UDim2.new(0.5,-z.X.Offset/2,1,-z.Y.Offset --88),Enum.EasingDirection.Out,Enum.EasingStyle.Quad,v,true)delay(v,function()b. -Tabs.Visible=false h.Visible=true B:Fire(g)o=true p=true f.Image= -'http://www.roblox.com/asset/?id=97644093'f.Position=UDim2.new(0.5,-60,1,-z.Y. -Offset-103)end)end function toggleBackpack()if not game.Players.LocalPlayer then -return end if not game.Players.LocalPlayer['Character']then return end if not o -then return end if not p then return end p=false o=false q=not q if q then n. -Image='http://www.roblox.com/asset/?id=97623721'n.Position=UDim2.new(-3E-2,0,- +deactivateBackpack)end function activateBackpack()initHumanoidDiedConnections()r +=true a.Visible=q if q then toggleBackpack()end end local E=function()q=false p= +false f.Selected=false resetSearch()B:Fire(g)a.Tabs.Visible=false h.Visible= +false a:TweenSizeAndPosition(UDim2.new(0,y.X.Offset,0,0),UDim2.new(0.5,-y.X. +Offset/2,1,-85),Enum.EasingDirection.Out,Enum.EasingStyle.Quad,u,true,function() +game.GuiService:RemoveCenterDialog(a)a.Visible=false f.Selected=false end)delay( +u,function()game.GuiService:RemoveCenterDialog(a)a.Visible=false f.Selected= +false p=true o=true end)end function showBackpack()game.GuiService: +AddCenterDialog(a,Enum.CenterDialogType.PlayerInitiatedDialog,function()a. +Visible=true f.Selected=true end,function()a.Visible=false f.Selected=false end) +a.Visible=true f.Selected=true a:TweenSizeAndPosition(y,UDim2.new(0.5,-y.X. +Offset/2,1,-y.Y.Offset-88),Enum.EasingDirection.Out,Enum.EasingStyle.Quad,u,true +)delay(u,function()a.Tabs.Visible=false h.Visible=true A:Fire(g)o=true p=true f. +Image='http://www.roblox.com/asset/?id=97644093'f.Position=UDim2.new(0.5,-60,1,- +y.Y.Offset-103)end)end function toggleBackpack()if not game.Players.LocalPlayer +then return end if not game.Players.LocalPlayer['Character']then return end if +not o then return end if not p then return end p=false o=false q=not q if q then +n.Image='http://www.roblox.com/asset/?id=97623721'n.Position=UDim2.new(-3E-2,0,- 0.17,0)n.Size=UDim2.new(1.05,0,1.25,0)n.ZIndex=2 n.Visible=true showBackpack() else f.Position=UDim2.new(0.5,-60,1,-44)n.Visible=false f.Selected=false f.Image ='http://www.roblox.com/asset/?id=97617958'n.Image= 'http://www.roblox.com/asset/?id=96536002'n.Position=UDim2.new(-0.1,0,-0.1,0)n. -Size=UDim2.new(1.2,0,1.2,0)F()local G=m:GetChildren()for H=1,#G do if G[H]and G[ -H]:IsA'Frame'then local I=G[H]if#I:GetChildren()>0 then f.Position=UDim2.new(0.5 -,-60,1,-108)f.Visible=true n.Visible=true if I:GetChildren()[1]:IsA'ImageButton' -then local J=I:GetChildren()[1]J.Active=true J.Draggable=false end end end end +Size=UDim2.new(1.2,0,1.2,0)E()local F=m:GetChildren()for G=1,#F do if F[G]and F[ +G]:IsA'Frame'then local H=F[G]if#H:GetChildren()>0 then f.Position=UDim2.new(0.5 +,-60,1,-108)f.Visible=true n.Visible=true if H:GetChildren()[1]:IsA'ImageButton' +then local I=H:GetChildren()[1]I.Active=true I.Draggable=false end end end end end end function closeBackpack()if q then toggleBackpack()end end function -setSelected(G)assert(G)assert(G:IsA'TextButton')G.BackgroundColor3=Color3.new(1, -1,1)G.TextColor3=Color3.new(0,0,0)G.Selected=true G.ZIndex=3 end function -setUnselected(G)assert(G)assert(G:IsA'TextButton')G.BackgroundColor3=Color3.new( -0,0,0)G.TextColor3=Color3.new(1,1,1)G.Selected=false G.ZIndex=1 end function -updateTabGui(G)assert(G)if G=='gear'then setSelected(e)setUnselected( -wardrobeButton)elseif G=='wardrobe'then setSelected(wardrobeButton) -setUnselected(e)end end function mouseLeaveTab(G)assert(G)assert(G:IsA -'TextButton')if G.Selected then return end G.BackgroundColor3=Color3.new(0,0,0) -end function mouseOverTab(G)assert(G)assert(G:IsA'TextButton')if G.Selected then -return end G.BackgroundColor3=Color3.new(0.15294117647058825,0.15294117647058825 -,0.15294117647058825)end function newTabClicked(G)assert(G)G=string.lower(G)g=G -updateTabGui(G)D:Fire(G)resetSearch()end function trim(G)return(G:gsub( -'^%s*(.-)%s*$','%1'))end function splitByWhitespace(G)if type(G)~='string'then -return nil end local H={}for I in string.gmatch(G,'[^%s]+')do if string.len(I)>0 -then table.insert(H,I)end end return H end function resetSearchBoxGui()k.Visible -=false i.Text=w end function doSearch()local G=i.Text if G==''then resetSearch() -return end G=trim(G)k.Visible=true termTable=splitByWhitespace(G)E:Fire(G)end -function resetSearch()resetSearchBoxGui()E:Fire()end local G=function()p=true -end function coreGuiChanged(H,I)if H==Enum.CoreGuiType.Backpack or H==Enum. -CoreGuiType.All then r=I s=not I if s then pcall(function()game:GetService -'GuiService':RemoveKey(x)game:GetService'GuiService':RemoveKey(y)end)else game: -GetService'GuiService':AddKey(x)game:GetService'GuiService':AddKey(y)end -resetSearch()h.Visible=I and q m.Visible=I b.Visible=I f.Visible=I end end -createPublicFunction('CloseBackpack',F)createPublicFunction('BackpackReady',G) +setSelected(F)assert(F)assert(F:IsA'TextButton')F.BackgroundColor3=Color3.new(1, +1,1)F.TextColor3=Color3.new(0,0,0)F.Selected=true F.ZIndex=3 end function +setUnselected(F)assert(F)assert(F:IsA'TextButton')F.BackgroundColor3=Color3.new( +0,0,0)F.TextColor3=Color3.new(1,1,1)F.Selected=false F.ZIndex=1 end function +updateTabGui(F)assert(F)if F=='gear'then setSelected(d)setUnselected(e)elseif F +=='wardrobe'then setSelected(e)setUnselected(d)end end function mouseLeaveTab(F) +assert(F)assert(F:IsA'TextButton')if F.Selected then return end F. +BackgroundColor3=Color3.new(0,0,0)end function mouseOverTab(F)assert(F)assert(F: +IsA'TextButton')if F.Selected then return end F.BackgroundColor3=Color3.new( +0.15294117647058825,0.15294117647058825,0.15294117647058825)end function +newTabClicked(F)assert(F)F=string.lower(F)g=F updateTabGui(F)C:Fire(F) +resetSearch()end function trim(F)return(F:gsub('^%s*(.-)%s*$','%1'))end function +splitByWhitespace(F)if type(F)~='string'then return nil end local G={}for H in +string.gmatch(F,'[^%s]+')do if string.len(H)>0 then table.insert(G,H)end end +return G end function resetSearchBoxGui()k.Visible=false i.Text=v end function +doSearch()local F=i.Text if F==''then resetSearch()return end F=trim(F)k.Visible +=true termTable=splitByWhitespace(F)D:Fire(F)end function resetSearch() +resetSearchBoxGui()D:Fire()end local F=function()p=true end function +coreGuiChanged(G,H)if G==Enum.CoreGuiType.Backpack or G==Enum.CoreGuiType.All +then r=H s=not H if s then pcall(function()game:GetService'GuiService': +RemoveKey(w)game:GetService'GuiService':RemoveKey(x)end)else game:GetService +'GuiService':AddKey(w)game:GetService'GuiService':AddKey(x)end resetSearch()h. +Visible=H and q m.Visible=H a.Visible=H f.Visible=H end end +createPublicFunction('CloseBackpack',E)createPublicFunction('BackpackReady',F) pcall(function()coreGuiChanged(Enum.CoreGuiType.Backpack,Game.StarterGui: GetCoreGuiEnabled(Enum.CoreGuiType.Backpack))Game.StarterGui. -CoreGuiChangedSignal:connect(coreGuiChanged)end)e.MouseButton1Click:connect( -function()newTabClicked'gear'end)e.MouseEnter:connect(function()mouseOverTab(e) -end)e.MouseLeave:connect(function()mouseLeaveTab(e)end)if game.CoreGui.Version>= -8 then wardrobeButton.MouseButton1Click:connect(function()newTabClicked -'wardrobe'end)wardrobeButton.MouseEnter:connect(function()mouseOverTab( -wardrobeButton)end)wardrobeButton.MouseLeave:connect(function()mouseLeaveTab( -wardrobeButton)end)end d.MouseButton1Click:connect(closeBackpack)c.Changed: -connect(function(H)if H=='AbsoluteSize'then A:Fire(c.AbsoluteSize)end end)game: -GetService'GuiService':AddKey(x)game:GetService'GuiService':AddKey(y)game: -GetService'GuiService'.KeyPressed:connect(function(H)if not r or s then return -end if H==x or H==y then toggleBackpack()end end)f.MouseButton1Click:connect( +CoreGuiChangedSignal:connect(coreGuiChanged)end)d.MouseButton1Click:connect( +function()newTabClicked'gear'end)d.MouseEnter:connect(function()mouseOverTab(d) +end)d.MouseLeave:connect(function()mouseLeaveTab(d)end)if game.CoreGui.Version>= +8 then e.MouseButton1Click:connect(function()newTabClicked'wardrobe'end)e. +MouseEnter:connect(function()mouseOverTab(e)end)e.MouseLeave:connect(function() +mouseLeaveTab(e)end)end c.MouseButton1Click:connect(closeBackpack)b.Changed: +connect(function(G)if G=='AbsoluteSize'then z:Fire(b.AbsoluteSize)end end)game: +GetService'GuiService':AddKey(w)game:GetService'GuiService':AddKey(x)game: +GetService'GuiService'.KeyPressed:connect(function(G)if not r or s then return +end if G==w or G==x then toggleBackpack()end end)f.MouseButton1Click:connect( function()if not r or s then return end toggleBackpack()end)if game.Players. LocalPlayer['Character']then activateBackpack()end game.Players.LocalPlayer. -CharacterAdded:connect(activateBackpack)i.FocusLost:connect(function(H)if H or i +CharacterAdded:connect(activateBackpack)i.FocusLost:connect(function(G)if G or i .Text~=''then doSearch()elseif i.Text==''then resetSearch()end end)j. MouseButton1Click:connect(doSearch)k.MouseButton1Click:connect(resetSearch)if h and l.AbsoluteSize.Y<=320 then h.RobloxLocked=false h:Destroy()end \ No newline at end of file diff --git a/processed/97188756.lua b/processed/97188756.lua index 1aad3c0..79333b1 100644 --- a/processed/97188756.lua +++ b/processed/97188756.lua @@ -5,33 +5,33 @@ local function IsPhone()local b=Game:GetService'CoreGui'local c=WaitForChild(b, local function StringTrim(b)return(b:gsub('^%s*(.-)%s*$','%1'))end while Game. Players.LocalPlayer==nil do wait(0.03)end local b=Game.Players.LocalPlayer while b.Character==nil do wait(0.03)end local c=LoadLibrary'RbxUtility'local d,e,f,g,h -,i,j=typedef(c),Game.Workspace.CurrentCamera,Game:GetService'CoreGui',Game: -GetService'Players',Game:GetService'Debris',Game:GetService'GuiService',nil do j -={}local k={}local l,m={__call=function(l,m)return l[m]or l[tonumber(m)]end, -__index={GetEnumItems=function(l)local m={}for n,o in pairs(l)do if type(n)== -'number'then m[#m+1]=o end end table.sort(m,function(p,q)return p.Value=2 then p=-p end n=n+p end return n%8 end function l: -ComputeChatColor(m)return self.ChatColors[GetNameValue(m)+1].Color end function -l:EnableScrolling(m)self.MouseOnFrame=false if self.RenderFrame then self. -RenderFrame.MouseEnter:connect(function()local n=b.Character local o,p,q= -WaitForChild(n,'Torso'),WaitForChild(n,'Humanoid'),WaitForChild(n,'Head')if m -then self.MouseOnFrame=true e.CameraType='Scriptable'Spawn(function()local r=e. -CoordinateFrame.p-o.Position while l.MouseOnFrame do e.CoordinateFrame=CFrame. -new(o.Position+r,q.Position)wait(0.015)end end)end end)self.RenderFrame. -MouseLeave:connect(function()e.CameraType='Custom'self.MouseOnFrame=false end) -end end function l:IsTouchDevice()local m=false pcall(function()m=Game: -GetService'UserInputService'.TouchEnabled end)return m end function l: -UpdateQueue(m,n)for o=#self.MessageQueue,1,-1 do if self.MessageQueue[o]then for -p,q in pairs(self.MessageQueue[o])do if q and type(q)~='table'and type(q)~= -'number'then if q:IsA'TextLabel'or q:IsA'TextButton'then if n then q.Position=q. -Position-UDim2.new(0,0,n,0)else if m==self.MessageQueue[o]then q.Position=UDim2. -new(self.Configuration.XScale,0,q.Position.Y.Scale-m['Message'].Size.Y.Scale,0) -Spawn(function()wait(0.05)while q.TextTransparency>=0 do q.TextTransparency=q. -TextTransparency-0.2 wait(0.03)end if q==m['Message']then q. -TextStrokeTransparency=0.8 else q.TextStrokeTransparency=1 end end)else q. -Position=UDim2.new(self.Configuration.XScale,0,q.Position.Y.Scale-m['Message']. -Size.Y.Scale,0)end if q.Position.Y.Scale<-1E-2 then q.Visible=false q:Destroy() -end end end end end end end end function l:CreateScrollBar()end function l: -CheckIfInBounds(m)if#l.MessageQueue<3 then return true end if m>0 and l. -MessageQueue[1]and l.MessageQueue[1]['Player']and l.MessageQueue[1]['Player']. -Position.Y.Scale==0 then return true elseif m<0 and l.MessageQueue[1]and l. -MessageQueue[1]['Player']and l.MessageQueue[1]['Player'].Position.Y.Scale<0 then -return true else return false end return false end function l:ComputeSpaceString -(m)local n=' 'if not self.TempSpaceLabel then self.TempSpaceLabel=d.Create -'TextButton'{Size=UDim2.new(0,m.AbsoluteSize.X,0,m.AbsoluteSize.Y),FontSize=self -.Configuration.FontSize,Parent=self.RenderFrame,BackgroundTransparency=1,Text=n, -Name='SpaceButton'}else self.TempSpaceLabel.Text=n end while self.TempSpaceLabel -.TextBounds.Xself.Configuration.HistoryLength then self. -MessageQueue[#self.MessageQueue]=nil end p=d.Create'TextLabel'{Name=o,Text=o.. -':',TextColor3=pColor,FontSize=l.Configuration.FontSize,TextXAlignment=Enum. -TextXAlignment.Left,TextYAlignment=Enum.TextYAlignment.Top,Parent=self. -RenderFrame,TextWrapped=false,Size=UDim2.new(1,0,0.1,0),BackgroundTransparency=1 -,TextTransparency=1,Position=UDim2.new(0,0,1,0),BorderSizePixel=0, -TextStrokeColor3=Color3.new(0.5,0.5,0.5),TextStrokeTransparency=0.75}local r if -m.Neutral then p.TextColor3=l:ComputeChatColor(o)else p.TextColor3=m.TeamColor. -Color end local s if not self.CachedSpaceStrings_List[o]then s=l: -ComputeSpaceString(p)else s=self.CachedSpaceStrings_List[o]end q=d.Create -'TextLabel'{Name=o..' - message',Size=UDim2.new(1,0,0.5,0),TextColor3=l. -Configuration.MessageColor,FontSize=l.Configuration.FontSize,TextXAlignment=Enum -.TextXAlignment.Left,TextYAlignment=Enum.TextYAlignment.Top,Text='',Parent=self. -RenderFrame,TextWrapped=true,BackgroundTransparency=1,TextTransparency=1, -Position=UDim2.new(0,0,1,0),BorderSizePixel=0,TextStrokeColor3=Color3.new(0,0,0) -}q.Text=s..n if not o then p.Text=''q.TextColor3=Color3.new(0,0.4,1)end for t,u -in pairs(self.Admins_List)do if string.lower(u)==string.lower(o)then q. -TextColor3=self.Configuration.AdminMessageColor end end p.Visible=true q.Visible -=true local v=q.TextBounds.Y q.Size=UDim2.new(1,0,v/self.RenderFrame. -AbsoluteSize.Y,0)p.Size=q.Size local w,x,y=self.RenderFrame.AbsoluteSize.Y,q. -TextBounds.Y,{}y['Player']=p y['Message']=q y['SpawnTime']=tick()table.insert( -self.MessageQueue,1,y)l:UpdateQueue(y)end function l:ScreenSizeChanged()wait() -while self.Frame.AbsoluteSize.Y>120 do self.Frame.Size=self.Frame.Size-UDim2. -new(0,0,0.005,0)end l:RecalculateSpacing()end function l:FindButtonTree(m,n) -local o={}n=n or self.SafeChatTree for p,q in pairs(n)do if p==m then o=n[p] -elseif type(n[p])=='table'then o=l:FindButtonTree(m,n[p])end end return o end -function l:ToggleSafeChatMenu(m)local n=l:FindButtonTree(m,self.SafeChatTree)if -n then for o,p in pairs(n)do if o:IsA'TextButton'or o:IsA'ImageButton'then o. -Visible=not o.Visible end end return true end return false end function l: -CreateSafeChatOptions(m,n)local o={}level=level or 0 local p=0 o[n]={}o[n][1]=m[ -1]n=n or self.SafeChatButton for q,r in pairs(m)do if type(q)=='string'then -local s=d.Create'TextButton'{Name=q,Text=q,Size=UDim2.new(0,100,0,20), +'Level3'},SafeChatTree={},TempSpaceLabel=nil}local function GetNameValue(l)local +m=0 for n=1,#l do local o,p=string.byte(string.sub(l,n,n)),#l-n+1 if#l%2==1 then +p=p-1 end if p%4>=2 then o=-o end m=m+o end return m%8 end function k: +ComputeChatColor(l)return self.ChatColors[GetNameValue(l)+1].Color end function +k:EnableScrolling(l)self.MouseOnFrame=false if self.RenderFrame then self. +RenderFrame.MouseEnter:connect(function()local m=b.Character local n,o= +WaitForChild(m,'Torso'),WaitForChild(m,'Head')if l then self.MouseOnFrame=true e +.CameraType='Scriptable'Spawn(function()local p=e.CoordinateFrame.p-n.Position +while k.MouseOnFrame do e.CoordinateFrame=CFrame.new(n.Position+p,o.Position) +wait(0.015)end end)end end)self.RenderFrame.MouseLeave:connect(function()e. +CameraType='Custom'self.MouseOnFrame=false end)end end function k:IsTouchDevice( +)local l=false pcall(function()l=Game:GetService'UserInputService'.TouchEnabled +end)return l end function k:UpdateQueue(l,m)for n=#self.MessageQueue,1,-1 do if +self.MessageQueue[n]then for o,p in pairs(self.MessageQueue[n])do if p and type( +p)~='table'and type(p)~='number'then if p:IsA'TextLabel'or p:IsA'TextButton'then +if m then p.Position=p.Position-UDim2.new(0,0,m,0)else if l==self.MessageQueue[n +]then p.Position=UDim2.new(self.Configuration.XScale,0,p.Position.Y.Scale-l[ +'Message'].Size.Y.Scale,0)Spawn(function()wait(0.05)while p.TextTransparency>=0 +do p.TextTransparency=p.TextTransparency-0.2 wait(0.03)end if p==l['Message'] +then p.TextStrokeTransparency=0.8 else p.TextStrokeTransparency=1 end end)else p +.Position=UDim2.new(self.Configuration.XScale,0,p.Position.Y.Scale-l['Message']. +Size.Y.Scale,0)end if p.Position.Y.Scale<-1E-2 then p.Visible=false p:Destroy() +end end end end end end end end function k:CreateScrollBar()end function k: +CheckIfInBounds(l)if#k.MessageQueue<3 then return true end if l>0 and k. +MessageQueue[1]and k.MessageQueue[1]['Player']and k.MessageQueue[1]['Player']. +Position.Y.Scale==0 then return true elseif l<0 and k.MessageQueue[1]and k. +MessageQueue[1]['Player']and k.MessageQueue[1]['Player'].Position.Y.Scale<0 then +return true else return false end return false end function k:ComputeSpaceString +(l)local m=' 'if not self.TempSpaceLabel then self.TempSpaceLabel=d.Create +'TextButton'{Size=UDim2.new(0,l.AbsoluteSize.X,0,l.AbsoluteSize.Y),FontSize=self +.Configuration.FontSize,Parent=self.RenderFrame,BackgroundTransparency=1,Text=m, +Name='SpaceButton'}else self.TempSpaceLabel.Text=m end while self.TempSpaceLabel +.TextBounds.Xself. +Configuration.HistoryLength then self.MessageQueue[#self.MessageQueue]=nil end o +=d.Create'TextLabel'{Name=n,Text=n..':',FontSize=k.Configuration.FontSize, +TextXAlignment=Enum.TextXAlignment.Left,TextYAlignment=Enum.TextYAlignment.Top, +Parent=self.RenderFrame,TextWrapped=false,Size=UDim2.new(1,0,0.1,0), +BackgroundTransparency=1,TextTransparency=1,Position=UDim2.new(0,0,1,0), +BorderSizePixel=0,TextStrokeColor3=Color3.new(0.5,0.5,0.5), +TextStrokeTransparency=0.75}if l.Neutral then o.TextColor3=k:ComputeChatColor(n) +else o.TextColor3=l.TeamColor.Color end local q if not self. +CachedSpaceStrings_List[n]then q=k:ComputeSpaceString(o)else q=self. +CachedSpaceStrings_List[n]end p=d.Create'TextLabel'{Name=n..' - message',Size= +UDim2.new(1,0,0.5,0),TextColor3=k.Configuration.MessageColor,FontSize=k. +Configuration.FontSize,TextXAlignment=Enum.TextXAlignment.Left,TextYAlignment= +Enum.TextYAlignment.Top,Text='',Parent=self.RenderFrame,TextWrapped=true, +BackgroundTransparency=1,TextTransparency=1,Position=UDim2.new(0,0,1,0), +BorderSizePixel=0,TextStrokeColor3=Color3.new(0,0,0)}p.Text=q..m if not n then o +.Text=''p.TextColor3=Color3.new(0,0.4,1)end for r,s in pairs(self.Admins_List)do +if string.lower(s)==string.lower(n)then p.TextColor3=self.Configuration. +AdminMessageColor end end o.Visible=true p.Visible=true local t=p.TextBounds.Y p +.Size=UDim2.new(1,0,t/self.RenderFrame.AbsoluteSize.Y,0)o.Size=p.Size local u={} +u['Player']=o u['Message']=p u['SpawnTime']=tick()table.insert(self.MessageQueue +,1,u)k:UpdateQueue(u)end function k:ScreenSizeChanged()wait()while self.Frame. +AbsoluteSize.Y>120 do self.Frame.Size=self.Frame.Size-UDim2.new(0,0,0.005,0)end +k:RecalculateSpacing()end function k:FindButtonTree(l,m)local n={}m=m or self. +SafeChatTree for o,p in pairs(m)do if o==l then n=m[o]elseif type(m[o])=='table' +then n=k:FindButtonTree(l,m[o])end end return n end function k: +ToggleSafeChatMenu(l)local m=k:FindButtonTree(l,self.SafeChatTree)if m then for +n,o in pairs(m)do if n:IsA'TextButton'or n:IsA'ImageButton'then n.Visible=not n. +Visible end end return true end return false end function k: +CreateSafeChatOptions(l,m)local n={}level=level or 0 local o=0 n[m]={}n[m][1]=l[ +1]m=m or self.SafeChatButton for p,q in pairs(l)do if type(p)=='string'then +local r=d.Create'TextButton'{Name=p,Text=p,Size=UDim2.new(0,100,0,20), TextXAlignment=Enum.TextXAlignment.Center,TextColor3=Color3.new(0.2,0.1,0.1), BackgroundTransparency=0.5,BackgroundColor3=Color3.new(1,1,1),Parent=self. -SafeChatFrame,Visible=false,Position=UDim2.new(0,n.Position.X.Scale+105,0,n. -Position.Y.Scale-((p-3)*100))}p=p+1 if type(m[q])=='table'then o[n][s]=l: -CreateSafeChatOptions(m[q],s)else end s.MouseEnter:connect(function()l: -ToggleSafeChatMenu(s)end)s.MouseLeave:connect(function()l:ToggleSafeChatMenu(s) -end)s.MouseButton1Click:connect(function()local t=l:FindButtonTree(s)if t then -for u,v in pairs(t)do end else end pcall(function()g:Chat(t[1])end)end)end end -return o end function l:CreateSafeChatGui()self.SafeChatFrame=d.Create'Frame'{ -Name='SafeChatFrame',Size=UDim2.new(1,0,1,0),Parent=self.Gui, -BackgroundTransparency=1,d.Create'ImageButton'{Name='SafeChatButton',Size=UDim2. -new(0,44,0,31),Position=UDim2.new(0,1,0.35,0),BackgroundTransparency=1,Image= -'http://www.roblox.com/asset/?id=97080365'}}self.SafeChatButton=self. -SafeChatFrame.SafeChatButton self.SafeChatTree[self.SafeChatButton]=l: -CreateSafeChatOptions(self.SafeChat_List,self.SafeChatButton)self.SafeChatButton -.MouseButton1Click:connect(function()l:ToggleSafeChatMenu(self.SafeChatButton) -end)end function l:FocusOnChatBar()if self.ClickToChatButton then self. -ClickToChatButton.Visible=false end self.GotFocus=true if self.Frame[ +SafeChatFrame,Visible=false,Position=UDim2.new(0,m.Position.X.Scale+105,0,m. +Position.Y.Scale-((o-3)*100))}o=o+1 if type(l[p])=='table'then n[m][r]=k: +CreateSafeChatOptions(l[p],r)end r.MouseEnter:connect(function()k: +ToggleSafeChatMenu(r)end)r.MouseLeave:connect(function()k:ToggleSafeChatMenu(r) +end)r.MouseButton1Click:connect(function()local s=k:FindButtonTree(r)pcall( +function()g:Chat(s[1])end)end)end end return n end function k:CreateSafeChatGui( +)self.SafeChatFrame=d.Create'Frame'{Name='SafeChatFrame',Size=UDim2.new(1,0,1,0) +,Parent=self.Gui,BackgroundTransparency=1,d.Create'ImageButton'{Name= +'SafeChatButton',Size=UDim2.new(0,44,0,31),Position=UDim2.new(0,1,0.35,0), +BackgroundTransparency=1,Image='http://www.roblox.com/asset/?id=97080365'}}self. +SafeChatButton=self.SafeChatFrame.SafeChatButton self.SafeChatTree[self. +SafeChatButton]=k:CreateSafeChatOptions(self.SafeChat_List,self.SafeChatButton) +self.SafeChatButton.MouseButton1Click:connect(function()k:ToggleSafeChatMenu( +self.SafeChatButton)end)end function k:FocusOnChatBar()if self.ClickToChatButton +then self.ClickToChatButton.Visible=false end self.GotFocus=true if self.Frame[ 'Background']then self.Frame.Background.Visible=false end self.ChatBar: -CaptureFocus()end function l:CreateTouchButton()self.ChatTouchFrame=d.Create +CaptureFocus()end function k:CreateTouchButton()self.ChatTouchFrame=d.Create 'Frame'{Name='ChatTouchFrame',Size=UDim2.new(0,128,0,32),Position=UDim2.new(0,88 ,0,0),BackgroundTransparency=1,Parent=self.Gui,d.Create'ImageButton'{Name= 'ChatLabel',Size=UDim2.new(0,74,0,28),Position=UDim2.new(0,0,0,0), @@ -303,8 +300,8 @@ Parent=self.Frame,TextXAlignment=Enum.TextXAlignment.Left,TextColor3=Color3.new( 1,1,1),ClearTextOnFocus=false}self.TapToChatLabel.MouseButton1Click:connect( function()self.TapToChatLabel.Visible=false self.ChatBar:CaptureFocus()self. GotFocus=true if self.TouchLabelBackground then self.TouchLabelBackground. -Visible=false end end)end function l:CreateChatBar()local m,n=pcall(function() -return i.UseLuaChat end)if a or(m and n)then self.ClickToChatButton=d.Create +Visible=false end end)end function k:CreateChatBar()local l,m=pcall(function() +return h.UseLuaChat end)if a or(l and m)then self.ClickToChatButton=d.Create 'TextButton'{Name='ClickToChat',Size=UDim2.new(1,0,0,20),BackgroundTransparency= 1,ZIndex=2,Parent=self.Gui,Text='To chat click here or press "/" key',TextColor3 =Color3.new(1,1,0.9),Position=UDim2.new(0,0,1,0),TextXAlignment=Enum. @@ -312,71 +309,69 @@ TextXAlignment.Left,FontSize=Enum.FontSize.Size12}self.ChatBar=d.Create'TextBox' {Name='ChatBar',Size=UDim2.new(1,0,0,20),Position=UDim2.new(0,0,1,0),Text='', ZIndex=1,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.25,Parent= self.Gui,TextXAlignment=Enum.TextXAlignment.Left,TextColor3=Color3.new(1,1,1), -FontSize=Enum.FontSize.Size12,ClearTextOnFocus=false,Text=''}local o,p=pcall( -function()i:SetGlobalGuiInset(0,0,0,20)end)if not o then i: -SetGlobalSizeOffsetPixel(0,-20)end i:AddSpecialKey(Enum.SpecialKey.ChatHotkey)i. -SpecialKeyPressed:connect(function(q)if q==Enum.SpecialKey.ChatHotkey then l: -FocusOnChatBar()end end)self.ClickToChatButton.MouseButton1Click:connect( -function()l:FocusOnChatBar()end)end end function l:CreateGui()self.Gui= -WaitForChild(f,'RobloxGui')self.Frame=d.Create'Frame'{Name='ChatFrame',Size= -UDim2.new(0,500,0,120),Position=UDim2.new(0,0,0,5),BackgroundTransparency=1, -ZIndex=0,Parent=self.Gui,Active=false,d.Create'ImageLabel'{Name='Background', -Image='http://www.roblox.com/asset/?id=97120937',Size=UDim2.new(1.3,0,1.64,0), -Position=UDim2.new(0,0,0,0),BackgroundTransparency=1,ZIndex=0,Visible=false},d. -Create'Frame'{Name='Border',Size=UDim2.new(1,0,0,1),Position=UDim2.new(0,0,0.8,0 -),BackgroundTransparency=0,BackgroundColor3=Color3.new(0.9254901960784314, -0.9254901960784314,0.9254901960784314),BorderSizePixel=0,Visible=false},d.Create -'Frame'{Name='ChatRenderFrame',Size=UDim2.new(1.02,0,1.01,0),Position=UDim2.new( -0,0,0,0),BackgroundTransparency=1,ZIndex=0,Active=false}}Spawn(function()wait( -0.5)if IsPhone()then self.Frame.Size=UDim2.new(0,280,0,120)end end)self. -RenderFrame=self.Frame.ChatRenderFrame if l:IsTouchDevice()then self.Frame. -Position=self.Configuration.Position self.RenderFrame.Size=UDim2.new(1,0,1,0) -elseif self.Frame.AbsoluteSize.Y>120 then l:ScreenSizeChanged()self.Gui.Changed: -connect(function(m)if m=='AbsoluteSize'then l:ScreenSizeChanged()end end)end if -a or b.ChatMode==Enum.ChatMode.TextAndMenu then if l:IsTouchDevice()then l: -CreateTouchButton()else l:CreateChatBar()end if self.ChatBar then self.ChatBar. -FocusLost:connect(function(m)l.GotFocus=false if l:IsTouchDevice()then self. +FontSize=Enum.FontSize.Size12,ClearTextOnFocus=false}local n,o=pcall(function()h +:SetGlobalGuiInset(0,0,0,20)end)if not n then h:SetGlobalSizeOffsetPixel(0,-20) +end h:AddSpecialKey(Enum.SpecialKey.ChatHotkey)h.SpecialKeyPressed:connect( +function(p)if p==Enum.SpecialKey.ChatHotkey then k:FocusOnChatBar()end end)self. +ClickToChatButton.MouseButton1Click:connect(function()k:FocusOnChatBar()end)end +end function k:CreateGui()self.Gui=WaitForChild(f,'RobloxGui')self.Frame=d. +Create'Frame'{Name='ChatFrame',Size=UDim2.new(0,500,0,120),Position=UDim2.new(0, +0,0,5),BackgroundTransparency=1,ZIndex=0,Parent=self.Gui,Active=false,d.Create +'ImageLabel'{Name='Background',Image='http://www.roblox.com/asset/?id=97120937', +Size=UDim2.new(1.3,0,1.64,0),Position=UDim2.new(0,0,0,0),BackgroundTransparency= +1,ZIndex=0,Visible=false},d.Create'Frame'{Name='Border',Size=UDim2.new(1,0,0,1), +Position=UDim2.new(0,0,0.8,0),BackgroundTransparency=0,BackgroundColor3=Color3. +new(0.9254901960784314,0.9254901960784314,0.9254901960784314),BorderSizePixel=0, +Visible=false},d.Create'Frame'{Name='ChatRenderFrame',Size=UDim2.new(1.02,0,1.01 +,0),Position=UDim2.new(0,0,0,0),BackgroundTransparency=1,ZIndex=0,Active=false}} +Spawn(function()wait(0.5)if IsPhone()then self.Frame.Size=UDim2.new(0,280,0,120) +end end)self.RenderFrame=self.Frame.ChatRenderFrame if k:IsTouchDevice()then +self.Frame.Position=self.Configuration.Position self.RenderFrame.Size=UDim2.new( +1,0,1,0)elseif self.Frame.AbsoluteSize.Y>120 then k:ScreenSizeChanged()self.Gui. +Changed:connect(function(l)if l=='AbsoluteSize'then k:ScreenSizeChanged()end end +)end if a or b.ChatMode==Enum.ChatMode.TextAndMenu then if k:IsTouchDevice()then +k:CreateTouchButton()else k:CreateChatBar()end if self.ChatBar then self.ChatBar +.FocusLost:connect(function(l)k.GotFocus=false if k:IsTouchDevice()then self. ChatBar.Visible=false self.TapToChatLabel.Visible=true if self. -TouchLabelBackground then self.TouchLabelBackground.Visible=true end end if m -and self.ChatBar.Text~=''then local n=self.ChatBar.Text if string.sub(self. -ChatBar.Text,1,1)=='%'then n='(TEAM) '..string.sub(n,2,#n)pcall(function()g: -TeamChat(n)end)else pcall(function()g:Chat(n)end)end if self.ClickToChatButton +TouchLabelBackground then self.TouchLabelBackground.Visible=true end end if l +and self.ChatBar.Text~=''then local m=self.ChatBar.Text if string.sub(self. +ChatBar.Text,1,1)=='%'then m='(TEAM) '..string.sub(m,2,#m)pcall(function()g: +TeamChat(m)end)else pcall(function()g:Chat(m)end)end if self.ClickToChatButton then self.ClickToChatButton.Visible=true end self.ChatBar.Text=''end Spawn( -function()wait(5)if not l.GotFocus then l.Frame.Background.Visible=false end end -)end)end end end function k:OnMouseScroll()Spawn(function()while k.Speed~=0 do -if k.Speed>1 then while k.Speed>0 do k.Speed=k.Speed-1 wait(0.25)end elseif k. -Speed<0 then while k.Speed<0 do k.Speed=k.Speed+1 wait(0.25)end end wait(0.03) -end end)if l:CheckIfInBounds(k.Speed)then return end l:ScrollQueue()end function -k:ApplySpeed(m)k.Speed=k.Speed+m if not self.Simulating then k:OnMouseScroll() -end end function k:Initialize()self.Mouse.WheelBackward:connect(function()k: +function()wait(5)if not k.GotFocus then k.Frame.Background.Visible=false end end +)end)end end end function j:OnMouseScroll()Spawn(function()while j.Speed~=0 do +if j.Speed>1 then while j.Speed>0 do j.Speed=j.Speed-1 wait(0.25)end elseif j. +Speed<0 then while j.Speed<0 do j.Speed=j.Speed+1 wait(0.25)end end wait(0.03) +end end)if k:CheckIfInBounds(j.Speed)then return end k:ScrollQueue()end function +j:ApplySpeed(l)j.Speed=j.Speed+l if not self.Simulating then j:OnMouseScroll() +end end function j:Initialize()self.Mouse.WheelBackward:connect(function()j: ApplySpeed(self.Configuration.DefaultSpeed)end)self.Mouse.WheelForward:connect( -function()k:ApplySpeed(self.Configuration.DefaultSpeed)end)end function l: -FindMessageInSafeChat(m,n)local o=false for p,q in pairs(n)do if p==m then -return true end if type(n[p])=='table'then o=l:FindMessageInSafeChat(m,n[p])if o -then return true end end end return o end function l:PlayerChatted(...)local m,n -,o,p={...},select('#',...),nil,nil if m[2]then o=m[2]end if m[3]then p=m[3]if -string.sub(p,1,1)=='%'then p='(TEAM) '..string.sub(p,2,#p)end end if g. -ClassicChat then if string.sub(p,1,3)=='/e 'or string.sub(p,1,7)=='/emote 'then -elseif a or b.ChatMode==Enum.ChatMode.TextAndMenu then l:UpdateChat(o,p)elseif b -.ChatMode==Enum.ChatMode.Menu and string.sub(p,1,3)=='/sc'then l:UpdateChat(o,p) -else if l:FindMessageInSafeChat(p,self.SafeChat_List)then l:UpdateChat(o,p)end -end end end function l:CullThread()while true do if#self.MessageQueue>0 then for -m,n in pairs(self.MessageQueue)do if n['SpawnTime']and n['Player']and n[ -'Message']and tick()-n['SpawnTime']>self.Configuration.LifeTime then n['Player'] -.Visible=false n['Message'].Visible=false end end end wait(5)end end function l: -LockAllFields(m)local n=m:GetChildren()for o=1,#n do n[o].RobloxLocked=true if#n -[o]:GetChildren()>0 then l:LockAllFields(n[o])end end end function l: -CoreGuiChanged(m,n)if m==Enum.CoreGuiType.Chat or m==Enum.CoreGuiType.All then -if self.Frame then self.Frame.Visible=n end if not l:IsTouchDevice()and self. -ChatBar then self.ChatBar.Visible=n if n then i:SetGlobalGuiInset(0,0,0,20)else -i:SetGlobalGuiInset(0,0,0,0)end end end end function l:Initialize()l:CreateGui() -pcall(function()l:CoreGuiChanged(Enum.CoreGuiType.Chat,Game.StarterGui: +function()j:ApplySpeed(self.Configuration.DefaultSpeed)end)end function k: +FindMessageInSafeChat(l,m)local n=false for o,p in pairs(m)do if o==l then +return true end if type(m[o])=='table'then n=k:FindMessageInSafeChat(l,m[o])if n +then return true end end end return n end function k:PlayerChatted(...)local l,m +,n={...},nil,nil if l[2]then m=l[2]end if l[3]then n=l[3]if string.sub(n,1,1)== +'%'then n='(TEAM) '..string.sub(n,2,#n)end end if g.ClassicChat then if string. +sub(n,1,3)=='/e 'or string.sub(n,1,7)=='/emote 'then elseif(a or b.ChatMode== +Enum.ChatMode.TextAndMenu)or(b.ChatMode==Enum.ChatMode.Menu and string.sub(n,1,3 +)=='/sc')or(k:FindMessageInSafeChat(n,self.SafeChat_List))then k:UpdateChat(m,n) +end end end function k:CullThread()while true do if#self.MessageQueue>0 then for +l,m in pairs(self.MessageQueue)do if m['SpawnTime']and m['Player']and m[ +'Message']and tick()-m['SpawnTime']>self.Configuration.LifeTime then m['Player'] +.Visible=false m['Message'].Visible=false end end end wait(5)end end function k: +LockAllFields(l)local m=l:GetChildren()for n=1,#m do m[n].RobloxLocked=true if#m +[n]:GetChildren()>0 then k:LockAllFields(m[n])end end end function k: +CoreGuiChanged(l,m)if l==Enum.CoreGuiType.Chat or l==Enum.CoreGuiType.All then +if self.Frame then self.Frame.Visible=m end if not k:IsTouchDevice()and self. +ChatBar then self.ChatBar.Visible=m if m then h:SetGlobalGuiInset(0,0,0,20)else +h:SetGlobalGuiInset(0,0,0,0)end end end end function k:Initialize()k:CreateGui() +pcall(function()k:CoreGuiChanged(Enum.CoreGuiType.Chat,Game.StarterGui: GetCoreGuiEnabled(Enum.CoreGuiType.Chat))Game.StarterGui.CoreGuiChangedSignal: -connect(function(m,n)l:CoreGuiChanged(m,n)end)end)self.EventListener=g. -PlayerChatted:connect(function(...)l:PlayerChatted(...)end)self.MessageThread= -coroutine.create(function()end)coroutine.resume(self.MessageThread)k:Initialize( -)g.ChildAdded:connect(function()l.EventListener:disconnect()self.EventListener=g -.PlayerChatted:connect(function(...)l:PlayerChatted(...)end)end)Spawn(function() -l:CullThread()end)self.Frame.RobloxLocked=true l:LockAllFields(self.Frame)self. -Frame.DescendantAdded:connect(function(m)l:LockAllFields(m)end)end l:Initialize( +connect(function(l,m)k:CoreGuiChanged(l,m)end)end)self.EventListener=g. +PlayerChatted:connect(function(...)k:PlayerChatted(...)end)self.MessageThread= +coroutine.create(function()end)coroutine.resume(self.MessageThread)j:Initialize( +)g.ChildAdded:connect(function()k.EventListener:disconnect()self.EventListener=g +.PlayerChatted:connect(function(...)k:PlayerChatted(...)end)end)Spawn(function() +k:CullThread()end)self.Frame.RobloxLocked=true k:LockAllFields(self.Frame)self. +Frame.DescendantAdded:connect(function(l)k:LockAllFields(l)end)end k:Initialize( ) \ No newline at end of file