Further clean up corescripts

This commit is contained in:
Lewin Kelly 2023-04-08 22:01:38 +01:00
parent f1d815c35b
commit 3cc782a49c
28 changed files with 1964 additions and 2016 deletions

View File

@ -29,7 +29,7 @@ local enableBrowserWindowClosedEvent = true
-- gui variables -- gui variables
local openBuyCurrencyWindowConnection = nil local openBuyCurrencyWindowConnection = nil
local currentlyPrompting = false local currentlyPrompting = false
local purchaseDialog, errorDialog = nil local purchaseDialog = nil
local tweenTime = 0.3 local tweenTime = 0.3
local showPosition = UDim2.new(0.5, -330, 0.5, -200) local showPosition = UDim2.new(0.5, -330, 0.5, -200)
local hidePosition = UDim2.new(0.5, -330, 1, 25) local hidePosition = UDim2.new(0.5, -330, 1, 25)

View File

@ -54,20 +54,20 @@ function createContextActionGui()
end end
-- functions -- functions
function setButtonSizeAndPosition(object) -- function setButtonSizeAndPosition(object)
local buttonSize = 55 -- local buttonSize = 55
local xOffset = 10 -- local xOffset = 10
local yOffset = 95 -- local yOffset = 95
-- todo: better way to determine mobile sized screens -- -- todo: better way to determine mobile sized screens
local onSmallScreen = (game.CoreGui.RobloxGui.AbsoluteSize.X < 600) -- local onSmallScreen = (game.CoreGui.RobloxGui.AbsoluteSize.X < 600)
if not onSmallScreen then -- if not onSmallScreen then
buttonSize = 85 -- buttonSize = 85
xOffset = 40 -- xOffset = 40
end -- end
object.Size = UDim2.new(0, buttonSize, 0, buttonSize) -- object.Size = UDim2.new(0, buttonSize, 0, buttonSize)
end -- end
function contextButtonDown(button, inputObject, actionName) function contextButtonDown(button, inputObject, actionName)
if inputObject.UserInputType == Enum.UserInputType.Touch then if inputObject.UserInputType == Enum.UserInputType.Touch then
@ -248,8 +248,8 @@ contextActionService.BoundActionChanged:connect(function(actionName, changeName,
button.ActionIcon.Image = changeTable[changeName] button.ActionIcon.Image = changeTable[changeName]
elseif changeName == "title" then elseif changeName == "title" then
button.ActionTitle.Text = changeTable[changeName] button.ActionTitle.Text = changeTable[changeName]
elseif changeName == "description" then -- elseif changeName == "description" then
-- todo: add description to menu -- -- todo: add description to menu
elseif changeName == "position" then elseif changeName == "position" then
button.Position = changeTable[changeName] button.Position = changeTable[changeName]
end end
@ -261,7 +261,7 @@ contextActionService.BoundActionAdded:connect(function(actionName, createTouchBu
addAction(actionName, createTouchButton, functionInfoTable) addAction(actionName, createTouchButton, functionInfoTable)
end) end)
contextActionService.BoundActionRemoved:connect(function(actionName, functionInfoTable) contextActionService.BoundActionRemoved:connect(function(actionName, _)
removeAction(actionName) removeAction(actionName)
end) end)

View File

@ -398,7 +398,7 @@ function setupJumpButton(parentFrame)
if inputObject == cameraTouch then if inputObject == cameraTouch then
return return
end end
for i, touch in pairs(oldJumpTouches) do for _, touch in pairs(oldJumpTouches) do
if touch == inputObject then if touch == inputObject then
return return
end end
@ -444,7 +444,7 @@ function isTouchUsedByJumpButton(touch)
if touch == currentJumpTouch then if touch == currentJumpTouch then
return true return true
end end
for i, touchToCompare in pairs(oldJumpTouches) do for _, touchToCompare in pairs(oldJumpTouches) do
if touch == touchToCompare then if touch == touchToCompare then
return true return true
end end
@ -454,7 +454,7 @@ function isTouchUsedByJumpButton(touch)
end end
function isTouchUsedByThumbstick(touch) function isTouchUsedByThumbstick(touch)
for i, touchToCompare in pairs(thumbstickTouches) do for _, touchToCompare in pairs(thumbstickTouches) do
if touch == touchToCompare then if touch == touchToCompare then
return true return true
end end

View File

@ -472,7 +472,7 @@ function initializeDeveloperConsole()
pPos = Dev_Container.AbsolutePosition pPos = Dev_Container.AbsolutePosition
end) end)
Dev_TitleBar.TextButton.MouseButton1Up:connect(function(x, y) Dev_TitleBar.TextButton.MouseButton1Up:connect(function(_, _)
clean() clean()
end) end)
@ -819,7 +819,6 @@ function initializeDeveloperConsole()
local minute = math.floor(dayTime / 60) local minute = math.floor(dayTime / 60)
dayTime = dayTime - (minute * 60) dayTime = dayTime - (minute * 60)
local second = dayTime
local h = numberWithZero(hour) local h = numberWithZero(hour)
local m = numberWithZero(minute) local m = numberWithZero(minute)
@ -830,35 +829,35 @@ function initializeDeveloperConsole()
--Filter --Filter
Dev_OptionsBar.ErrorToggleButton.MouseButton1Down:connect(function(x, y) Dev_OptionsBar.ErrorToggleButton.MouseButton1Down:connect(function(_, _)
errorToggleOn = not errorToggleOn errorToggleOn = not errorToggleOn
Dev_OptionsBar.ErrorToggleButton.CheckFrame.Visible = errorToggleOn Dev_OptionsBar.ErrorToggleButton.CheckFrame.Visible = errorToggleOn
refreshTextHolder() refreshTextHolder()
repositionList() repositionList()
end) end)
Dev_OptionsBar.WarningToggleButton.MouseButton1Down:connect(function(x, y) Dev_OptionsBar.WarningToggleButton.MouseButton1Down:connect(function(_, _)
warningToggleOn = not warningToggleOn warningToggleOn = not warningToggleOn
Dev_OptionsBar.WarningToggleButton.CheckFrame.Visible = warningToggleOn Dev_OptionsBar.WarningToggleButton.CheckFrame.Visible = warningToggleOn
refreshTextHolder() refreshTextHolder()
repositionList() repositionList()
end) end)
Dev_OptionsBar.InfoToggleButton.MouseButton1Down:connect(function(x, y) Dev_OptionsBar.InfoToggleButton.MouseButton1Down:connect(function(_, _)
infoToggleOn = not infoToggleOn infoToggleOn = not infoToggleOn
Dev_OptionsBar.InfoToggleButton.CheckFrame.Visible = infoToggleOn Dev_OptionsBar.InfoToggleButton.CheckFrame.Visible = infoToggleOn
refreshTextHolder() refreshTextHolder()
repositionList() repositionList()
end) end)
Dev_OptionsBar.OutputToggleButton.MouseButton1Down:connect(function(x, y) Dev_OptionsBar.OutputToggleButton.MouseButton1Down:connect(function(_, _)
outputToggleOn = not outputToggleOn outputToggleOn = not outputToggleOn
Dev_OptionsBar.OutputToggleButton.CheckFrame.Visible = outputToggleOn Dev_OptionsBar.OutputToggleButton.CheckFrame.Visible = outputToggleOn
refreshTextHolder() refreshTextHolder()
repositionList() repositionList()
end) end)
Dev_OptionsBar.WordWrapToggleButton.MouseButton1Down:connect(function(x, y) Dev_OptionsBar.WordWrapToggleButton.MouseButton1Down:connect(function(_, _)
wordWrapToggleOn = not wordWrapToggleOn wordWrapToggleOn = not wordWrapToggleOn
Dev_OptionsBar.WordWrapToggleButton.CheckFrame.Visible = wordWrapToggleOn Dev_OptionsBar.WordWrapToggleButton.CheckFrame.Visible = wordWrapToggleOn
refreshTextHolder() refreshTextHolder()
@ -891,7 +890,7 @@ function initializeDeveloperConsole()
end end
--Handle Dev-Console Local/Server Buttons --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 if currentConsole == SERVER_CONSOLE then
currentConsole = LOCAL_CONSOLE currentConsole = LOCAL_CONSOLE
local localConsole = Dev_Container.Body.LocalConsole local localConsole = Dev_Container.Body.LocalConsole
@ -904,7 +903,6 @@ function initializeDeveloperConsole()
if game:FindFirstChild "Players" and game.Players["LocalPlayer"] then if game:FindFirstChild "Players" and game.Players["LocalPlayer"] then
local mouse = game.Players.LocalPlayer:GetMouse() local mouse = game.Players.LocalPlayer:GetMouse()
local mousePos = Vector2.new(mouse.X, mouse.Y)
refreshConsolePosition(mouse.X, mouse.Y) refreshConsolePosition(mouse.X, mouse.Y)
refreshConsoleSize(mouse.X, mouse.Y) refreshConsoleSize(mouse.X, mouse.Y)
handleScroll(mouse.X, mouse.Y) handleScroll(mouse.X, mouse.Y)
@ -921,7 +919,7 @@ function initializeDeveloperConsole()
local serverHistoryRequested = false local serverHistoryRequested = false
Dev_Container.Body.ServerConsole.MouseButton1Click:connect(function(x, y) Dev_Container.Body.ServerConsole.MouseButton1Click:connect(function(_, _)
if not serverHistoryRequested then if not serverHistoryRequested then
serverHistoryRequested = true serverHistoryRequested = true
game:GetService("LogService"):RequestServerOutput() game:GetService("LogService"):RequestServerOutput()

View File

@ -44,7 +44,7 @@ end
local function CreateButtons(frame, buttons, yPos, ySize) local function CreateButtons(frame, buttons, yPos, ySize)
local buttonNum = 1 local buttonNum = 1
local buttonObjs = {} local buttonObjs = {}
for i, obj in ipairs(buttons) do for _, obj in ipairs(buttons) do
local button = Instance.new "TextButton" local button = Instance.new "TextButton"
button.Name = "Button" .. buttonNum button.Name = "Button" .. buttonNum
button.Font = Enum.Font.Arial button.Font = Enum.Font.Arial
@ -217,7 +217,6 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox)
local width = UDim.new(0, 100) local width = UDim.new(0, 100)
local height = UDim.new(0, 32) local height = UDim.new(0, 32)
local xPos = 0.055
local frame = Instance.new "Frame" local frame = Instance.new "Frame"
frame.Name = "DropDownMenu" frame.Name = "DropDownMenu"
frame.BackgroundTransparency = 1 frame.BackgroundTransparency = 1
@ -315,7 +314,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox)
local children = droppedDownMenu:GetChildren() local children = droppedDownMenu:GetChildren()
if children then if children then
for i, child in ipairs(children) do for _, child in ipairs(children) do
if child.Name == "ChoiceButton" then if child.Name == "ChoiceButton" then
child.ZIndex = baseZIndex + 2 child.ZIndex = baseZIndex + 2
elseif child.Name == "ClickCaptureButton" then elseif child.Name == "ClickCaptureButton" then
@ -340,7 +339,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox)
end end
local childNum = 1 local childNum = 1
for i, obj in ipairs(children) do for _, obj in ipairs(children) do
if obj.Name == "ChoiceButton" then if obj.Name == "ChoiceButton" then
if childNum < scrollBarPosition or childNum >= scrollBarPosition + dropDownItemCount then if childNum < scrollBarPosition or childNum >= scrollBarPosition + dropDownItemCount then
obj.Visible = false obj.Visible = false
@ -378,7 +377,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox)
local children = droppedDownMenu:GetChildren() local children = droppedDownMenu:GetChildren()
local childNum = 1 local childNum = 1
if children then if children then
for i, obj in ipairs(children) do for _, obj in ipairs(children) do
if obj.Name == "ChoiceButton" then if obj.Name == "ChoiceButton" then
if obj.Text == text then if obj.Text == text then
obj.Font = Enum.Font.ArialBold obj.Font = Enum.Font.ArialBold
@ -490,7 +489,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox)
scrollbar.Parent = droppedDownMenu scrollbar.Parent = droppedDownMenu
end 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 -- needed to maintain local scope for items in event listeners below
local button = choiceButton:clone() local button = choiceButton:clone()
if forRoblox then if forRoblox then
@ -524,7 +523,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox)
--This does the initial layout of the buttons --This does the initial layout of the buttons
updateScroll() updateScroll()
frame.AncestryChanged:connect(function(child, parent) frame.AncestryChanged:connect(function(_, parent)
if parent == nil then if parent == nil then
areaSoak.Parent = nil areaSoak.Parent = nil
else else
@ -624,7 +623,7 @@ end
local function layoutGuiObjectsHelper(frame, guiObjects, settingsTable) local function layoutGuiObjectsHelper(frame, guiObjects, settingsTable)
local totalPixels = frame.AbsoluteSize.Y local totalPixels = frame.AbsoluteSize.Y
local pixelsRemaining = 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 if child:IsA "TextLabel" or child:IsA "TextButton" then
local isLabel = child:IsA "TextLabel" local isLabel = child:IsA "TextLabel"
if isLabel then if isLabel then
@ -712,7 +711,7 @@ t.LayoutGuiObjects = function(frame, guiObjects, settingsTable)
wrapperFrame.Size = UDim2.new(1, 0, 1, 0) wrapperFrame.Size = UDim2.new(1, 0, 1, 0)
wrapperFrame.Parent = frame wrapperFrame.Parent = frame
for i, child in ipairs(guiObjects) do for _, child in ipairs(guiObjects) do
child.Parent = wrapperFrame child.Parent = wrapperFrame
end end
@ -819,7 +818,7 @@ t.CreateSlider = function(steps, width, position)
if areaSoakMouseMoveCon then if areaSoakMouseMoveCon then
areaSoakMouseMoveCon:disconnect() areaSoakMouseMoveCon:disconnect()
end end
areaSoakMouseMoveCon = areaSoak.MouseMoved:connect(function(x, y) areaSoakMouseMoveCon = areaSoak.MouseMoved:connect(function(x, _)
setSliderPos(x, slider, sliderPosition, bar, steps) setSliderPos(x, slider, sliderPosition, bar, steps)
end) end)
end) end)
@ -828,14 +827,14 @@ t.CreateSlider = function(steps, width, position)
cancelSlide(areaSoak) cancelSlide(areaSoak)
end) end)
sliderPosition.Changed:connect(function(prop) sliderPosition.Changed:connect(function(_)
sliderPosition.Value = math.min(steps, math.max(1, sliderPosition.Value)) sliderPosition.Value = math.min(steps, math.max(1, sliderPosition.Value))
local relativePosX = (sliderPosition.Value - 1) / (steps - 1) local relativePosX = (sliderPosition.Value - 1) / (steps - 1)
slider.Position = slider.Position =
UDim2.new(relativePosX, -slider.AbsoluteSize.X / 2, slider.Position.Y.Scale, slider.Position.Y.Offset) UDim2.new(relativePosX, -slider.AbsoluteSize.X / 2, slider.Position.Y.Scale, slider.Position.Y.Offset)
end) end)
bar.MouseButton1Down:connect(function(x, y) bar.MouseButton1Down:connect(function(x, _)
setSliderPos(x, slider, sliderPosition, bar, steps) setSliderPos(x, slider, sliderPosition, bar, steps)
end) end)
@ -994,7 +993,7 @@ t.CreateTrueScrollingFrame = function()
mouseDrag.Position = UDim2.new(-0.25, 0, -0.25, 0) mouseDrag.Position = UDim2.new(-0.25, 0, -0.25, 0)
mouseDrag.ZIndex = 10 mouseDrag.ZIndex = 10
local function positionScrollBar(x, y, offset) local function positionScrollBar(_, y, offset)
local oldPos = scrollbar.Position local oldPos = scrollbar.Position
if y < scrollTrack.AbsolutePosition.y then if y < scrollTrack.AbsolutePosition.y then
@ -1292,30 +1291,25 @@ t.CreateTrueScrollingFrame = function()
scrollUpButton.MouseButton1Down:connect(function() scrollUpButton.MouseButton1Down:connect(function()
scrollUp() scrollUp()
end) end)
scrollUpButton.MouseButton1Up:connect(function()
scrollStamp = tick()
end)
scrollDownButton.MouseButton1Up:connect(function()
scrollStamp = tick()
end)
scrollDownButton.MouseButton1Down:connect(function() scrollDownButton.MouseButton1Down:connect(function()
scrollDown() scrollDown()
end) end)
scrollbar.MouseButton1Up:connect(function() local function scrollTick()
scrollStamp = tick() 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 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 function highLowRecheck()
local oldLowY = lowY local oldLowY = lowY
local oldHighY = highY local oldHighY = highY
@ -1439,7 +1433,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle)
howManyDisplayed = 0 howManyDisplayed = 0
local guiObjects = {} local guiObjects = {}
if orderList then if orderList then
for i, child in ipairs(orderList) do for _, child in ipairs(orderList) do
if child.Parent == frame then if child.Parent == frame then
table.insert(guiObjects, child) table.insert(guiObjects, child)
end end
@ -1447,7 +1441,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle)
else else
local children = frame:GetChildren() local children = frame:GetChildren()
if children then if children then
for i, child in ipairs(children) do for _, child in ipairs(children) do
if child:IsA "GuiObject" then if child:IsA "GuiObject" then
table.insert(guiObjects, child) table.insert(guiObjects, child)
end end
@ -1696,7 +1690,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle)
local guiObjects = 0 local guiObjects = 0
local children = frame:GetChildren() local children = frame:GetChildren()
if children then if children then
for i, child in ipairs(children) do for _, child in ipairs(children) do
if child:IsA "GuiObject" then if child:IsA "GuiObject" then
guiObjects = guiObjects + 1 guiObjects = guiObjects + 1
end end
@ -1834,13 +1828,13 @@ t.CreateScrollingFrame = function(orderList, scrollStyle)
end end
local y = 0 local y = 0
scrollDrag.MouseButton1Down:connect(function(x, y) scrollDrag.MouseButton1Down:connect(function(_, y)
if scrollDrag.Active then if scrollDrag.Active then
scrollStamp = tick() scrollStamp = tick()
local mouseOffset = y - scrollDrag.AbsolutePosition.y local mouseOffset = y - scrollDrag.AbsolutePosition.y
local dragCon local dragCon
local upCon local upCon
dragCon = mouseDrag.MouseMoved:connect(function(x, y) dragCon = mouseDrag.MouseMoved:connect(function(_, y)
local barAbsPos = scrollbar.AbsolutePosition.y local barAbsPos = scrollbar.AbsolutePosition.y
local barAbsSize = scrollbar.AbsoluteSize.y local barAbsSize = scrollbar.AbsoluteSize.y
@ -1853,7 +1847,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle)
local guiObjects = 0 local guiObjects = 0
local children = frame:GetChildren() local children = frame:GetChildren()
if children then if children then
for i, child in ipairs(children) do for _, child in ipairs(children) do
if child:IsA "GuiObject" then if child:IsA "GuiObject" then
guiObjects = guiObjects + 1 guiObjects = guiObjects + 1
end end
@ -1906,7 +1900,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle)
scrollbar.MouseButton1Up:connect(function() scrollbar.MouseButton1Up:connect(function()
scrollStamp = tick() scrollStamp = tick()
end) end)
scrollbar.MouseButton1Down:connect(function(x, y) scrollbar.MouseButton1Down:connect(function(_, y)
if y > (scrollDrag.AbsoluteSize.y + scrollDrag.AbsolutePosition.y) then if y > (scrollDrag.AbsoluteSize.y + scrollDrag.AbsolutePosition.y) then
scrollDown(y) scrollDown(y)
elseif y < scrollDrag.AbsolutePosition.y then elseif y < scrollDrag.AbsolutePosition.y then
@ -2098,7 +2092,7 @@ local function TransitionTutorialPages(fromPage, toPage, transitionFrame, curren
transitionFrame.Visible = true transitionFrame.Visible = true
currentPageValue.Value = nil currentPageValue.Value = nil
local newsize, newPosition local newSize, newPosition
if toPage then if toPage then
--Make it visible so it resizes --Make it visible so it resizes
toPage.Visible = true toPage.Visible = true
@ -2165,7 +2159,7 @@ t.CreateTutorial = function(name, tutorialKey, createButtons)
local visiblePage = nil local visiblePage = nil
local children = pages:GetChildren() local children = pages:GetChildren()
if children then if children then
for i, child in ipairs(children) do for _, child in ipairs(children) do
if child.Visible then if child.Visible then
if visiblePage then if visiblePage then
child.Visible = false child.Visible = false
@ -2758,7 +2752,7 @@ t.CreateSetPanel = function(
return setButton return setButton
end end
local function buildSetButton(name, setId, setImageId, i, count) local function buildSetButton(name, setId, _, _, _)
local button = createSetButton(name) local button = createSetButton(name)
button.Text = name button.Text = name
button.Name = "SetButton" button.Name = "SetButton"
@ -3095,7 +3089,7 @@ t.CreateSetPanel = function(
end end
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 and Data.Category[Data.CurrentCategory] ~= nil then
if button ~= Data.Category[Data.CurrentCategory].Button then if button ~= Data.Category[Data.CurrentCategory].Button then
Data.Category[Data.CurrentCategory].Button = button Data.Category[Data.CurrentCategory].Button = button
@ -3112,10 +3106,10 @@ t.CreateSetPanel = function(
end end
end end
local function selectCategoryPage(buttons, page) local function selectCategoryPage(buttons, _)
if buttons ~= Data.CurrentCategory then if buttons ~= Data.CurrentCategory then
if 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 button.Visible = false
end end
end end
@ -3232,7 +3226,7 @@ t.CreateSetPanel = function(
controlFrame.Position = UDim2.new(0.76, 5, 0, 0) controlFrame.Position = UDim2.new(0.76, 5, 0, 0)
local debounce = false local debounce = false
controlFrame.ScrollBottom.Changed:connect(function(prop) controlFrame.ScrollBottom.Changed:connect(function(_)
if controlFrame.ScrollBottom.Value == true then if controlFrame.ScrollBottom.Value == true then
if debounce then if debounce then
return return
@ -3402,53 +3396,37 @@ t.CreateTerrainMaterialSelector = function(size, position)
function getNameFromEnum(choice) function getNameFromEnum(choice)
if choice == Enum.CellMaterial.Grass or choice == 1 then if choice == Enum.CellMaterial.Grass or choice == 1 then
return "Grass" return "Grass"
end elseif choice == Enum.CellMaterial.Sand or choice == 2 then
if choice == Enum.CellMaterial.Sand or choice == 2 then
return "Sand" return "Sand"
end elseif choice == Enum.CellMaterial.Empty or choice == 0 then
if choice == Enum.CellMaterial.Empty or choice == 0 then
return "Erase" return "Erase"
end elseif choice == Enum.CellMaterial.Brick or choice == 3 then
if choice == Enum.CellMaterial.Brick or choice == 3 then
return "Brick" return "Brick"
end elseif choice == Enum.CellMaterial.Granite or choice == 4 then
if choice == Enum.CellMaterial.Granite or choice == 4 then
return "Granite" return "Granite"
end elseif choice == Enum.CellMaterial.Asphalt or choice == 5 then
if choice == Enum.CellMaterial.Asphalt or choice == 5 then
return "Asphalt" return "Asphalt"
end elseif choice == Enum.CellMaterial.Iron or choice == 6 then
if choice == Enum.CellMaterial.Iron or choice == 6 then
return "Iron" return "Iron"
end elseif choice == Enum.CellMaterial.Aluminum or choice == 7 then
if choice == Enum.CellMaterial.Aluminum or choice == 7 then
return "Aluminum" return "Aluminum"
end elseif choice == Enum.CellMaterial.Gold or choice == 8 then
if choice == Enum.CellMaterial.Gold or choice == 8 then
return "Gold" return "Gold"
end elseif choice == Enum.CellMaterial.WoodPlank or choice == 9 then
if choice == Enum.CellMaterial.WoodPlank or choice == 9 then
return "Plank" return "Plank"
end elseif choice == Enum.CellMaterial.WoodLog or choice == 10 then
if choice == Enum.CellMaterial.WoodLog or choice == 10 then
return "Log" return "Log"
end elseif choice == Enum.CellMaterial.Gravel or choice == 11 then
if choice == Enum.CellMaterial.Gravel or choice == 11 then
return "Gravel" return "Gravel"
end elseif choice == Enum.CellMaterial.CinderBlock or choice == 12 then
if choice == Enum.CellMaterial.CinderBlock or choice == 12 then
return "Cinder Block" return "Cinder Block"
end elseif choice == Enum.CellMaterial.MossyStone or choice == 13 then
if choice == Enum.CellMaterial.MossyStone or choice == 13 then
return "Stone Wall" return "Stone Wall"
end elseif choice == Enum.CellMaterial.Cement or choice == 14 then
if choice == Enum.CellMaterial.Cement or choice == 14 then
return "Concrete" return "Concrete"
end elseif choice == Enum.CellMaterial.RedPlastic or choice == 15 then
if choice == Enum.CellMaterial.RedPlastic or choice == 15 then
return "Plastic (red)" return "Plastic (red)"
end elseif choice == Enum.CellMaterial.BluePlastic or choice == 16 then
if choice == Enum.CellMaterial.BluePlastic or choice == 16 then
return "Plastic (blue)" return "Plastic (blue)"
end end
@ -3465,7 +3443,7 @@ t.CreateTerrainMaterialSelector = function(size, position)
end end
-- we so need a better way to do this -- we so need a better way to do this
for i, v in pairs(materialNames) do for _, v in pairs(materialNames) do
materialToImageMap[v] = {} materialToImageMap[v] = {}
if v == "Grass" then if v == "Grass" then
materialToImageMap[v].Regular = "http://www.roblox.com/asset/?id=56563112" materialToImageMap[v].Regular = "http://www.roblox.com/asset/?id=56563112"

View File

@ -55,7 +55,7 @@ local function robloxLock(instance)
instance.RobloxLocked = true instance.RobloxLocked = true
children = instance:GetChildren() children = instance:GetChildren()
if children then if children then
for i, child in ipairs(children) do for _, child in ipairs(children) do
robloxLock(child) robloxLock(child)
end end
end end
@ -93,13 +93,12 @@ function goToMenu(container, menuName, moveDirection, size, position)
end end
local containerChildren = container:GetChildren() local containerChildren = container:GetChildren()
local selectedMenu = false
for i = 1, #containerChildren do for i = 1, #containerChildren do
if containerChildren[i].Name == menuName then if containerChildren[i].Name == menuName then
containerChildren[i].Visible = true containerChildren[i].Visible = true
currentMenuSelection = currentMenuSelection =
{ container = container, name = menuName, direction = moveDirection, lastSize = size } { container = container, name = menuName, direction = moveDirection, lastSize = size }
selectedMenu = true -- selectedMenu = true
if size and position then if size and position then
containerChildren[i]:TweenSizeAndPosition( containerChildren[i]:TweenSizeAndPosition(
size, size,
@ -198,7 +197,7 @@ local function CreateTextButtons(frame, buttons, yPos, ySize)
local buttonObjs = {} local buttonObjs = {}
local function toggleSelection(button) local function toggleSelection(button)
for i, obj in ipairs(buttonObjs) do for _, obj in ipairs(buttonObjs) do
if obj == button then if obj == button then
obj.Style = Enum.ButtonStyle.RobloxButtonDefault obj.Style = Enum.ButtonStyle.RobloxButtonDefault
else else
@ -207,7 +206,7 @@ local function CreateTextButtons(frame, buttons, yPos, ySize)
end end
end end
for i, obj in ipairs(buttons) do for _, obj in ipairs(buttons) do
local button = Instance.new "TextButton" local button = Instance.new "TextButton"
button.Name = "Button" .. buttonNum button.Name = "Button" .. buttonNum
button.Font = Enum.Font.Arial button.Font = Enum.Font.Arial
@ -775,7 +774,7 @@ local function createGameMainMenu(baseZIndex, shield)
return gameMainMenuFrame return gameMainMenuFrame
end end
local function createGameSettingsMenu(baseZIndex, shield) local function createGameSettingsMenu(baseZIndex, _)
local gameSettingsMenuFrame = Instance.new "Frame" local gameSettingsMenuFrame = Instance.new "Frame"
gameSettingsMenuFrame.Name = "GameSettingsMenu" gameSettingsMenuFrame.Name = "GameSettingsMenu"
gameSettingsMenuFrame.BackgroundTransparency = 1 gameSettingsMenuFrame.BackgroundTransparency = 1
@ -1109,7 +1108,7 @@ local function createGameSettingsMenu(baseZIndex, shield)
graphicsSetter.Text = tostring(graphicsLevel.Value) graphicsSetter.Text = tostring(graphicsLevel.Value)
end) end)
graphicsLevel.Changed:connect(function(prop) graphicsLevel.Changed:connect(function(_)
if isAutoGraphics then if isAutoGraphics then
return return
end end
@ -1147,7 +1146,6 @@ local function createGameSettingsMenu(baseZIndex, shield)
end end
end) end)
local lastUpdate = nil
game.GraphicsQualityChangeRequest:connect(function(graphicsIncrease) game.GraphicsQualityChangeRequest:connect(function(graphicsIncrease)
if isAutoGraphics then if isAutoGraphics then
return return
@ -1314,7 +1312,7 @@ local function createGameSettingsMenu(baseZIndex, shield)
backButton.ZIndex = baseZIndex + 4 backButton.ZIndex = baseZIndex + 4
backButton.Parent = gameSettingsMenuFrame backButton.Parent = gameSettingsMenuFrame
local syncVideoCaptureSetting = nil local syncVideoCaptureSetting
if not macClient then if not macClient then
local videoCaptureLabel = Instance.new "TextLabel" local videoCaptureLabel = Instance.new "TextLabel"
@ -2282,20 +2280,20 @@ if LoadLibrary then
chatButton.MouseButton1Click:connect(activateChat) chatButton.MouseButton1Click:connect(activateChat)
local hotKeyEnabled = true -- local hotKeyEnabled = true
local toggleHotKey = function(value) local toggleHotKey = function(_)
hotKeyEnabled = value -- hotKeyEnabled = value
end end
local guiService = game:GetService "GuiService" -- local guiService = game:GetService "GuiService"
local newChatMode = pcall(function() --[[local newChatMode = ]]pcall(function()
--guiService:AddSpecialKey(Enum.SpecialKey.ChatHotkey) --guiService:AddSpecialKey(Enum.SpecialKey.ChatHotkey)
--guiService.SpecialKeyPressed:connect(function(key) if key == Enum.SpecialKey.ChatHotkey and hotKeyEnabled then activateChat() end end) --guiService.SpecialKeyPressed:connect(function(key) if key == Enum.SpecialKey.ChatHotkey and hotKeyEnabled then activateChat() end end)
end) end)
if not newChatMode then -- if not newChatMode then
--guiService:AddKey("/") --guiService:AddKey("/")
--guiService.KeyPressed:connect(function(key) if key == "/" and hotKeyEnabled then activateChat() end end) --guiService.KeyPressed:connect(function(key) if key == "/" and hotKeyEnabled then activateChat() end end)
end -- end
chatBox.FocusLost:connect(function(enterPressed) chatBox.FocusLost:connect(function(enterPressed)
if enterPressed then if enterPressed then
@ -2318,7 +2316,7 @@ if LoadLibrary then
--Spawn a thread for the Save dialogs --Spawn a thread for the Save dialogs
local isSaveDialogSupported = pcall(function() local isSaveDialogSupported = pcall(function()
local var = game.LocalSaveEnabled -- local var = game.LocalSaveEnabled
end) end)
if isSaveDialogSupported then if isSaveDialogSupported then
delay(0, function() delay(0, function()
@ -2357,11 +2355,10 @@ if LoadLibrary then
end) end)
--Spawn a thread for Chat Bar --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 return game.GuiService.UseLuaChat
end) end)
if success and luaChat then -- if success and luaChat then
--[[delay(0, --[[delay(0,
function() function()
@ -2395,7 +2392,7 @@ if LoadLibrary then
--game.GuiService:SetGlobalSizeOffsetPixel(0,-22) --game.GuiService:SetGlobalSizeOffsetPixel(0,-22)
end end
end)]] end)]]
end -- end
local BurningManPlaceID = 41324860 local BurningManPlaceID = 41324860
-- TODO: remove click to walk completely if testing shows we don't need it -- TODO: remove click to walk completely if testing shows we don't need it

View File

@ -984,25 +984,25 @@ end)
------------------------------- -------------------------------
-- Static Functions -- Static Functions
------------------------------- -------------------------------
function GetTotalEntries() -- function GetTotalEntries()
return math.min(#MiddleFrameBackgrounds, DefaultEntriesOnScreen) -- return math.min(#MiddleFrameBackgrounds, DefaultEntriesOnScreen)
end -- end
function GetEntryListLength() -- function GetEntryListLength()
local numEnts = #PlayerFrames + #TeamFrames -- local numEnts = #PlayerFrames + #TeamFrames
if NeutralTeam then -- if NeutralTeam then
numEnts = numEnts + 1 -- numEnts = numEnts + 1
end -- end
return numEnts -- return numEnts
end -- end
function AreAllEntriesOnScreen() function AreAllEntriesOnScreen()
return #MiddleFrameBackgrounds * MiddleTemplate.Size.Y.Scale <= 1 + DefaultBottomClipPos return #MiddleFrameBackgrounds * MiddleTemplate.Size.Y.Scale <= 1 + DefaultBottomClipPos
end end
function GetLengthOfVisbleScroll() -- function GetLengthOfVisbleScroll()
return 1 + DefaultBottomClipPos -- return 1 + DefaultBottomClipPos
end -- end
function GetMaxScroll() function GetMaxScroll()
return DefaultBottomClipPos * -1 return DefaultBottomClipPos * -1
@ -1093,19 +1093,19 @@ end
rank Integer rank value for player rank Integer rank value for player
@Return Normalized integer value for rank? @Return Normalized integer value for rank?
--]] --]]
function GetPrivilegeType(rank) -- function GetPrivilegeType(rank)
if rank <= PrivilegeLevel["Banned"] then -- if rank <= PrivilegeLevel["Banned"] then
return PrivilegeLevel["Banned"] -- return PrivilegeLevel["Banned"]
elseif rank <= PrivilegeLevel["Visitor"] then -- elseif rank <= PrivilegeLevel["Visitor"] then
return PrivilegeLevel["Visitor"] -- return PrivilegeLevel["Visitor"]
elseif rank <= PrivilegeLevel["Member"] then -- elseif rank <= PrivilegeLevel["Member"] then
return PrivilegeLevel["Member"] -- return PrivilegeLevel["Member"]
elseif rank <= PrivilegeLevel["Admin"] then -- elseif rank <= PrivilegeLevel["Admin"] then
return PrivilegeLevel["Admin"] -- return PrivilegeLevel["Admin"]
else -- else
return PrivilegeLevel["Owner"] -- return PrivilegeLevel["Owner"]
end -- end
end -- end
--[[ --[[
gives a player a new privilage rank gives a player a new privilage rank
@ -1220,7 +1220,7 @@ function InitReportAbuse()
end end
end end
AbuseDropDown, UpdateAbuseSelection = RbxGui.CreateDropDownMenu(Abuses, UpdateAbuseFunction, true) AbuseDropDown, _ = RbxGui.CreateDropDownMenu(Abuses, UpdateAbuseFunction, true)
AbuseDropDown.Name = "AbuseComboBox" AbuseDropDown.Name = "AbuseComboBox"
AbuseDropDown.Position = UDim2.new(0.425, 0, 0, 142) AbuseDropDown.Position = UDim2.new(0.425, 0, 0, 142)
AbuseDropDown.Size = UDim2.new(0.55, 0, 0, 32) AbuseDropDown.Size = UDim2.new(0.55, 0, 0, 32)
@ -1333,7 +1333,7 @@ end
playerEntry Entry of player who had a stat change playerEntry Entry of player who had a stat change
property Name of stat changed property Name of stat changed
--]] --]]
function StatChanged(playerEntry, property) function StatChanged(_, _) --playerEntry, property)
-- if(playerEntry['MyTeam']) then -- if(playerEntry['MyTeam']) then
-- UpdateSingleTeam(playerEntry['MyTeam']) -- UpdateSingleTeam(playerEntry['MyTeam'])
-- else -- else
@ -1808,25 +1808,17 @@ function UpdateMaximize()
end end
end end
for i, entry in ipairs(TeamFrames) do for _, entry in ipairs(TeamFrames) do
WaitForChild(entry["Frame"], "TitleFrame").Size = WaitForChild(entry["Frame"], "TitleFrame").Size =
UDim2.new(0, BaseScreenXSize * 0.9, entry["Frame"].TitleFrame.Size.Y.Scale, 0) UDim2.new(0, BaseScreenXSize * 0.9, entry["Frame"].TitleFrame.Size.Y.Scale, 0)
end end
for i, entry in ipairs(PlayerFrames) do for _, entry in ipairs(PlayerFrames) do
WaitForChild(entry["Frame"], "TitleFrame").Size = WaitForChild(entry["Frame"], "TitleFrame").Size =
UDim2.new(0, BaseScreenXSize * 0.9, entry["Frame"].TitleFrame.Size.Y.Scale, 0) UDim2.new(0, BaseScreenXSize * 0.9, entry["Frame"].TitleFrame.Size.Y.Scale, 0)
end end
end end
end end
function UpdateStatNames()
if not AreNamesExpanded.Value or IsMinimized.Value then
CloseNames()
else
ExpandNames()
end
end
function ExpandNames() function ExpandNames()
if #ScoreNames ~= 0 then if #ScoreNames ~= 0 then
for _, i in pairs(StatTitles:GetChildren()) do for _, i in pairs(StatTitles:GetChildren()) do
@ -1884,6 +1876,14 @@ function CloseNames()
end end
end end
function UpdateStatNames()
if not AreNamesExpanded.Value or IsMinimized.Value then
CloseNames()
else
ExpandNames()
end
end
function OnScrollWheelMove(direction) function OnScrollWheelMove(direction)
if not (IsTabified.Value or IsMinimized.Value or InPopupWaitForClick) then if not (IsTabified.Value or IsMinimized.Value or InPopupWaitForClick) then
local StartFrame = ListFrame.Position local StartFrame = ListFrame.Position
@ -1980,12 +1980,11 @@ end
Manages scrolling of the playerlist on mouse drag Manages scrolling of the playerlist on mouse drag
--]] --]]
function StartDrag(entry, startx, starty) function StartDrag(entry, startx, starty)
local startDragTime = tick()
local stopDrag = false
local openPanel = true local openPanel = true
local draggedFrame = WaitForChild(entry["Frame"], "ClickListener") --[[local draggedFrame = ]]
WaitForChild(entry["Frame"], "ClickListener")
local function dragExit() local function dragExit()
stopDrag = true -- stopDrag = true
if if
entry["Player"] entry["Player"]
@ -2021,7 +2020,6 @@ function StartMinimizeDrag()
Delay(0, function() Delay(0, function()
local startTime = tick() local startTime = tick()
debugprint "Got Click2" debugprint "Got Click2"
local stopDrag = false
local function dragExit() local function dragExit()
--debugprint('undone click2') --debugprint('undone click2')
if tick() - startTime < 0.25 then --was click if tick() - startTime < 0.25 then --was click
@ -2032,7 +2030,7 @@ function StartMinimizeDrag()
ToggleMinimize() ToggleMinimize()
end end
end end
stopDrag = true -- stopDrag = true
end end
local startY = nil local startY = nil
local StartFrame = DefaultBottomClipPos local StartFrame = DefaultBottomClipPos
@ -2225,7 +2223,7 @@ end
oldLeaderstats leaderstats object to be removed oldLeaderstats leaderstats object to be removed
playerEntry A reference to the ENTRY(table) of the player playerEntry A reference to the ENTRY(table) of the player
--]] --]]
function LeaderstatsRemoved(oldLeaderstats, playerEntry) function LeaderstatsRemoved(_, playerEntry)
while AddingFrameLock do while AddingFrameLock do
debugprint("waiting to insert " .. playerEntry["Player"].Name) debugprint("waiting to insert " .. playerEntry["Player"].Name)
wait(1 / 30) wait(1 / 30)
@ -2449,8 +2447,8 @@ function InsertPlayerFrame(nplayer)
dropShadow.Position = nFrame.TitleFrame.Title.Position + UDim2.new(0, 1, 0, 1) dropShadow.Position = nFrame.TitleFrame.Title.Position + UDim2.new(0, 1, 0, 1)
dropShadow.Name = "DropShadow" dropShadow.Name = "DropShadow"
dropShadow.Parent = nFrame.TitleFrame dropShadow.Parent = nFrame.TitleFrame
else -- else
--Delay(2, function () OnFriendshipChanged(nplayer,LocalPlayer:GetFriendStatus(nplayer)) end) -- --Delay(2, function () OnFriendshipChanged(nplayer,LocalPlayer:GetFriendStatus(nplayer)) end)
end end
nFrame.TitleFrame.Title.Font = "ArialBold" nFrame.TitleFrame.Title.Font = "ArialBold"
@ -3030,8 +3028,8 @@ function RemoveTeamFrame(nteam)
wait(1 / 30) wait(1 / 30)
end end
AddingFrameLock = true AddingFrameLock = true
if IsMinimized.Value then -- if IsMinimized.Value then
end -- end
local myEntry local myEntry
for i, key in ipairs(TeamFrames) do for i, key in ipairs(TeamFrames) do
if nteam == key["MyTeam"] then if nteam == key["MyTeam"] then

View File

@ -153,20 +153,6 @@ function showTwoButtons()
end end
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) function showTeleportUI(message, timer)
if teleportUI ~= nil then if teleportUI ~= nil then
teleportUI:Remove() teleportUI:Remove()
@ -181,6 +167,20 @@ function showTeleportUI(message, timer)
end end
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 if teleportEnabled then
localPlayer.OnTeleport:connect(onTeleport) localPlayer.OnTeleport:connect(onTeleport)

View File

@ -183,8 +183,8 @@ function removeGear(gear)
gearSlots[emptySlot] = "empty" gearSlots[emptySlot] = "empty"
local centerizeX = gear.Size.X.Scale / 2 -- local centerizeX = gear.Size.X.Scale / 2
local centerizeY = gear.Size.Y.Scale / 2 -- local centerizeY = gear.Size.Y.Scale / 2
--[[gear:TweenSizeAndPosition(UDim2.new(0,0,0,0), --[[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), 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)]] Enum.EasingDirection.Out, Enum.EasingStyle.Quad,guiTweenSpeed/4,true)]]

View File

@ -98,9 +98,7 @@ function JsonWriter:Write(o)
local t = type(o) local t = type(o)
if t == "nil" then if t == "nil" then
self:WriteNil() self:WriteNil()
elseif t == "boolean" then elseif t == "boolean" or t == "number" then
self:WriteString(o)
elseif t == "number" then
self:WriteString(o) self:WriteString(o)
elseif t == "string" then elseif t == "string" then
self:ParseString(o) self:ParseString(o)
@ -108,9 +106,7 @@ function JsonWriter:Write(o)
self:WriteTable(o) self:WriteTable(o)
elseif t == "function" then elseif t == "function" then
self:WriteFunction(o) self:WriteFunction(o)
elseif t == "thread" then elseif t == "thread" or t == "userdata" then
self:WriteError(o)
elseif t == "userdata" then
self:WriteError(o) self:WriteError(o)
end end
end end
@ -145,7 +141,7 @@ function JsonWriter:IsArray(t)
end end
return false return false
end end
for k, v in pairs(t) do for k, _ in pairs(t) do
if not isindex(k) then if not isindex(k) then
return false, "{", "}" return false, "{", "}"
else else
@ -286,7 +282,7 @@ function JsonReader:ReadNull()
end end
function JsonReader:TestReservedWord(t) function JsonReader:TestReservedWord(t)
for i, v in ipairs(t) do for _, v in ipairs(t) do
if self:Next() ~= v then if self:Next() ~= v then
error(string.format("Error reading '%s': %s", table.concat(t), self:All())) error(string.format("Error reading '%s': %s", table.concat(t), self:All()))
end end
@ -483,7 +479,7 @@ end
--makes a wedge at location x, y, z --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 --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 --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) return game:GetService("Terrain"):AutoWedgeCell(x, y, z)
end end

View File

@ -1,10 +1,10 @@
local t = {} local t = {}
function waitForChild(instance, name) -- function waitForChild(instance, name)
while not instance:FindFirstChild(name) do -- while not instance:FindFirstChild(name) do
instance.ChildAdded:wait() -- instance.ChildAdded:wait()
end -- end
end -- end
-- Do a line/plane intersection. The line starts at the camera. The plane is at y == 0, normal(0, 1, 0) -- Do a line/plane intersection. The line starts at the camera. The plane is at y == 0, normal(0, 1, 0)
-- --

View File

@ -204,9 +204,9 @@ function addToGrid(child)
end end
end) end)
local ancestryCon = nil local ancestryCon = nil
ancestryCon = child.AncestryChanged:connect(function(theChild, theParent) ancestryCon = child.AncestryChanged:connect(function(_, _)
local thisObject = nil local thisObject = nil
for k, v in pairs(backpackItems) do for _, v in pairs(backpackItems) do
if v == child then if v == child then
thisObject = v thisObject = v
break break
@ -223,7 +223,7 @@ function addToGrid(child)
changeCon:disconnect() changeCon:disconnect()
end end
for k, v in pairs(backpackItems) do for _, v in pairs(backpackItems) do
if v == thisObject then if v == thisObject then
if mouseEnterCons[buttons[v]] then if mouseEnterCons[buttons[v]] then
mouseEnterCons[buttons[v]]:disconnect() mouseEnterCons[buttons[v]]:disconnect()

View File

@ -24,7 +24,6 @@ end
-- make sure everything is loaded in before we do anything -- make sure everything is loaded in before we do anything
-- get our local player -- get our local player
waitForProperty(game.Players, "LocalPlayer") waitForProperty(game.Players, "LocalPlayer")
local player = game.Players.LocalPlayer
------------------------ Locals ------------------------------ ------------------------ Locals ------------------------------
local backpack = script.Parent local backpack = script.Parent
@ -39,9 +38,11 @@ local closeButton = backpack.Tabs.CloseButton
waitForChild(backpack.Tabs, "InventoryButton") waitForChild(backpack.Tabs, "InventoryButton")
local inventoryButton = backpack.Tabs.InventoryButton local inventoryButton = backpack.Tabs.InventoryButton
local wardrobeButton
if game.CoreGui.Version >= 8 then if game.CoreGui.Version >= 8 then
waitForChild(backpack.Tabs, "WardrobeButton") waitForChild(backpack.Tabs, "WardrobeButton")
local wardrobeButton = backpack.Tabs.WardrobeButton wardrobeButton = backpack.Tabs.WardrobeButton
end end
waitForChild(backpack.Parent, "ControlFrame") waitForChild(backpack.Parent, "ControlFrame")
local backpackButton = waitForChild(backpack.Parent.ControlFrame, "BackpackButton") local backpackButton = waitForChild(backpack.Parent.ControlFrame, "BackpackButton")
@ -65,8 +66,6 @@ local disabledByDeveloper = false
local humanoidDiedCon = nil local humanoidDiedCon = nil
local backpackButtonPos
local guiTweenSpeed = 0.25 -- how quickly we open/close the backpack local guiTweenSpeed = 0.25 -- how quickly we open/close the backpack
local searchDefaultText = "Search..." local searchDefaultText = "Search..."
@ -123,15 +122,6 @@ function deactivateBackpack()
active = false active = false
end end
function activateBackpack()
initHumanoidDiedConnections()
active = true
backpack.Visible = backpackIsOpen
if backpackIsOpen then
toggleBackpack()
end
end
function initHumanoidDiedConnections() function initHumanoidDiedConnections()
if humanoidDiedCon then if humanoidDiedCon then
humanoidDiedCon:disconnect() humanoidDiedCon:disconnect()
@ -141,6 +131,15 @@ function initHumanoidDiedConnections()
humanoidDiedCon = game.Players.LocalPlayer.Character.Humanoid.Died:connect(deactivateBackpack) humanoidDiedCon = game.Players.LocalPlayer.Character.Humanoid.Died:connect(deactivateBackpack)
end end
function activateBackpack()
initHumanoidDiedConnections()
active = true
backpack.Visible = backpackIsOpen
if backpackIsOpen then
toggleBackpack()
end
end
local hideBackpack = function() local hideBackpack = function()
backpackIsOpen = false backpackIsOpen = false
readyForNextEvent = false readyForNextEvent = false

View File

@ -54,7 +54,6 @@ local Camera = Game.Workspace.CurrentCamera
-- Services -- Services
local CoreGuiService = Game:GetService "CoreGui" local CoreGuiService = Game:GetService "CoreGui"
local PlayersService = Game:GetService "Players" local PlayersService = Game:GetService "Players"
local DebrisService = Game:GetService "Debris"
local GuiService = Game:GetService "GuiService" local GuiService = Game:GetService "GuiService"
-- Lua Enums -- Lua Enums
@ -900,7 +899,6 @@ function Chat:EnableScrolling(toggle)
self.RenderFrame.MouseEnter:connect(function() self.RenderFrame.MouseEnter:connect(function()
local character = Player.Character local character = Player.Character
local torso = WaitForChild(character, "Torso") local torso = WaitForChild(character, "Torso")
local humanoid = WaitForChild(character, "Humanoid")
local head = WaitForChild(character, "Head") local head = WaitForChild(character, "Head")
if toggle then if toggle then
self.MouseOnFrame = true self.MouseOnFrame = true
@ -1111,13 +1109,13 @@ function Chat:RecalculateSpacing()
end ]] end ]]
end end
function Chat:ApplyFilter(str) -- function Chat:ApplyFilter(str)
--[[for _, word in pair(self.Filter_List) do -- --[[for _, word in pair(self.Filter_List) do
if string.find(str, word) then -- if string.find(str, word) then
str:gsub(word, '@#$^') -- str:gsub(word, '@#$^')
end -- end
end ]] -- end ]]
end -- end
-- NOTE: Temporarily disabled ring buffer to allow for chat to always wrap around -- NOTE: Temporarily disabled ring buffer to allow for chat to always wrap around
function Chat:CreateMessage(cPlayer, message) function Chat:CreateMessage(cPlayer, message)
@ -1173,7 +1171,7 @@ function Chat:CreateMessage(cPlayer, message)
pLabel = Gui.Create "TextLabel" { pLabel = Gui.Create "TextLabel" {
Name = pName, Name = pName,
Text = pName .. ":", Text = pName .. ":",
TextColor3 = pColor, -- TextColor3 = pColor,
FontSize = Chat.Configuration.FontSize, FontSize = Chat.Configuration.FontSize,
TextXAlignment = Enum.TextXAlignment.Left, TextXAlignment = Enum.TextXAlignment.Left,
TextYAlignment = Enum.TextYAlignment.Top, TextYAlignment = Enum.TextYAlignment.Top,
@ -1188,7 +1186,6 @@ function Chat:CreateMessage(cPlayer, message)
TextStrokeTransparency = 0.75, TextStrokeTransparency = 0.75,
--Active = false; --Active = false;
} }
local pColor
if cPlayer.Neutral then if cPlayer.Neutral then
pLabel.TextColor3 = Chat:ComputeChatColor(pName) pLabel.TextColor3 = Chat:ComputeChatColor(pName)
else else
@ -1245,9 +1242,6 @@ function Chat:CreateMessage(cPlayer, message)
mLabel.Size = UDim2.new(1, 0, heightField / self.RenderFrame.AbsoluteSize.Y, 0) mLabel.Size = UDim2.new(1, 0, heightField / self.RenderFrame.AbsoluteSize.Y, 0)
pLabel.Size = mLabel.Size pLabel.Size = mLabel.Size
local yPixels = self.RenderFrame.AbsoluteSize.Y
local yFieldSize = mLabel.TextBounds.Y
local queueField = {} local queueField = {}
queueField["Player"] = pLabel queueField["Player"] = pLabel
queueField["Message"] = mLabel queueField["Message"] = mLabel
@ -1322,8 +1316,8 @@ function Chat:CreateSafeChatOptions(list, rootButton)
if type(list[msg]) == "table" then if type(list[msg]) == "table" then
text_List[rootButton][chatText] = Chat:CreateSafeChatOptions(list[msg], chatText) text_List[rootButton][chatText] = Chat:CreateSafeChatOptions(list[msg], chatText)
else -- else
--table.insert(text_List[chatText], true) -- --table.insert(text_List[chatText], true)
end end
chatText.MouseEnter:connect(function() chatText.MouseEnter:connect(function()
Chat:ToggleSafeChatMenu(chatText) Chat:ToggleSafeChatMenu(chatText)
@ -1335,11 +1329,11 @@ function Chat:CreateSafeChatOptions(list, rootButton)
chatText.MouseButton1Click:connect(function() chatText.MouseButton1Click:connect(function()
local lList = Chat:FindButtonTree(chatText) local lList = Chat:FindButtonTree(chatText)
if lList then -- if lList then
for i, v in pairs(lList) do -- for i, v in pairs(lList) do
end -- end
else -- else
end -- end
pcall(function() pcall(function()
PlayersService:Chat(lList[1]) PlayersService:Chat(lList[1])
end) end)
@ -1471,7 +1465,6 @@ function Chat:CreateChatBar()
TextColor3 = Color3.new(1, 1, 1), TextColor3 = Color3.new(1, 1, 1),
FontSize = Enum.FontSize.Size12, FontSize = Enum.FontSize.Size12,
ClearTextOnFocus = false, 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 -- 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 -- Just a wrapper around our PlayerChatted event
function Chat:PlayerChatted(...) function Chat:PlayerChatted(...)
local args = { ... } local args = { ... }
local argCount = select("#", ...) -- local argCount = select("#", ...)
local player local player
local message local message
-- This doesn't look very good, but what else to do? -- This doesn't look very good, but what else to do?
@ -1689,14 +1682,13 @@ function Chat:PlayerChatted(...)
if PlayersService.ClassicChat then if PlayersService.ClassicChat then
if string.sub(message, 1, 3) == "/e " or string.sub(message, 1, 7) == "/emote " then if string.sub(message, 1, 3) == "/e " or string.sub(message, 1, 7) == "/emote " then
-- don't do anything right now -- 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) 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 end
end end

View File

@ -5510,6 +5510,10 @@ globals:
args: args:
- type: number - type: number
- type: function - type: function
Delay:
args:
- type: number
- type: function
dofile: dofile:
removed: true removed: true
elapsedTime: elapsedTime:
@ -6896,6 +6900,17 @@ structs:
deprecated: deprecated:
message: this property is deprecated. message: this property is deprecated.
replace: [] replace: []
SaveToRoblox:
method: true
args:
- required: false
type: any
FinishShutdown:
method: true
args:
- required: false
type: any
GetService: GetService:
args: args:
- type: - type:
@ -7002,6 +7017,7 @@ structs:
- PackageUIService - PackageUIService
- PathfindingService - PathfindingService
- PermissionsService - PermissionsService
- PersonalServerService
- PhysicsService - PhysicsService
- PlayerEmulatorService - PlayerEmulatorService
- Players - Players
@ -7055,6 +7071,7 @@ structs:
- TeleportService - TeleportService
- TemporaryCageMeshProvider - TemporaryCageMeshProvider
- TemporaryScriptService - TemporaryScriptService
- Terrain
- TestService - TestService
- TextBoxService - TextBoxService
- TextChatService - TextChatService

View File

@ -1,59 +1,59 @@
while not Game do wait(0.1)end while not game:GetService'MarketplaceService'do 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 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, 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, k,l,m,n,o,p,q,r,s,t,u,v,w,x,y=nil,game:GetService'ContentProvider'.BaseUrl:
nil,nil,nil,nil,false,nil,false,true,nil,false,nil local r,s,t,u,v,w,x,y,z=0.3, lower(),nil,nil,nil,nil,nil,nil,nil,false,nil,false,true,nil,false,nil,0.3,UDim2
UDim2.new(0.5,-330,0.5,-200),UDim2.new(0.5,-330,1,25),nil,false,nil,450,{}, .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= 'http://www.roblox.com/Asset/?id='local z=y..'42557901'table.insert(x,z)local A=
z..'104651457'table.insert(y,B)local C=z..'104651515'table.insert(y,C)local D=z y..'104651457'table.insert(x,A)local B=y..'104651515'table.insert(x,B)local C=y
..'104651532'table.insert(y,D)local E=z..'104651592'table.insert(y,E)local F=z.. ..'104651532'table.insert(x,C)local D=y..'104651592'table.insert(x,D)local E=y..
'104651639'table.insert(y,F)local G=z..'104651665'table.insert(y,G)local H=z.. '104651639'table.insert(x,E)local F=y..'104651665'table.insert(x,F)local G=y..
'104651707'table.insert(y,H)local I=z..'104651733'table.insert(y,I)local J=z.. '104651707'table.insert(x,G)local H=y..'104651733'table.insert(x,H)local I=y..
'104651761'table.insert(y,J)local K=z..'102481431'table.insert(y,K)local L=z.. '104651761'table.insert(x,I)local J=y..'102481431'table.insert(x,J)local K=y..
'102481419'table.insert(y,L)local M,N,O,P,Q,R,S,T,U,V='Buy','Take', '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', 'An Error Occurred','in-game purchases are disabled',
'Roblox is performing maintenance','Your purchase of itemName succeeded!', '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.]] [[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 buy 'itemName' for currencyType currencyAmount?]],
"Would you like to take the assetType 'itemName' for FREE?", "Would you like to take the assetType 'itemName' for FREE?",
[[Your balance of Robux or Tix will not be affected by this transaction.]] [[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. function getSecureApiBaseUrl()local V=b V=string.gsub(V,'http','https')V=string.
gsub(W,'www','api')return W end function getRbxUtility()if not a then a= gsub(V,'www','api')return V end function getRbxUtility()if not a then a=
LoadLibrary'RbxUtility'end return a end function preloadAssets()for W=1,#y do LoadLibrary'RbxUtility'end return a end function preloadAssets()for V=1,#x do
game:GetService'ContentProvider':Preload(y[W])end end function 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 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. function closePurchasePrompt()p:TweenPosition(s,Enum.EasingDirection.Out,Enum.
EasingStyle.Quad,r,true,function()game.GuiService:RemoveCenterDialog(p) EasingStyle.Quad,q,true,function()game.GuiService:RemoveCenterDialog(p)
hidePurchasing()p.Visible=false o=false end)end function hidePurchasing()p.Visible=false o=false end)end function
userPurchaseActionsEnded(W)j=false if W then local X=string.gsub(R,'itemName', userPurchaseActionsEnded(V)j=false if V then local W=string.gsub(Q,'itemName',
tostring(c['Name']))p.BodyFrame.ItemPreview.ItemDescription.Text=X tostring(c['Name']))p.BodyFrame.ItemPreview.ItemDescription.Text=W
setButtonsVisible(p.BodyFrame.OkPurchasedButton)hidePurchasing()else 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( l then game:GetService'MarketplaceService':SignalPromptProductPurchaseFinished(
game.Players.LocalPlayer.userId,h,W)else game:GetService'MarketplaceService': game.Players.LocalPlayer.userId,h,V)else game:GetService'MarketplaceService':
SignalPromptPurchaseFinished(game.Players.LocalPlayer,d,W)end SignalPromptPurchaseFinished(game.Players.LocalPlayer,d,V)end
removeCurrentPurchaseInfo()end function updatePurchasePromptData(W)local X=''if removeCurrentPurchaseInfo()end function updatePurchasePromptData(V)local W=''if
not h then h=c['ProductId']end if isFreeItem()then X=string.gsub(U,'itemName', not h then h=c['ProductId']end if isFreeItem()then W=string.gsub(T,'itemName',
tostring(c['Name']))X=string.gsub(X,'assetType',tostring(assetTypeToString(c[ tostring(c['Name']))W=string.gsub(W,'assetType',tostring(assetTypeToString(c[
'AssetTypeId'])))setHeaderText(N)else X=string.gsub(T,'itemName',tostring(c[ 'AssetTypeId'])))setHeaderText(M)else W=string.gsub(S,'itemName',tostring(c[
'Name']))X=string.gsub(X,'currencyType',tostring(currencyTypeToString(e)))X= 'Name']))W=string.gsub(W,'currencyType',tostring(currencyTypeToString(e)))W=
string.gsub(X,'currencyAmount',tostring(f))setHeaderText(M)end p.BodyFrame. string.gsub(W,'currencyAmount',tostring(f))setHeaderText(L)end p.BodyFrame.
ItemPreview.ItemDescription.Text=X if l then p.BodyFrame.ItemPreview.Image=b.. ItemPreview.ItemDescription.Text=W if l then p.BodyFrame.ItemPreview.Image=b..
'thumbs/asset.ashx?assetid='..tostring(c['IconImageAssetId']).. 'thumbs/asset.ashx?assetid='..tostring(c['IconImageAssetId'])..
'&x=100&y=100&format=png'else p.BodyFrame.ItemPreview.Image=b.. '&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 'thumbs/asset.ashx?assetid='..tostring(d)..'&x=100&y=100&format=png'end end
function doPlayerFundsCheck(W)if j then canPurchase,insufficientFunds= function doPlayerFundsCheck(V)if j then canPurchase,insufficientFunds=
canPurchaseItem()if canPurchase and insufficientFunds then local X=1000 while(X> canPurchaseItem()if canPurchase and insufficientFunds then local W=1000 while(W>
0 or W)and insufficientFunds and j and canPurchase do wait(0.1)canPurchase, 0 or V)and insufficientFunds and j and canPurchase do wait(0.1)canPurchase,
insufficientFunds=canPurchaseItem()X=X-1 end end if canPurchase and not insufficientFunds=canPurchaseItem()W=W-1 end end if canPurchase and not
insufficientFunds then setButtonsVisible(p.BodyFrame.BuyButton,p.BodyFrame. insufficientFunds then setButtonsVisible(p.BodyFrame.BuyButton,p.BodyFrame.
CancelButton,p.BodyFrame.AfterBalanceButton)end end end function CancelButton,p.BodyFrame.AfterBalanceButton)end end end function
showPurchasePrompt()local W,X,Y,Z,_=canPurchaseItem()if W then showPurchasePrompt()local V,W,X,Y,Z=canPurchaseItem()if V then
updatePurchasePromptData()if Z and _ then p.BodyFrame.ItemPreview. updatePurchasePromptData()if Y and Z then p.BodyFrame.ItemPreview.
ItemDescription.Text=_ p.BodyFrame.AfterBalanceButton.Visible=false end game. ItemDescription.Text=Z p.BodyFrame.AfterBalanceButton.Visible=false end game.
GuiService:AddCenterDialog(p,Enum.CenterDialogType.ModalDialog,function()p. GuiService:AddCenterDialog(p,Enum.CenterDialogType.ModalDialog,function()p.
Visible=true if isFreeItem()then setButtonsVisible(p.BodyFrame.FreeButton,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= AfterBalanceButton.Text=
[[You require an upgrade to your Builders Club membership to purchase this item. Click here to upgrade.]] [[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( 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.]] [[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. then openBCUpSellWindow()end end)end setButtonsVisible(p.BodyFrame.
BuyDisabledButton,p.BodyFrame.CancelButton,p.BodyFrame.AfterBalanceButton)elseif BuyDisabledButton,p.BodyFrame.CancelButton,p.BodyFrame.AfterBalanceButton)elseif
X then setButtonsVisible(p.BodyFrame.BuyDisabledButton,p.BodyFrame.CancelButton, W then setButtonsVisible(p.BodyFrame.BuyDisabledButton,p.BodyFrame.CancelButton,
p.BodyFrame.AfterBalanceButton)elseif Z then setButtonsVisible(p.BodyFrame. p.BodyFrame.AfterBalanceButton)elseif Y then setButtonsVisible(p.BodyFrame.
BuyDisabledButton,p.BodyFrame.CancelButton)else setButtonsVisible(p.BodyFrame. BuyDisabledButton,p.BodyFrame.CancelButton)else setButtonsVisible(p.BodyFrame.
BuyButton,p.BodyFrame.CancelButton)end p:TweenPosition(s,Enum.EasingDirection. BuyButton,p.BodyFrame.CancelButton)end p:TweenPosition(r,Enum.EasingDirection.
Out,Enum.EasingStyle.Quad,r,true)if W and X and not m then j=true 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 doPlayerFundsCheck(true)end end,function()p.Visible=false end)else
doDeclinePurchase()end end function getToolAssetID(W)local X=game:GetService doDeclinePurchase()end end function getToolAssetID(V)local W=game:GetService
'InsertService':LoadAsset(W)if not X then return nil end if X:IsA'Tool'then 'InsertService':LoadAsset(V)if not W then return nil end if W:IsA'Tool'then
return X end local Y=X:GetChildren()for Z=1,#Y do if Y[Z]:IsA'Tool'then return Y return W end local X=W:GetChildren()for Y=1,#X do if X[Y]:IsA'Tool'then return X
[Z]end end return nil end function purchaseFailed(W)local X='Item'if c then X=c[ [Y]end end return nil end function purchaseFailed(V)local W='Item'if c then W=c[
'Name']end local Y=string.gsub(S,'itemName',tostring(X))if W then Y=string.gsub( 'Name']end local X=string.gsub(R,'itemName',tostring(W))if V then X=string.gsub(
Y,'errorReason',tostring(P))else Y=string.gsub(Y,'errorReason',tostring(Q))end p X,'errorReason',tostring(O))else X=string.gsub(X,'errorReason',tostring(P))end p
.BodyFrame.ItemPreview.ItemDescription.Text=Y p.BodyFrame.ItemPreview.Image=A .BodyFrame.ItemPreview.ItemDescription.Text=X p.BodyFrame.ItemPreview.Image=z
setButtonsVisible(p.BodyFrame.OkButton)setHeaderText(O)hidePurchasing()end setButtonsVisible(p.BodyFrame.OkButton)setHeaderText(N)hidePurchasing()end
function doAcceptPurchase(W)showPurchasing()local X,Y,Z=tick(),'none',nil if l function doAcceptPurchase(V)showPurchasing()local W,X,Y=tick(),'none',nil if l
then Z=getSecureApiBaseUrl()..'marketplace/submitpurchase?productId='..tostring( then Y=getSecureApiBaseUrl()..'marketplace/submitpurchase?productId='..tostring(
h)..'&currencyTypeId='..tostring(currencyEnumToInt(e))..'&expectedUnitPrice='.. h)..'&currencyTypeId='..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)..'&currencyTypeId='..tostring( 'marketplace/purchase?productId='..tostring(h)..'&currencyTypeId='..tostring(
currencyEnumToInt(e))..'&purchasePrice='..tostring(f)..'&locationType=Game'.. currencyEnumToInt(e))..'&purchasePrice='..tostring(f)..'&locationType=Game'..
'&locationId='..Game.PlaceId end local _,aa=ypcall(function()Y=game: '&locationId='..Game.PlaceId end local Z,_=ypcall(function()X=game:
HttpPostAsync(Z,'RobloxPurchaseRequest')end)print( HttpPostAsync(Y,'RobloxPurchaseRequest')end)print(
'doAcceptPurchase success from ypcall is ',_,'reason is',aa)if(tick()-X)<1 then 'doAcceptPurchase success from ypcall is ',Z,'reason is',_)if(tick()-W)<1 then
wait(1)end if Y=='none'or Y==nil or Y==''then print( 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() '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 return end X=getRbxUtility().DecodeJSON(X)if X then if X['success']==false then
if Y['status']~='AlreadyOwned'then print( if X['status']~='AlreadyOwned'then print(
'web return response of fail on purchase of',d,h)purchaseFailed((Y['status']== 'web return response of fail on purchase of',d,h)purchaseFailed((X['status']==
'EconomyDisabled'))return end end else print( 'EconomyDisabled'))return end end else print(
'web return response of non parsable JSON on purchase of',d)purchaseFailed() '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= return end if g and Z and d and tonumber(c['AssetTypeId'])==19 then local aa=
getToolAssetID(tonumber(d))if ab then ab.Parent=game.Players.LocalPlayer. getToolAssetID(tonumber(d))if aa then aa.Parent=game.Players.LocalPlayer.
Backpack end end if l then if not Y['receipt']then print( Backpack end end if l then if not X['receipt']then print(
[[tried to buy productId, but no receipt returned. productId was]],h) [[tried to buy productId, but no receipt returned. productId was]],h)
purchaseFailed()return end Game:GetService'MarketplaceService': purchaseFailed()return end Game:GetService'MarketplaceService':
SignalClientPurchaseSuccess(tostring(Y['receipt']),game.Players.LocalPlayer. SignalClientPurchaseSuccess(tostring(X['receipt']),game.Players.LocalPlayer.
userId,h)else userPurchaseActionsEnded(_)end end function doDeclinePurchase() userId,h)else userPurchaseActionsEnded(Z)end end function doDeclinePurchase()
userPurchaseActionsEnded(false)end function currencyEnumToInt(aa)if aa==Enum. userPurchaseActionsEnded(false)end function currencyEnumToInt(aa)if aa==Enum.
CurrencyType.Robux or aa==Enum.CurrencyType.Default then return 1 elseif aa== 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 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 'YouTube Video'elseif aa==34 then return'Game Pass'elseif aa==0 then return
'Product'end return''end function currencyTypeToString(aa)if aa==Enum. 'Product'end return''end function currencyTypeToString(aa)if aa==Enum.
CurrencyType.Tix then return'Tix'else return'R$'end end function 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 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 else f=V e=Enum.CurrencyType.Tix end elseif e==Enum.CurrencyType.Tix then if V~=
~=nil and ab~=0 then f=ab e=Enum.CurrencyType.Tix else f=aa e=Enum.CurrencyType. 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 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: function getPlayerBalance()local aa=nil local V,W=ypcall(function()aa=game:
HttpGetAsync(getSecureApiBaseUrl()..'currency/balance')end)if not ab then print( HttpGetAsync(getSecureApiBaseUrl()..'currency/balance')end)if not V then print(
'Get player balance failed because',W)return nil end if aa==''then return nil 'Get player balance failed because',W)return nil end if aa==''then return nil
end aa=getRbxUtility().DecodeJSON(aa)return aa end function end aa=getRbxUtility().DecodeJSON(aa)return aa end function
openBuyCurrencyWindow()j=true game:GetService'GuiService':OpenBrowserWindow(b.. openBuyCurrencyWindow()j=true game:GetService'GuiService':OpenBrowserWindow(b..
'Upgrades/Robux.aspx')end function openBCUpSellWindow()Game:GetService 'Upgrades/Robux.aspx')end function openBCUpSellWindow()Game:GetService
'GuiService':OpenBrowserWindow(b..'Upgrades/BuildersClubMemberships.aspx')end 'GuiService':OpenBrowserWindow(b..'Upgrades/BuildersClubMemberships.aspx')end
function updateAfterBalanceText(aa,ab)if isFreeItem()then p.BodyFrame. function updateAfterBalanceText(aa,V)if isFreeItem()then p.BodyFrame.
AfterBalanceButton.Text=V return true,false end local W=nil if e==Enum. 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= 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 '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( then n=p.BodyFrame.AfterBalanceButton.MouseButton1Click:connect(
openBuyCurrencyWindow)end p.BodyFrame.AfterBalanceButton.Text='You need '.. openBuyCurrencyWindow)end p.BodyFrame.AfterBalanceButton.Text='You need '..
currencyTypeToString(e)..' '..tostring(-Y).. 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. aa==Enum.MembershipType.BuildersClub then return 1 elseif aa==Enum.
MembershipType.TurboBuildersClub then return 2 elseif aa==Enum.MembershipType. MembershipType.TurboBuildersClub then return 2 elseif aa==Enum.MembershipType.
OutrageousBuildersClub then return 3 end return-1 end function canPurchaseItem() 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 local aa,V,W,X=false,false,nil,false if l then local Y=nil X=ypcall(function()Y=
=Game:HttpGetAsync(getSecureApiBaseUrl().. Game:HttpGetAsync(getSecureApiBaseUrl()..'marketplace/productDetails?productid='
'marketplace/productDetails?productid='..tostring(h))end)if X then c= ..tostring(h))end)if X then c=getRbxUtility().DecodeJSON(Y)end else X=ypcall(
getRbxUtility().DecodeJSON(Y)end else X=ypcall(function()c=game:GetService function()c=game:GetService'MarketplaceService':GetProductInfo(d)end)end if c==
'MarketplaceService':GetProductInfo(d)end)end if c==nil or not X then W= nil or not X then W=
[[In-game sales are temporarily disabled. Please try again later.]]return true, [[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 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 '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= 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, 'Could not retrieve your balance. Please try again later.'return true,nil,nil,
true,W end if tonumber(c['MinimumMembershipLevel'])>membershipTypeToNumber(game. true,W end if tonumber(c['MinimumMembershipLevel'])>membershipTypeToNumber(game.
Players.LocalPlayer.MembershipType)then ab=true end local Z,_= Players.LocalPlayer.MembershipType)then V=true end local Z,_=
updateAfterBalanceText(Y,ab)if ab then p.BodyFrame.AfterBalanceButton.Active= updateAfterBalanceText(Y,V)if V then p.BodyFrame.AfterBalanceButton.Active=true
true return true,_,ab,false end if c['ContentRatingTypeId']==1 then if game. return true,_,V,false end if c['ContentRatingTypeId']==1 then if game.Players.
Players.LocalPlayer:GetUnder13()then W= LocalPlayer:GetUnder13()then W=
[[Your account is under 13 so purchase of this item is not allowed.]]return true [[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) ,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= 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= 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 [[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 ,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. 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 Parent=aa.Parent W.BackgroundTransparency=1 W.Text=V W.Name='SpaceButton'while W
W.TextBounds.X<aa.TextBounds.X do ab=ab..' 'W.Text=ab end ab=ab..' 'W.Text='' .TextBounds.X<aa.TextBounds.X do V=V..' 'W.Text=V end V=V..' 'W.Text=''return V
return ab end function startSpinner()v=true Spawn(function()local aa=0 while v end function startSpinner()u=true Spawn(function()local aa=0 while u do local V=
do local ab=0 while ab<8 do if ab==aa or ab==((aa+1)%8)then w[ab+1].Image= 0 while V<8 do if V==aa or V==((aa+1)%8)then v[V+1].Image=
'http://www.roblox.com/Asset/?id=45880668'else w[ab+1].Image= 'http://www.roblox.com/Asset/?id=45880668'else v[V+1].Image=
'http://www.roblox.com/Asset/?id=45880710'end ab=ab+1 end aa=(aa+1)%8 wait( 'http://www.roblox.com/Asset/?id=45880710'end V=V+1 end aa=(aa+1)%8 wait(
6.666666666666666E-2)end end)end function stopSpinner()v=false end function 6.666666666666666E-2)end end)end function stopSpinner()u=false end function
setButtonsVisible(...)local aa,ab,W={...},select('#',...),p.BodyFrame: setButtonsVisible(...)local aa,V,W={...},select('#',...),p.BodyFrame:
GetChildren()for X=1,#W do if W[X]:IsA'GuiButton'then W[X].Visible=false for Y=1 GetChildren()for X=1,#W do if W[X]:IsA'GuiButton'then W[X].Visible=false for Y=1
,ab do if W[X]==aa[Y]then W[X].Visible=true break end end end end end function ,V do if W[X]==aa[Y]then W[X].Visible=true break end end end end end function
createSpinner(aa,ab,W)local X=Instance.new'Frame'X.Name='Spinner'X.Size=aa X. createSpinner(aa,V,W)local X=Instance.new'Frame'X.Name='Spinner'X.Size=aa X.
Position=ab X.BackgroundTransparency=1 X.ZIndex=10 X.Parent=W w={}local Y=1 Position=V X.BackgroundTransparency=1 X.ZIndex=10 X.Parent=W v={}local Y=1 while
while Y<=8 do local Z=Instance.new'ImageLabel'Z.Name='Spinner'..Y Z.Size=UDim2. Y<=8 do local Z=Instance.new'ImageLabel'Z.Name='Spinner'..Y Z.Size=UDim2.new(0,
new(0,16,0,16)Z.Position=UDim2.new(0.5+0.3*math.cos(math.rad(45*Y)),-8,0.5+0.3* 16,0,16)Z.Position=UDim2.new(0.5+0.3*math.cos(math.rad(45*Y)),-8,0.5+0.3*math.
math.sin(math.rad(45*Y)),-8)Z.BackgroundTransparency=1 Z.ZIndex=10 Z.Image= sin(math.rad(45*Y)),-8)Z.BackgroundTransparency=1 Z.ZIndex=10 Z.Image=
'http://www.roblox.com/Asset/?id=45880710'Z.Parent=X w[Y]=Z Y=Y+1 end end 'http://www.roblox.com/Asset/?id=45880710'Z.Parent=X v[Y]=Z Y=Y+1 end end
function createPurchasePromptGui()p=Instance.new'Frame'p.Name='PurchaseFrame'p. function createPurchasePromptGui()p=Instance.new'Frame'p.Name='PurchaseFrame'p.
Size=UDim2.new(0,660,0,400)p.Position=t p.Visible=false p.BackgroundColor3= Size=UDim2.new(0,660,0,400)p.Position=s p.Visible=false p.BackgroundColor3=
Color3.new(0.5529411764705883,0.5529411764705883,0.5529411764705883)p. Color3.new(0.5529411764705883,0.5529411764705883,0.5529411764705883)p.
BorderColor3=Color3.new(0.8,0.8,0.8)p.Parent=game.CoreGui.RobloxGui local aa= BorderColor3=Color3.new(0.8,0.8,0.8)p.Parent=game.CoreGui.RobloxGui local aa=
Instance.new'Frame'aa.Name='BodyFrame'aa.Size=UDim2.new(1,0,1,-60)aa.Position= Instance.new'Frame'aa.Name='BodyFrame'aa.Size=UDim2.new(1,0,1,-60)aa.Position=
UDim2.new(0,0,0,60)aa.BackgroundColor3=Color3.new(0.2627450980392157, UDim2.new(0,0,0,60)aa.BackgroundColor3=Color3.new(0.2627450980392157,
0.2627450980392157,0.2627450980392157)aa.BorderSizePixel=0 aa.ZIndex=8 aa.Parent 0.2627450980392157,0.2627450980392157)aa.BorderSizePixel=0 aa.ZIndex=8 aa.Parent
=p local ab=createTextObject('TitleLabel','Buy Item','TextLabel',Enum.FontSize. =p local V=createTextObject('TitleLabel','Buy Item','TextLabel',Enum.FontSize.
Size48)ab.ZIndex=8 ab.Size=UDim2.new(1,0,0,60)local W=ab:Clone()W.Name= Size48)V.ZIndex=8 V.Size=UDim2.new(1,0,0,60)local W=V:Clone()W.Name=
'TitleBackdrop'W.TextColor3=Color3.new(0.12549019607843137,0.12549019607843137, 'TitleBackdrop'W.TextColor3=Color3.new(0.12549019607843137,0.12549019607843137,
0.12549019607843137)W.BackgroundTransparency=0 W.BackgroundColor3=Color3.new( 0.12549019607843137)W.BackgroundTransparency=0 W.BackgroundColor3=Color3.new(
0.21176470588235294,0.3764705882352941,0.6705882352941176)W.Position=UDim2.new(0 0.21176470588235294,0.3764705882352941,0.6705882352941176)W.Position=UDim2.new(0
,0,0,-2)W.ZIndex=8 W.Parent=p ab.Parent=p local X,Y=90,createImageButton ,0,0,-2)W.ZIndex=8 W.Parent=p V.Parent=p local X,Y=90,createImageButton
'CancelButton'Y.Position=UDim2.new(0.5,(X/2),1,-120)Y.BackgroundTransparency=1 Y 'CancelButton'Y.Position=UDim2.new(0.5,(X/2),1,-120)Y.BackgroundTransparency=1 Y
.BorderSizePixel=0 Y.Parent=aa Y.Modal=true Y.ZIndex=8 Y.Image=E Y. .BorderSizePixel=0 Y.Parent=aa Y.Modal=true Y.ZIndex=8 Y.Image=D Y.
MouseButton1Down:connect(function()Y.Image=F end)Y.MouseButton1Up:connect( MouseButton1Down:connect(function()Y.Image=E end)Y.MouseButton1Up:connect(
function()Y.Image=E end)Y.MouseLeave:connect(function()Y.Image=E end)Y. function()Y.Image=D end)Y.MouseLeave:connect(function()Y.Image=D end)Y.
MouseButton1Click:connect(doDeclinePurchase)local Z=createImageButton'BuyButton' MouseButton1Click:connect(doDeclinePurchase)local Z=createImageButton'BuyButton'
Z.Position=UDim2.new(0.5,-153-(X/2),1,-120)Z.BackgroundTransparency=1 Z. Z.Position=UDim2.new(0.5,-153-(X/2),1,-120)Z.BackgroundTransparency=1 Z.
BorderSizePixel=0 Z.Image=B Z.ZIndex=8 Z.MouseButton1Down:connect(function()Z. BorderSizePixel=0 Z.Image=A Z.ZIndex=8 Z.MouseButton1Down:connect(function()Z.
Image=C end)Z.MouseButton1Up:connect(function()Z.Image=B end)Z.MouseLeave: Image=B end)Z.MouseButton1Up:connect(function()Z.Image=A end)Z.MouseLeave:
connect(function()Z.Image=B end)Z.Parent=aa local _=Z:Clone()_.Name= connect(function()Z.Image=A end)Z.Parent=aa local _=Z:Clone()_.Name=
'BuyDisabledButton'_.AutoButtonColor=false _.Visible=false _.Active=false _. 'BuyDisabledButton'_.AutoButtonColor=false _.Visible=false _.Active=false _.
Image=D _.ZIndex=8 _.Parent=aa local ac=Z:Clone()ac.BackgroundTransparency=1 ac. Image=C _.ZIndex=8 _.Parent=aa local ab=Z:Clone()ab.BackgroundTransparency=1 ab.
Name='FreeButton'ac.Visible=false ac.ZIndex=8 ac.Image=I ac.MouseButton1Down: Name='FreeButton'ab.Visible=false ab.ZIndex=8 ab.Image=H ab.MouseButton1Down:
connect(function()ac.Image=J end)ac.MouseButton1Up:connect(function()ac.Image=I connect(function()ab.Image=I end)ab.MouseButton1Up:connect(function()ab.Image=H
end)ac.MouseLeave:connect(function()ac.Image=I end)ac.Parent=aa local ad=Z: end)ab.MouseLeave:connect(function()ab.Image=H end)ab.Parent=aa local ac=Z:
Clone()ad.Name='OkButton'ad.BackgroundTransparency=1 ad.Visible=false ad. Clone()ac.Name='OkButton'ac.BackgroundTransparency=1 ac.Visible=false ac.
Position=UDim2.new(0.5,-ad.Size.X.Offset/2,1,-120)ad.Modal=true ad.Image=G ad. Position=UDim2.new(0.5,-ac.Size.X.Offset/2,1,-120)ac.Modal=true ac.Image=F ac.
ZIndex=8 ad.MouseButton1Down:connect(function()ad.Image=H end)ad.MouseButton1Up: ZIndex=8 ac.MouseButton1Down:connect(function()ac.Image=G end)ac.MouseButton1Up:
connect(function()ad.Image=G end)ad.MouseLeave:connect(function()ad.Image=G end) connect(function()ac.Image=F end)ac.MouseLeave:connect(function()ac.Image=F end)
ad.Parent=aa local ae=ad:Clone()ae.ZIndex=8 ae.Name='OkPurchasedButton'ae. ac.Parent=aa local ad=ac:Clone()ad.ZIndex=8 ad.Name='OkPurchasedButton'ad.
MouseButton1Down:connect(function()ae.Image=H end)ae.MouseButton1Up:connect( MouseButton1Down:connect(function()ad.Image=G end)ad.MouseButton1Up:connect(
function()ae.Image=G end)ae.MouseLeave:connect(function()ae.Image=G end)ae. function()ad.Image=F end)ad.MouseLeave:connect(function()ad.Image=F end)ad.
Parent=aa ad.MouseButton1Click:connect(function()userPurchaseActionsEnded(false) Parent=aa ac.MouseButton1Click:connect(function()userPurchaseActionsEnded(false)
end)ae.MouseButton1Click:connect(function()if l then end)ad.MouseButton1Click:connect(function()if l then
userPurchaseProductActionsEnded(true)else signalPromptEnded(true)end end)Z. userPurchaseProductActionsEnded(true)else signalPromptEnded(true)end end)Z.
MouseButton1Click:connect(function()doAcceptPurchase(Enum.CurrencyType.Robux)end MouseButton1Click:connect(function()doAcceptPurchase(Enum.CurrencyType.Robux)end
)ac.MouseButton1Click:connect(function()doAcceptPurchase(false)end)local af= )ab.MouseButton1Click:connect(function()doAcceptPurchase(false)end)local ae=
Instance.new'ImageLabel'af.Name='ItemPreview'af.BackgroundColor3=Color3.new( Instance.new'ImageLabel'ae.Name='ItemPreview'ae.BackgroundColor3=Color3.new(
0.12549019607843137,0.12549019607843137,0.12549019607843137)af.BorderColor3= 0.12549019607843137,0.12549019607843137,0.12549019607843137)ae.BorderColor3=
Color3.new(0.5529411764705883,0.5529411764705883,0.5529411764705883)af.Position= Color3.new(0.5529411764705883,0.5529411764705883,0.5529411764705883)ae.Position=
UDim2.new(0,30,0,20)af.Size=UDim2.new(0,180,0,180)af.ZIndex=9 af.Parent=aa local UDim2.new(0,30,0,20)ae.Size=UDim2.new(0,180,0,180)ae.ZIndex=9 ae.Parent=aa local
ag=createTextObject('ItemDescription', af=createTextObject('ItemDescription',
[[Would you like to buy the 'itemName' for currencyType currencyAmount?]], [[Would you like to buy the 'itemName' for currencyType currencyAmount?]],
'TextLabel',Enum.FontSize.Size24)ag.Position=UDim2.new(1,20,0,0)ag.Size=UDim2. 'TextLabel',Enum.FontSize.Size24)af.Position=UDim2.new(1,20,0,0)af.Size=UDim2.
new(0,410,1,0)ag.ZIndex=8 ag.Parent=af local ah=createTextObject( new(0,410,1,0)af.ZIndex=8 af.Parent=ae local ag=createTextObject(
'AfterBalanceButton','Place holder text ip sum lorem dodo ashs','TextButton', 'AfterBalanceButton','Place holder text ip sum lorem dodo ashs','TextButton',
Enum.FontSize.Size24)ah.AutoButtonColor=false ah.TextColor3=Color3.new( Enum.FontSize.Size24)ag.AutoButtonColor=false ag.TextColor3=Color3.new(
0.8705882352941177,0.23137254901960785,0.11764705882352941)ah.Position=UDim2. 0.8705882352941177,0.23137254901960785,0.11764705882352941)ag.Position=UDim2.
new(0,5,1,-55)ah.Size=UDim2.new(1,-10,0,50)ah.ZIndex=8 ah.Parent=aa local ai= new(0,5,1,-55)ag.Size=UDim2.new(1,-10,0,50)ag.ZIndex=8 ag.Parent=aa local ah=
Instance.new'Frame'ai.Name='PurchasingFrame'ai.Size=UDim2.new(1,0,1,0)ai. Instance.new'Frame'ah.Name='PurchasingFrame'ah.Size=UDim2.new(1,0,1,0)ah.
BackgroundColor3=Color3.new(0,0,0)ai.BackgroundTransparency=0.2 ai. BackgroundColor3=Color3.new(0,0,0)ah.BackgroundTransparency=0.2 ah.
BorderSizePixel=0 ai.ZIndex=9 ai.Visible=false ai.Active=true ai.Parent=p local BorderSizePixel=0 ah.ZIndex=9 ah.Visible=false ah.Active=true ah.Parent=p local
aj=createTextObject('PurchasingLabel','Purchasing...','TextLabel',Enum.FontSize. ai=createTextObject('PurchasingLabel','Purchasing...','TextLabel',Enum.FontSize.
Size48)aj.Size=UDim2.new(1,0,1,0)aj.ZIndex=10 aj.Parent=ai createSpinner(UDim2. Size48)ai.Size=UDim2.new(1,0,1,0)ai.ZIndex=10 ai.Parent=ah createSpinner(UDim2.
new(0,50,0,50),UDim2.new(0.5,-25,0.5,30),aj)end function showPurchasing() new(0,50,0,50),UDim2.new(0.5,-25,0.5,30),ai)end function showPurchasing()
startSpinner()p.PurchasingFrame.Visible=true end function hidePurchasing()p. startSpinner()p.PurchasingFrame.Visible=true end function hidePurchasing()p.
PurchasingFrame.Visible=false stopSpinner()end function createTextObject(aa,ab, PurchasingFrame.Visible=false stopSpinner()end function createTextObject(aa,ab,
ac,ad)local ae=Instance.new(ac)ae.Font=Enum.Font.ArialBold ae.TextColor3=Color3. ac,ad)local ae=Instance.new(ac)ae.Font=Enum.Font.ArialBold ae.TextColor3=Color3.
@ -278,7 +278,7 @@ i['isValid']):lower()=='true'then ab=true end Game:GetService
'MarketplaceService':SignalPromptProductPurchaseFinished(tonumber(i['playerId']) 'MarketplaceService':SignalPromptProductPurchaseFinished(tonumber(i['playerId'])
,tonumber(i['productId']),ab)else print ,tonumber(i['productId']),ab)else print
'Something went wrong, no currentServerResponseTable'end 'Something went wrong, no currentServerResponseTable'end
removeCurrentPurchaseInfo()else local ab=string.gsub(R,'itemName',tostring(c[ removeCurrentPurchaseInfo()else local ab=string.gsub(Q,'itemName',tostring(c[
'Name']))p.BodyFrame.ItemPreview.ItemDescription.Text=ab setButtonsVisible(p. 'Name']))p.BodyFrame.ItemPreview.ItemDescription.Text=ab setButtonsVisible(p.
BodyFrame.OkPurchasedButton)hidePurchasing()end end function BodyFrame.OkPurchasedButton)hidePurchasing()end end function
doProcessServerPurchaseResponse(aa)if not aa then print doProcessServerPurchaseResponse(aa)if not aa then print
@ -292,7 +292,7 @@ doPurchasePrompt(aa,ab,ac,ad,nil)end)Game:GetService'MarketplaceService'.
ServerPurchaseVerification:connect(function(aa)doProcessServerPurchaseResponse( ServerPurchaseVerification:connect(function(aa)doProcessServerPurchaseResponse(
aa)end)if m then Game:GetService'GuiService'.BrowserWindowClosed:connect( aa)end)if m then Game:GetService'GuiService'.BrowserWindowClosed:connect(
function()doPlayerFundsCheck(false)end)end Game.CoreGui.RobloxGui.Changed: function()doPlayerFundsCheck(false)end)end Game.CoreGui.RobloxGui.Changed:
connect(function()local aa=(game.CoreGui.RobloxGui.AbsoluteSize.Y<=x)if aa and connect(function()local aa=(game.CoreGui.RobloxGui.AbsoluteSize.Y<=w)if aa and
not u then changeGuiToScreenSize(true)elseif not aa and u then not t then changeGuiToScreenSize(true)elseif not aa and t then
changeGuiToScreenSize(false)end u=aa end)u=(game.CoreGui.RobloxGui.AbsoluteSize. changeGuiToScreenSize(false)end t=aa end)t=(game.CoreGui.RobloxGui.AbsoluteSize.
Y<=x)if u then changeGuiToScreenSize(true)end Y<=w)if t then changeGuiToScreenSize(true)end

View File

@ -9,45 +9,42 @@ local k=#j Game:GetService'ContentProvider':Preload(g)Game:GetService
Players.LocalPlayer do wait()end function createContextActionGui()if not e and b Players.LocalPlayer do wait()end function createContextActionGui()if not e and b
then e=Instance.new'ScreenGui'e.Name='ContextActionGui'f=Instance.new'Frame'f. then e=Instance.new'ScreenGui'e.Name='ContextActionGui'f=Instance.new'Frame'f.
BackgroundTransparency=1 f.Size=UDim2.new(0.3,0,0.5,0)f.Position=UDim2.new(0.7,0 BackgroundTransparency=1 f.Size=UDim2.new(0.3,0,0.5,0)f.Position=UDim2.new(0.7,0
,0.5,0)f.Name='ContextButtonFrame'f.Parent=e end end function ,0.5,0)f.Name='ContextButtonFrame'f.Parent=e end end function contextButtonDown(
setButtonSizeAndPosition(l)local m,n,o,p=55,10,95,(game.CoreGui.RobloxGui. l,m,n)if m.UserInputType==Enum.UserInputType.Touch then l.Image=g a:
AbsoluteSize.X<600)if not p then m=85 n=40 end l.Size=UDim2.new(0,m,0,m)end CallFunction(n,Enum.UserInputState.Begin,m)end end function contextButtonMoved(l
function contextButtonDown(l,m,n)if m.UserInputType==Enum.UserInputType.Touch ,m,n)if m.UserInputType==Enum.UserInputType.Touch then l.Image=g a:CallFunction(
then l.Image=g a:CallFunction(n,Enum.UserInputState.Begin,m)end end function n,Enum.UserInputState.Change,m)end end function contextButtonUp(l,m,n)l.Image=h
contextButtonMoved(l,m,n)if m.UserInputType==Enum.UserInputType.Touch then l. if m.UserInputType==Enum.UserInputType.Touch and m.UserInputState==Enum.
Image=g a:CallFunction(n,Enum.UserInputState.Change,m)end end function UserInputState.End then a:CallFunction(n,Enum.UserInputState.End,m)end end
contextButtonUp(l,m,n)l.Image=h if m.UserInputType==Enum.UserInputType.Touch and function isSmallScreenDevice()return Game:GetService'GuiService':
m.UserInputState==Enum.UserInputState.End then a:CallFunction(n,Enum. GetScreenResolution().y<=320 end function createNewButton(l,m)local n=Instance.
UserInputState.End,m)end end function isSmallScreenDevice()return Game: new'ImageButton'n.Name='ContextActionButton'n.BackgroundTransparency=1 n.Size=
GetService'GuiService':GetScreenResolution().y<=320 end function createNewButton UDim2.new(0,90,0,90)n.Active=true if isSmallScreenDevice()then n.Size=UDim2.new(
(l,m)local n=Instance.new'ImageButton'n.Name='ContextActionButton'n. 0,70,0,70)end n.Image=h n.Parent=f local o=nil Game:GetService'UserInputService'
BackgroundTransparency=1 n.Size=UDim2.new(0,90,0,90)n.Active=true if .InputEnded:connect(function(p)i[p]=nil end)n.InputBegan:connect(function(p)if i
isSmallScreenDevice()then n.Size=UDim2.new(0,70,0,70)end n.Image=h n.Parent=f [p]then return end if p.UserInputState==Enum.UserInputState.Begin and o==nil
local o=nil Game:GetService'UserInputService'.InputEnded:connect(function(p)i[p] then o=p contextButtonDown(n,p,l)end end)n.InputChanged:connect(function(p)if i[
=nil end)n.InputBegan:connect(function(p)if i[p]then return end if p. p]then return end if o~=p then return end contextButtonMoved(n,p,l)end)n.
UserInputState==Enum.UserInputState.Begin and o==nil then o=p contextButtonDown( InputEnded:connect(function(p)if i[p]then return end if o~=p then return end o=
n,p,l)end end)n.InputChanged:connect(function(p)if i[p]then return end if o~=p nil i[p]=true contextButtonUp(n,p,l)end)local p=Instance.new'ImageLabel'p.Name=
then return end contextButtonMoved(n,p,l)end)n.InputEnded:connect(function(p)if 'ActionIcon'p.Position=UDim2.new(0.175,0,0.175,0)p.Size=UDim2.new(0.65,0,0.65,0)
i[p]then return end if o~=p then return end o=nil i[p]=true contextButtonUp(n,p, p.BackgroundTransparency=1 if m['image']and type(m['image'])=='string'then p.
l)end)local p=Instance.new'ImageLabel'p.Name='ActionIcon'p.Position=UDim2.new( Image=m['image']end p.Parent=n local q=Instance.new'TextLabel'q.Name=
0.175,0,0.175,0)p.Size=UDim2.new(0.65,0,0.65,0)p.BackgroundTransparency=1 if m[ 'ActionTitle'q.Size=UDim2.new(1,0,1,0)q.BackgroundTransparency=1 q.Font=Enum.
'image']and type(m['image'])=='string'then p.Image=m['image']end p.Parent=n Font.SourceSansBold q.TextColor3=Color3.new(1,1,1)q.TextStrokeTransparency=0 q.
local q=Instance.new'TextLabel'q.Name='ActionTitle'q.Size=UDim2.new(1,0,1,0)q. FontSize=Enum.FontSize.Size18 q.TextWrapped=true q.Text=''if m['title']and type(
BackgroundTransparency=1 q.Font=Enum.Font.SourceSansBold q.TextColor3=Color3. m['title'])=='string'then q.Text=m['title']end q.Parent=n return n end function
new(1,1,1)q.TextStrokeTransparency=0 q.FontSize=Enum.FontSize.Size18 q. createButton(l,m)local n,o=createNewButton(l,m),nil for p=1,#d do if d[p]==
TextWrapped=true q.Text=''if m['title']and type(m['title'])=='string'then q.Text 'empty'then o=p break end end if not o then o=#d+1 end if o>k then return end d[
=m['title']end q.Parent=n return n end function createButton(l,m)local n,o= o]=n c[l]['button']=n n.Position=j[o]n.Parent=f if e and e.Parent==nil then e.
createNewButton(l,m),nil for p=1,#d do if d[p]=='empty'then o=p break end end if Parent=Game.Players.LocalPlayer.PlayerGui end end function removeAction(l)if not
not o then o=#d+1 end if o>k then return end d[o]=n c[l]['button']=n n.Position= c[l]then return end local m=c[l]['button']if m then m.Parent=nil for n=1,#d do
j[o]n.Parent=f if e and e.Parent==nil then e.Parent=Game.Players.LocalPlayer. if d[n]==m then d[n]='empty'break end end m:Destroy()end c[l]=nil end function
PlayerGui end end function removeAction(l)if not c[l]then return end local m=c[l addAction(l,m,n)if c[l]then removeAction(l)end c[l]={n}if m and b then
]['button']if m then m.Parent=nil for n=1,#d do if d[n]==m then d[n]='empty' createContextActionGui()createButton(l,n)end end a.BoundActionChanged:connect(
break end end m:Destroy()end c[l]=nil end function addAction(l,m,n)if c[l]then function(l,m,n)if c[l]and n then local o=c[l]['button']if o then if m=='image'
removeAction(l)end c[l]={n}if m and b then createContextActionGui()createButton( then o.ActionIcon.Image=n[m]elseif m=='title'then o.ActionTitle.Text=n[m]elseif
l,n)end end a.BoundActionChanged:connect(function(l,m,n)if c[l]and n then local m=='position'then o.Position=n[m]end end end end)a.BoundActionAdded:connect(
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(
function(l,m,n)addAction(l,m,n)end)a.BoundActionRemoved:connect(function(l,m) 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: removeAction(l)end)a.GetActionButtonEvent:connect(function(l)if c[l]then a:
FireActionButtonFoundSignal(l,c[l]['button'])end end)local l=a: FireActionButtonFoundSignal(l,c[l]['button'])end end)local l=a:

View File

@ -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) 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. 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 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, )function refreshConsoleSize(X,Y)if not Q then return end local Z=Vector2.new(X,
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 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(W,X)Q=Vector2.new(W,X)R=c. .ResizeButton.MouseButton1Down:connect(function(X,Y)Q=Vector2.new(X,Y)R=c.
AbsoluteSize end)c.Body.ResizeButton.MouseButton1Up:connect(function(W,X)clean() AbsoluteSize end)c.Body.ResizeButton.MouseButton1Up:connect(function(X,Y)clean()
end)M.CloseButton.MouseButton1Down:connect(function(X,Y)c.Visible=false end)c. end)M.CloseButton.MouseButton1Down:connect(function(Y,Z)c.Visible=false end)c.
TitleBar.CloseButton.MouseButton1Up:connect(function()clean()end)local Y,Z=true, TitleBar.CloseButton.MouseButton1Up:connect(function()clean()end)local Z,_=true,
false function startAnimation()if Z then return end Z=true repeat if Y then u=u- false function startAnimation()if _ then return end _=true repeat if Z then u=u-
1 else u=u+1 end local _=u/5 local aa=_*_*(3-(2*_))K.ImageLabel.Rotation=aa*5*9 1 else u=u+1 end local aa=u/5 local ab=aa*aa*(3-(2*aa))K.ImageLabel.Rotation=ab*
x.Position=UDim2.new(0,(aa*5*50)-250,0,4)wait()if(u<=0 and Y)or(u>=5 and not Y) 5*9 x.Position=UDim2.new(0,(ab*5*50)-250,0,4)wait()if(u<=0 and Z)or(u>=5 and not
then Z=false end until not Z end K.MouseButton1Down:connect(function(aa,_)Y=not Z)then _=false end until not _ end K.MouseButton1Down:connect(function(aa,ab)Z=
Y startAnimation()end)function changeOffset(_)if j==f then m=m+_ elseif j==g not Z startAnimation()end)function changeOffset(ab)if j==f then m=m+ab elseif j
then n=n+_ end repositionList()end function refreshTextHolderForReal()local _,ab ==g then n=n+ab end repositionList()end function refreshTextHolderForReal()local
=J:GetChildren(),nil if j==f then ab=k elseif j==g then ab=l end local ac=0 for ab,ac=J:GetChildren(),nil if j==f then ac=k elseif j==g then ac=l end local ad=0
ad=1,#_ do _[ad].Visible=false end for ad=1,#ab do local ae,af=nil,false if ad># for ae=1,#ab do ab[ae].Visible=false end for ae=1,#ac do local af,ag=nil,false
_ then ae=a'TextLabel'{Name='Message',Parent=J,BackgroundTransparency=1, 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}af= TextXAlignment='Left',Size=UDim2.new(1,0,0,14),FontSize='Size10',ZIndex=1}ag=
true else ae=_[ad]end if(r or ab[ad].Type~=Enum.MessageType.MessageOutput)and(q true else af=ab[ae]end if(r or ac[ae].Type~=Enum.MessageType.MessageOutput)and(q
or ab[ad].Type~=Enum.MessageType.MessageInfo)and(p or ab[ad].Type~=Enum. or ac[ae].Type~=Enum.MessageType.MessageInfo)and(p or ac[ae].Type~=Enum.
MessageType.MessageWarning)and(o or ab[ad].Type~=Enum.MessageType.MessageError) MessageType.MessageWarning)and(o or ac[ae].Type~=Enum.MessageType.MessageError)
then ae.TextWrapped=s ae.Size=UDim2.new(0.98,0,0,2000)ae.Parent=c ae.Text=ab[ad] then af.TextWrapped=s af.Size=UDim2.new(0.98,0,0,2000)af.Parent=c af.Text=ac[ae]
.Time..' -- '..ab[ad].Message ae.Size=UDim2.new(0.98,0,0,ae.TextBounds.Y)ae. .Time..' -- '..ac[ae].Message af.Size=UDim2.new(0.98,0,0,af.TextBounds.Y)af.
Position=UDim2.new(0,5,0,ac)ae.Parent=J ac=ac+ae.TextBounds.Y if af then if(j==f 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(ae.TextBounds.Y)end end ae.Visible= and m>0)or(j==g and n>0)then changeOffset(af.TextBounds.Y)end end af.Visible=
true if ab[ad].Type==Enum.MessageType.MessageError then ae.TextColor3=Color3. true if ac[ae].Type==Enum.MessageType.MessageError then af.TextColor3=Color3.
new(1,0,0)elseif ab[ad].Type==Enum.MessageType.MessageInfo then ae.TextColor3= new(1,0,0)elseif ac[ae].Type==Enum.MessageType.MessageInfo then af.TextColor3=
Color3.new(0.4,0.5,1)elseif ab[ad].Type==Enum.MessageType.MessageWarning then ae 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 ae.TextColor3=Color3.new(1,1,1)end end end .TextColor3=Color3.new(1,0.6,0.4)else af.TextColor3=Color3.new(1,1,1)end end end
t=ac end local ab=false function refreshTextHolder()if ab then return end Delay( 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 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 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 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. MouseButton1Up:connect(function()clean()end)c.Body.ScrollBar.Down.
MouseButton1Down:connect(function()changeOffset(-10)holdingDownButton()end)c. MouseButton1Down:connect(function()changeOffset(-10)holdingDownButton()end)c.
Body.ScrollBar.Down.MouseButton1Up:connect(function()clean()end)function 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) 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. ).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 ai=math.max(math.min(af,ah),0-ah)local aj,ak=ai/ah,(ag*J.
AbsoluteSize.Y)local ak=aj*ai if j==f then m=T-ak elseif j==g then n=T-ak end 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) 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 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 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 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( .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=( 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- 1-aj)/(1-ae)local al=ah*ak local am=math.min(E.AbsoluteSize.Y*al,E.AbsoluteSize.
ai)E.Handle.Size=UDim2.new(1,0,0,ai)E.Handle.Position=UDim2.new(0,0,0,al)if j==f Y-ai)E.Handle.Size=UDim2.new(1,0,0,ai)E.Handle.Position=UDim2.new(0,0,0,am)if j
then J.Position=UDim2.new(0,0,1,0-t+m)elseif j==g then J.Position=UDim2.new(0,0, ==f then J.Position=UDim2.new(0,0,1,0-t+m)elseif j==g then J.Position=UDim2.new(
1,0-t+n)end end end local function numberWithZero(ae)return(ae<10 and'0'or'').. 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()+ )..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) 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), local aj=math.floor(ah/60)ah=ah-(aj*60)local ak,al,am=numberWithZero(ai),
numberWithZero(aj),numberWithZero(ah)return ae:format(al,_,am)end x. numberWithZero(aj),numberWithZero(ah)return ae:format(ak,al,am)end x.
ErrorToggleButton.MouseButton1Down:connect(function(af,ag)o=not o x. ErrorToggleButton.MouseButton1Down:connect(function(af,ag)o=not o x.
ErrorToggleButton.CheckFrame.Visible=o refreshTextHolder()repositionList()end)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) 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. 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 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 WordWrapToggleButton.CheckFrame.Visible=s refreshTextHolder()repositionList()end
)function AddLocalMessage(af,ag,ah)k[#k+1]={Message=af,Time=ConvertTimeStamp(ah) )function AddLocalMessage(ak,al,am)k[#k+1]={Message=ak,Time=ConvertTimeStamp(am)
,Type=ag}while#k>h do table.remove(k,1)end refreshTextHolder()repositionList() ,Type=al}while#k>h do table.remove(k,1)end refreshTextHolder()repositionList()
end function AddServerMessage(af,ag,ah)l[#l+1]={Message=af,Time= end function AddServerMessage(ak,al,am)l[#l+1]={Message=ak,Time=
ConvertTimeStamp(ah),Type=ag}while#l>h do table.remove(l,1)end ConvertTimeStamp(am),Type=al}while#l>h do table.remove(l,1)end
refreshTextHolder()repositionList()end c.Body.LocalConsole.MouseButton1Click: 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. connect(function(ak,al)if j==g then j=f local am,an=c.Body.LocalConsole,c.Body.
ServerConsole ah.Size=UDim2.new(0,90,0,20)ai.Size=UDim2.new(0,90,0,17)ah. ServerConsole am.Size=UDim2.new(0,90,0,20)an.Size=UDim2.new(0,90,0,17)am.
BackgroundTransparency=0.6 ai.BackgroundTransparency=0.8 if game:FindFirstChild BackgroundTransparency=0.6 an.BackgroundTransparency=0.8 if game:FindFirstChild
'Players'and game.Players['LocalPlayer']then local aj=game.Players.LocalPlayer: 'Players'and game.Players['LocalPlayer']then local ao=game.Players.LocalPlayer:
GetMouse()local ak=Vector2.new(aj.X,aj.Y)refreshConsolePosition(aj.X,aj.Y) GetMouse()refreshConsolePosition(ao.X,ao.Y)refreshConsoleSize(ao.X,ao.Y)
refreshConsoleSize(aj.X,aj.Y)handleScroll(aj.X,aj.Y)end refreshTextHolder() handleScroll(ao.X,ao.Y)end refreshTextHolder()repositionList()end end)c.Body.
repositionList()end end)c.Body.LocalConsole.MouseButton1Up:connect(function() LocalConsole.MouseButton1Up:connect(function()clean()end)local al=false c.Body.
clean()end)local af=false c.Body.ServerConsole.MouseButton1Click:connect( ServerConsole.MouseButton1Click:connect(function(am,an)if not al then al=true
function(ag,ah)if not af then af=true game:GetService'LogService': game:GetService'LogService':RequestServerOutput()end if j==f then j=g local ao,
RequestServerOutput()end if j==f then j=g local ai,aj=c.Body.LocalConsole,c.Body ap=c.Body.LocalConsole,c.Body.ServerConsole ap.Size=UDim2.new(0,90,0,20)ao.Size=
.ServerConsole aj.Size=UDim2.new(0,90,0,20)ai.Size=UDim2.new(0,90,0,17)aj. UDim2.new(0,90,0,17)ap.BackgroundTransparency=0.6 ao.BackgroundTransparency=0.8
BackgroundTransparency=0.6 ai.BackgroundTransparency=0.8 if game:FindFirstChild if game:FindFirstChild'Players'and game.Players['LocalPlayer']then local aq=game
'Players'and game.Players['LocalPlayer']then local ak=game.Players.LocalPlayer: .Players.LocalPlayer:GetMouse()refreshConsolePosition(aq.X,aq.Y)
GetMouse()refreshConsolePosition(ak.X,ak.Y)refreshConsoleSize(ak.X,ak.Y) refreshConsoleSize(aq.X,aq.Y)handleScroll(aq.X,aq.Y)end refreshTextHolder()
handleScroll(ak.X,ak.Y)end refreshTextHolder()repositionList()end end)c.Body. repositionList()end end)c.Body.ServerConsole.MouseButton1Up:connect(function()
ServerConsole.MouseButton1Up:connect(function()clean()end)if game:FindFirstChild clean()end)if game:FindFirstChild'Players'and game.Players['LocalPlayer']then
'Players'and game.Players['LocalPlayer']then local ag=game.Players.LocalPlayer: local an=game.Players.LocalPlayer:GetMouse()an.Move:connect(function()if not c.
GetMouse()ag.Move:connect(function()if not c.Visible then return end local ah= Visible then return end local ao=game.Players.LocalPlayer:GetMouse()
game.Players.LocalPlayer:GetMouse()refreshConsolePosition(ah.X,ah.Y) refreshConsolePosition(ao.X,ao.Y)refreshConsoleSize(ao.X,ao.Y)handleScroll(ao.X,
refreshConsoleSize(ah.X,ah.Y)handleScroll(ah.X,ah.Y)refreshTextHolder() ao.Y)refreshTextHolder()repositionList()end)an.Button1Up:connect(function()
repositionList()end)ag.Button1Up:connect(function()clean()end)ag.WheelForward: clean()end)an.WheelForward:connect(function()if not c.Visible then return end if
connect(function()if not c.Visible then return end if existsInsideContainer(c,ag existsInsideContainer(c,an.X,an.Y)then changeOffset(10)end end)an.WheelBackward:
.X,ag.Y)then changeOffset(10)end end)ag.WheelBackward:connect(function()if not c connect(function()if not c.Visible then return end if existsInsideContainer(c,an
.Visible then return end if existsInsideContainer(c,ag.X,ag.Y)then changeOffset( .X,an.Y)then changeOffset(-10)end end)end E.Handle.MouseButton1Down:connect(
-10)end end)end E.Handle.MouseButton1Down:connect(function()repositionList()end) function()repositionList()end)local an=game:GetService'LogService':
local ag=game:GetService'LogService':GetLogHistory()for ah=1,#ag do GetLogHistory()for ao=1,#an do AddLocalMessage(an[ao].message,an[ao].messageType
AddLocalMessage(ag[ah].message,ag[ah].messageType,ag[ah].timestamp)end game: ,an[ao].timestamp)end game:GetService'LogService'.MessageOut:connect(function(ao
GetService'LogService'.MessageOut:connect(function(ah,ai)AddLocalMessage(ah,ai, ,ap)AddLocalMessage(ao,ap,os.time())end)game:GetService'LogService'.
os.time())end)game:GetService'LogService'.ServerMessageOut:connect( ServerMessageOut:connect(AddServerMessage)end local ab=false function d.OnInvoke
AddServerMessage)end local ab=false function d.OnInvoke()if ab then return end ()if ab then return end ab=true initializeDeveloperConsole()c.Visible=not c.
ab=true initializeDeveloperConsole()c.Visible=not c.Visible ab=false end Visible ab=false end

File diff suppressed because it is too large Load Diff

View File

@ -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: function()u.Visible=false for v=1,#o do o[v].Visible=false game.GuiService:
RemoveCenterDialog(o[v])end game.GuiService:RemoveCenterDialog(u)settingsButton. 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' 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: then return end table.insert(l,k)if v=='GameMainMenu'then l={}end local z=u:
GetChildren(),false for B=1,#z do if z[B].Name==v then z[B].Visible=true k={ GetChildren()for A=1,#z do if z[A].Name==v then z[A].Visible=true k={container=u
container=u,name=v,direction=w,lastSize=x}A=true if x and y then z[B]: ,name=v,direction=w,lastSize=x}if x and y then z[A]:TweenSizeAndPosition(x,y,
TweenSizeAndPosition(x,y,Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)elseif x then z[A]:
)elseif x then z[B]:TweenSizeAndPosition(x,UDim2.new(0.5,-x.X.Offset/2,0.5,-x.Y. TweenSizeAndPosition(x,UDim2.new(0.5,-x.X.Offset/2,0.5,-x.Y.Offset/2),Enum.
Offset/2),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)else z[B]: EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)else z[A]:TweenPosition(UDim2
TweenPosition(UDim2.new(0,0,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle. .new(0,0,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)end else
Sine,e,true)end else if w=='left'then z[B]:TweenPosition(UDim2.new(-1,-525,0,0), if w=='left'then z[A]:TweenPosition(UDim2.new(-1,-525,0,0),Enum.EasingDirection.
Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)elseif w=='right'then z[ InOut,Enum.EasingStyle.Sine,e,true)elseif w=='right'then z[A]:TweenPosition(
B]:TweenPosition(UDim2.new(1,525,0,0),Enum.EasingDirection.InOut,Enum. UDim2.new(1,525,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)
EasingStyle.Sine,e,true)elseif w=='up'then z[B]:TweenPosition(UDim2.new(0,0,-1,- elseif w=='up'then z[A]:TweenPosition(UDim2.new(0,0,-1,-400),Enum.
400),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)elseif w=='down' EasingDirection.InOut,Enum.EasingStyle.Sine,e,true)elseif w=='down'then z[A]:
then z[B]:TweenPosition(UDim2.new(0,0,1,400),Enum.EasingDirection.InOut,Enum. TweenPosition(UDim2.new(0,0,1,400),Enum.EasingDirection.InOut,Enum.EasingStyle.
EasingStyle.Sine,e,true)end delay(e,function()z[B].Visible=false end)end end end Sine,e,true)end delay(e,function()z[A].Visible=false end)end end end function
function resetLocalCharacter()local u=game.Players.LocalPlayer if u then if u. resetLocalCharacter()local u=game.Players.LocalPlayer if u then if u.Character
Character and u.Character:FindFirstChild'Humanoid'then u.Character.Humanoid. and u.Character:FindFirstChild'Humanoid'then u.Character.Humanoid.Health=0 end
Health=0 end end end local function createTextButton(u,v,w,x,y)local z=Instance. end end local function createTextButton(u,v,w,x,y)local z=Instance.new
new'TextButton'z.Font=Enum.Font.Arial z.FontSize=w z.Size=x z.Position=y z.Style 'TextButton'z.Font=Enum.Font.Arial z.FontSize=w z.Size=x z.Position=y z.Style=v
=v z.TextColor3=Color3.new(1,1,1)z.Text=u return z end local function 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 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 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. 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. goToManualGraphics(translateSavedQualityLevelToInt(UserSettings().GameSettings.
SavedQualityLevel))end J.MouseButton1Click:connect(function()if q and not game. SavedQualityLevel))end J.MouseButton1Click:connect(function()if q and not game.
Players.LocalPlayer then return end if not N then goToAutoGraphics()else Players.LocalPlayer then return end if not N then goToAutoGraphics()else
goToManualGraphics(L.Value)end end)local P=nil game.GraphicsQualityChangeRequest goToManualGraphics(L.Value)end end)game.GraphicsQualityChangeRequest:connect(
:connect(function(Q)if N then return end if Q then if(L.Value+1)>i then return function(P)if N then return end if P then if(L.Value+1)>i then return end L.
end L.Value=L.Value+1 M.Text=tostring(L.Value)setGraphicsQualityLevel(L.Value) Value=L.Value+1 M.Text=tostring(L.Value)setGraphicsQualityLevel(L.Value)game:
game:GetService'GuiService':SendNotification('Graphics Quality','Increased to (' GetService'GuiService':SendNotification('Graphics Quality','Increased to ('..M.
..M.Text..')','',2,function()end)else if(L.Value-1)<=0 then return end L.Value=L 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 Value-1 M.Text=tostring(L.Value)setGraphicsQualityLevel(L.Value)game:GetService
'GuiService':SendNotification('Graphics Quality','Decreased to ('..M.Text..')', '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. 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. disableGraphicsWidget()end end)C=createTextButton('',Enum.ButtonStyle.
RobloxButton,Enum.FontSize.Size18,UDim2.new(0,25,0,25),UDim2.new(0,30,0,176))C. 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 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. game.Players.LocalPlayer then C.Text='X'disableGraphicsWidget()elseif q then C.
Text='X'enableGraphicsWidget()end if h then UserSettings().GameSettings. 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 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 =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= 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. 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. ,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 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 .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= local F if not r then local G=Instance.new'TextLabel'G.Name='VideoCaptureLabel'G
'VideoCaptureLabel'G.Text='After Capturing Video'G.Font=Enum.Font.Arial G. .Text='After Capturing Video'G.Font=Enum.Font.Arial G.FontSize=Enum.FontSize.
FontSize=Enum.FontSize.Size18 G.Position=UDim2.new(0,32,0,100)G.Size=UDim2.new(0 Size18 G.Position=UDim2.new(0,32,0,100)G.Size=UDim2.new(0,164,0,18)G.
,164,0,18)G.BackgroundTransparency=1 G.TextColor3=Color3I(255,255,255)G. BackgroundTransparency=1 G.TextColor3=Color3I(255,255,255)G.TextXAlignment=Enum.
TextXAlignment=Enum.TextXAlignment.Left G.ZIndex=u+4 G.Parent=w local H,I={},{}H TextXAlignment.Left G.ZIndex=u+4 G.Parent=w local H,I={},{}H[1]=
[1]='Just Save to Disk'I[H[1]]=Enum.UploadSetting['Never']H[2]= 'Just Save to Disk'I[H[1]]=Enum.UploadSetting['Never']H[2]='Upload to YouTube'I[
'Upload to YouTube'I[H[2]]=Enum.UploadSetting['Ask me first']local J=nil J,d= H[2]]=Enum.UploadSetting['Ask me first']local J=nil J,d=RbxGui.
RbxGui.CreateDropDownMenu(H,function(K)UserSettings().GameSettings. CreateDropDownMenu(H,function(K)UserSettings().GameSettings.
VideoUploadPromptBehavior=I[K]end)J.Name='VideoCaptureField'J.ZIndex=u+4 J. VideoUploadPromptBehavior=I[K]end)J.Name='VideoCaptureField'J.ZIndex=u+4 J.
DropDownMenuButton.ZIndex=u+4 J.DropDownMenuButton.Icon.ZIndex=u+4 J.Position= 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 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, .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. 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: 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 connect(y)local z=function(z)end pcall(function()end)w.FocusLost:connect(
'GuiService',pcall(function()end)if not C then end w.FocusLost:connect(function( function(A)if A then if w.Text~=''then local B=w.Text if string.sub(B,1,1)=='%'
D)if D then if w.Text~=''then local E=w.Text if string.sub(E,1,1)=='%'then game. then game.Players:TeamChat(string.sub(B,2))else game.Players:Chat(B)end end end
Players:TeamChat(string.sub(E,2))else game.Players:Chat(E)end end end w.Text=''w w.Text=''w.Visible=false x.Visible=true end)robloxLock(v)return v,z end,pcall(
.Visible=false x.Visible=true end)robloxLock(v)return v,A end,pcall(function() function()end)if y then delay(0,function()local z=v()z.Parent=a game.
local v=game.LocalSaveEnabled end)if y then delay(0,function()local z=v()z. RequestShutdown=function()table.insert(o,z)game.GuiService:AddCenterDialog(z,
Parent=a game.RequestShutdown=function()table.insert(o,z)game.GuiService: Enum.CenterDialogType.QuitDialog,function()z.Visible=true end,function()z.
AddCenterDialog(z,Enum.CenterDialogType.QuitDialog,function()z.Visible=true end, Visible=false end)return true end end)end delay(0,function()w().Parent=a
function()z.Visible=false end)return true end end)end delay(0,function()w(). waitForChild(a,'UserSettingsShield')waitForChild(a.UserSettingsShield,'Settings'
Parent=a waitForChild(a,'UserSettingsShield')waitForChild(a.UserSettingsShield, )waitForChild(a.UserSettingsShield.Settings,'SettingsStyle')waitForChild(a.
'Settings')waitForChild(a.UserSettingsShield.Settings,'SettingsStyle') UserSettingsShield.Settings.SettingsStyle,'GameMainMenu')waitForChild(a.
waitForChild(a.UserSettingsShield.Settings.SettingsStyle,'GameMainMenu') UserSettingsShield.Settings.SettingsStyle.GameMainMenu,'ReportAbuseButton')a.
waitForChild(a.UserSettingsShield.Settings.SettingsStyle.GameMainMenu, UserSettingsShield.Settings.SettingsStyle.GameMainMenu.ReportAbuseButton.Active=
'ReportAbuseButton')a.UserSettingsShield.Settings.SettingsStyle.GameMainMenu. true end)pcall(function()return game.GuiService.UseLuaChat end)local z=41324860
ReportAbuseButton.Active=true end)local z,A,B=game.CoreGui.Version,pcall( delay(0,function()waitForChild(game,'NetworkClient')waitForChild(game,'Players')
function()return game.GuiService.UseLuaChat end)if A and B then end local C= waitForProperty(game.Players,'LocalPlayer')waitForProperty(game.Players.
41324860 delay(0,function()waitForChild(game,'NetworkClient')waitForChild(game, LocalPlayer,'Character')waitForChild(game.Players.LocalPlayer.Character,
'Players')waitForProperty(game.Players,'LocalPlayer')waitForProperty(game. 'Humanoid')waitForProperty(game,'PlaceId')if game.PlaceId==z then game.Players.
Players.LocalPlayer,'Character')waitForChild(game.Players.LocalPlayer.Character,
'Humanoid')waitForProperty(game,'PlaceId')if game.PlaceId==C then game.Players.
LocalPlayer.Character.Humanoid:SetClickToWalkEnabled(false)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 Humanoid:SetClickToWalkEnabled(false)end)end end)end

View File

@ -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, 'Rude or Mean Behavior','False Reporting Me'},nil,nil,{Owner=255,Admin=240,
Member=128,Visitor=10,Banned=0},not not game.Workspace:FindFirstChild Member=128,Visitor=10,Banned=0},not not game.Workspace:FindFirstChild
'PSVariable'game.Workspace.ChildAdded:connect(function(aN)if aN.Name== 'PSVariable'game.Workspace.ChildAdded:connect(function(aN)if aN.Name==
'PSVariable'and aN:IsA'BoolValue'then aM=true end end)function GetTotalEntries() 'PSVariable'and aN:IsA'BoolValue'then aM=true end end)function
return math.min(#ai,_)end function GetEntryListLength()local aN=#ae+#af if ag AreAllEntriesOnScreen()return#ai*H.Size.Y.Scale<=1+au end function GetMaxScroll(
then aN=aN+1 end return aN end function AreAllEntriesOnScreen()return#ai*H.Size. )return au*-1 end function GetMinScroll()if AreAllEntriesOnScreen()then return
Y.Scale<=1+au end function GetLengthOfVisbleScroll()return 1+au end function GetMaxScroll()else return(GetMaxScroll()-(#ai*H.Size.Y.Scale))+(1+au)end end
GetMaxScroll()return au*-1 end function GetMinScroll()if AreAllEntriesOnScreen() function AbsoluteToPercent(aN,aO)return Vector2.new(aN,aO)/i.AbsoluteSize end
then return GetMaxScroll()else return(GetMaxScroll()-(#ai*H.Size.Y.Scale))+(1+au function TweenProperty(aN,aO,aP,aQ,aR)local aS=tick()while tick()-aS<aR do aN[aO
)end end function AbsoluteToPercent(aN,aO)return Vector2.new(aN,aO)/i. ]=((aQ-aP)*((tick()-aS)/aR))+aP wait(3.333333333333333E-2)end aN[aO]=aQ end
AbsoluteSize end function TweenProperty(aN,aO,aP,aQ,aR)local aS=tick()while function WaitForClick(aN,aO,aP)if aA then return end aA=true local aQ,aR aQ=U.
tick()-aS<aR do aN[aO]=((aQ-aP)*((tick()-aS)/aR))+aP wait(3.333333333333333E-2) MouseButton1Up:connect(function(aS,aT)aP(aS,aT)U.Visible=false aQ:disconnect()if
end aN[aO]=aQ end function WaitForClick(aN,aO,aP)if aA then return end aA=true aR then aR:disconnect()end end)aR=U.MouseMoved:connect(function(aS,aT)aO(aS,aT)
local aQ,aR aQ=U.MouseButton1Up:connect(function(aS,aT)aP(aS,aT)U.Visible=false end)U.Visible=true U.Active=true U.Parent=aN aN.AncestryChanged:connect(function
aQ:disconnect()if aR then aR:disconnect()end end)aR=U.MouseMoved:connect( (aS,aT)if aS==aN and aT==nil then aP(nx,ny)U.Visible=false aQ:disconnect()aR:
function(aS,aT)aO(aS,aT)end)U.Visible=true U.Active=true U.Parent=aN aN. disconnect()debugprint'forced out of wait for click'end end)aA=false end
AncestryChanged:connect(function(aS,aT)if aS==aN and aT==nil then aP(nx,ny)U. function SetPrivilegeRank(aN,aO)while aN.PersonalServerRank<aO do game:
Visible=false aQ:disconnect()aR:disconnect()debugprint GetService'PersonalServerService':Promote(aN)end while aN.PersonalServerRank>aO
'forced out of wait for click'end end)aA=false end function GetPrivilegeType(aN) do game:GetService'PersonalServerService':Demote(aN)end end function
if aN<=aL['Banned']then return aL['Banned']elseif aN<=aL['Visitor']then return
aL['Visitor']elseif aN<=aL['Member']then return aL['Member']elseif aN<=aL[
'Admin']then return aL['Admin']else return aL['Owner']end end function
SetPrivilegeRank(aN,aO)while aN.PersonalServerRank<aO do game:GetService
'PersonalServerService':Promote(aN)end while aN.PersonalServerRank>aO do game:
GetService'PersonalServerService':Demote(aN)end end function
OnPrivilegeLevelSelect(aN,aO,aP,aQ,aR,aS)debugprint'setting privilege level' OnPrivilegeLevelSelect(aN,aO,aP,aQ,aR,aS)debugprint'setting privilege level'
SetPrivilegeRank(aN,aO)HighlightMyRank(aN,aP,aQ,aR,aS)end function 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[ 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 '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 .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' 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= end end aK,aa=Z.CreateDropDownMenu(aI,aJ,true)aK.Name='AbuseComboBox'aK.Position
'AbuseComboBox'aK.Position=UDim2.new(0.425,0,0,142)aK.Size=UDim2.new(0.55,0,0,32 =UDim2.new(0.425,0,0,142)aK.Size=UDim2.new(0.55,0,0,32)aK.Parent=L O.
)aK.Parent=L O.MouseButton1Click:connect(CloseAbuseDialog)N.MouseButton1Click: MouseButton1Click:connect(CloseAbuseDialog)N.MouseButton1Click:connect(
connect(OnSubmitAbuse)S:FindFirstChild'OkButton'.MouseButton1Down:connect( OnSubmitAbuse)S:FindFirstChild'OkButton'.MouseButton1Down:connect(
CloseAbuseDialog)T:FindFirstChild'OkButton'.MouseButton1Down:connect( CloseAbuseDialog)T:FindFirstChild'OkButton'.MouseButton1Down:connect(
CloseAbuseDialog)end local function GetFriendStatus(aN)if aN==game.Players. CloseAbuseDialog)end local function GetFriendStatus(aN)if aN==game.Players.
LocalPlayer then return Enum.FriendStatus.NotFriend else local aO,aP=pcall( 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']<aO[
'Score']end function BlowThisPopsicleStand()Tabify()end function StatSort(aN,aO) 'Score']end function BlowThisPopsicleStand()Tabify()end function StatSort(aN,aO)
if aN.IsPrimary~=aO.IsPrimary then return aN.IsPrimary end if aN.Priority==aO. if aN.IsPrimary~=aO.IsPrimary then return aN.IsPrimary end if aN.Priority==aO.
Priority then return aN.AddId<aO.AddId end return aN.Priority<aO.Priority end Priority then return aN.AddId<aO.AddId end return aN.Priority<aO.Priority end
function StatChanged(aN,aO)BaseUpdate()end function StatAdded(aN,aO)while ay do function StatChanged(aN,aO)BaseUpdate()end function StatAdded(aO,aP)while ay do
debugprint'in stat added function lock'wait(3.333333333333333E-2)end ay=true if debugprint'in stat added function lock'wait(3.333333333333333E-2)end ay=true if
not(aN:IsA'StringValue'or aN:IsA'IntValue'or aN:IsA'BoolValue'or aN:IsA not(aO:IsA'StringValue'or aO:IsA'IntValue'or aO:IsA'BoolValue'or aO:IsA
'NumberValue'or aN:IsA'DoubleConstrainedValue'or aN:IsA'IntConstrainedValue') 'NumberValue'or aO:IsA'DoubleConstrainedValue'or aO:IsA'IntConstrainedValue')
then BlowThisPopsicleStand()else local aP=false for aQ,aR in pairs(ac)do if aR[ then BlowThisPopsicleStand()else local aQ=false for aR,aS in pairs(ac)do if aS[
'Name']==aN.Name then aP=true end end if not aP then local aS={}aS['Name']=aN. 'Name']==aO.Name then aQ=true end end if not aQ then local aT={}aT['Name']=aO.
Name aS['Priority']=0 if aN:FindFirstChild'Priority'then aS['Priority']=aN. Name aT['Priority']=0 if aO:FindFirstChild'Priority'then aT['Priority']=aO.
Priority end aS['IsPrimary']=false if aN:FindFirstChild'IsPrimary'then aS[ Priority end aT['IsPrimary']=false if aO:FindFirstChild'IsPrimary'then aT[
'IsPrimary']=true end aS.AddId=ad ad=ad+1 table.insert(ac,aS)table.sort(ac, 'IsPrimary']=true end aT.AddId=ad ad=ad+1 table.insert(ac,aT)table.sort(ac,
StatSort)if not C:FindFirstChild(aS['Name'])then CreateStatTitle(aS['Name'])end StatSort)if not C:FindFirstChild(aT['Name'])then CreateStatTitle(aT['Name'])end
UpdateMaximize()end end ay=false StatChanged(aO)aN.Changed:connect(function(aP) UpdateMaximize()end end ay=false StatChanged(aP)aO.Changed:connect(function(aQ)
StatChanged(aO,aP)end)end function DoesStatExist(aN,aO)for aP,aQ in pairs(ae)do StatChanged(aP,aQ)end)end function DoesStatExist(aO,aP)for aQ,aR in pairs(ae)do
if aQ['Player']~=aO and aQ['Player']:FindFirstChild'leaderstats'and aQ['Player'] if aR['Player']~=aP and aR['Player']:FindFirstChild'leaderstats'and aR['Player']
.leaderstats:FindFirstChild(aN)then return true end end return false end .leaderstats:FindFirstChild(aO)then return true end end return false end
function StatRemoved(aN,aO)while ay do debugprint'In Adding Stat Lock1'wait( function StatRemoved(aO,aP)while ay do debugprint'In Adding Stat Lock1'wait(
3.333333333333333E-2)end ay=true if aO['Frame']:FindFirstChild(aN.Name)then 3.333333333333333E-2)end ay=true if aP['Frame']:FindFirstChild(aO.Name)then
debugprint'Destroyed frame!'aO['Frame'][aN.Name].Parent=nil end if not debugprint'Destroyed frame!'aP['Frame'][aO.Name].Parent=nil end if not
DoesStatExist(aN.Name,aO['Player'])then for aP,aQ in ipairs(ac)do if aQ['Name'] DoesStatExist(aO.Name,aP['Player'])then for aQ,aR in ipairs(ac)do if aR['Name']
==aN.Name then table.remove(ac,aP)if C:FindFirstChild(aN.Name)then C[aN.Name]: ==aO.Name then table.remove(ac,aQ)if C:FindFirstChild(aO.Name)then C[aO.Name]:
Destroy()end for aR,aS in pairs(af)do if aS['Frame']:FindFirstChild(aN.Name)then Destroy()end for aS,aT in pairs(af)do if aT['Frame']:FindFirstChild(aO.Name)then
aS['Frame'][aN.Name]:Destroy()end end end end end ay=false StatChanged(aO)end aT['Frame'][aO.Name]:Destroy()end end end end end ay=false StatChanged(aP)end
function RemoveAllStats(aN)for aO,aP in ipairs(ac)do StatRemoved(aP,aN)end end function RemoveAllStats(aO)for aP,aQ in ipairs(ac)do StatRemoved(aQ,aO)end end
function GetScoreValue(aN)if aN:IsA'DoubleConstrainedValue'or aN:IsA function GetScoreValue(aO)if aO:IsA'DoubleConstrainedValue'or aO:IsA
'IntConstrainedValue'then return aN.ConstrainedValue elseif aN:IsA'BoolValue' 'IntConstrainedValue'then return aO.ConstrainedValue elseif aO:IsA'BoolValue'
then if aN.Value then return 1 else return 0 end else return aN.Value end end then if aO.Value then return 1 else return 0 end else return aO.Value end end
function MakeScoreEntry(aN,aO,aP)if not aP:FindFirstChild'PlayerScore'then function MakeScoreEntry(aO,aP,aQ)if not aQ:FindFirstChild'PlayerScore'then
return end local aQ,aR=aP:FindFirstChild'PlayerScore':Clone(),nil wait()if aN[ return end local aR,aS=aQ:FindFirstChild'PlayerScore':Clone(),nil wait()if aO[
'Player']:FindFirstChild'leaderstats'and aN['Player'].leaderstats: 'Player']:FindFirstChild'leaderstats'and aO['Player'].leaderstats:
FindFirstChild(aO['Name'])then aR=aN['Player']:FindFirstChild'leaderstats': FindFirstChild(aP['Name'])then aS=aO['Player']:FindFirstChild'leaderstats':
FindFirstChild(aO['Name'])else return end if not aN['Player'].Parent then return FindFirstChild(aP['Name'])else return end if not aO['Player'].Parent then return
end aQ.Name=aO['Name']aQ.Text=tostring(GetScoreValue(aR))if aO['Name']==ac[1][ end aR.Name=aP['Name']aR.Text=tostring(GetScoreValue(aS))if aP['Name']==ac[1][
'Name']then debugprint'changing score'aN['Score']=GetScoreValue(aR)if aN[ 'Name']then debugprint'changing score'aO['Score']=GetScoreValue(aS)if aO[
'Player']==g then p.Text=tostring(GetScoreValue(aR))end end aR.Changed:connect( 'Player']==g then p.Text=tostring(GetScoreValue(aS))end end aS.Changed:connect(
function()if not aR.Parent then return end if aO['Name']==ac[1]['Name']then aN[ function()if not aS.Parent then return end if aP['Name']==ac[1]['Name']then aO[
'Score']=GetScoreValue(aR)if aN['Player']==g then p.Text=tostring(GetScoreValue( 'Score']=GetScoreValue(aS)if aO['Player']==g then p.Text=tostring(GetScoreValue(
aR))end end aQ.Text=tostring(GetScoreValue(aR))BaseUpdate()end)return aQ end aS))end end aR.Text=tostring(GetScoreValue(aS))BaseUpdate()end)return aR end
function CreateStatTitle(aN)local aO=H:FindFirstChild'PlayerScore':Clone()aO. function CreateStatTitle(aO)local aP=H:FindFirstChild'PlayerScore':Clone()aP.
Name=aN aO.Text=aN if E.Value then aO.TextTransparency=0 else aO. Name=aO aP.Text=aO if E.Value then aP.TextTransparency=0 else aP.
TextTransparency=1 end aO.Parent=C end function RecreateScoreColumns(aN)while ay TextTransparency=1 end aP.Parent=C end function RecreateScoreColumns(aO)while ay
do debugprint'In Adding Stat Lock2'wait(3.333333333333333E-2)end ay=true local do debugprint'In Adding Stat Lock2'wait(3.333333333333333E-2)end ay=true local
aO=5 local aP,aQ=aO,0 for aR=#ac,1,-1 do local aS=ac[aR]aQ=0 for aT,aU in aP=5 local aQ,aR=aP,0 for aS=#ac,1,-1 do local aT=ac[aS]aR=0 for aU,aV in
ipairs(aN)do local aV,aW=aU['Frame'],aU['Player']if not aV:FindFirstChild(aS[ ipairs(aO)do local aW,aX=aV['Frame'],aV['Player']if not aW:FindFirstChild(aT[
'Name'])then local aX=MakeScoreEntry(aU,aS,aV)if aX then debugprint('adding '.. 'Name'])then local aY=MakeScoreEntry(aV,aT,aW)if aY then debugprint('adding '..
aX.Name..' to '..aU['Player'].Name)aX.Parent=aV if aU['MyTeam']and aU['MyTeam'] aY.Name..' to '..aV['Player'].Name)aY.Parent=aW if aV['MyTeam']and aV['MyTeam']
~=ag and not aU['MyTeam']['Frame']:FindFirstChild(aS['Name'])then local aY=aX: ~=ag and not aV['MyTeam']['Frame']:FindFirstChild(aT['Name'])then local aZ=aY:
Clone()aY.Parent=aU['MyTeam']['Frame']end end end aS['XOffset']=aO if aV: Clone()aZ.Parent=aV['MyTeam']['Frame']end end end aT['XOffset']=aP if aW:
FindFirstChild(aS['Name'])then aQ=math.max(aQ,aV[aS['Name']].TextBounds.X)end FindFirstChild(aT['Name'])then aR=math.max(aR,aW[aT['Name']].TextBounds.X)end
end if G.Value then aQ=math.max(aQ,C[aS['Name']].TextBounds.X)C[aS['Name']]: end if G.Value then aR=math.max(aR,C[aT['Name']].TextBounds.X)C[aT['Name']]:
TweenPosition(UDim2.new(at,-aO,0,0),'Out','Linear',c,true)else C[aS['Name']]: TweenPosition(UDim2.new(at,-aP,0,0),'Out','Linear',c,true)else C[aT['Name']]:
TweenPosition(UDim2.new((0.4+((0.6/#ac)*(aR-1)))-1,0,0,0),'Out','Linear',c,true) TweenPosition(UDim2.new((0.4+((0.6/#ac)*(aS-1)))-1,0,0,0),'Out','Linear',c,true)
end aS['ColumnSize']=aQ aO=aO+ao+aQ aP=math.max(aO,aP)end ar=UDim2.new(0,an+aP- end aT['ColumnSize']=aR aP=aP+ao+aR aQ=math.max(aP,aQ)end ar=UDim2.new(0,an+aQ-
ao,0,800)as=UDim2.new(1,-ar.X.Offset,as.Y.Scale,0)UpdateHeaderNameSize() ao,0,800)as=UDim2.new(1,-ar.X.Offset,as.Y.Scale,0)UpdateHeaderNameSize()
UpdateMaximize()ay=false end function ToggleMinimize()D.Value=not D.Value UpdateMaximize()ay=false end function ToggleMinimize()D.Value=not D.Value
UpdateStatNames()end function ToggleMaximize()E.Value=not E.Value UpdateStatNames()end function ToggleMaximize()E.Value=not E.Value
@ -337,123 +331,122 @@ UDim2.new(0,0,0,0),'Out','Linear',c*1.2,true)k.Size=UDim2.new(1,0,m,0)t.Image=
'http://www.roblox.com/asset/?id=94692731'else if not E.Value then j: 'http://www.roblox.com/asset/?id=94692731'else if not E.Value then j:
TweenSizeAndPosition(ar,as,'Out','Linear',c*1.2,true)end au=math.min(math.max(au TweenSizeAndPosition(ar,as,'Out','Linear',c*1.2,true)end au=math.min(math.max(au
,-1),-1+(#ai*I.Size.Y.Scale))UpdateScrollPosition()v.Position=UDim2.new(0,0,au,0 ,-1),-1+(#ai*I.Size.Y.Scale))UpdateScrollPosition()v.Position=UDim2.new(0,0,au,0
)local aN=(au+v.Size.Y.Scale)r.Position=UDim2.new(0,0,aN,0)k.Size=UDim2.new(1,0, )local aO=(au+v.Size.Y.Scale)r.Position=UDim2.new(0,0,aO,0)k.Size=UDim2.new(1,0,
aN+m,0)t.Image='http://www.roblox.com/asset/?id=94825585'end end function aO+m,0)t.Image='http://www.roblox.com/asset/?id=94825585'end end function
UpdateMaximize()if E.Value then for aN=1,#ac,1 do local aO=ac[aN]C[aO['Name']]: UpdateMaximize()if E.Value then for aO=1,#ac,1 do local aP=ac[aO]C[aP['Name']]:
TweenPosition(UDim2.new(0.4+((0.6/#ac)*(aN-1))-1,0,0,0),'Out','Linear',c,true) TweenPosition(UDim2.new(0.4+((0.6/#ac)*(aO-1))-1,0,0,0),'Out','Linear',c,true)
end if D.Value then ToggleMinimize()else UpdateMinimize()end j: end if D.Value then ToggleMinimize()else UpdateMinimize()end j:
TweenSizeAndPosition(ap,aq,'Out','Linear',c*1.2,true)p:TweenPosition(UDim2.new(0 TweenSizeAndPosition(ap,aq,'Out','Linear',c*1.2,true)p:TweenPosition(UDim2.new(0
,0,o.Position.Y.Scale,0),'Out','Linear',c*1.2,true)o:TweenPosition(UDim2.new(- ,0,o.Position.Y.Scale,0),'Out','Linear',c*1.2,true)o:TweenPosition(UDim2.new(-
0.1,-p.TextBounds.x,o.Position.Y.Scale,0),'Out','Linear',c*1.2,true)l.Background 0.1,-p.TextBounds.x,o.Position.Y.Scale,0),'Out','Linear',c*1.2,true)l.Background
.Image='http://www.roblox.com/asset/?id='..b['LargeHeader']r.Background.Image= .Image='http://www.roblox.com/asset/?id='..b['LargeHeader']r.Background.Image=
'http://www.roblox.com/asset/?id='..b['LargeBottom']for aN,aO in ipairs(ai)do if 'http://www.roblox.com/asset/?id='..b['LargeBottom']for aO,aP in ipairs(ai)do if
(aN%2)~=1 then aO.Background.Image='http://www.roblox.com/asset/?id='..b[ (aO%2)~=1 then aP.Background.Image='http://www.roblox.com/asset/?id='..b[
'LargeDark']else aO.Background.Image='http://www.roblox.com/asset/?id='..b[ 'LargeDark']else aP.Background.Image='http://www.roblox.com/asset/?id='..b[
'LargeLight']end end for aP,aQ in ipairs(ah)do if aQ:FindFirstChild 'LargeLight']end end for aQ,aR in ipairs(ah)do if aR:FindFirstChild
'ClickListener'then aQ.ClickListener.Size=UDim2.new(0.974,0,aQ.ClickListener. 'ClickListener'then aR.ClickListener.Size=UDim2.new(0.974,0,aR.ClickListener.
Size.Y.Scale,0)end for aR=1,#ac,1 do local aS=ac[aR]if aQ:FindFirstChild(aS[ Size.Y.Scale,0)end for aS=1,#ac,1 do local aT=ac[aS]if aR:FindFirstChild(aT[
'Name'])then aQ[aS['Name']]:TweenPosition(UDim2.new(0.4+((0.6/#ac)*(aR-1))-1,0,0 'Name'])then aR[aT['Name']]:TweenPosition(UDim2.new(0.4+((0.6/#ac)*(aS-1))-1,0,0
,0),'Out','Linear',c,true)end end end for aR,aS in ipairs(ae)do WaitForChild(aS[ ,0),'Out','Linear',c,true)end end end for aS,aT in ipairs(ae)do WaitForChild(aT[
'Frame'],'TitleFrame').Size=UDim2.new(0.38,0,aS['Frame'].TitleFrame.Size.Y.Scale 'Frame'],'TitleFrame').Size=UDim2.new(0.38,0,aT['Frame'].TitleFrame.Size.Y.Scale
,0)end for aT,aU in ipairs(af)do WaitForChild(aU['Frame'],'TitleFrame').Size= ,0)end for aU,aV in ipairs(af)do WaitForChild(aV['Frame'],'TitleFrame').Size=
UDim2.new(0.38,0,aU['Frame'].TitleFrame.Size.Y.Scale,0)end else if not D.Value UDim2.new(0.38,0,aV['Frame'].TitleFrame.Size.Y.Scale,0)end else if not D.Value
then j:TweenSizeAndPosition(ar,as,'Out','Linear',c*1.2,true)end p:TweenPosition( then j:TweenSizeAndPosition(ar,as,'Out','Linear',c*1.2,true)end p:TweenPosition(
UDim2.new(0,0,0.4,0),'Out','Linear',c*1.2,true)o:TweenPosition(UDim2.new(0,0,o. UDim2.new(0,0,0.4,0),'Out','Linear',c*1.2,true)o:TweenPosition(UDim2.new(0,0,o.
Position.Y.Scale,0),'Out','Linear',c*1.2,true)l.Background.Image= Position.Y.Scale,0),'Out','Linear',c*1.2,true)l.Background.Image=
'http://www.roblox.com/asset/?id='..b['NormalHeader']r.Background.Image= 'http://www.roblox.com/asset/?id='..b['NormalHeader']r.Background.Image=
'http://www.roblox.com/asset/?id='..b['NormalBottom']for aN,aQ in ipairs(ai)do 'http://www.roblox.com/asset/?id='..b['NormalBottom']for aO,aR in ipairs(ai)do
if aN%2~=1 then aQ.Background.Image='http://www.roblox.com/asset/?id='..b[ if aO%2~=1 then aR.Background.Image='http://www.roblox.com/asset/?id='..b[
'midDark']else aQ.Background.Image='http://www.roblox.com/asset/?id='..b[ 'midDark']else aR.Background.Image='http://www.roblox.com/asset/?id='..b[
'midLight']end end for aT,aU in ipairs(ah)do if aU:FindFirstChild'ClickListener' 'midLight']end end for aU,aV in ipairs(ah)do if aV:FindFirstChild'ClickListener'
then aU.ClickListener.Size=UDim2.new(0.96,0,aU.ClickListener.Size.Y.Scale,0)for then aV.ClickListener.Size=UDim2.new(0.96,0,aV.ClickListener.Size.Y.Scale,0)for
aV=1,#ac,1 do local aW=ac[aV]if aU:FindFirstChild(aW['Name'])and aW['XOffset'] aW=1,#ac,1 do local aX=ac[aW]if aV:FindFirstChild(aX['Name'])and aX['XOffset']
then aU[aW['Name']]:TweenPosition(UDim2.new(at,-aW['XOffset'],0,0),'Out', then aV[aX['Name']]:TweenPosition(UDim2.new(at,-aX['XOffset'],0,0),'Out',
'Linear',c,true)end end end end for aV,aW in ipairs(af)do WaitForChild(aW[ 'Linear',c,true)end end end end for aW,aX in ipairs(af)do WaitForChild(aX[
'Frame'],'TitleFrame').Size=UDim2.new(0,an*0.9,aW['Frame'].TitleFrame.Size.Y. 'Frame'],'TitleFrame').Size=UDim2.new(0,an*0.9,aX['Frame'].TitleFrame.Size.Y.
Scale,0)end for aX,aY in ipairs(ae)do WaitForChild(aY['Frame'],'TitleFrame'). Scale,0)end for aY,aZ in ipairs(ae)do WaitForChild(aZ['Frame'],'TitleFrame').
Size=UDim2.new(0,an*0.9,aY['Frame'].TitleFrame.Size.Y.Scale,0)end end end Size=UDim2.new(0,an*0.9,aZ['Frame'].TitleFrame.Size.Y.Scale,0)end end end
function UpdateStatNames()if not G.Value or D.Value then CloseNames()else function ExpandNames()if#ac~=0 then for aU,aV in pairs(C:GetChildren())do Spawn(
ExpandNames()end end function ExpandNames()if#ac~=0 then for aT,aX in pairs(C: function()TweenProperty(aV,'TextTransparency',aV.TextTransparency,0,c)end)end m=
GetChildren())do Spawn(function()TweenProperty(aX,'TextTransparency',aX. 0.09 l:TweenSizeAndPosition(UDim2.new(l.Size.X.Scale,l.Size.X.Offset,m,0),l.
TextTransparency,0,c)end)end m=0.09 l:TweenSizeAndPosition(UDim2.new(l.Size.X. Position,'Out','Linear',c*1.2,true)u:TweenPosition(UDim2.new(u.Position.X.Scale,
Scale,l.Size.X.Offset,m,0),l.Position,'Out','Linear',c*1.2,true)u:TweenPosition( 0,m,0),'Out','Linear',c*1.2,true)q:TweenPosition(UDim2.new(0,0,m,0),'Out',
UDim2.new(u.Position.X.Scale,0,m,0),'Out','Linear',c*1.2,true)q:TweenPosition( 'Linear',c*1.2,true)end end function CloseNames()if#ac~=0 then m=0.07 if not E.
UDim2.new(0,0,m,0),'Out','Linear',c*1.2,true)end end function CloseNames()if#ac Value then for aU,aV in pairs(C:GetChildren())do Spawn(function()TweenProperty(
~=0 then m=0.07 if not E.Value then for aT,aX in pairs(C:GetChildren())do Spawn( aV,'TextTransparency',aV.TextTransparency,1,c)end)end end q:TweenPosition(UDim2.
function()TweenProperty(aX,'TextTransparency',aX.TextTransparency,1,c)end)end new(0,0,m,0),'Out','Linear',c*1.2,true)l:TweenSizeAndPosition(UDim2.new(l.Size.X
end q:TweenPosition(UDim2.new(0,0,m,0),'Out','Linear',c*1.2,true)l: .Scale,l.Size.X.Offset,m,0),l.Position,'Out','Linear',c*1.2,true)u:
TweenSizeAndPosition(UDim2.new(l.Size.X.Scale,l.Size.X.Offset,m,0),l.Position, TweenPosition(UDim2.new(u.Position.X.Scale,0,m,0),'Out','Linear',c*1.2,true)end
'Out','Linear',c*1.2,true)u:TweenPosition(UDim2.new(u.Position.X.Scale,0,m,0), end function UpdateStatNames()if not G.Value or D.Value then CloseNames()else
'Out','Linear',c*1.2,true)end end function OnScrollWheelMove(aT)if not(F.Value ExpandNames()end end function OnScrollWheelMove(aU)if not(F.Value or D.Value or
or D.Value or aB)then local aX=y.Position local aY=math.max(math.min(aX.Y.Scale+ aB)then local aV=y.Position local aY=math.max(math.min(aV.Y.Scale+aU,
aT,GetMaxScroll()),GetMinScroll())y.Position=UDim2.new(aX.X.Scale,aX.X.Offset,aY GetMaxScroll()),GetMinScroll())y.Position=UDim2.new(aV.X.Scale,aV.X.Offset,aY,aV
,aX.Y.Offset)UpdateScrollPosition()end end function AttachScrollWheel()if aE .Y.Offset)UpdateScrollPosition()end end function AttachScrollWheel()if aE then
then return end aE={}table.insert(aE,h.WheelForward:connect(function() return end aE={}table.insert(aE,h.WheelForward:connect(function()
OnScrollWheelMove(0.05)end))table.insert(aE,h.WheelBackward:connect(function() OnScrollWheelMove(0.05)end))table.insert(aE,h.WheelBackward:connect(function()
OnScrollWheelMove(-5E-2)end))end function DetachScrollWheel()if aE then for aT, OnScrollWheelMove(-5E-2)end))end function DetachScrollWheel()if aE then for aU,
aX in pairs(aE)do aX:disconnect()end end aE=nil end k.MouseEnter:connect( aV in pairs(aE)do aV:disconnect()end end aE=nil end k.MouseEnter:connect(
function()if not(D.Value or F.Value)then AttachScrollWheel()end end)k.MouseLeave function()if not(D.Value or F.Value)then AttachScrollWheel()end end)k.MouseLeave
:connect(function()DetachScrollWheel()end)function UpdateScrollBarVisibility()if :connect(function()DetachScrollWheel()end)function UpdateScrollBarVisibility()if
AreAllEntriesOnScreen()then x.BackgroundTransparency=1 else x. AreAllEntriesOnScreen()then x.BackgroundTransparency=1 else x.
BackgroundTransparency=0 UpdateScrollBarSize()end end function BackgroundTransparency=0 UpdateScrollBarSize()end end function
UpdateScrollBarSize()local aT,aX=#ai*H.Size.Y.Scale,(v.Position.Y.Scale+1)x.Size UpdateScrollBarSize()local aU,aV=#ai*H.Size.Y.Scale,(v.Position.Y.Scale+1)x.Size
=UDim2.new(1,0,aX/aT,0)end function UpdateScrollPosition()local aT,aX= =UDim2.new(1,0,aV/aU,0)end function UpdateScrollPosition()local aU,aV=
GetMinScroll(),GetMaxScroll()local aY,aZ=aX-aT,math.max(math.min(y.Position.Y. GetMinScroll(),GetMaxScroll()local aY,aZ=aV-aU,math.max(math.min(y.Position.Y.
Scale,aX),aT)y.Position=UDim2.new(y.Position.X.Scale,y.Position.X.Offset,aZ,y. Scale,aV),aU)y.Position=UDim2.new(y.Position.X.Scale,y.Position.X.Offset,aZ,y.
Position.Y.Offset)local a_=1-x.Size.Y.Scale x.Position=UDim2.new(0,0,a_-(a_*((y. Position.Y.Offset)local a_=1-x.Size.Y.Scale x.Position=UDim2.new(0,0,a_-(a_*((y.
Position.Y.Scale-aT)/aY)),0)end function StartDrag(aT,aX,aY)local aZ,a_,a0,a1= Position.Y.Scale-aU)/aY)),0)end function StartDrag(aU,aV,aY)local aZ=true
tick(),false,true,WaitForChild(aT['Frame'],'ClickListener')local function WaitForChild(aU['Frame'],'ClickListener')local function dragExit()if aU['Player'
dragExit()a_=true if aT['Player']and aw and a0 and aT['Player']~=g and aw.userId ]and aw and aZ and aU['Player']~=g and aw.userId>1 and g.userId>1 then
>1 and g.userId>1 then ActivatePlayerEntryPanel(aT)end end local a2,a3=nil,y. ActivatePlayerEntryPanel(aU)end end local a_,a0=nil,y.Position local function
Position local function dragpoll(a4,a5)if not a2 then a2=AbsoluteToPercent(a4,a5 dragpoll(a1,a2)if not a_ then a_=AbsoluteToPercent(a1,a2).Y end local a3=
).Y end local a6=AbsoluteToPercent(a4,a5).Y debugprint('drag dist:'..Vector2. AbsoluteToPercent(a1,a2).Y debugprint('drag dist:'..Vector2.new(aV-a1,aY-a2).
new(aX-a4,aY-a5).magnitude)if Vector2.new(aX-a4,aY-a5).magnitude>d then a0=false magnitude)if Vector2.new(aV-a1,aY-a2).magnitude>d then aZ=false end local a4=
end local a7=math.max(math.min(a3.Y.Scale+(a6-a2),GetMaxScroll()),GetMinScroll() math.max(math.min(a0.Y.Scale+(a3-a_),GetMaxScroll()),GetMinScroll())y.Position=
)y.Position=UDim2.new(a3.X.Scale,a3.X.Offset,a7,a3.Y.Offset) UDim2.new(a0.X.Scale,a0.X.Offset,a4,a0.Y.Offset)UpdateScrollPosition()end
UpdateScrollPosition()end WaitForClick(i,dragpoll,dragExit)end function WaitForClick(i,dragpoll,dragExit)end function StartMinimizeDrag()Delay(0,
StartMinimizeDrag()Delay(0,function()local aT=tick()debugprint'Got Click2'local function()local aU=tick()debugprint'Got Click2'local function dragExit()if tick(
aX=false local function dragExit()if tick()-aT<0.25 then ToggleMinimize()else aG )-aU<0.25 then ToggleMinimize()else aG=true if D.Value then ToggleMinimize()end
=true if D.Value then ToggleMinimize()end end aX=true end local aY,aZ=nil,au end end local aV,aY=nil,au local function dragpoll(aZ,a_)if not D.Value then if
local function dragpoll(a_,a0)if not D.Value then if not aY then aY= not aV then aV=AbsoluteToPercent(aZ,a_).Y end local a0,a1=AbsoluteToPercent(aZ,
AbsoluteToPercent(a_,a0).Y end local a1,a2=AbsoluteToPercent(a_,a0).Y,nil a2= a_).Y,nil a1=math.min(math.max(aY+(a0-aV),-1),-1+(#ai*I.Size.Y.Scale))au=a1
math.min(math.max(aZ+(a1-aY),-1),-1+(#ai*I.Size.Y.Scale))au=a2 UpdateMinimize()w UpdateMinimize()w.Size=UDim2.new(w.Size.X.Scale,0,(au+v.Size.Y.Scale),0)w.
.Size=UDim2.new(w.Size.X.Scale,0,(au+v.Size.Y.Scale),0)w.Position=UDim2.new(w. Position=UDim2.new(w.Position.X.Scale,0,1-w.Size.Y.Scale,0)UpdateScrollBarSize()
Position.X.Scale,0,1-w.Size.Y.Scale,0)UpdateScrollBarSize()UpdateScrollPosition( UpdateScrollPosition()UpdateScrollBarVisibility()end end Spawn(function()
)UpdateScrollBarVisibility()end end Spawn(function()WaitForClick(i,dragpoll, WaitForClick(i,dragpoll,dragExit)end)end)end E.Value=false D.Value=false E.
dragExit)end)end)end E.Value=false D.Value=false E.Changed:connect( Changed:connect(UpdateMaximize)D.Changed:connect(UpdateMinimize)s.
UpdateMaximize)D.Changed:connect(UpdateMinimize)s.MouseButton1Down:connect( MouseButton1Down:connect(function()if(time()-ak<al)or aB then return end ak=
function()if(time()-ak<al)or aB then return end ak=time()if F.Value then time()if F.Value then UnTabify()else StartMinimizeDrag()end end)n.
UnTabify()else StartMinimizeDrag()end end)n.MouseButton1Click:connect(function() MouseButton1Click:connect(function()if(time()-ak<al)or aB then return end ak=
if(time()-ak<al)or aB then return end ak=time()if F.Value then UnTabify()elseif time()if F.Value then UnTabify()elseif not G.Value then G.Value=true BaseUpdate(
not G.Value then G.Value=true BaseUpdate()else ToggleMaximize()end end)n. )else ToggleMaximize()end end)n.MouseButton2Click:connect(function()if(time()-ak
MouseButton2Click:connect(function()if(time()-ak<al)or aB then return end ak= <al)or aB then return end ak=time()if F.Value then UnTabify()elseif E.Value then
time()if F.Value then UnTabify()elseif E.Value then ToggleMaximize()elseif G. ToggleMaximize()elseif G.Value then G.Value=false BaseUpdate()else Tabify()end
Value then G.Value=false BaseUpdate()else Tabify()end end)function end)function AddMiddleBGFrame()local aU=I:Clone()aU.Position=UDim2.new(0.5,0,(#
AddMiddleBGFrame()local aT=I:Clone()aT.Position=UDim2.new(0.5,0,(#ai*aT.Size.Y. ai*aU.Size.Y.Scale),0)if(#ai+1)%2~=1 then if E.Value then aU.Background.Image=
Scale),0)if(#ai+1)%2~=1 then if E.Value then aT.Background.Image= 'http://www.roblox.com/asset/?id='..b['LargeDark']else aU.Background.Image=
'http://www.roblox.com/asset/?id='..b['LargeDark']else aT.Background.Image= 'http://www.roblox.com/asset/?id='..b['midDark']end else if E.Value then aU.
'http://www.roblox.com/asset/?id='..b['midDark']end else if E.Value then aT. Background.Image='http://www.roblox.com/asset/?id='..b['LargeLight']else aU.
Background.Image='http://www.roblox.com/asset/?id='..b['LargeLight']else aT. Background.Image='http://www.roblox.com/asset/?id='..b['midLight']end end aU.
Background.Image='http://www.roblox.com/asset/?id='..b['midLight']end end aT. Parent=y table.insert(ai,aU)if#ai<aF and not aG then au=-1+(#ai*I.Size.Y.Scale)
Parent=y table.insert(ai,aT)if#ai<aF and not aG then au=-1+(#ai*I.Size.Y.Scale)
end if not D.Value then UpdateMinimize()end end function RemoveMiddleBGFrame()ai end if not D.Value then UpdateMinimize()end end function RemoveMiddleBGFrame()ai
[#ai]:Destroy()table.remove(ai,#ai)if not D.Value then UpdateMinimize()end end [#ai]:Destroy()table.remove(ai,#ai)if not D.Value then UpdateMinimize()end end
local aT={'Size8','Size9','Size10','Size11','Size12','Size14','Size24','Size36', local aU={'Size8','Size9','Size10','Size11','Size12','Size14','Size24','Size36',
'Size48'}function ChangeHeaderName(aX)o.Text=aX UpdateHeaderNameSize()end 'Size48'}function ChangeHeaderName(aV)o.Text=aV UpdateHeaderNameSize()end
function UpdateHeaderNameSize()local aX=o:Clone()aX.Position=UDim2.new(2,0,2,0) function UpdateHeaderNameSize()local aV=o:Clone()aV.Position=UDim2.new(2,0,2,0)
aX.Parent=i local aY=7 aX.FontSize=aT[aY]Delay(0.2,function()while aX.TextBounds 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 aX.TextBounds.x-ar.X.Offset>1 do aY .x==0 do wait(3.333333333333333E-2)end while aV.TextBounds.x-ar.X.Offset>1 do aY
=aY-1 aX.FontSize=aT[aY]wait(0.2)end o.FontSize=aX.FontSize aX:Destroy()end)end =aY-1 aV.FontSize=aU[aY]wait(0.2)end o.FontSize=aV.FontSize aV:Destroy()end)end
i.Changed:connect(UpdateHeaderNameSize)function LeaderstatsAdded(aX)local aY=aX[ i.Changed:connect(UpdateHeaderNameSize)function LeaderstatsAdded(aV)local aY=aV[
'Player']for aZ,a_ in pairs(aY.leaderstats:GetChildren())do StatAdded(a_,aX)end 'Player']for aZ,a_ in pairs(aY.leaderstats:GetChildren())do StatAdded(a_,aV)end
aY.leaderstats.ChildAdded:connect(function(a0)StatAdded(a0,aX)end)aY.leaderstats aY.leaderstats.ChildAdded:connect(function(a0)StatAdded(a0,aV)end)aY.leaderstats
.ChildRemoved:connect(function(a0)StatRemoved(a0,aX)end)end function .ChildRemoved:connect(function(a0)StatRemoved(a0,aV)end)end function
LeaderstatsRemoved(aX,aY)while ax do debugprint('waiting to insert '..aY[ LeaderstatsRemoved(aV,aY)while ax do debugprint('waiting to insert '..aY[
'Player'].Name)wait(3.333333333333333E-2)end ax=true RemoveAllStats(aY)ax=false '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() end function ClosePopUpPanel()if av then local aV=av['Frame']Spawn(function()
TweenProperty(aX,'BackgroundTransparency',0.5,1,c)end)end A:TweenPosition(UDim2. 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 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. local aZ,a_=2,GetFriendStatus(aY)debugprint(tostring(a_))local a0,a1=aM and g.
PersonalServerRank>=aL['Admin']and g.PersonalServerRank>aw.PersonalServerRank, PersonalServerRank>=aL['Admin']and g.PersonalServerRank>aw.PersonalServerRank,
MakePopupButton(A,'Report Player',0)a1.MouseButton1Click:connect(function() 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, 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, 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() 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 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 .Y)wait()end end)end function OnPlayerEntrySelect(aV,aY,aZ)if not aB then av=aV
aw=aX['Player']StartDrag(aX,aY,aZ)end end function ActivatePlayerEntryPanel(aX) aw=aV['Player']StartDrag(aV,aY,aZ)end end function ActivatePlayerEntryPanel(aV)
aX['Frame'].BackgroundColor3=Color3.new(0,1,1)Spawn(function()TweenProperty(aX[ aV['Frame'].BackgroundColor3=Color3.new(0,1,1)Spawn(function()TweenProperty(aV[
'Frame'],'BackgroundTransparency',1,0.5,0.5)end)aB=true InitMovingPanel(aX,aX[ 'Frame'],'BackgroundTransparency',1,0.5,0.5)end)aB=true InitMovingPanel(aV,aV[
'Player'])end function PlayerListModeUpdate()RecreateScoreColumns(ae)table.sort( '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 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(aX) +1,#ah,1 do ah[aZ]=nil end UpdateMinimize()end function InsertPlayerFrame(aV)
while ax do debugprint('waiting to insert '..aX.Name)wait(3.333333333333333E-2) 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' 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= ).Text=aV.Name aY.Position=UDim2.new(1,0,(#ah*aY.Size.Y.Scale),0)local aZ=
GetFriendStatus(aX)aY:FindFirstChild'BCLabel'.Image=getMembershipTypeIcon(aX. GetFriendStatus(aV)aY:FindFirstChild'BCLabel'.Image=getMembershipTypeIcon(aV.
MembershipType,aX.Name)aY:FindFirstChild'FriendLabel'.Image=getFriendStatusIcon( MembershipType,aV.Name)aY:FindFirstChild'FriendLabel'.Image=getFriendStatusIcon(
aZ)aY.Name=aX.Name WaitForChild(WaitForChild(aY,'TitleFrame'),'Title').Text=aX. 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. 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: TitleFrame.Title.Position=aY.TitleFrame.Title.Position+UDim2.new(0,17,0,0)if aY:
FindFirstChild'FriendLabel'.Image~=''then aY.TitleFrame.Title.Position=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' 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. 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 Title.Position+UDim2.new(0,1,0,1)a_.Name='DropShadow'a_.Parent=aY.TitleFrame end
else end aY.TitleFrame.Title.Font='ArialBold'aY.Parent=y aY:TweenPosition(UDim2. aY.TitleFrame.Title.Font='ArialBold'aY.Parent=y aY:TweenPosition(UDim2.new(0.5,0
new(0.5,0,(#ah*aY.Size.Y.Scale),0),'Out','Linear',c,true)UpdateMinimize()local ,(#ah*aY.Size.Y.Scale),0),'Out','Linear',c,true)UpdateMinimize()local a_={}a_[
a_={}a_['Frame']=aY a_['Player']=aX a_['ID']=ad ad=ad+1 table.insert(ae,a_)if#af 'Frame']=aY a_['Player']=aV a_['ID']=ad ad=ad+1 table.insert(ae,a_)if#af~=0 then
~=0 then if aX.Neutral then a_['MyTeam']=nil if not ag then AddNeutralTeam()else 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[ 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 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 AddPlayerToTeam(ag,a_)end a_['MyTeam']=ag end end end if aV:FindFirstChild
'leaderstats'then LeaderstatsAdded(a_)end aX.ChildAdded:connect(function(a0)if 'leaderstats'then LeaderstatsAdded(a_)end aV.ChildAdded:connect(function(a0)if
a0.Name=='leaderstats'then while ax do debugprint'in adding leaderstats lock' 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. wait(3.333333333333333E-2)end ax=true LeaderstatsAdded(a_)ax=false end end)aV.
ChildRemoved:connect(function(a0)if aX==g and a0.Name=='leaderstats'then ChildRemoved:connect(function(a0)if aV==g and a0.Name=='leaderstats'then
LeaderstatsRemoved(a0,a_)end end)aX.Changed:connect(function(a0)PlayerChanged(a_ LeaderstatsRemoved(a0,a_)end end)aV.Changed:connect(function(a0)PlayerChanged(a_
,a0)end)local a0=WaitForChild(aY,'ClickListener')a0.Active=true a0. ,a0)end)local a0=WaitForChild(aY,'ClickListener')a0.Active=true a0.
MouseButton1Down:connect(function(a1,a2)OnPlayerEntrySelect(a_,a1,a2)end) 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= 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( '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'] 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( 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' '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'] '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 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[ function TeamSortFunc(aV,aY)if aV['TeamScore']==aY['TeamScore']then return aV[
'ID']<aY['ID']end if not aX['TeamScore']then return false end if not aY[ 'ID']<aY['ID']end if not aV['TeamScore']then return false end if not aY[
'TeamScore']then return true end return aX['TeamScore']<aY['TeamScore']end 'TeamScore']then return true end return aV['TeamScore']<aY['TeamScore']end
function SortTeams(aX)for aY,aZ in ipairs(aX)do table.sort(aZ['MyPlayers'], function SortTeams(aV)for aY,aZ in ipairs(aV)do table.sort(aZ['MyPlayers'],
PlayerSortFunction)AddTeamScores(aZ)end table.sort(aX,TeamSortFunc)end function PlayerSortFunction)AddTeamScores(aZ)end table.sort(aV,TeamSortFunc)end function
TeamListModeUpdate()RecreateScoreColumns(ae)SortTeams(af)if ag then TeamListModeUpdate()RecreateScoreColumns(ae)SortTeams(af)if ag then
AddTeamScores(ag)end UnrollTeams(af,ah)end function AddTeamScores(aX)for aY=1,# AddTeamScores(ag)end UnrollTeams(af,ah)end function AddTeamScores(aV)for aY=1,#
ac,1 do local aZ,a_=ac[aY],0 for a0,a1 in ipairs(aX['MyPlayers'])do local a2=a1[ ac,1 do local aZ,a_=ac[aY],0 for a0,a1 in ipairs(aV['MyPlayers'])do local a2=a1[
'Player']:FindFirstChild'leaderstats'and a1['Player'].leaderstats: 'Player']:FindFirstChild'leaderstats'and a1['Player'].leaderstats:
FindFirstChild(aZ['Name'])if a2 and not a2:IsA'StringValue'then a_=a_+ FindFirstChild(aZ['Name'])if a2 and not a2:IsA'StringValue'then a_=a_+
GetScoreValue((a1['Player'].leaderstats)[aZ['Name']])end end if aX['Frame']: GetScoreValue((a1['Player'].leaderstats)[aZ['Name']])end end if aV['Frame']:
FindFirstChild(aZ['Name'])then aX['Frame'][aZ['Name']].Text=tostring(a_)end end FindFirstChild(aZ['Name'])then aV['Frame'][aZ['Name']].Text=tostring(a_)end end
UpdateMinimize()end function FindRemovePlayerFromTeam(aX)if aX['MyTeam']then for UpdateMinimize()end function FindRemovePlayerFromTeam(aV)if aV['MyTeam']then for
aY,aZ in ipairs(aX['MyTeam']['MyPlayers'])do if aZ['Player']==aX['Player']then aY,aZ in ipairs(aV['MyTeam']['MyPlayers'])do if aZ['Player']==aV['Player']then
RemovePlayerFromTeam(aX['MyTeam'],aY)return end end elseif ag then for aY,aZ in RemovePlayerFromTeam(aV['MyTeam'],aY)return end end elseif ag then for aY,aZ in
ipairs(ag['MyPlayers'])do if aZ['Player']==aX['Player']then ipairs(ag['MyPlayers'])do if aZ['Player']==aV['Player']then
RemovePlayerFromTeam(ag,aY)return end end end end function RemovePlayerFromTeam( RemovePlayerFromTeam(ag,aY)return end end end end function RemovePlayerFromTeam(
aX,aY)table.remove(aX['MyPlayers'],aY)if aX==ag and#aX['MyPlayers']==0 then aV,aY)table.remove(aV['MyPlayers'],aY)if aV==ag and#aV['MyPlayers']==0 then
RemoveNeutralTeam()end end function AddPlayerToTeam(aX,aY) RemoveNeutralTeam()end end function AddPlayerToTeam(aV,aY)
FindRemovePlayerFromTeam(aY)table.insert(aX['MyPlayers'],aY)aY['MyTeam']=aX if FindRemovePlayerFromTeam(aY)table.insert(aV['MyPlayers'],aY)aY['MyTeam']=aV if
aX['IsHidden']then aX['Frame'].Parent=y AddMiddleBGFrame()end aX['IsHidden']= aV['IsHidden']then aV['Frame'].Parent=y AddMiddleBGFrame()end aV['IsHidden']=
false end function SetPlayerToTeam(aX)FindRemovePlayerFromTeam(aX)local aY=false false end function SetPlayerToTeam(aV)FindRemovePlayerFromTeam(aV)local aY=false
for aZ,a_ in ipairs(af)do if a_['MyTeam'].TeamColor==aX['Player'].TeamColor then for aZ,a_ in ipairs(af)do if a_['MyTeam'].TeamColor==aV['Player'].TeamColor then
AddPlayerToTeam(a_,aX)aY=true end end if not aY and#(game.Teams:GetTeams())>0 AddPlayerToTeam(a_,aV)aY=true end end if not aY and#(game.Teams:GetTeams())>0
then debugprint(aX['Player'].Name..'could not find team')aX['MyTeam']=nil if not then debugprint(aV['Player'].Name..'could not find team')aV['MyTeam']=nil if not
ag then AddNeutralTeam()else AddPlayerToTeam(ag,aX)end end end function ag then AddNeutralTeam()else AddPlayerToTeam(ag,aV)end end end function
PlayerChanged(aX,aY)while aC do debugprint'in playerchanged lock'wait( PlayerChanged(aV,aY)while aC do debugprint'in playerchanged lock'wait(
3.333333333333333E-2)end aC=true if aY=='Neutral'then if aX['Player'].Neutral 3.333333333333333E-2)end aC=true if aY=='Neutral'then if aV['Player'].Neutral
and#(game.Teams:GetTeams())>0 then debugprint(aX['Player'].Name.. and#(game.Teams:GetTeams())>0 then debugprint(aV['Player'].Name..
'setting to neutral')FindRemovePlayerFromTeam(aX)aX['MyTeam']=nil if not ag then 'setting to neutral')FindRemovePlayerFromTeam(aV)aV['MyTeam']=nil if not ag then
debugprint(aX['Player'].Name..'creating neutral team')AddNeutralTeam()else debugprint(aV['Player'].Name..'creating neutral team')AddNeutralTeam()else
debugprint(aX['Player'].Name..'adding to neutral team')AddPlayerToTeam(ag,aX)end debugprint(aV['Player'].Name..'adding to neutral team')AddPlayerToTeam(ag,aV)end
elseif#(game.Teams:GetTeams())>0 then debugprint(aX['Player'].Name.. elseif#(game.Teams:GetTeams())>0 then debugprint(aV['Player'].Name..
'has been set non-neutral')SetPlayerToTeam(aX)end BaseUpdate()elseif aY== 'has been set non-neutral')SetPlayerToTeam(aV)end BaseUpdate()elseif aY==
'TeamColor'and not aX['Player'].Neutral and aX['Player']~=aX['MyTeam']then 'TeamColor'and not aV['Player'].Neutral and aV['Player']~=aV['MyTeam']then
debugprint(aX['Player'].Name..'setting to new team')SetPlayerToTeam(aX) debugprint(aV['Player'].Name..'setting to new team')SetPlayerToTeam(aV)
BaseUpdate()elseif aY=='Name'or aY=='MembershipType'then aX['Frame']: BaseUpdate()elseif aY=='Name'or aY=='MembershipType'then aV['Frame']:
FindFirstChild'BCLabel'.Image=getMembershipTypeIcon(aX['Player'].MembershipType, FindFirstChild'BCLabel'.Image=getMembershipTypeIcon(aV['Player'].MembershipType,
aX['Player'].Name)aX['Frame'].Name=aX['Player'].Name aX['Frame'].TitleFrame. aV['Player'].Name)aV['Frame'].Name=aV['Player'].Name aV['Frame'].TitleFrame.
Title.Text=aX['Player'].Name if aX['Frame'].BCLabel.Image~=''then aX['Frame']. 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 aX['Player']==g then aX TitleFrame.Title.Position=UDim2.new(0.01,30,0.1,0)end if aV['Player']==g then aV
['Frame'].TitleFrame.DropShadow.Text=aX['Player'].Name ChangeHeaderName(aX[ ['Frame'].TitleFrame.DropShadow.Text=aV['Player'].Name ChangeHeaderName(aV[
'Player'].Name)end BaseUpdate()end aC=false end function OnFriendshipChanged(aX, 'Player'].Name)end BaseUpdate()end aC=false end function OnFriendshipChanged(aV,
aY)Delay(0.5,function()debugprint('friend status changed for:'..aX.Name..' '.. aY)Delay(0.5,function()debugprint('friend status changed for:'..aV.Name..' '..
tostring(aY)..' vs '..tostring(GetFriendStatus(aX)))for aZ,a_ in ipairs(ae)do if tostring(aY)..' vs '..tostring(GetFriendStatus(aV)))for aZ,a_ in ipairs(ae)do if
a_['Player']==aX then local a0=getFriendStatusIcon(aY)if a0==''and a_['Frame']. a_['Player']==aV then local a0=getFriendStatusIcon(aY)if a0==''and a_['Frame'].
FriendLabel.Image~=''then a_['Frame'].TitleFrame.Title.Position=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']. TitleFrame.Title.Position-UDim2.new(0,17,0,0)elseif a0~=''and a_['Frame'].
FriendLabel.Image==''then a_['Frame'].TitleFrame.Title.Position=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. Name)end a_['Frame'].FriendLabel.Image=a0 return end end end)end g.
FriendStatusChanged:connect(OnFriendshipChanged)function AddNeutralTeam()while FriendStatusChanged:connect(OnFriendshipChanged)function AddNeutralTeam()while
aD do debugprint'in neutral team 2 lock'wait()end aD=true local aX=Instance.new aD do debugprint'in neutral team 2 lock'wait()end aD=true local aV=Instance.new
'Team'aX.TeamColor=BrickColor.new'White'aX.Name='Neutral'local aY={}aY['MyTeam'] 'Team'aV.TeamColor=BrickColor.new'White'aV.Name='Neutral'local aY={}aY['MyTeam']
=aX aY['MyPlayers']={}aY['Frame']=H:Clone()WaitForChild(WaitForChild(aY['Frame'] =aV aY['MyPlayers']={}aY['Frame']=H:Clone()WaitForChild(WaitForChild(aY['Frame']
,'TitleFrame'),'Title').Text=aX.Name aY['Frame'].TitleFrame.Position=UDim2.new( ,'TitleFrame'),'Title').Text=aV.Name aY['Frame'].TitleFrame.Position=UDim2.new(
aY['Frame'].TitleFrame.Position.X.Scale,aY['Frame'].TitleFrame.Position.X.Offset 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 ,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= ,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() AddPlayerToTeam(aY,a_)end end if#aY['MyPlayers']>0 then ag=aY UpdateMinimize()
BaseUpdate()end aD=false end function RemoveNeutralTeam()while aD do debugprint BaseUpdate()end aD=false end function RemoveNeutralTeam()while aD do debugprint
'in neutral team lock'wait()end aD=true ag['Frame']:Destroy()ag=nil 'in neutral team lock'wait()end aD=true ag['Frame']:Destroy()ag=nil
RemoveMiddleBGFrame()aD=false end function TeamScoreChanged(aX,aY)WaitForChild( RemoveMiddleBGFrame()aD=false end function TeamScoreChanged(aV,aY)WaitForChild(
aX['Frame'],'PlayerScore').Text=tostring(aY)aX['TeamScore']=aY end function aV['Frame'],'PlayerScore').Text=tostring(aY)aV['TeamScore']=aY end function
TeamChildAdded(aX,aY)if aY.Name=='AutoHide'then aX['AutoHide']=true elseif aY. TeamChildAdded(aV,aY)if aY.Name=='AutoHide'then aV['AutoHide']=true elseif aY.
Name=='TeamScore'then WaitForChild(aX['Frame'],'PlayerScore').Text=tostring(aY. Name=='TeamScore'then WaitForChild(aV['Frame'],'PlayerScore').Text=tostring(aY.
Value)aX['TeamScore']=aY.Value aY.Changed:connect(function()TeamScoreChanged(aX, Value)aV['TeamScore']=aY.Value aY.Changed:connect(function()TeamScoreChanged(aV,
aY.Value)end)end end function TeamChildRemoved(aX,aY)if aY.Name=='AutoHide'then aY.Value)end)end end function TeamChildRemoved(aV,aY)if aY.Name=='AutoHide'then
aX['AutoHide']=false elseif aY.Name=='TeamScore'then WaitForChild(aX['Frame'], aV['AutoHide']=false elseif aY.Name=='TeamScore'then WaitForChild(aV['Frame'],
'PlayerScore').Text=''aX['TeamScore']=nil end end function TeamChanged(aX,aY)if 'PlayerScore').Text=''aV['TeamScore']=nil end end function TeamChanged(aV,aY)if
aY=='Name'then WaitForChild(WaitForChild(aX['Frame'],'TitleFrame'),'Title').Text aY=='Name'then WaitForChild(WaitForChild(aV['Frame'],'TitleFrame'),'Title').Text
=aX['MyTeam'].Name elseif aY=='TeamColor'then aX['Frame'].ClickListener. =aV['MyTeam'].Name elseif aY=='TeamColor'then aV['Frame'].ClickListener.
BackgroundColor3=aX['MyTeam'].TeamColor.Color for aZ,a_ in pairs(af)do if a_[ BackgroundColor3=aV['MyTeam'].TeamColor.Color for aZ,a_ in pairs(af)do if a_[
'MyTeam'].TeamColor==aX['MyTeam']then RemoveTeamFrame(aX['MyTeam'])end end aX[ 'MyTeam'].TeamColor==aV['MyTeam']then RemoveTeamFrame(aV['MyTeam'])end end aV[
'MyPlayers']={}for a0,a1 in pairs(ae)do SetPlayerToTeam(a1)end BaseUpdate()end '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[ '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 'MyTeam']=aV aY['MyPlayers']={}aY['Frame']=H:Clone()WaitForChild(WaitForChild(aY
['Frame'],'TitleFrame'),'Title').Text=aX.Name aY['Frame'].TitleFrame.Title.Font= ['Frame'],'TitleFrame'),'Title').Text=aV.Name aY['Frame'].TitleFrame.Title.Font=
'ArialBold'aY['Frame'].TitleFrame.Title.FontSize='Size18'aY['Frame'].TitleFrame. 'ArialBold'aY['Frame'].TitleFrame.Title.FontSize='Size18'aY['Frame'].TitleFrame.
Position=UDim2.new(aY['Frame'].TitleFrame.Position.X.Scale,aY['Frame']. 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[ 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.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'].Position=UDim2.new(1,0,(#ah*aY['Frame'].Size.Y.Scale),0)WaitForChild(aY
['Frame'],'ClickListener').MouseButton1Down:connect(function(a0,a1)StartDrag(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. 'Frame'].ClickListener.BackgroundTransparency=0.7 aY['Frame'].ClickListener.
AutoButtonColor=false ad=ad+1 aY['ID']=ad aY['AutoHide']=false if aX: AutoButtonColor=false ad=ad+1 aY['ID']=ad aY['AutoHide']=false if aV:
FindFirstChild'AutoHide'then aY['AutoHide']=true end if aX:FindFirstChild FindFirstChild'AutoHide'then aY['AutoHide']=true end if aV:FindFirstChild
'TeamScore'then TeamChildAdded(aY,aX.TeamScore)end aX.ChildAdded:connect( 'TeamScore'then TeamChildAdded(aY,aV.TeamScore)end aV.ChildAdded:connect(
function(a0)TeamChildAdded(aY,a0)end)aX.ChildRemoved:connect(function(a0) function(a0)TeamChildAdded(aY,a0)end)aV.ChildRemoved:connect(function(a0)
TeamChildRemoved(aY,a0)end)aX.Changed:connect(function(a0)TeamChanged(aY,a0)end) 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 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']: ['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 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 ,true)AddMiddleBGFrame()else aY['IsHidden']=true aY['Frame'].Parent=nil end
table.insert(af,aY)UpdateMinimize()BaseUpdate()if#af==1 and not ag then table.insert(af,aY)UpdateMinimize()BaseUpdate()if#af==1 and not ag then
AddNeutralTeam()end ax=false end function RemoveTeamFrame(aX)while ax do AddNeutralTeam()end ax=false end function RemoveTeamFrame(aV)while ax do
debugprint'in removing team frame lock'wait(3.333333333333333E-2)end ax=true if debugprint'in removing team frame lock'wait(3.333333333333333E-2)end ax=true
D.Value then end local aY for a0,a1 in ipairs(af)do if aX==a1['MyTeam']then aY= local aY for a0,a1 in ipairs(af)do if aV==a1['MyTeam']then aY=a1 a1['Frame']:
a1 a1['Frame']:Destroy()table.remove(af,a0)end end if#af==0 then debugprint Destroy()table.remove(af,a0)end end if#af==0 then debugprint
'removeteamframe, remove neutral'if ag then RemoveNeutralTeam()end end for a2,a3 'removeteamframe, remove neutral'if ag then RemoveNeutralTeam()end end for a2,a3
in ipairs(aY['MyPlayers'])do RemovePlayerFromTeam(aY,a2)PlayerChanged(a3, in ipairs(aY['MyPlayers'])do RemovePlayerFromTeam(aY,a2)PlayerChanged(a3,
'TeamColor')end RemoveMiddleBGFrame()BaseUpdate()ax=false end function TeamAdded '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( function BaseUpdate()while az do debugprint'in baseupdate lock'wait(
3.333333333333333E-2)end az=true UpdateStatNames()if#af==0 and not ag then 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 PlayerListModeUpdate()else TeamListModeUpdate()end for aV,aY in ipairs(ah)do if
aY.Parent~=nil then aY:TweenPosition(UDim2.new(0.5,0,((#ah-aX)*aY.Size.Y.Scale), 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 0),'Out','Linear',c,true)end end if not D.Value and#ah>_ then
UpdateScrollPosition()end UpdateMinimize()UpdateScrollBarSize() UpdateScrollPosition()end UpdateMinimize()UpdateScrollBarSize()
UpdateScrollPosition()UpdateScrollBarVisibility()az=false end game.GuiService: 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. '\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> GuiService.IsModalDialog end)if a2==false or(a2 and a3==false)then if time()-aV>
0.4 then aX=time()if F.Value then if not E.Value then i:TweenPosition(UDim2.new( 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( 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= 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) true end else ToggleMaximize()end end end end end)function PlayersChildAdded(aY)

View File

@ -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 Visible=true f.DeclineButton.Visible=false f.AcceptButton.Visible=false end end
function showTwoButtons()local f=script.Parent:FindFirstChild'Popup'if f then f. function showTwoButtons()local f=script.Parent:FindFirstChild'Popup'if f then f.
OKButton.Visible=false f.DeclineButton.Visible=true f.AcceptButton.Visible=true OKButton.Visible=false f.DeclineButton.Visible=true f.AcceptButton.Visible=true
end end function onTeleport(f,g,h)if game:GetService'TeleportService'. end end function showTeleportUI(f,g)if b~=nil then b:Remove()end waitForChild(a,
CustomizedTeleportUI==false then if f==Enum.TeleportState.Started then 'PlayerGui')b=Instance.new'Message'b.Text=f b.Parent=a.PlayerGui if g>0 then
showTeleportUI('Teleport started...',0)elseif f==Enum.TeleportState. wait(g)b:Remove()end end function onTeleport(f,g,h)if game:GetService
WaitingForServer then showTeleportUI('Requesting server...',0)elseif f==Enum. '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.InProgress then showTeleportUI('Teleporting...',0)elseif f==Enum.
TeleportState.Failed then showTeleportUI( TeleportState.Failed then showTeleportUI(
[[Teleport failed. Insufficient privileges or target place does not exist.]],3) [[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 end end end if d then a.OnTeleport:connect(onTeleport)game:GetService
waitForChild(a,'PlayerGui')b=Instance.new'Message'b.Text=f b.Parent=a.PlayerGui 'TeleportService'.ErrorCallback=function(f)local h=script.Parent:FindFirstChild
if h>0 then wait(h)b:Remove()end end if d then a.OnTeleport:connect(onTeleport) 'Popup'showOneButton()h.PopupText.Text=f local i i=h.OKButton.MouseButton1Click:
game:GetService'TeleportService'.ErrorCallback=function(f)local h=script.Parent: connect(function()game:GetService'TeleportService':TeleportCancel()if i then i:
FindFirstChild'Popup'showOneButton()h.PopupText.Text=f local i i=h.OKButton. disconnect()end game.GuiService:RemoveCenterDialog(script.Parent:FindFirstChild
MouseButton1Click:connect(function()game:GetService'TeleportService': 'Popup')h:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle
TeleportCancel()if i then i:disconnect()end game.GuiService:RemoveCenterDialog( .Quart,1,true,e())end)game.GuiService:AddCenterDialog(script.Parent:
script.Parent:FindFirstChild'Popup')h:TweenSize(UDim2.new(0,0,0,0),Enum. FindFirstChild'Popup',Enum.CenterDialogType.QuitDialog,function()showOneButton()
EasingDirection.Out,Enum.EasingStyle.Quart,1,true,e())end)game.GuiService: script.Parent:FindFirstChild'Popup'.Visible=true h:TweenSize(UDim2.new(0,330,0,
AddCenterDialog(script.Parent:FindFirstChild'Popup',Enum.CenterDialogType. 350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)end,function()h:
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:
TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1, TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,
true,e())end k=j.AcceptButton.MouseButton1Click:connect(function()killCons() true,e())end)end game:GetService'TeleportService'.ConfirmationCallback=function(
local m,n=pcall(function()game:GetService'TeleportService':TeleportImpl(h,i)end) f,h,i)local j=script.Parent:FindFirstChild'Popup'j.PopupText.Text=f j.PopupImage
if not m then showOneButton()j.PopupText.Text=n local o o=j.OKButton. .Image=''local k,l local function killCons()if k then k:disconnect()end if l
MouseButton1Click:connect(function()if o then o:disconnect()end game.GuiService: then l:disconnect()end game.GuiService:RemoveCenterDialog(script.Parent:
RemoveCenterDialog(script.Parent:FindFirstChild'Popup')j:TweenSize(UDim2.new(0,0 FindFirstChild'Popup')j:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,
,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,e())end)game. Enum.EasingStyle.Quart,1,true,e())end k=j.AcceptButton.MouseButton1Click:
GuiService:AddCenterDialog(script.Parent:FindFirstChild'Popup',Enum. connect(function()killCons()local m,n=pcall(function()game:GetService
CenterDialogType.QuitDialog,function()showOneButton()script.Parent: '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. FindFirstChild'Popup'.Visible=true j:TweenSize(UDim2.new(0,330,0,350),Enum.
EasingDirection.Out,Enum.EasingStyle.Quart,1,true)end,function()j:TweenSize( 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()) 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() end)end)if m==false then script.Parent:FindFirstChild'Popup'.Visible=true j.
pcall(function()game:GetService'TeleportService':TeleportCancel()end)end)local m AcceptButton.Text='Leave'j.DeclineButton.Text='Stay'j:TweenSize(UDim2.new(0,330,
=pcall(function()game.GuiService:AddCenterDialog(script.Parent:FindFirstChild 0,350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)end return true
'Popup',Enum.CenterDialogType.QuitDialog,function()showTwoButtons()j. end end
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

View File

@ -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 .Players.LocalPlayer.Character then C[F].GearReference.Value.Parent=game.Players
.LocalPlayer.Backpack end if C[F].GearReference.Value:IsA'HopperBin'and C[F]. .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 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, GearReference.Value.Active=false end end C[F]='empty'delay(0,function()E:remove(
E.Size.Y.Scale/2 delay(0,function()E:remove()end)Spawn(function()while )end)Spawn(function()while backpackIsOpen()do wait(0.03)end waitForChild(i,
backpackIsOpen()do wait(0.03)end waitForChild(i,'Backpack')local I=true for J=1, 'Backpack')local G=true for H=1,#C do if C[H]~='empty'then G=false end end if G
#C do if C[J]~='empty'then I=false end end if I then if#i.Backpack:GetChildren() then if#i.Backpack:GetChildren()<1 then f.Visible=false else f.Position=UDim2.
<1 then f.Visible=false else f.Position=UDim2.new(0.5,-60,1,-44)end h.Visible= new(0.5,-60,1,-44)end h.Visible=false end end)end end function insertGear(E,F)
false end end)end end function insertGear(E,F)local G=nil if not F then for H=1, local G=nil if not F then for H=1,#C do if C[H]=='empty'then G=H break end end
#C do if C[H]=='empty'then G=H break end end if G==1 and C[1]~='empty'then E: if G==1 and C[1]~='empty'then E:remove()return end else G=F local H=1 for I=1,#C
remove()return end else G=F local H=1 for I=1,#C do if C[I]=='empty'then H=I 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
break end end for I=H,G+1,-1 do C[I]=C[I-1]if I==10 then C[I].SlotNumber.Text= then C[I].SlotNumber.Text='0'C[I].SlotNumberDownShadow.Text='0'C[I].
'0'C[I].SlotNumberDownShadow.Text='0'C[I].SlotNumberUpShadow.Text='0'else C[I]. SlotNumberUpShadow.Text='0'else C[I].SlotNumber.Text=I C[I].SlotNumberDownShadow
SlotNumber.Text=I C[I].SlotNumberDownShadow.Text=I C[I].SlotNumberUpShadow.Text= .Text=I C[I].SlotNumberUpShadow.Text=I end end end C[G]=E if G~=r then if type(
I end end end C[G]=E if G~=r then if type(tostring(G))=='string'then local H= tostring(G))=='string'then local H=tostring(G)E.SlotNumber.Text=H E.
tostring(G)E.SlotNumber.Text=H E.SlotNumberDownShadow.Text=H E. SlotNumberDownShadow.Text=H E.SlotNumberUpShadow.Text=H end else E.SlotNumber.
SlotNumberUpShadow.Text=H end else E.SlotNumber.Text='0'E.SlotNumberDownShadow. Text='0'E.SlotNumberDownShadow.Text='0'E.SlotNumberUpShadow.Text='0'end E.
Text='0'E.SlotNumberUpShadow.Text='0'end E.Visible=true local H=nil H=E.Kill. Visible=true local H=nil H=E.Kill.Changed:connect(function(I)kill(I,H,E)end)end
Changed:connect(function(I)kill(I,H,E)end)end function reorganizeLoadout(E,F,G,H function reorganizeLoadout(E,F,G,H)if F then insertGear(E,H)else removeGear(E)
)if F then insertGear(E,H)else removeGear(E)end if E~='empty'then E.ZIndex=1 end end if E~='empty'then E.ZIndex=1 end end function checkToolAncestry(E,F)if E:
end function checkToolAncestry(E,F)if E:FindFirstChild'RobloxBuildTool'then FindFirstChild'RobloxBuildTool'then return end if E:IsA'Tool'or E:IsA'HopperBin'
return end if E:IsA'Tool'or E:IsA'HopperBin'then for G=1,#C do if C[G]~='empty' then for G=1,#C do if C[G]~='empty'and C[G].GearReference.Value==E then if F==
and C[G].GearReference.Value==E then if F==nil then C[G].Kill.Value=true return nil then C[G].Kill.Value=true return false elseif E.Parent==i.Character then C[G
false elseif E.Parent==i.Character then C[G].Selected=true return true elseif E. ].Selected=true return true elseif E.Parent==i.Backpack then if E:IsA'Tool'or E:
Parent==i.Backpack then if E:IsA'Tool'or E:IsA'HopperBin'then C[G].Selected= IsA'HopperBin'then C[G].Selected=false end return true else C[G].Kill.Value=true
false end return true else C[G].Kill.Value=true return false end return true end return false end return true end end end end function removeAllEquippedGear(E)
end end end function removeAllEquippedGear(E)local F=i.Character:GetChildren() local F=i.Character:GetChildren()for G=1,#F do if(F[G]:IsA'Tool'or F[G]:IsA
for G=1,#F do if(F[G]:IsA'Tool'or F[G]:IsA'HopperBin')and F[G]~=E then if F[G]: 'HopperBin')and F[G]~=E then if F[G]:IsA'Tool'then F[G].Parent=i.Backpack end if
IsA'Tool'then F[G].Parent=i.Backpack end if F[G]:IsA'HopperBin'then F[G]: F[G]:IsA'HopperBin'then F[G]:Disable()end end end end function hopperBinSwitcher
Disable()end end end end function hopperBinSwitcher(E,F)if not F then return end (E,F)if not F then return end F:ToggleSelect()if C[E]=='empty'then return end if
F:ToggleSelect()if C[E]=='empty'then return end if not F.Active then C[E]. not F.Active then C[E].Selected=false normalizeButton(C[E])else C[E].Selected=
Selected=false normalizeButton(C[E])else C[E].Selected=true enlargeButton(C[E]) true enlargeButton(C[E])end end function toolSwitcher(E)if not C[E]then return
end end function toolSwitcher(E)if not C[E]then return end local F=C[E]. end local F=C[E].GearReference.Value if F==nil then return end
GearReference.Value if F==nil then return end removeAllEquippedGear(F)local G=E removeAllEquippedGear(F)local G=E if E==0 then G=10 end for H=1,#C do if C[H]and
if E==0 then G=10 end for H=1,#C do if C[H]and C[H]~='empty'and H~=G then C[H]~='empty'and H~=G then normalizeButton(C[H])C[H].Selected=false if C[H].
normalizeButton(C[H])C[H].Selected=false if C[H].GearReference and C[H]. GearReference and C[H].GearReference.Value and C[H].GearReference.Value:IsA
GearReference.Value and C[H].GearReference.Value:IsA'HopperBin'and C[H]. 'HopperBin'and C[H].GearReference.Value.Active then C[H].GearReference.Value:
GearReference.Value.Active then C[H].GearReference.Value:ToggleSelect()end end ToggleSelect()end end end if F:IsA'HopperBin'then hopperBinSwitcher(E,F)else if
end if F:IsA'HopperBin'then hopperBinSwitcher(E,F)else if F.Parent==i.Character F.Parent==i.Character then F.Parent=i.Backpack if C[E]~='empty'then C[E].
then F.Parent=i.Backpack if C[E]~='empty'then C[E].Selected=false Selected=false normalizeButton(C[E])end else F.Parent=i.Character C[E].Selected=
normalizeButton(C[E])end else F.Parent=i.Character C[E].Selected=true true enlargeButton(C[E])end end end function activateGear(E)local F=nil if E==
enlargeButton(C[E])end end end function activateGear(E)local F=nil if E=='0'then '0'then F=10 else F=tonumber(E)end if F==nil then return end if C[F]~='empty'
F=10 else F=tonumber(E)end if F==nil then return end if C[F]~='empty'then then toolSwitcher(F)end end enlargeButton=function(E)if E.Size.Y.Scale>1 then
toolSwitcher(F)end end enlargeButton=function(E)if E.Size.Y.Scale>1 then return return end if not E.Parent then return end if not E.Selected then return end for
end if not E.Parent then return end if not E.Selected then return end for F=1,#C F=1,#C do if C[F]=='empty'then break end if C[F]~=E then normalizeButton(C[F])
do if C[F]=='empty'then break end if C[F]~=E then normalizeButton(C[F])end end end end if not y then return end if E:FindFirstChild'Highlight'then E.Highlight.
if not y then return end if E:FindFirstChild'Highlight'then E.Highlight.Visible= Visible=true end if E:IsA'ImageButton'or E:IsA'TextButton'then E.ZIndex=5 local
true end if E:IsA'ImageButton'or E:IsA'TextButton'then E.ZIndex=5 local F,G=-(w. F,G=-(w.X.Scale-E.Size.X.Scale)/2,-(w.Y.Scale-E.Size.Y.Scale)/2 E:
X.Scale-E.Size.X.Scale)/2,-(w.Y.Scale-E.Size.Y.Scale)/2 E:TweenSizeAndPosition(w TweenSizeAndPosition(w,UDim2.new(E.Position.X.Scale+F,E.Position.X.Offset,E.
,UDim2.new(E.Position.X.Scale+F,E.Position.X.Offset,E.Position.Y.Scale+G,E. Position.Y.Scale+G,E.Position.Y.Offset),Enum.EasingDirection.Out,Enum.
Position.Y.Offset),Enum.EasingDirection.Out,Enum.EasingStyle.Quad,z/5,y)end end EasingStyle.Quad,z/5,y)end end normalizeAllButtons=function()for E=1,#C do if C[
normalizeAllButtons=function()for E=1,#C do if C[E]=='empty'then break end if C[ E]=='empty'then break end if C[E]~=button then normalizeButton(C[E],0.1)end end
E]~=button then normalizeButton(C[E],0.1)end end end normalizeButton=function(E, end normalizeButton=function(E,F)if not E then return end if E.Size.Y.Scale<=1
F)if not E then return end if E.Size.Y.Scale<=1 then return end if E.Selected then return end if E.Selected then return end if not E.Parent then return end
then return end if not E.Parent then return end local G=F if G==nil or type(G)~= local G=F if G==nil or type(G)~='number'then G=z/5 end if E:FindFirstChild
'number'then G=z/5 end if E:FindFirstChild'Highlight'then E.Highlight.Visible= 'Highlight'then E.Highlight.Visible=false end if E:IsA'ImageButton'or E:IsA
false end if E:IsA'ImageButton'or E:IsA'TextButton'then E.ZIndex=1 local H,I,J=1 'TextButton'then E.ZIndex=1 local H,I,J=1/v,-(x.X.Scale-E.Size.X.Scale)/2,-(x.Y.
/v,-(x.X.Scale-E.Size.X.Scale)/2,-(x.Y.Scale-E.Size.Y.Scale)/2 E: Scale-E.Size.Y.Scale)/2 E:TweenSizeAndPosition(x,UDim2.new(E.Position.X.Scale+I,
TweenSizeAndPosition(x,UDim2.new(E.Position.X.Scale+I,E.Position.X.Offset,E. E.Position.X.Offset,E.Position.Y.Scale+J,E.Position.Y.Offset),Enum.
Position.Y.Scale+J,E.Position.Y.Offset),Enum.EasingDirection.Out,Enum. EasingDirection.Out,Enum.EasingStyle.Quad,G,y)end end local E=function()while u
EasingStyle.Quad,G,y)end end local E=function()while u do wait()end end function do wait()end end function pointInRectangle(F,G,H)if F.x>G.x and F.x<(G.x+H.x)
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+ then if F.y>G.y and F.y<(G.y+H.y)then return true end end return false end
H.y)then return true end end return false end function swapGear(F,G)local H=G: function swapGear(F,G)local H=G:GetChildren()if#H==1 then if H[1]:FindFirstChild
GetChildren()if#H==1 then if H[1]:FindFirstChild'SlotNumber'then local I,J= 'SlotNumber'then local I,J=tonumber(H[1].SlotNumber.Text),tonumber(F.SlotNumber.
tonumber(H[1].SlotNumber.Text),tonumber(F.SlotNumber.Text)if I==0 then I=10 end 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
if J==0 then J=10 end C[I]=F C[J]=H[1]H[1].SlotNumber.Text=F.SlotNumber.Text H[1 .Text=F.SlotNumber.Text H[1].SlotNumberDownShadow.Text=F.SlotNumber.Text H[1].
].SlotNumberDownShadow.Text=F.SlotNumber.Text H[1].SlotNumberUpShadow.Text=F. SlotNumberUpShadow.Text=F.SlotNumber.Text local K=string.sub(G.Name,5)F.
SlotNumber.Text local K=string.sub(G.Name,5)F.SlotNumber.Text=K F. SlotNumber.Text=K F.SlotNumberDownShadow.Text=K F.SlotNumberUpShadow.Text=K F.
SlotNumberDownShadow.Text=K F.SlotNumberUpShadow.Text=K F.Position=UDim2.new(F. Position=UDim2.new(F.Position.X.Scale,0,F.Position.Y.Scale,0)H[1].Position=UDim2
Position.X.Scale,0,F.Position.Y.Scale,0)H[1].Position=UDim2.new(H[1].Position.X. .new(H[1].Position.X.Scale,0,H[1].Position.Y.Scale,0)H[1].Parent=F.Parent F.
Scale,0,H[1].Position.Y.Scale,0)H[1].Parent=F.Parent F.Parent=G end else local I Parent=G end else local I=tonumber(F.SlotNumber.Text)if I==0 then I=10 end C[I]=
=tonumber(F.SlotNumber.Text)if I==0 then I=10 end C[I]='empty'local J=string. 'empty'local J=string.sub(G.Name,5)F.SlotNumber.Text=J F.SlotNumberDownShadow.
sub(G.Name,5)F.SlotNumber.Text=J F.SlotNumberDownShadow.Text=J F. Text=J F.SlotNumberUpShadow.Text=J local K=tonumber(F.SlotNumber.Text)if K==0
SlotNumberUpShadow.Text=J local K=tonumber(F.SlotNumber.Text)if K==0 then K=10 then K=10 end C[K]=F F.Position=UDim2.new(F.Position.X.Scale,0,F.Position.Y.
end C[K]=F F.Position=UDim2.new(F.Position.X.Scale,0,F.Position.Y.Scale,0)F. Scale,0)F.Parent=G end end function resolveDrag(F,G,H)local I,J=Vector2.new(G,H)
Parent=G end end function resolveDrag(F,G,H)local I,J=Vector2.new(G,H),F.Parent ,F.Parent local K=J.Parent:GetChildren()for L=1,#K do if K[L]:IsA'Frame'then if
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]) pointInRectangle(I,K[L].AbsolutePosition,K[L].AbsoluteSize)then swapGear(F,K[L])
return true end end end if G<J.AbsolutePosition.x or G>(J.AbsolutePosition.x+J. return true end end end if G<J.AbsolutePosition.x or G>(J.AbsolutePosition.x+J.
AbsoluteSize.x)then reorganizeLoadout(F,false)return false elseif H<J. AbsoluteSize.x)then reorganizeLoadout(F,false)return false elseif H<J.

View File

@ -7,19 +7,18 @@ end local o={backslashes={['\b']='\\b',['\t']='\\t',['\n']='\\n',['\f']='\\f',[
writer=n:New()i(p,self)self.__index=self return p end function o:Append(p)self. writer=n:New()i(p,self)self.__index=self return p end function o:Append(p)self.
writer:Append(p)end function o:ToString()return self.writer:ToString()end writer:Append(p)end function o:ToString()return self.writer:ToString()end
function o:Write(p)local q=h(p)if q=='nil'then self:WriteNil()elseif q== function o:Write(p)local q=h(p)if q=='nil'then self:WriteNil()elseif q==
'boolean'then self:WriteString(p)elseif q=='number'then self:WriteString(p) 'boolean'or q=='number'then self:WriteString(p)elseif q=='string'then self:
elseif q=='string'then self:ParseString(p)elseif q=='table'then self:WriteTable( ParseString(p)elseif q=='table'then self:WriteTable(p)elseif q=='function'then
p)elseif q=='function'then self:WriteFunction(p)elseif q=='thread'then self: self:WriteFunction(p)elseif q=='thread'or q=='userdata'then self:WriteError(p)
WriteError(p)elseif q=='userdata'then self:WriteError(p)end end function o: end end function o:WriteNil()self:Append'null'end function o:WriteString(p)self:
WriteNil()self:Append'null'end function o:WriteString(p)self:Append(g(p))end Append(g(p))end function o:ParseString(p)self:Append'"'self:Append(b.gsub(p,
function o:ParseString(p)self:Append'"'self:Append(b.gsub(p,'[%z%c\\"/]', '[%z%c\\"/]',function(q)local r=self.backslashes[q]if r then return r end return
function(q)local r=self.backslashes[q]if r then return r end return b.format( b.format('\\u%.4X',b.byte(q))end))self:Append'"'end function o:IsArray(p)local q
'\\u%.4X',b.byte(q))end))self:Append'"'end function o:IsArray(p)local q,r=0, ,r=0,function(q)if h(q)=='number'and q>0 then if c.floor(q)==q then return true
function(q)if h(q)=='number'and q>0 then if c.floor(q)==q then return true end end end return false end for s,t in j(p)do if not r(s)then return false,'{','}'
end return false end for s,t in j(p)do if not r(s)then return false,'{','}'else else q=c.max(q,s)end end return true,'[',']',q end function o:WriteTable(p)local
q=c.max(q,s)end end return true,'[',']',q end function o:WriteTable(p)local q,r, q,r,s,t=self:IsArray(p)self:Append(r)if q then for u=1,t do self:Write(p[u])if u
s,t=self:IsArray(p)self:Append(r)if q then for u=1,t do self:Write(p[u])if u<t <t then self:Append','end end else local u=true for v,w in j(p)do if not u then
then self:Append','end end else local u=true for v,w in j(p)do if not u then
self:Append','end u=false self:ParseString(v)self:Append':'self:Write(w)end end self:Append','end u=false self:ParseString(v)self:Append':'self:Write(w)end end
self:Append(s)end function o:WriteError(p)e(b.format( self:Append(s)end function o:WriteError(p)e(b.format(
'Encoding of %s unsupported',g(p)))end function o:WriteFunction(p)if p==Null 'Encoding of %s unsupported',g(p)))end function o:WriteFunction(p)if p==Null

View File

@ -1,5 +1,4 @@
local a={}function waitForChild(b,c)while not b:FindFirstChild(c)do b.ChildAdded local a={}function PlaneIntersection(b)local c,d=false,game.Workspace.
:wait()end end function PlaneIntersection(b)local c,d=false,game.Workspace.
CurrentCamera local e,f,g,h=Vector3.new(d.CoordinateFrame.p.X,d.CoordinateFrame. CurrentCamera local e,f,g,h=Vector3.new(d.CoordinateFrame.p.X,d.CoordinateFrame.
p.Y,d.CoordinateFrame.p.Z),Vector3.new(b.X,b.Y,b.Z),Vector3.new(0,1,0),Vector3. p.Y,d.CoordinateFrame.p.Z),Vector3.new(b.X,b.Y,b.Z),Vector3.new(0,1,0),Vector3.
new(0,0,0)local i,j=g:Dot(f-e),b if i~=0 then local k=g:Dot(h-e)/i if k>=0 and k new(0,0,0)local i,j=g:Dot(f-e),b if i~=0 then local k=g:Dot(h-e)/i if k>=0 and k

View File

@ -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= 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) 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 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 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. 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. 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 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. 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 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 local T,U,W=S.GearReference.Value,r:GetChildren(),-1 for X=1,#U do if U[X]:IsA
'Frame'then local X=U[W]:GetChildren()if X[1]and X[1].GearReference.Value==T 'Frame'then local Y=U[X]:GetChildren()if Y[1]and Y[1].GearReference.Value==T
then V=X[1].SlotNumber.Text break end end end swapGearSlot(V,nil)end end 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. function setupCharacterConnections()if n then n:disconnect()end n=game.Players.
LocalPlayer.Backpack.ChildAdded:connect(function(Q)addToGrid(Q)end)local Q=game. 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 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 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 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]. )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 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 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 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. )Q.BackgroundTransparency=1 Q.Visible=false local R=Instance.new'TextButton'R.
Name='UnequipContextMenuButton'R.Text=''R.Style=Enum.ButtonStyle. Name='UnequipContextMenuButton'R.Text=''R.Style=Enum.ButtonStyle.
RobloxButtonDefault R.ZIndex=8 R.Size=UDim2.new(1,0,1,-20)R.Visible=true R. 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= Parent=Q local S,T,U=12,{},{'Remove Hotkey'}for W=1,#U do local X={}X.Type=
'Button'W.Text=U[V]W.Action=V W.DoIt=aa table.insert(T,W)end for V,W in ipairs(T 'Button'X.Text=U[W]X.Action=W X.DoIt=aa table.insert(T,X)end for W,X in ipairs(T
)do local X=W if X.Type=='Button'then local Y=Instance.new'TextButton'Y.Name= )do local Y=X if Y.Type=='Button'then local Z=Instance.new'TextButton'Z.Name=
'UnequipContextButton'..V Y.BackgroundColor3=Color3.new(0,0,0)Y.BorderSizePixel= 'UnequipContextButton'..W Z.BackgroundColor3=Color3.new(0,0,0)Z.BorderSizePixel=
0 Y.TextXAlignment=Enum.TextXAlignment.Left Y.Text=' '..W.Text Y.Font=Enum.Font. 0 Z.TextXAlignment=Enum.TextXAlignment.Left Z.Text=' '..X.Text Z.Font=Enum.Font.
Arial Y.FontSize=Enum.FontSize.Size14 Y.Size=UDim2.new(1,8,0,S)Y.Position=UDim2. Arial Z.FontSize=Enum.FontSize.Size14 Z.Size=UDim2.new(1,8,0,S)Z.Position=UDim2.
new(0,0,0,S*V)Y.TextColor3=Color3.new(1,1,1)Y.ZIndex=9 Y.Parent=R if not new(0,0,0,S*W)Z.TextColor3=Color3.new(1,1,1)Z.ZIndex=9 Z.Parent=R if not
IsTouchDevice()then Y.MouseButton1Click:connect(function()if Y.Active and not Q. IsTouchDevice()then Z.MouseButton1Click:connect(function()if Z.Active and not Q.
Parent.Active then pcall(function()X.DoIt(X,Q)end)i=false Q.Visible=false Parent.Active then pcall(function()Y.DoIt(Y,Q)end)i=false Q.Visible=false
clearHighlight(Y)clearPreview()end end)Y.MouseEnter:connect(function()if Y. clearHighlight(Z)clearPreview()end end)Z.MouseEnter:connect(function()if Z.
Active and Q.Parent.Active then highlight(Y)end end)Y.MouseLeave:connect( Active and Q.Parent.Active then highlight(Z)end end)Z.MouseLeave:connect(
function()if Y.Active and Q.Parent.Active then clearHighlight(Y)end end)end W. function()if Z.Active and Q.Parent.Active then clearHighlight(Z)end end)end X.
Button=Y W.Element=Y elseif X.Type=='Label'then local Y=Instance.new'Frame'Y. Button=Z X.Element=Z elseif Y.Type=='Label'then local Z=Instance.new'Frame'Z.
Name='ContextLabel'..V Y.BackgroundTransparency=1 Y.Size=UDim2.new(1,8,0,S)local Name='ContextLabel'..W Z.BackgroundTransparency=1 Z.Size=UDim2.new(1,8,0,S)local
Z=Instance.new'TextLabel'Z.Name='Text1'Z.BackgroundTransparency=1 Z. _=Instance.new'TextLabel'_.Name='Text1'_.BackgroundTransparency=1 _.
BackgroundColor3=Color3.new(1,1,1)Z.BorderSizePixel=0 Z.TextXAlignment=Enum. BackgroundColor3=Color3.new(1,1,1)_.BorderSizePixel=0 _.TextXAlignment=Enum.
TextXAlignment.Left Z.Font=Enum.Font.ArialBold Z.FontSize=Enum.FontSize.Size14 Z TextXAlignment.Left _.Font=Enum.Font.ArialBold _.FontSize=Enum.FontSize.Size14 _
.Position=UDim2.new(0,0,0,0)Z.Size=UDim2.new(0.5,0,1,0)Z.TextColor3=Color3.new(1 .Position=UDim2.new(0,0,0,0)_.Size=UDim2.new(0.5,0,1,0)_.TextColor3=Color3.new(1
,1,1)Z.ZIndex=9 Z.Parent=Y X.Label1=Z if X.GetText2 then Z=Instance.new ,1,1)_.ZIndex=9 _.Parent=Z Y.Label1=_ if Y.GetText2 then _=Instance.new
'TextLabel'Z.Name='Text2'Z.BackgroundTransparency=1 Z.BackgroundColor3=Color3. 'TextLabel'_.Name='Text2'_.BackgroundTransparency=1 _.BackgroundColor3=Color3.
new(1,1,1)Z.BorderSizePixel=0 Z.TextXAlignment=Enum.TextXAlignment.Right Z.Font= new(1,1,1)_.BorderSizePixel=0 _.TextXAlignment=Enum.TextXAlignment.Right _.Font=
Enum.Font.Arial Z.FontSize=Enum.FontSize.Size14 Z.Position=UDim2.new(0.5,0,0,0)Z Enum.Font.Arial _.FontSize=Enum.FontSize.Size14 _.Position=UDim2.new(0.5,0,0,0)_
.Size=UDim2.new(0.5,0,1,0)Z.TextColor3=Color3.new(1,1,1)Z.ZIndex=9 Z.Parent=Y X. .Size=UDim2.new(0.5,0,1,0)_.TextColor3=Color3.new(1,1,1)_.ZIndex=9 _.Parent=Z Y.
Label2=Z end Y.Parent=R X.Label=Y X.Element=Y end end Q.ZIndex=4 Q.MouseLeave: 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 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. 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. CoreGuiType.All then if not R then e.Gear.Visible=false end end end local Q=a.

View File

@ -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 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 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. waitForChild(game,'Players')if#game.Players:GetChildren()<1 then game.Players.
ChildAdded:wait()end waitForProperty(game.Players,'LocalPlayer')local a,b=game. ChildAdded:wait()end waitForProperty(game.Players,'LocalPlayer')local a=script.
Players.LocalPlayer,script.Parent waitForChild(b,'Gear')local c=script.Parent. Parent waitForChild(a,'Gear')local b=script.Parent.Parent assert(b:IsA
Parent assert(c:IsA'ScreenGui')waitForChild(b,'Tabs')waitForChild(b.Tabs, 'ScreenGui')waitForChild(a,'Tabs')waitForChild(a.Tabs,'CloseButton')local c=a.
'CloseButton')local d=b.Tabs.CloseButton waitForChild(b.Tabs,'InventoryButton') Tabs.CloseButton waitForChild(a.Tabs,'InventoryButton')local d,e=a.Tabs.
local e=b.Tabs.InventoryButton if game.CoreGui.Version>=8 then waitForChild(b. InventoryButton,nil if game.CoreGui.Version>=8 then waitForChild(a.Tabs,
Tabs,'WardrobeButton')local f=b.Tabs.WardrobeButton end waitForChild(b.Parent, 'WardrobeButton')e=a.Tabs.WardrobeButton end waitForChild(a.Parent,
'ControlFrame')local f,g,h=waitForChild(b.Parent.ControlFrame,'BackpackButton'), 'ControlFrame')local f,g,h=waitForChild(a.Parent.ControlFrame,'BackpackButton'),
'gear',waitForChild(b,'SearchFrame')waitForChild(b.SearchFrame,'SearchBoxFrame') 'gear',waitForChild(a,'SearchFrame')waitForChild(a.SearchFrame,'SearchBoxFrame')
local i,j,k,l=waitForChild(b.SearchFrame.SearchBoxFrame,'SearchBox'), local i,j,k,l=waitForChild(a.SearchFrame.SearchBoxFrame,'SearchBox'),
waitForChild(b.SearchFrame,'SearchButton'),waitForChild(b.SearchFrame, waitForChild(a.SearchFrame,'SearchButton'),waitForChild(a.SearchFrame,
'ResetButton'),waitForChild(Game.CoreGui,'RobloxGui')local m=waitForChild(l, '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'), 'CurrentLoadout')local n,o,p,q,r,s,t,u,v,w,x,y=waitForChild(m,'Background'),true
true,true,false,true,false,nil,nil,0.25,'Search...','~','`',UDim2.new(0,600,0, ,true,false,true,false,nil,0.25,'Search...','~','`',UDim2.new(0,600,0,400)if l.
400)if l.AbsoluteSize.Y<=320 then z=UDim2.new(0,200,0,140)end function AbsoluteSize.Y<=320 then y=UDim2.new(0,200,0,140)end function createPublicEvent(
createPublicEvent(A)assert(A,'eventName is nil')assert(tostring(A), z)assert(z,'eventName is nil')assert(tostring(z),'eventName is not a string')
'eventName is not a string')local B=Instance.new'BindableEvent'B.Name=tostring(A local A=Instance.new'BindableEvent'A.Name=tostring(z)A.Parent=script return A
)B.Parent=script return B end function createPublicFunction(A,B)assert(A, end function createPublicFunction(z,A)assert(z,'funcName is nil')assert(
'funcName is nil')assert(tostring(A),'funcName is not a string')assert(B, tostring(z),'funcName is not a string')assert(A,'invokeFunc is nil')assert(type(
'invokeFunc is nil')assert(type(B)=='function', A)=='function',"invokeFunc should be of type 'function'")local B=Instance.new
"invokeFunc should be of type 'function'")local C=Instance.new'BindableFunction' 'BindableFunction'B.Name=tostring(z)B.OnInvoke=A B.Parent=script return B end
C.Name=tostring(A)C.OnInvoke=B C.Parent=script return C end local A,B,C,D,E= local z,A,B,C,D=createPublicEvent'ResizeEvent',createPublicEvent
createPublicEvent'ResizeEvent',createPublicEvent'BackpackOpenEvent', 'BackpackOpenEvent',createPublicEvent'BackpackCloseEvent',createPublicEvent
createPublicEvent'BackpackCloseEvent',createPublicEvent'TabClickedEvent', 'TabClickedEvent',createPublicEvent'SearchRequestedEvent'function
createPublicEvent'SearchRequestedEvent'function deactivateBackpack()b.Visible= deactivateBackpack()a.Visible=false r=false end function
false r=false end function activateBackpack()initHumanoidDiedConnections()r=true
b.Visible=q if q then toggleBackpack()end end function
initHumanoidDiedConnections()if t then t:disconnect()end waitForProperty(game. initHumanoidDiedConnections()if t then t:disconnect()end waitForProperty(game.
Players.LocalPlayer,'Character')waitForChild(game.Players.LocalPlayer.Character, Players.LocalPlayer,'Character')waitForChild(game.Players.LocalPlayer.Character,
'Humanoid')t=game.Players.LocalPlayer.Character.Humanoid.Died:connect( 'Humanoid')t=game.Players.LocalPlayer.Character.Humanoid.Died:connect(
deactivateBackpack)end local F=function()q=false p=false f.Selected=false deactivateBackpack)end function activateBackpack()initHumanoidDiedConnections()r
resetSearch()C:Fire(g)b.Tabs.Visible=false h.Visible=false b: =true a.Visible=q if q then toggleBackpack()end end local E=function()q=false p=
TweenSizeAndPosition(UDim2.new(0,z.X.Offset,0,0),UDim2.new(0.5,-z.X.Offset/2,1,- false f.Selected=false resetSearch()B:Fire(g)a.Tabs.Visible=false h.Visible=
85),Enum.EasingDirection.Out,Enum.EasingStyle.Quad,v,true,function()game. false a:TweenSizeAndPosition(UDim2.new(0,y.X.Offset,0,0),UDim2.new(0.5,-y.X.
GuiService:RemoveCenterDialog(b)b.Visible=false f.Selected=false end)delay(v, Offset/2,1,-85),Enum.EasingDirection.Out,Enum.EasingStyle.Quad,u,true,function()
function()game.GuiService:RemoveCenterDialog(b)b.Visible=false f.Selected=false game.GuiService:RemoveCenterDialog(a)a.Visible=false f.Selected=false end)delay(
p=true o=true end)end function showBackpack()game.GuiService:AddCenterDialog(b, u,function()game.GuiService:RemoveCenterDialog(a)a.Visible=false f.Selected=
Enum.CenterDialogType.PlayerInitiatedDialog,function()b.Visible=true f.Selected= false p=true o=true end)end function showBackpack()game.GuiService:
true end,function()b.Visible=false f.Selected=false end)b.Visible=true f. AddCenterDialog(a,Enum.CenterDialogType.PlayerInitiatedDialog,function()a.
Selected=true b:TweenSizeAndPosition(z,UDim2.new(0.5,-z.X.Offset/2,1,-z.Y.Offset Visible=true f.Selected=true end,function()a.Visible=false f.Selected=false end)
-88),Enum.EasingDirection.Out,Enum.EasingStyle.Quad,v,true)delay(v,function()b. a.Visible=true f.Selected=true a:TweenSizeAndPosition(y,UDim2.new(0.5,-y.X.
Tabs.Visible=false h.Visible=true B:Fire(g)o=true p=true f.Image= Offset/2,1,-y.Y.Offset-88),Enum.EasingDirection.Out,Enum.EasingStyle.Quad,u,true
'http://www.roblox.com/asset/?id=97644093'f.Position=UDim2.new(0.5,-60,1,-z.Y. )delay(u,function()a.Tabs.Visible=false h.Visible=true A:Fire(g)o=true p=true f.
Offset-103)end)end function toggleBackpack()if not game.Players.LocalPlayer then Image='http://www.roblox.com/asset/?id=97644093'f.Position=UDim2.new(0.5,-60,1,-
return end if not game.Players.LocalPlayer['Character']then return end if not o y.Y.Offset-103)end)end function toggleBackpack()if not game.Players.LocalPlayer
then return end if not p then return end p=false o=false q=not q if q then n. then return end if not game.Players.LocalPlayer['Character']then return end if
Image='http://www.roblox.com/asset/?id=97623721'n.Position=UDim2.new(-3E-2,0,- 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() 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 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=97617958'n.Image=
'http://www.roblox.com/asset/?id=96536002'n.Position=UDim2.new(-0.1,0,-0.1,0)n. '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[ Size=UDim2.new(1.2,0,1.2,0)E()local F=m:GetChildren()for G=1,#F do if F[G]and F[
H]:IsA'Frame'then local I=G[H]if#I:GetChildren()>0 then f.Position=UDim2.new(0.5 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 I:GetChildren()[1]:IsA'ImageButton' ,-60,1,-108)f.Visible=true n.Visible=true if H:GetChildren()[1]:IsA'ImageButton'
then local J=I:GetChildren()[1]J.Active=true J.Draggable=false end end end end 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 end end function closeBackpack()if q then toggleBackpack()end end function
setSelected(G)assert(G)assert(G:IsA'TextButton')G.BackgroundColor3=Color3.new(1, setSelected(F)assert(F)assert(F:IsA'TextButton')F.BackgroundColor3=Color3.new(1,
1,1)G.TextColor3=Color3.new(0,0,0)G.Selected=true G.ZIndex=3 end function 1,1)F.TextColor3=Color3.new(0,0,0)F.Selected=true F.ZIndex=3 end function
setUnselected(G)assert(G)assert(G:IsA'TextButton')G.BackgroundColor3=Color3.new( setUnselected(F)assert(F)assert(F:IsA'TextButton')F.BackgroundColor3=Color3.new(
0,0,0)G.TextColor3=Color3.new(1,1,1)G.Selected=false G.ZIndex=1 end function 0,0,0)F.TextColor3=Color3.new(1,1,1)F.Selected=false F.ZIndex=1 end function
updateTabGui(G)assert(G)if G=='gear'then setSelected(e)setUnselected( updateTabGui(F)assert(F)if F=='gear'then setSelected(d)setUnselected(e)elseif F
wardrobeButton)elseif G=='wardrobe'then setSelected(wardrobeButton) =='wardrobe'then setSelected(e)setUnselected(d)end end function mouseLeaveTab(F)
setUnselected(e)end end function mouseLeaveTab(G)assert(G)assert(G:IsA assert(F)assert(F:IsA'TextButton')if F.Selected then return end F.
'TextButton')if G.Selected then return end G.BackgroundColor3=Color3.new(0,0,0) BackgroundColor3=Color3.new(0,0,0)end function mouseOverTab(F)assert(F)assert(F:
end function mouseOverTab(G)assert(G)assert(G:IsA'TextButton')if G.Selected then IsA'TextButton')if F.Selected then return end F.BackgroundColor3=Color3.new(
return end G.BackgroundColor3=Color3.new(0.15294117647058825,0.15294117647058825 0.15294117647058825,0.15294117647058825,0.15294117647058825)end function
,0.15294117647058825)end function newTabClicked(G)assert(G)G=string.lower(G)g=G newTabClicked(F)assert(F)F=string.lower(F)g=F updateTabGui(F)C:Fire(F)
updateTabGui(G)D:Fire(G)resetSearch()end function trim(G)return(G:gsub( resetSearch()end function trim(F)return(F:gsub('^%s*(.-)%s*$','%1'))end function
'^%s*(.-)%s*$','%1'))end function splitByWhitespace(G)if type(G)~='string'then splitByWhitespace(F)if type(F)~='string'then return nil end local G={}for H in
return nil end local H={}for I in string.gmatch(G,'[^%s]+')do if string.len(I)>0 string.gmatch(F,'[^%s]+')do if string.len(H)>0 then table.insert(G,H)end end
then table.insert(H,I)end end return H end function resetSearchBoxGui()k.Visible return G end function resetSearchBoxGui()k.Visible=false i.Text=v end function
=false i.Text=w end function doSearch()local G=i.Text if G==''then resetSearch() doSearch()local F=i.Text if F==''then resetSearch()return end F=trim(F)k.Visible
return end G=trim(G)k.Visible=true termTable=splitByWhitespace(G)E:Fire(G)end =true termTable=splitByWhitespace(F)D:Fire(F)end function resetSearch()
function resetSearch()resetSearchBoxGui()E:Fire()end local G=function()p=true resetSearchBoxGui()D:Fire()end local F=function()p=true end function
end function coreGuiChanged(H,I)if H==Enum.CoreGuiType.Backpack or H==Enum. coreGuiChanged(G,H)if G==Enum.CoreGuiType.Backpack or G==Enum.CoreGuiType.All
CoreGuiType.All then r=I s=not I if s then pcall(function()game:GetService then r=H s=not H if s then pcall(function()game:GetService'GuiService':
'GuiService':RemoveKey(x)game:GetService'GuiService':RemoveKey(y)end)else game: RemoveKey(w)game:GetService'GuiService':RemoveKey(x)end)else game:GetService
GetService'GuiService':AddKey(x)game:GetService'GuiService':AddKey(y)end 'GuiService':AddKey(w)game:GetService'GuiService':AddKey(x)end resetSearch()h.
resetSearch()h.Visible=I and q m.Visible=I b.Visible=I f.Visible=I end end Visible=H and q m.Visible=H a.Visible=H f.Visible=H end end
createPublicFunction('CloseBackpack',F)createPublicFunction('BackpackReady',G) createPublicFunction('CloseBackpack',E)createPublicFunction('BackpackReady',F)
pcall(function()coreGuiChanged(Enum.CoreGuiType.Backpack,Game.StarterGui: pcall(function()coreGuiChanged(Enum.CoreGuiType.Backpack,Game.StarterGui:
GetCoreGuiEnabled(Enum.CoreGuiType.Backpack))Game.StarterGui. GetCoreGuiEnabled(Enum.CoreGuiType.Backpack))Game.StarterGui.
CoreGuiChangedSignal:connect(coreGuiChanged)end)e.MouseButton1Click:connect( CoreGuiChangedSignal:connect(coreGuiChanged)end)d.MouseButton1Click:connect(
function()newTabClicked'gear'end)e.MouseEnter:connect(function()mouseOverTab(e) function()newTabClicked'gear'end)d.MouseEnter:connect(function()mouseOverTab(d)
end)e.MouseLeave:connect(function()mouseLeaveTab(e)end)if game.CoreGui.Version>= end)d.MouseLeave:connect(function()mouseLeaveTab(d)end)if game.CoreGui.Version>=
8 then wardrobeButton.MouseButton1Click:connect(function()newTabClicked 8 then e.MouseButton1Click:connect(function()newTabClicked'wardrobe'end)e.
'wardrobe'end)wardrobeButton.MouseEnter:connect(function()mouseOverTab( MouseEnter:connect(function()mouseOverTab(e)end)e.MouseLeave:connect(function()
wardrobeButton)end)wardrobeButton.MouseLeave:connect(function()mouseLeaveTab( mouseLeaveTab(e)end)end c.MouseButton1Click:connect(closeBackpack)b.Changed:
wardrobeButton)end)end d.MouseButton1Click:connect(closeBackpack)c.Changed: connect(function(G)if G=='AbsoluteSize'then z:Fire(b.AbsoluteSize)end end)game:
connect(function(H)if H=='AbsoluteSize'then A:Fire(c.AbsoluteSize)end end)game: GetService'GuiService':AddKey(w)game:GetService'GuiService':AddKey(x)game:
GetService'GuiService':AddKey(x)game:GetService'GuiService':AddKey(y)game: GetService'GuiService'.KeyPressed:connect(function(G)if not r or s then return
GetService'GuiService'.KeyPressed:connect(function(H)if not r or s then return end if G==w or G==x then toggleBackpack()end end)f.MouseButton1Click:connect(
end if H==x or H==y then toggleBackpack()end end)f.MouseButton1Click:connect(
function()if not r or s then return end toggleBackpack()end)if game.Players. function()if not r or s then return end toggleBackpack()end)if game.Players.
LocalPlayer['Character']then activateBackpack()end game.Players.LocalPlayer. 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. .Text~=''then doSearch()elseif i.Text==''then resetSearch()end end)j.
MouseButton1Click:connect(doSearch)k.MouseButton1Click:connect(resetSearch)if h MouseButton1Click:connect(doSearch)k.MouseButton1Click:connect(resetSearch)if h
and l.AbsoluteSize.Y<=320 then h.RobloxLocked=false h:Destroy()end and l.AbsoluteSize.Y<=320 then h.RobloxLocked=false h:Destroy()end

View File

@ -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. 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 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 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: ,i=typedef(c),Game.Workspace.CurrentCamera,Game:GetService'CoreGui',Game:
GetService'Players',Game:GetService'Debris',Game:GetService'GuiService',nil do j GetService'Players',Game:GetService'GuiService',nil do i={}local j={}local k,l={
={}local k={}local l,m={__call=function(l,m)return l[m]or l[tonumber(m)]end, __call=function(k,l)return k[l]or k[tonumber(l)]end,__index={GetEnumItems=
__index={GetEnumItems=function(l)local m={}for n,o in pairs(l)do if type(n)== function(k)local l={}for m,n in pairs(k)do if type(m)=='number'then l[#l+1]=n
'number'then m[#m+1]=o end end table.sort(m,function(p,q)return p.Value<q.Value end end table.sort(l,function(o,p)return o.Value<p.Value end)return l end},
end)return m end},__tostring=function(l)return'Enum.'..l[k]end},{__call=function __tostring=function(k)return'Enum.'..k[j]end},{__call=function(k,l)return l==k
(l,m)return m==l or m==l.Name or m==l.Value end,__tostring=function(l)return or l==k.Name or l==k.Value end,__tostring=function(k)return'Enum.'..k[j]..'.'..k
'Enum.'..l[k]..'.'..l.Name end}function CreateEnum(n)return function(o)local p={ .Name end}function CreateEnum(m)return function(n)local o={[j]=m}for p,q in
[k]=n}for q,r in pairs(o)do local s=setmetatable({Name=r,Value=q,Enum=p,[k]=n},m pairs(n)do local r=setmetatable({Name=q,Value=p,Enum=o,[j]=m},l)o[p]=r o[q]=r o[
)p[q]=s p[r]=s p[s]=s end j[n]=p return setmetatable(p,l)end end end local k,l={ r]=r end i[m]=o return setmetatable(o,k)end end end local j,k={Mouse=b:GetMouse(
Mouse=b:GetMouse(),Speed=0,Simulating=false,Configuration={DefaultSpeed=1}, ),Speed=0,Simulating=false,Configuration={DefaultSpeed=1},UserIsScrolling=false}
UserIsScrolling=false},{ChatColors={BrickColor.new'Bright red',BrickColor.new ,{ChatColors={BrickColor.new'Bright red',BrickColor.new'Bright blue',BrickColor.
'Bright blue',BrickColor.new'Earth green',BrickColor.new'Bright violet', new'Earth green',BrickColor.new'Bright violet',BrickColor.new'Bright orange',
BrickColor.new'Bright orange',BrickColor.new'Bright yellow',BrickColor.new BrickColor.new'Bright yellow',BrickColor.new'Light reddish violet',BrickColor.
'Light reddish violet',BrickColor.new'Brick yellow'},Gui=nil,Frame=nil, new'Brick yellow'},Gui=nil,Frame=nil,RenderFrame=nil,TapToChatLabel=nil,
RenderFrame=nil,TapToChatLabel=nil,ClickToChatButton=nil,ScrollingLock=false, ClickToChatButton=nil,ScrollingLock=false,EventListener=nil,MessageQueue={},
EventListener=nil,MessageQueue={},Configuration={FontSize=Enum.FontSize.Size12, Configuration={FontSize=Enum.FontSize.Size12,NumFontSize=12,HistoryLength=20,
NumFontSize=12,HistoryLength=20,Size=UDim2.new(0.38,0,0.2,0),MessageColor=Color3 Size=UDim2.new(0.38,0,0.2,0),MessageColor=Color3.new(1,1,1),AdminMessageColor=
.new(1,1,1),AdminMessageColor=Color3.new(1,0.8431372549019608,0),XScale=0.025, Color3.new(1,0.8431372549019608,0),XScale=0.025,LifeTime=45,Position=UDim2.new(0
LifeTime=45,Position=UDim2.new(0,2,0.05,0),DefaultTweenSpeed=0.15}, ,2,0.05,0),DefaultTweenSpeed=0.15},SlotPositions_List={},CachedSpaceStrings_List
SlotPositions_List={},CachedSpaceStrings_List={},MouseOnFrame=false,GotFocus= ={},MouseOnFrame=false,GotFocus=false,Messages_List={},MessageThread=nil,
false,Messages_List={},MessageThread=nil,Admins_List={'taskmanager','Heliodex', Admins_List={'taskmanager','Heliodex','tako'},SafeChat_List={[
'tako'},SafeChat_List={['Use the Chat menu to talk to me.']={'/sc 0',true},[ 'Use the Chat menu to talk to me.']={'/sc 0',true},['I can only see menu chats.'
'I can only see menu chats.']={'/sc 1',true},['Hello']={['Hi']={'/sc 2_0',true,[ ]={'/sc 1',true},['Hello']={['Hi']={'/sc 2_0',true,['Hi there!']=true,[
'Hi there!']=true,['Hi everyone']=true},['Howdy']={'/sc 2_1',true,[ 'Hi everyone']=true},['Howdy']={'/sc 2_1',true,['Howdy partner!']=true},[
'Howdy partner!']=true},['Greetings']={'/sc 2_2',true,['Greetings everyone']= 'Greetings']={'/sc 2_2',true,['Greetings everyone']=true,[
true,['Greetings Robloxians!']=true,['Seasons greetings!']=true},['Welcome']={ 'Greetings Robloxians!']=true,['Seasons greetings!']=true},['Welcome']={
'/sc 2_3',true,['Welcome to my place']=true,['Welcome to my barbeque']=true,[ '/sc 2_3',true,['Welcome to my place']=true,['Welcome to my barbeque']=true,[
'Welcome to our base']=true},['Hey there!']={'/sc 2_4',true},["What's up?"]={ 'Welcome to our base']=true},['Hey there!']={'/sc 2_4',true},["What's up?"]={
'/sc 2_5',true,['How are you doing?']=true,["How's it going?"]=true,[ '/sc 2_5',true,['How are you doing?']=true,["How's it going?"]=true,[
@ -196,100 +196,97 @@ true},['Ratings']={['Rate it!']=true,['I give it a 1 out of 10']=true,[
'I give it a 6 out of 10']=true,['I give it a 7 out of 10']=true,[ 'I give it a 6 out of 10']=true,['I give it a 7 out of 10']=true,[
'I give it a 8 out of 10']=true,['I give it a 9 out of 10']=true,[ 'I give it a 8 out of 10']=true,['I give it a 9 out of 10']=true,[
'I give it a 10 out of 10!']=true}},CreateEnum'SafeChat'{'Level1','Level2', 'I give it a 10 out of 10!']=true}},CreateEnum'SafeChat'{'Level1','Level2',
'Level3'},SafeChatTree={},TempSpaceLabel=nil}local function GetNameValue(m)local 'Level3'},SafeChatTree={},TempSpaceLabel=nil}local function GetNameValue(l)local
n=0 for o=1,#m do local p,q=string.byte(string.sub(m,o,o)),#m-o+1 if#m%2==1 then 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
q=q-1 end if q%4>=2 then p=-p end n=n+p end return n%8 end function l: p=p-1 end if p%4>=2 then o=-o end m=m+o end return m%8 end function k:
ComputeChatColor(m)return self.ChatColors[GetNameValue(m)+1].Color end function ComputeChatColor(l)return self.ChatColors[GetNameValue(l)+1].Color end function
l:EnableScrolling(m)self.MouseOnFrame=false if self.RenderFrame then self. k:EnableScrolling(l)self.MouseOnFrame=false if self.RenderFrame then self.
RenderFrame.MouseEnter:connect(function()local n=b.Character local o,p,q= RenderFrame.MouseEnter:connect(function()local m=b.Character local n,o=
WaitForChild(n,'Torso'),WaitForChild(n,'Humanoid'),WaitForChild(n,'Head')if m WaitForChild(m,'Torso'),WaitForChild(m,'Head')if l then self.MouseOnFrame=true e
then self.MouseOnFrame=true e.CameraType='Scriptable'Spawn(function()local r=e. .CameraType='Scriptable'Spawn(function()local p=e.CoordinateFrame.p-n.Position
CoordinateFrame.p-o.Position while l.MouseOnFrame do e.CoordinateFrame=CFrame. while k.MouseOnFrame do e.CoordinateFrame=CFrame.new(n.Position+p,o.Position)
new(o.Position+r,q.Position)wait(0.015)end end)end end)self.RenderFrame. wait(0.015)end end)end end)self.RenderFrame.MouseLeave:connect(function()e.
MouseLeave:connect(function()e.CameraType='Custom'self.MouseOnFrame=false end) CameraType='Custom'self.MouseOnFrame=false end)end end function k:IsTouchDevice(
end end function l:IsTouchDevice()local m=false pcall(function()m=Game: )local l=false pcall(function()l=Game:GetService'UserInputService'.TouchEnabled
GetService'UserInputService'.TouchEnabled end)return m end function l: end)return l end function k:UpdateQueue(l,m)for n=#self.MessageQueue,1,-1 do if
UpdateQueue(m,n)for o=#self.MessageQueue,1,-1 do if self.MessageQueue[o]then for self.MessageQueue[n]then for o,p in pairs(self.MessageQueue[n])do if p and type(
p,q in pairs(self.MessageQueue[o])do if q and type(q)~='table'and type(q)~= p)~='table'and type(p)~='number'then if p:IsA'TextLabel'or p:IsA'TextButton'then
'number'then if q:IsA'TextLabel'or q:IsA'TextButton'then if n then q.Position=q. if m then p.Position=p.Position-UDim2.new(0,0,m,0)else if l==self.MessageQueue[n
Position-UDim2.new(0,0,n,0)else if m==self.MessageQueue[o]then q.Position=UDim2. ]then p.Position=UDim2.new(self.Configuration.XScale,0,p.Position.Y.Scale-l[
new(self.Configuration.XScale,0,q.Position.Y.Scale-m['Message'].Size.Y.Scale,0) 'Message'].Size.Y.Scale,0)Spawn(function()wait(0.05)while p.TextTransparency>=0
Spawn(function()wait(0.05)while q.TextTransparency>=0 do q.TextTransparency=q. do p.TextTransparency=p.TextTransparency-0.2 wait(0.03)end if p==l['Message']
TextTransparency-0.2 wait(0.03)end if q==m['Message']then q. then p.TextStrokeTransparency=0.8 else p.TextStrokeTransparency=1 end end)else p
TextStrokeTransparency=0.8 else q.TextStrokeTransparency=1 end end)else q. .Position=UDim2.new(self.Configuration.XScale,0,p.Position.Y.Scale-l['Message'].
Position=UDim2.new(self.Configuration.XScale,0,q.Position.Y.Scale-m['Message']. Size.Y.Scale,0)end if p.Position.Y.Scale<-1E-2 then p.Visible=false p:Destroy()
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 k:CreateScrollBar()end function k:
end end end end end end end end function l:CreateScrollBar()end function l: CheckIfInBounds(l)if#k.MessageQueue<3 then return true end if l>0 and k.
CheckIfInBounds(m)if#l.MessageQueue<3 then return true end if m>0 and l. MessageQueue[1]and k.MessageQueue[1]['Player']and k.MessageQueue[1]['Player'].
MessageQueue[1]and l.MessageQueue[1]['Player']and l.MessageQueue[1]['Player']. Position.Y.Scale==0 then return true elseif l<0 and k.MessageQueue[1]and k.
Position.Y.Scale==0 then return true elseif m<0 and l.MessageQueue[1]and l. MessageQueue[1]['Player']and k.MessageQueue[1]['Player'].Position.Y.Scale<0 then
MessageQueue[1]['Player']and l.MessageQueue[1]['Player'].Position.Y.Scale<0 then return true else return false end return false end function k:ComputeSpaceString
return true else return false end return false end function l:ComputeSpaceString (l)local m=' 'if not self.TempSpaceLabel then self.TempSpaceLabel=d.Create
(m)local n=' 'if not self.TempSpaceLabel then self.TempSpaceLabel=d.Create 'TextButton'{Size=UDim2.new(0,l.AbsoluteSize.X,0,l.AbsoluteSize.Y),FontSize=self
'TextButton'{Size=UDim2.new(0,m.AbsoluteSize.X,0,m.AbsoluteSize.Y),FontSize=self .Configuration.FontSize,Parent=self.RenderFrame,BackgroundTransparency=1,Text=m,
.Configuration.FontSize,Parent=self.RenderFrame,BackgroundTransparency=1,Text=n, Name='SpaceButton'}else self.TempSpaceLabel.Text=m end while self.TempSpaceLabel
Name='SpaceButton'}else self.TempSpaceLabel.Text=n end while self.TempSpaceLabel .TextBounds.X<l.TextBounds.X do m=m..' 'self.TempSpaceLabel.Text=m end m=m..' '
.TextBounds.X<m.TextBounds.X do n=n..' 'self.TempSpaceLabel.Text=n end n=n..' ' self.CachedSpaceStrings_List[l.Text]=m self.TempSpaceLabel.Text=''return m end
self.CachedSpaceStrings_List[m.Text]=n self.TempSpaceLabel.Text=''return n end function k:UpdateChat(l,m)local n={['Player']=l,['Message']=m}if coroutine.
function l:UpdateChat(m,n)local o={['Player']=m,['Message']=n}if coroutine. status(k.MessageThread)=='dead'then table.insert(k.Messages_List,n)k.
status(l.MessageThread)=='dead'then table.insert(l.Messages_List,o)l. MessageThread=coroutine.create(function()for o=1,#k.Messages_List do local p=k.
MessageThread=coroutine.create(function()for p=1,#l.Messages_List do local q=l. Messages_List[o]k:CreateMessage(p['Player'],p['Message'])end k.Messages_List={}
Messages_List[p]l:CreateMessage(q['Player'],q['Message'])end l.Messages_List={} end)coroutine.resume(k.MessageThread)else table.insert(k.Messages_List,n)end end
end)coroutine.resume(l.MessageThread)else table.insert(l.Messages_List,o)end end function k:RecalculateSpacing()end function k:CreateMessage(l,m)local n if not l
function l:RecalculateSpacing()end function l:ApplyFilter(m)end function l: then n=''else n=l.Name end m=StringTrim(m)local o,p if#self.MessageQueue>self.
CreateMessage(m,n)local o if not m then o=''else o=m.Name end n=StringTrim(n) Configuration.HistoryLength then self.MessageQueue[#self.MessageQueue]=nil end o
local p,q if#self.MessageQueue>self.Configuration.HistoryLength then self. =d.Create'TextLabel'{Name=n,Text=n..':',FontSize=k.Configuration.FontSize,
MessageQueue[#self.MessageQueue]=nil end p=d.Create'TextLabel'{Name=o,Text=o.. TextXAlignment=Enum.TextXAlignment.Left,TextYAlignment=Enum.TextYAlignment.Top,
':',TextColor3=pColor,FontSize=l.Configuration.FontSize,TextXAlignment=Enum. Parent=self.RenderFrame,TextWrapped=false,Size=UDim2.new(1,0,0.1,0),
TextXAlignment.Left,TextYAlignment=Enum.TextYAlignment.Top,Parent=self. BackgroundTransparency=1,TextTransparency=1,Position=UDim2.new(0,0,1,0),
RenderFrame,TextWrapped=false,Size=UDim2.new(1,0,0.1,0),BackgroundTransparency=1 BorderSizePixel=0,TextStrokeColor3=Color3.new(0.5,0.5,0.5),
,TextTransparency=1,Position=UDim2.new(0,0,1,0),BorderSizePixel=0, TextStrokeTransparency=0.75}if l.Neutral then o.TextColor3=k:ComputeChatColor(n)
TextStrokeColor3=Color3.new(0.5,0.5,0.5),TextStrokeTransparency=0.75}local r if else o.TextColor3=l.TeamColor.Color end local q if not self.
m.Neutral then p.TextColor3=l:ComputeChatColor(o)else p.TextColor3=m.TeamColor. CachedSpaceStrings_List[n]then q=k:ComputeSpaceString(o)else q=self.
Color end local s if not self.CachedSpaceStrings_List[o]then s=l: CachedSpaceStrings_List[n]end p=d.Create'TextLabel'{Name=n..' - message',Size=
ComputeSpaceString(p)else s=self.CachedSpaceStrings_List[o]end q=d.Create UDim2.new(1,0,0.5,0),TextColor3=k.Configuration.MessageColor,FontSize=k.
'TextLabel'{Name=o..' - message',Size=UDim2.new(1,0,0.5,0),TextColor3=l. Configuration.FontSize,TextXAlignment=Enum.TextXAlignment.Left,TextYAlignment=
Configuration.MessageColor,FontSize=l.Configuration.FontSize,TextXAlignment=Enum Enum.TextYAlignment.Top,Text='',Parent=self.RenderFrame,TextWrapped=true,
.TextXAlignment.Left,TextYAlignment=Enum.TextYAlignment.Top,Text='',Parent=self. BackgroundTransparency=1,TextTransparency=1,Position=UDim2.new(0,0,1,0),
RenderFrame,TextWrapped=true,BackgroundTransparency=1,TextTransparency=1, BorderSizePixel=0,TextStrokeColor3=Color3.new(0,0,0)}p.Text=q..m if not n then o
Position=UDim2.new(0,0,1,0),BorderSizePixel=0,TextStrokeColor3=Color3.new(0,0,0) .Text=''p.TextColor3=Color3.new(0,0.4,1)end for r,s in pairs(self.Admins_List)do
}q.Text=s..n if not o then p.Text=''q.TextColor3=Color3.new(0,0.4,1)end for t,u if string.lower(s)==string.lower(n)then p.TextColor3=self.Configuration.
in pairs(self.Admins_List)do if string.lower(u)==string.lower(o)then q. AdminMessageColor end end o.Visible=true p.Visible=true local t=p.TextBounds.Y p
TextColor3=self.Configuration.AdminMessageColor end end p.Visible=true q.Visible .Size=UDim2.new(1,0,t/self.RenderFrame.AbsoluteSize.Y,0)o.Size=p.Size local u={}
=true local v=q.TextBounds.Y q.Size=UDim2.new(1,0,v/self.RenderFrame. u['Player']=o u['Message']=p u['SpawnTime']=tick()table.insert(self.MessageQueue
AbsoluteSize.Y,0)p.Size=q.Size local w,x,y=self.RenderFrame.AbsoluteSize.Y,q. ,1,u)k:UpdateQueue(u)end function k:ScreenSizeChanged()wait()while self.Frame.
TextBounds.Y,{}y['Player']=p y['Message']=q y['SpawnTime']=tick()table.insert( AbsoluteSize.Y>120 do self.Frame.Size=self.Frame.Size-UDim2.new(0,0,0.005,0)end
self.MessageQueue,1,y)l:UpdateQueue(y)end function l:ScreenSizeChanged()wait() k:RecalculateSpacing()end function k:FindButtonTree(l,m)local n={}m=m or self.
while self.Frame.AbsoluteSize.Y>120 do self.Frame.Size=self.Frame.Size-UDim2. SafeChatTree for o,p in pairs(m)do if o==l then n=m[o]elseif type(m[o])=='table'
new(0,0,0.005,0)end l:RecalculateSpacing()end function l:FindButtonTree(m,n) then n=k:FindButtonTree(l,m[o])end end return n end function k:
local o={}n=n or self.SafeChatTree for p,q in pairs(n)do if p==m then o=n[p] ToggleSafeChatMenu(l)local m=k:FindButtonTree(l,self.SafeChatTree)if m then for
elseif type(n[p])=='table'then o=l:FindButtonTree(m,n[p])end end return o end n,o in pairs(m)do if n:IsA'TextButton'or n:IsA'ImageButton'then n.Visible=not n.
function l:ToggleSafeChatMenu(m)local n=l:FindButtonTree(m,self.SafeChatTree)if Visible end end return true end return false end function k:
n then for o,p in pairs(n)do if o:IsA'TextButton'or o:IsA'ImageButton'then o. CreateSafeChatOptions(l,m)local n={}level=level or 0 local o=0 n[m]={}n[m][1]=l[
Visible=not o.Visible end end return true end return false end function l: 1]m=m or self.SafeChatButton for p,q in pairs(l)do if type(p)=='string'then
CreateSafeChatOptions(m,n)local o={}level=level or 0 local p=0 o[n]={}o[n][1]=m[ local r=d.Create'TextButton'{Name=p,Text=p,Size=UDim2.new(0,100,0,20),
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),
TextXAlignment=Enum.TextXAlignment.Center,TextColor3=Color3.new(0.2,0.1,0.1), TextXAlignment=Enum.TextXAlignment.Center,TextColor3=Color3.new(0.2,0.1,0.1),
BackgroundTransparency=0.5,BackgroundColor3=Color3.new(1,1,1),Parent=self. 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. SafeChatFrame,Visible=false,Position=UDim2.new(0,m.Position.X.Scale+105,0,m.
Position.Y.Scale-((p-3)*100))}p=p+1 if type(m[q])=='table'then o[n][s]=l: Position.Y.Scale-((o-3)*100))}o=o+1 if type(l[p])=='table'then n[m][r]=k:
CreateSafeChatOptions(m[q],s)else end s.MouseEnter:connect(function()l: CreateSafeChatOptions(l[p],r)end r.MouseEnter:connect(function()k:
ToggleSafeChatMenu(s)end)s.MouseLeave:connect(function()l:ToggleSafeChatMenu(s) ToggleSafeChatMenu(r)end)r.MouseLeave:connect(function()k:ToggleSafeChatMenu(r)
end)s.MouseButton1Click:connect(function()local t=l:FindButtonTree(s)if t then end)r.MouseButton1Click:connect(function()local s=k:FindButtonTree(r)pcall(
for u,v in pairs(t)do end else end pcall(function()g:Chat(t[1])end)end)end end function()g:Chat(s[1])end)end)end end return n end function k:CreateSafeChatGui(
return o end function l:CreateSafeChatGui()self.SafeChatFrame=d.Create'Frame'{ )self.SafeChatFrame=d.Create'Frame'{Name='SafeChatFrame',Size=UDim2.new(1,0,1,0)
Name='SafeChatFrame',Size=UDim2.new(1,0,1,0),Parent=self.Gui, ,Parent=self.Gui,BackgroundTransparency=1,d.Create'ImageButton'{Name=
BackgroundTransparency=1,d.Create'ImageButton'{Name='SafeChatButton',Size=UDim2. 'SafeChatButton',Size=UDim2.new(0,44,0,31),Position=UDim2.new(0,1,0.35,0),
new(0,44,0,31),Position=UDim2.new(0,1,0.35,0),BackgroundTransparency=1,Image= BackgroundTransparency=1,Image='http://www.roblox.com/asset/?id=97080365'}}self.
'http://www.roblox.com/asset/?id=97080365'}}self.SafeChatButton=self. SafeChatButton=self.SafeChatFrame.SafeChatButton self.SafeChatTree[self.
SafeChatFrame.SafeChatButton self.SafeChatTree[self.SafeChatButton]=l: SafeChatButton]=k:CreateSafeChatOptions(self.SafeChat_List,self.SafeChatButton)
CreateSafeChatOptions(self.SafeChat_List,self.SafeChatButton)self.SafeChatButton self.SafeChatButton.MouseButton1Click:connect(function()k:ToggleSafeChatMenu(
.MouseButton1Click:connect(function()l:ToggleSafeChatMenu(self.SafeChatButton) self.SafeChatButton)end)end function k:FocusOnChatBar()if self.ClickToChatButton
end)end function l:FocusOnChatBar()if self.ClickToChatButton then self. then self.ClickToChatButton.Visible=false end self.GotFocus=true if self.Frame[
ClickToChatButton.Visible=false end self.GotFocus=true if self.Frame[
'Background']then self.Frame.Background.Visible=false end self.ChatBar: '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 '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= ,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), '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( 1,1,1),ClearTextOnFocus=false}self.TapToChatLabel.MouseButton1Click:connect(
function()self.TapToChatLabel.Visible=false self.ChatBar:CaptureFocus()self. function()self.TapToChatLabel.Visible=false self.ChatBar:CaptureFocus()self.
GotFocus=true if self.TouchLabelBackground then self.TouchLabelBackground. GotFocus=true if self.TouchLabelBackground then self.TouchLabelBackground.
Visible=false end end)end function l:CreateChatBar()local m,n=pcall(function() Visible=false end end)end function k:CreateChatBar()local l,m=pcall(function()
return i.UseLuaChat end)if a or(m and n)then self.ClickToChatButton=d.Create 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= '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 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. =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='', {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= ZIndex=1,BackgroundColor3=Color3.new(0,0,0),BackgroundTransparency=0.25,Parent=
self.Gui,TextXAlignment=Enum.TextXAlignment.Left,TextColor3=Color3.new(1,1,1), self.Gui,TextXAlignment=Enum.TextXAlignment.Left,TextColor3=Color3.new(1,1,1),
FontSize=Enum.FontSize.Size12,ClearTextOnFocus=false,Text=''}local o,p=pcall( FontSize=Enum.FontSize.Size12,ClearTextOnFocus=false}local n,o=pcall(function()h
function()i:SetGlobalGuiInset(0,0,0,20)end)if not o then i: :SetGlobalGuiInset(0,0,0,20)end)if not n then h:SetGlobalSizeOffsetPixel(0,-20)
SetGlobalSizeOffsetPixel(0,-20)end i:AddSpecialKey(Enum.SpecialKey.ChatHotkey)i. end h:AddSpecialKey(Enum.SpecialKey.ChatHotkey)h.SpecialKeyPressed:connect(
SpecialKeyPressed:connect(function(q)if q==Enum.SpecialKey.ChatHotkey then l: function(p)if p==Enum.SpecialKey.ChatHotkey then k:FocusOnChatBar()end end)self.
FocusOnChatBar()end end)self.ClickToChatButton.MouseButton1Click:connect( ClickToChatButton.MouseButton1Click:connect(function()k:FocusOnChatBar()end)end
function()l:FocusOnChatBar()end)end end function l:CreateGui()self.Gui= end function k:CreateGui()self.Gui=WaitForChild(f,'RobloxGui')self.Frame=d.
WaitForChild(f,'RobloxGui')self.Frame=d.Create'Frame'{Name='ChatFrame',Size= Create'Frame'{Name='ChatFrame',Size=UDim2.new(0,500,0,120),Position=UDim2.new(0,
UDim2.new(0,500,0,120),Position=UDim2.new(0,0,0,5),BackgroundTransparency=1, 0,0,5),BackgroundTransparency=1,ZIndex=0,Parent=self.Gui,Active=false,d.Create
ZIndex=0,Parent=self.Gui,Active=false,d.Create'ImageLabel'{Name='Background', 'ImageLabel'{Name='Background',Image='http://www.roblox.com/asset/?id=97120937',
Image='http://www.roblox.com/asset/?id=97120937',Size=UDim2.new(1.3,0,1.64,0), Size=UDim2.new(1.3,0,1.64,0),Position=UDim2.new(0,0,0,0),BackgroundTransparency=
Position=UDim2.new(0,0,0,0),BackgroundTransparency=1,ZIndex=0,Visible=false},d. 1,ZIndex=0,Visible=false},d.Create'Frame'{Name='Border',Size=UDim2.new(1,0,0,1),
Create'Frame'{Name='Border',Size=UDim2.new(1,0,0,1),Position=UDim2.new(0,0,0.8,0 Position=UDim2.new(0,0,0.8,0),BackgroundTransparency=0,BackgroundColor3=Color3.
),BackgroundTransparency=0,BackgroundColor3=Color3.new(0.9254901960784314, new(0.9254901960784314,0.9254901960784314,0.9254901960784314),BorderSizePixel=0,
0.9254901960784314,0.9254901960784314),BorderSizePixel=0,Visible=false},d.Create Visible=false},d.Create'Frame'{Name='ChatRenderFrame',Size=UDim2.new(1.02,0,1.01
'Frame'{Name='ChatRenderFrame',Size=UDim2.new(1.02,0,1.01,0),Position=UDim2.new( ,0),Position=UDim2.new(0,0,0,0),BackgroundTransparency=1,ZIndex=0,Active=false}}
0,0,0,0),BackgroundTransparency=1,ZIndex=0,Active=false}}Spawn(function()wait( Spawn(function()wait(0.5)if IsPhone()then self.Frame.Size=UDim2.new(0,280,0,120)
0.5)if IsPhone()then self.Frame.Size=UDim2.new(0,280,0,120)end end)self. end end)self.RenderFrame=self.Frame.ChatRenderFrame if k:IsTouchDevice()then
RenderFrame=self.Frame.ChatRenderFrame if l:IsTouchDevice()then self.Frame. self.Frame.Position=self.Configuration.Position self.RenderFrame.Size=UDim2.new(
Position=self.Configuration.Position self.RenderFrame.Size=UDim2.new(1,0,1,0) 1,0,1,0)elseif self.Frame.AbsoluteSize.Y>120 then k:ScreenSizeChanged()self.Gui.
elseif self.Frame.AbsoluteSize.Y>120 then l:ScreenSizeChanged()self.Gui.Changed: Changed:connect(function(l)if l=='AbsoluteSize'then k:ScreenSizeChanged()end end
connect(function(m)if m=='AbsoluteSize'then l:ScreenSizeChanged()end end)end if )end if a or b.ChatMode==Enum.ChatMode.TextAndMenu then if k:IsTouchDevice()then
a or b.ChatMode==Enum.ChatMode.TextAndMenu then if l:IsTouchDevice()then l: k:CreateTouchButton()else k:CreateChatBar()end if self.ChatBar then self.ChatBar
CreateTouchButton()else l:CreateChatBar()end if self.ChatBar then self.ChatBar. .FocusLost:connect(function(l)k.GotFocus=false if k:IsTouchDevice()then self.
FocusLost:connect(function(m)l.GotFocus=false if l:IsTouchDevice()then self.
ChatBar.Visible=false self.TapToChatLabel.Visible=true if self. ChatBar.Visible=false self.TapToChatLabel.Visible=true if self.
TouchLabelBackground then self.TouchLabelBackground.Visible=true end end if m TouchLabelBackground then self.TouchLabelBackground.Visible=true end end if l
and self.ChatBar.Text~=''then local n=self.ChatBar.Text if string.sub(self. and self.ChatBar.Text~=''then local m=self.ChatBar.Text if string.sub(self.
ChatBar.Text,1,1)=='%'then n='(TEAM) '..string.sub(n,2,#n)pcall(function()g: ChatBar.Text,1,1)=='%'then m='(TEAM) '..string.sub(m,2,#m)pcall(function()g:
TeamChat(n)end)else pcall(function()g:Chat(n)end)end if self.ClickToChatButton 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( 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 function()wait(5)if not k.GotFocus then k.Frame.Background.Visible=false end end
)end)end end end function k:OnMouseScroll()Spawn(function()while k.Speed~=0 do )end)end end end function j:OnMouseScroll()Spawn(function()while j.Speed~=0 do
if k.Speed>1 then while k.Speed>0 do k.Speed=k.Speed-1 wait(0.25)end elseif k. 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 k.Speed<0 do k.Speed=k.Speed+1 wait(0.25)end end wait(0.03) Speed<0 then while j.Speed<0 do j.Speed=j.Speed+1 wait(0.25)end end wait(0.03)
end end)if l:CheckIfInBounds(k.Speed)then return end l:ScrollQueue()end function end end)if k:CheckIfInBounds(j.Speed)then return end k:ScrollQueue()end function
k:ApplySpeed(m)k.Speed=k.Speed+m if not self.Simulating then k:OnMouseScroll() j:ApplySpeed(l)j.Speed=j.Speed+l if not self.Simulating then j:OnMouseScroll()
end end function k:Initialize()self.Mouse.WheelBackward:connect(function()k: end end function j:Initialize()self.Mouse.WheelBackward:connect(function()j:
ApplySpeed(self.Configuration.DefaultSpeed)end)self.Mouse.WheelForward:connect( ApplySpeed(self.Configuration.DefaultSpeed)end)self.Mouse.WheelForward:connect(
function()k:ApplySpeed(self.Configuration.DefaultSpeed)end)end function l: function()j:ApplySpeed(self.Configuration.DefaultSpeed)end)end function k:
FindMessageInSafeChat(m,n)local o=false for p,q in pairs(n)do if p==m then FindMessageInSafeChat(l,m)local n=false for o,p in pairs(m)do if o==l then
return true end if type(n[p])=='table'then o=l:FindMessageInSafeChat(m,n[p])if o return true end if type(m[o])=='table'then n=k:FindMessageInSafeChat(l,m[o])if n
then return true end end end return o end function l:PlayerChatted(...)local m,n then return true end end end return n end function k:PlayerChatted(...)local l,m
,o,p={...},select('#',...),nil,nil if m[2]then o=m[2]end if m[3]then p=m[3]if ,n={...},nil,nil if l[2]then m=l[2]end if l[3]then n=l[3]if string.sub(n,1,1)==
string.sub(p,1,1)=='%'then p='(TEAM) '..string.sub(p,2,#p)end end if g. '%'then n='(TEAM) '..string.sub(n,2,#n)end end if g.ClassicChat then if string.
ClassicChat then if string.sub(p,1,3)=='/e 'or string.sub(p,1,7)=='/emote 'then sub(n,1,3)=='/e 'or string.sub(n,1,7)=='/emote 'then elseif(a or b.ChatMode==
elseif a or b.ChatMode==Enum.ChatMode.TextAndMenu then l:UpdateChat(o,p)elseif b Enum.ChatMode.TextAndMenu)or(b.ChatMode==Enum.ChatMode.Menu and string.sub(n,1,3
.ChatMode==Enum.ChatMode.Menu and string.sub(p,1,3)=='/sc'then l:UpdateChat(o,p) )=='/sc')or(k:FindMessageInSafeChat(n,self.SafeChat_List))then k:UpdateChat(m,n)
else if l:FindMessageInSafeChat(p,self.SafeChat_List)then l:UpdateChat(o,p)end end end end function k:CullThread()while true do if#self.MessageQueue>0 then for
end end end function l: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[
m,n in pairs(self.MessageQueue)do if n['SpawnTime']and n['Player']and n[ 'Message']and tick()-m['SpawnTime']>self.Configuration.LifeTime then m['Player']
'Message']and tick()-n['SpawnTime']>self.Configuration.LifeTime then n['Player'] .Visible=false m['Message'].Visible=false end end end wait(5)end end function k:
.Visible=false n['Message'].Visible=false end end end wait(5)end end function l: LockAllFields(l)local m=l:GetChildren()for n=1,#m do m[n].RobloxLocked=true if#m
LockAllFields(m)local n=m:GetChildren()for o=1,#n do n[o].RobloxLocked=true if#n [n]:GetChildren()>0 then k:LockAllFields(m[n])end end end function k:
[o]:GetChildren()>0 then l:LockAllFields(n[o])end end end function l: CoreGuiChanged(l,m)if l==Enum.CoreGuiType.Chat or l==Enum.CoreGuiType.All then
CoreGuiChanged(m,n)if m==Enum.CoreGuiType.Chat or m==Enum.CoreGuiType.All then if self.Frame then self.Frame.Visible=m end if not k:IsTouchDevice()and self.
if self.Frame then self.Frame.Visible=n end if not l:IsTouchDevice()and self. ChatBar then self.ChatBar.Visible=m if m then h:SetGlobalGuiInset(0,0,0,20)else
ChatBar then self.ChatBar.Visible=n if n then i:SetGlobalGuiInset(0,0,0,20)else h:SetGlobalGuiInset(0,0,0,0)end end end end function k:Initialize()k:CreateGui()
i:SetGlobalGuiInset(0,0,0,0)end end end end function l:Initialize()l:CreateGui() pcall(function()k:CoreGuiChanged(Enum.CoreGuiType.Chat,Game.StarterGui:
pcall(function()l:CoreGuiChanged(Enum.CoreGuiType.Chat,Game.StarterGui:
GetCoreGuiEnabled(Enum.CoreGuiType.Chat))Game.StarterGui.CoreGuiChangedSignal: GetCoreGuiEnabled(Enum.CoreGuiType.Chat))Game.StarterGui.CoreGuiChangedSignal:
connect(function(m,n)l:CoreGuiChanged(m,n)end)end)self.EventListener=g. connect(function(l,m)k:CoreGuiChanged(l,m)end)end)self.EventListener=g.
PlayerChatted:connect(function(...)l:PlayerChatted(...)end)self.MessageThread= PlayerChatted:connect(function(...)k:PlayerChatted(...)end)self.MessageThread=
coroutine.create(function()end)coroutine.resume(self.MessageThread)k:Initialize( coroutine.create(function()end)coroutine.resume(self.MessageThread)j:Initialize(
)g.ChildAdded:connect(function()l.EventListener:disconnect()self.EventListener=g )g.ChildAdded:connect(function()k.EventListener:disconnect()self.EventListener=g
.PlayerChatted:connect(function(...)l:PlayerChatted(...)end)end)Spawn(function() .PlayerChatted:connect(function(...)k:PlayerChatted(...)end)end)Spawn(function()
l:CullThread()end)self.Frame.RobloxLocked=true l:LockAllFields(self.Frame)self. k:CullThread()end)self.Frame.RobloxLocked=true k:LockAllFields(self.Frame)self.
Frame.DescendantAdded:connect(function(m)l:LockAllFields(m)end)end l:Initialize( Frame.DescendantAdded:connect(function(l)k:LockAllFields(l)end)end k:Initialize(
) )