website/public/asset/5

1963 lines
68 KiB
Plaintext

%5%
local function waitForChild(instance, name)
while not instance:FindFirstChild(name) do
instance.ChildAdded:wait()
end
end
local function waitForProperty(instance, property)
while not instance[property] do
instance.Changed:wait()
end
end
-- A Few Script Globals
local gui
if script.Parent:FindFirstChild("ControlFrame") then
gui = script.Parent:FindFirstChild("ControlFrame")
else
gui = script.Parent
end
local useOldDialog = true
local helpButton = nil
local updateCameraDropDownSelection = nil
local updateVideoCaptureDropDownSelection = nil
local tweenTime = 0.2
local mouseLockLookScreenUrl = "http://morblox.us/asset/?id=54071825"
local classicLookScreenUrl = "http://morblox.us/asset/?id=45915798"
local hasGraphicsSlider = false
local recordingVideo = false
local useNewGui = true
local newGuiPlaces = {0,41324860}
-- We should probably have a better method to determine this...
local macClient = false
local isMacChat, version = pcall(function() return game.GuiService.Version end)
macClient = isMacChat and version >= 2
local function Color3I(r,g,b)
return Color3.new(r/255,g/255,b/255)
end
local function robloxLock(instance)
instance.RobloxLocked = true
children = instance:GetChildren()
if children then
for i, child in ipairs(children) do
robloxLock(child)
end
end
end
function resumeGameFunction(shield)
shield.Settings:TweenPosition(UDim2.new(0.5, -262,-0.5, -200),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
delay(tweenTime,function()
shield.Visible = false
pcall(function() game.GuiService:RemoveCenterDialog(shield) end)
settingsButton.Active = true
end)
end
function goToMenu(container,menuName, moveDirection)
if type(menuName) ~= "string" then return end
local containerChildren = container:GetChildren()
for i = 1, #containerChildren do
if containerChildren[i].Name == menuName then
containerChildren[i].Visible = true
containerChildren[i]:TweenPosition(UDim2.new(0,0,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
else
if moveDirection == "left" then
containerChildren[i]:TweenPosition(UDim2.new(-1,-525,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
elseif moveDirection == "right" then
containerChildren[i]:TweenPosition(UDim2.new(1,525,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
elseif moveDirection == "up" then
containerChildren[i]:TweenPosition(UDim2.new(0,0,-1,-400),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
elseif moveDirection == "down" then
containerChildren[i]:TweenPosition(UDim2.new(0,0,1,400),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
end
delay(tweenTime,function()
containerChildren[i].Visible = false
end)
end
end
end
function resetLocalCharacter()
local player = game.Players.LocalPlayer
if player then
if player.Character and player.Character:FindFirstChild("Humanoid") then
player.Character.Humanoid.Health = 0
end
end
end
local function createTextButton(text,style,fontSize,buttonSize,buttonPosition)
local newTextButton = Instance.new("TextButton")
newTextButton.Font = Enum.Font.Arial
newTextButton.FontSize = fontSize
newTextButton.Size = buttonSize
newTextButton.Position = buttonPosition
newTextButton.Style = style
newTextButton.TextColor3 = Color3.new(1,1,1)
newTextButton.Text = text
return newTextButton
end
local function CreateTextButtons(frame, buttons, yPos, ySize)
if #buttons < 1 then
error("Must have more than one button")
end
local buttonNum = 1
local buttonObjs = {}
local function toggleSelection(button)
for i, obj in ipairs(buttonObjs) do
if obj == button then
obj.Style = Enum.ButtonStyle.RobloxButtonDefault
else
obj.Style = Enum.ButtonStyle.RobloxButton
end
end
end
for i, obj in ipairs(buttons) do
local button = Instance.new("TextButton")
button.Name = "Button" .. buttonNum
button.Font = Enum.Font.Arial
button.FontSize = Enum.FontSize.Size18
button.AutoButtonColor = true
button.Style = Enum.ButtonStyle.RobloxButton
button.Text = obj.Text
button.TextColor3 = Color3.new(1,1,1)
button.MouseButton1Click:connect(function() toggleSelection(button) obj.Function() end)
button.Parent = frame
buttonObjs[buttonNum] = button
buttonNum = buttonNum + 1
end
toggleSelection(buttonObjs[1])
local numButtons = buttonNum-1
if numButtons == 1 then
frame.Button1.Position = UDim2.new(0.35, 0, yPos.Scale, yPos.Offset)
frame.Button1.Size = UDim2.new(.4,0,ySize.Scale, ySize.Offset)
elseif numButtons == 2 then
frame.Button1.Position = UDim2.new(0.1, 0, yPos.Scale, yPos.Offset)
frame.Button1.Size = UDim2.new(.35,0, ySize.Scale, ySize.Offset)
frame.Button2.Position = UDim2.new(0.55, 0, yPos.Scale, yPos.Offset)
frame.Button2.Size = UDim2.new(.35,0, ySize.Scale, ySize.Offset)
elseif numButtons >= 3 then
local spacing = .1 / numButtons
local buttonSize = .9 / numButtons
buttonNum = 1
while buttonNum <= numButtons do
buttonObjs[buttonNum].Position = UDim2.new(spacing*buttonNum + (buttonNum-1) * buttonSize, 0, yPos.Scale, yPos.Offset)
buttonObjs[buttonNum].Size = UDim2.new(buttonSize, 0, ySize.Scale, ySize.Offset)
buttonNum = buttonNum + 1
end
end
end
function recordVideoClick(recordVideoButton, stopRecordButton)
recordingVideo = not recordingVideo
if recordingVideo then
stopRecordButton.Visible = true
recordVideoButton.Text = "Stop Recording"
else
stopRecordButton.Visible = false
recordVideoButton.Text = "Record Video"
end
end
function backToGame(buttonClicked, shield, settingsButton)
buttonClicked.Parent.Parent.Parent.Parent.Visible = false
shield.Visible = false
pcall(function() game.GuiService:RemoveCenterDialog(shield) end)
settingsButton.Active = true
end
function setDisabledState(guiObject)
if guiObject:IsA("TextLabel") then
guiObject.TextTransparency = 0.9
elseif guiObject:IsA("TextButton") then
guiObject.TextTransparency = 0.9
guiObject.Active = false
else
if guiObject["ClassName"] then
print("setDisabledState() got object of unsupported type. object type is ",guiObject.ClassName)
end
end
end
function showEnabledState(guiObject)
if guiObject:IsA("TextLabel") then
guiObject.TextTransparency = 0
elseif guiObject:IsA("TextButton") then
guiObject.TextTransparency = 0
guiObject.Active = true
else
if guiObject["ClassName"] then
print("showEnabledState() got object of unsupported type. object type is ",guiObject.ClassName)
end
end
end
local function createHelpDialog(baseZIndex)
if helpButton == nil then
if gui:FindFirstChild("TopLeftControl") and gui.TopLeftControl:FindFirstChild("Help") then
helpButton = gui.TopLeftControl.Help
elseif gui:FindFirstChild("BottomRightControl") and gui.BottomRightControl:FindFirstChild("Help") then
helpButton = gui.BottomRightControl.Help
end
end
local shield = Instance.new("Frame")
shield.Name = "HelpDialogShield"
shield.Active = true
shield.Visible = false
shield.Size = UDim2.new(1,0,1,0)
shield.BackgroundColor3 = Color3I(51,51,51)
shield.BorderColor3 = Color3I(27,42,53)
shield.BackgroundTransparency = 0.4
shield.ZIndex = baseZIndex + 1
local helpDialog = Instance.new("Frame")
helpDialog.Name = "HelpDialog"
helpDialog.Style = Enum.FrameStyle.RobloxRound
helpDialog.Position = UDim2.new(.2, 0, .2, 0)
helpDialog.Size = UDim2.new(0.6, 0, 0.6, 0)
helpDialog.Active = true
helpDialog.Parent = shield
local titleLabel = Instance.new("TextLabel")
titleLabel.Name = "Title"
titleLabel.Text = "Keyboard & Mouse Controls"
titleLabel.Font = Enum.Font.ArialBold
titleLabel.FontSize = Enum.FontSize.Size36
titleLabel.Position = UDim2.new(0, 0, 0.025, 0)
titleLabel.Size = UDim2.new(1, 0, 0, 40)
titleLabel.TextColor3 = Color3.new(1,1,1)
titleLabel.BackgroundTransparency = 1
titleLabel.Parent = helpDialog
local buttonRow = Instance.new("Frame")
buttonRow.Name = "Buttons"
buttonRow.Position = UDim2.new(0.1, 0, .07, 40)
buttonRow.Size = UDim2.new(0.8, 0, 0, 45)
buttonRow.BackgroundTransparency = 1
buttonRow.Parent = helpDialog
local imageFrame = Instance.new("Frame")
imageFrame.Name = "ImageFrame"
imageFrame.Position = UDim2.new(0.05, 0, 0.075, 80)
imageFrame.Size = UDim2.new(0.9, 0, .9, -120)
imageFrame.BackgroundTransparency = 1
imageFrame.Parent = helpDialog
local layoutFrame = Instance.new("Frame")
layoutFrame.Name = "LayoutFrame"
layoutFrame.Position = UDim2.new(0.5, 0, 0, 0)
layoutFrame.Size = UDim2.new(1.5, 0, 1, 0)
layoutFrame.BackgroundTransparency = 1
layoutFrame.SizeConstraint = Enum.SizeConstraint.RelativeYY
layoutFrame.Parent = imageFrame
local image = Instance.new("ImageLabel")
image.Name = "Image"
if UserSettings().GameSettings.ControlMode == Enum.ControlMode["Mouse Lock Switch"] then
image.Image = mouseLockLookScreenUrl
else
image.Image = classicLookScreenUrl
end
image.Position = UDim2.new(-0.5, 0, 0, 0)
image.Size = UDim2.new(1, 0, 1, 0)
image.BackgroundTransparency = 1
image.Parent = layoutFrame
local buttons = {}
buttons[1] = {}
buttons[1].Text = "Look"
buttons[1].Function = function()
if UserSettings().GameSettings.ControlMode == Enum.ControlMode["Mouse Lock Switch"] then
image.Image = mouseLockLookScreenUrl
else
image.Image = classicLookScreenUrl
end
end
buttons[2] = {}
buttons[2].Text = "Move"
buttons[2].Function = function()
image.Image = "http://morblox.us/asset/?id=45915811"
end
buttons[3] = {}
buttons[3].Text = "Gear"
buttons[3].Function = function()
image.Image = "http://morblox.us/asset/?id=45917596"
end
buttons[4] = {}
buttons[4].Text = "Zoom"
buttons[4].Function = function()
image.Image = "http://morblox.us/asset/?id=45915825"
end
CreateTextButtons(buttonRow, buttons, UDim.new(0, 0), UDim.new(1,0))
-- set up listeners for type of mouse mode, but keep constructing gui at same time
delay(0, function()
waitForChild(gui,"UserSettingsShield")
waitForChild(gui.UserSettingsShield,"Settings")
waitForChild(gui.UserSettingsShield.Settings,"SettingsStyle")
waitForChild(gui.UserSettingsShield.Settings.SettingsStyle, "GameSettingsMenu")
waitForChild(gui.UserSettingsShield.Settings.SettingsStyle.GameSettingsMenu, "CameraField")
waitForChild(gui.UserSettingsShield.Settings. SettingsStyle.GameSettingsMenu.CameraField, "DropDownMenuButton")
gui.UserSettingsShield.Settings.SettingsStyle.GameSettingsMenu.CameraField.DropDownMenuButton.Changed:connect(function(prop)
if prop ~= "Text" then return end
if buttonRow.Button1.Style == Enum.ButtonStyle.RobloxButtonDefault then -- only change if this is the currently selected panel
if gui.UserSettingsShield.Settings.SettingsStyle.GameSettingsMenu.CameraField.DropDownMenuButton.Text == "Classic" then
image.Image = classicLookScreenUrl
else
image.Image = mouseLockLookScreenUrl
end
end
end)
end)
local okBtn = Instance.new("TextButton")
okBtn.Name = "OkBtn"
okBtn.Text = "OK"
okBtn.Size = UDim2.new(0.3, 0, 0, 45)
okBtn.Position = UDim2.new(0.35, 0, .975, -50)
okBtn.Font = Enum.Font.Arial
okBtn.FontSize = Enum.FontSize.Size18
okBtn.BackgroundTransparency = 1
okBtn.TextColor3 = Color3.new(1,1,1)
okBtn.Style = Enum.ButtonStyle.RobloxButtonDefault
okBtn.MouseButton1Click:connect(
function()
shield.Visible = false
pcall(function() game.GuiService:RemoveCenterDialog(shield) end)
end)
okBtn.Parent = helpDialog
robloxLock(shield)
return shield
end
local function createLeaveConfirmationMenu(baseZIndex,shield)
local frame = Instance.new("Frame")
frame.Name = "LeaveConfirmationMenu"
frame.BackgroundTransparency = 1
frame.Size = UDim2.new(1,0,1,0)
frame.Position = UDim2.new(0,0,2,400)
frame.ZIndex = baseZIndex + 4
local yesButton = createTextButton("Yes",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size24,UDim2.new(0,128,0,50),UDim2.new(0,313,0.8,0))
yesButton.Name = "YesButton"
yesButton.ZIndex = baseZIndex + 4
yesButton.Parent = frame
pcall(function() yesButton:SetVerb("Exit") end)
local noButton = createTextButton("No",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size24,UDim2.new(0,128,0,50),UDim2.new(0,90,0.8,0))
noButton.Name = "NoButton"
noButton.Parent = frame
noButton.ZIndex = baseZIndex + 4
noButton.MouseButton1Click:connect(function()
goToMenu(shield.Settings.SettingsStyle,"GameMainMenu","down")
shield.Settings:TweenSize(UDim2.new(0,525,0,430),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
end)
local leaveText = Instance.new("TextLabel")
leaveText.Name = "LeaveText"
leaveText.Text = "Are you sure you want to leave this game?"
leaveText.Size = UDim2.new(1,0,0.8,0)
leaveText.TextWrap = true
leaveText.TextColor3 = Color3.new(1,1,1)
leaveText.Font = Enum.Font.ArialBold
leaveText.FontSize = Enum.FontSize.Size36
leaveText.BackgroundTransparency = 1
leaveText.ZIndex = baseZIndex + 4
leaveText.Parent = frame
return frame
end
local function createResetConfirmationMenu(baseZIndex,shield)
local frame = Instance.new("Frame")
frame.Name = "ResetConfirmationMenu"
frame.BackgroundTransparency = 1
frame.Size = UDim2.new(1,0,1,0)
frame.Position = UDim2.new(0,0,2,400)
frame.ZIndex = baseZIndex + 4
local yesButton = createTextButton("Yes",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size24,UDim2.new(0,128,0,50),UDim2.new(0,313,0,299))
yesButton.Name = "YesButton"
yesButton.ZIndex = baseZIndex + 4
yesButton.Parent = frame
yesButton.MouseButton1Click:connect(function()
resumeGameFunction(shield)
resetLocalCharacter()
end)
local noButton = createTextButton("No",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size24,UDim2.new(0,128,0,50),UDim2.new(0,90,0,299))
noButton.Name = "NoButton"
noButton.Parent = frame
noButton.ZIndex = baseZIndex + 4
noButton.MouseButton1Click:connect(function()
goToMenu(shield.Settings.SettingsStyle,"GameMainMenu","down")
shield.Settings:TweenSize(UDim2.new(0,525,0,430),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
end)
local resetCharacterText = Instance.new("TextLabel")
resetCharacterText.Name = "ResetCharacterText"
resetCharacterText.Text = "Are you sure you want to reset your character?"
resetCharacterText.Size = UDim2.new(1,0,0.8,0)
resetCharacterText.TextWrap = true
resetCharacterText.TextColor3 = Color3.new(1,1,1)
resetCharacterText.Font = Enum.Font.ArialBold
resetCharacterText.FontSize = Enum.FontSize.Size36
resetCharacterText.BackgroundTransparency = 1
resetCharacterText.ZIndex = baseZIndex + 4
resetCharacterText.Parent = frame
local fineResetCharacterText = resetCharacterText:Clone()
fineResetCharacterText.Name = "FineResetCharacterText"
fineResetCharacterText.Text = "You will be put back on a spawn point"
fineResetCharacterText.Size = UDim2.new(0,303,0,18)
fineResetCharacterText.Position = UDim2.new(0, 109, 0, 215)
fineResetCharacterText.FontSize = Enum.FontSize.Size18
fineResetCharacterText.Parent = frame
return frame
end
local function createGameMainMenu(baseZIndex, shield)
local gameMainMenuFrame = Instance.new("Frame")
gameMainMenuFrame.Name = "GameMainMenu"
gameMainMenuFrame.BackgroundTransparency = 1
gameMainMenuFrame.Size = UDim2.new(1,0,1,0)
gameMainMenuFrame.ZIndex = baseZIndex + 4
gameMainMenuFrame.Parent = settingsFrame
-- GameMainMenu Children
local gameMainMenuTitle = Instance.new("TextLabel")
gameMainMenuTitle.Name = "Title"
gameMainMenuTitle.Text = "Game Menu"
gameMainMenuTitle.BackgroundTransparency = 1
gameMainMenuTitle.Font = Enum.Font.ArialBold
gameMainMenuTitle.FontSize = Enum.FontSize.Size36
gameMainMenuTitle.Size = UDim2.new(1,0,0,36)
gameMainMenuTitle.Position = UDim2.new(0,0,0,4)
gameMainMenuTitle.TextColor3 = Color3.new(1,1,1)
gameMainMenuTitle.ZIndex = baseZIndex + 4
gameMainMenuTitle.Parent = gameMainMenuFrame
local robloxHelpButton = createTextButton("Help",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size18,UDim2.new(0,164,0,50),UDim2.new(0,82,0,239))
robloxHelpButton.Name = "HelpButton"
robloxHelpButton.ZIndex = baseZIndex + 4
robloxHelpButton.Parent = gameMainMenuFrame
if useNewGui then
helpButton = robloxHelpButton
else
robloxHelpButton.Visible = false
end
local helpDialog = createHelpDialog(baseZIndex)
helpDialog.Parent = gui
helpButton.MouseButton1Click:connect(
function()
local centerDialogSuccess = pcall(function() game.GuiService:AddCenterDialog(helpDialog, Enum.CenterDialogType.ModalDialog,
--ShowFunction
function()
helpDialog.Visible = true
end,
--HideFunction
function()
helpDialog.Visible = false
end)
end)
if centerDialogSuccess == false then
helpDialog.Visible = true
end
end)
helpButton.Active = true
local helpShortcut = Instance.new("TextLabel")
helpShortcut.Name = "HelpShortcutText"
helpShortcut.Text = "F1"
helpShortcut.Visible = false
helpShortcut.BackgroundTransparency = 1
helpShortcut.Font = Enum.Font.Arial
helpShortcut.FontSize = Enum.FontSize.Size12
helpShortcut.Position = UDim2.new(0,85,0,0)
helpShortcut.Size = UDim2.new(0,30,0,30)
helpShortcut.TextColor3 = Color3.new(0,1,0)
helpShortcut.ZIndex = baseZIndex + 4
helpShortcut.Parent = robloxHelpButton
local screenshotButton = createTextButton("Screenshot",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size18,UDim2.new(0,168,0,50),UDim2.new(0,254,0,239))
screenshotButton.Name = "ScreenshotButton"
screenshotButton.ZIndex = baseZIndex + 4
screenshotButton.Parent = gameMainMenuFrame
screenshotButton.Visible = not macClient
pcall(function() screenshotButton:SetVerb("Screenshot") end)
local screenshotShortcut = helpShortcut:clone()
screenshotShortcut.Name = "ScreenshotShortcutText"
screenshotShortcut.Text = "PrintSc"
screenshotShortcut.Position = UDim2.new(0,118,0,0)
screenshotShortcut.Visible = true
screenshotShortcut.Parent = screenshotButton
local recordVideoButton = createTextButton("Record Video",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size18,UDim2.new(0,168,0,50),UDim2.new(0,254,0,290))
recordVideoButton.Name = "RecordVideoButton"
recordVideoButton.ZIndex = baseZIndex + 4
recordVideoButton.Parent = gameMainMenuFrame
recordVideoButton.Visible = not macClient
local supportVideoCapture = pcall(function() return UserSettings().GameSettings.VideoUploadPromptBehavior end)
if supportVideoCapture then
pcall(function() recordVideoButton:SetVerb("RecordToggle") end)
end
local recordVideoShortcut = helpShortcut:clone()
recordVideoShortcut.Name = "RecordVideoShortcutText"
recordVideoShortcut.Text = "F12"
recordVideoShortcut.Position = UDim2.new(0,120,0,0)
recordVideoShortcut.Parent = recordVideoButton
local stopRecordButton = Instance.new("ImageButton")
stopRecordButton.Name = "StopRecordButton"
stopRecordButton.BackgroundTransparency = 1
stopRecordButton.Image = "rbxasset://textures/ui/RecordStop.png"
stopRecordButton.Size = UDim2.new(0,59,0,27)
if supportVideoCapture then
pcall(function() stopRecordButton:SetVerb("RecordToggle") end)
end
stopRecordButton.MouseButton1Click:connect(function() recordVideoClick(recordVideoButton, stopRecordButton) end)
stopRecordButton.Visible = false
stopRecordButton.Parent = gui
local reportAbuseButton = createTextButton("Report Abuse",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size18,UDim2.new(0,164,0,50),UDim2.new(0,82,0,290))
reportAbuseButton.Name = "ReportAbuseButton"
reportAbuseButton.ZIndex = baseZIndex + 4
reportAbuseButton.Parent = gameMainMenuFrame
local leaveGameButton = createTextButton("Leave Game",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,358))
leaveGameButton.Name = "LeaveGameButton"
leaveGameButton.ZIndex = baseZIndex + 4
leaveGameButton.Parent = gameMainMenuFrame
local resumeGameButton = createTextButton("Resume Game",Enum.ButtonStyle.RobloxButtonDefault,Enum.FontSize.Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,54))
resumeGameButton.Name = "resumeGameButton"
resumeGameButton.ZIndex = baseZIndex + 4
resumeGameButton.Parent = gameMainMenuFrame
resumeGameButton.MouseButton1Click:connect(function() resumeGameFunction(shield) end)
local gameSettingsButton = createTextButton("Game Settings",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,172))
gameSettingsButton.Name = "SettingsButton"
gameSettingsButton.ZIndex = baseZIndex + 4
gameSettingsButton.Parent = gameMainMenuFrame
local resetButton = createTextButton("Reset Character",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size24,UDim2.new(0,340,0,50),UDim2.new(0,82,0,105))
resetButton.Name = "ResetButton"
resetButton.ZIndex = baseZIndex + 4
resetButton.Parent = gameMainMenuFrame
return gameMainMenuFrame
end
local function createGameSettingsMenu(baseZIndex, shield)
local gameSettingsMenuFrame = Instance.new("Frame")
gameSettingsMenuFrame.Name = "GameSettingsMenu"
gameSettingsMenuFrame.BackgroundTransparency = 1
gameSettingsMenuFrame.Size = UDim2.new(1,0,1,0)
gameSettingsMenuFrame.ZIndex = baseZIndex + 4
local title = Instance.new("TextLabel")
title.Name = "Title"
title.Text = "Settings"
title.Size = UDim2.new(1,0,0,48)
title.Position = UDim2.new(0,9,0,-9)
title.Font = Enum.Font.ArialBold
title.FontSize = Enum.FontSize.Size36
title.TextColor3 = Color3.new(1,1,1)
title.ZIndex = baseZIndex + 4
title.BackgroundTransparency = 1
title.Parent = gameSettingsMenuFrame
local fullscreenText = Instance.new("TextLabel")
fullscreenText.Name = "FullscreenText"
fullscreenText.Text = "Fullscreen Mode"
fullscreenText.Size = UDim2.new(0,124,0,18)
fullscreenText.Position = UDim2.new(0,62,0,145)
fullscreenText.Font = Enum.Font.Arial
fullscreenText.FontSize = Enum.FontSize.Size18
fullscreenText.TextColor3 = Color3.new(1,1,1)
fullscreenText.ZIndex = baseZIndex + 4
fullscreenText.BackgroundTransparency = 1
fullscreenText.Parent = gameSettingsMenuFrame
local fullscreenShortcut = Instance.new("TextLabel")
fullscreenShortcut.Visible = false
fullscreenShortcut.Name = "FullscreenShortcutText"
fullscreenShortcut.Text = "F11"
fullscreenShortcut.BackgroundTransparency = 1
fullscreenShortcut.Font = Enum.Font.Arial
fullscreenShortcut.FontSize = Enum.FontSize.Size12
fullscreenShortcut.Position = UDim2.new(0,186,0,141)
fullscreenShortcut.Size = UDim2.new(0,30,0,30)
fullscreenShortcut.TextColor3 = Color3.new(0,1,0)
fullscreenShortcut.ZIndex = baseZIndex + 4
fullscreenShortcut.Parent = gameSettingsMenuFrame
local studioText = Instance.new("TextLabel")
studioText.Name = "StudioText"
studioText.Text = "Studio Mode"
studioText.Size = UDim2.new(0,95,0,18)
studioText.Position = UDim2.new(0,62,0,179)
studioText.Font = Enum.Font.Arial
studioText.FontSize = Enum.FontSize.Size18
studioText.TextColor3 = Color3.new(1,1,1)
studioText.ZIndex = baseZIndex + 4
studioText.BackgroundTransparency = 1
studioText.Parent = gameSettingsMenuFrame
local studioShortcut = fullscreenShortcut:clone()
studioShortcut.Name = "StudioShortcutText"
studioShortcut.Text = "F2"
studioShortcut.Position = UDim2.new(0,154,0,175)
studioShortcut.Parent = gameSettingsMenuFrame
if hasGraphicsSlider then
local qualityText = Instance.new("TextLabel")
qualityText.Name = "QualityText"
qualityText.Text = "Graphics Quality"
qualityText.Size = UDim2.new(0,128,0,18)
qualityText.Position = UDim2.new(0,31,0,226)
qualityText.Font = Enum.Font.Arial
qualityText.FontSize = Enum.FontSize.Size18
qualityText.TextColor3 = Color3.new(1,1,1)
qualityText.ZIndex = baseZIndex + 4
qualityText.BackgroundTransparency = 1
qualityText.Parent = gameSettingsMenuFrame
local graphicsSlider, graphicsLevel = RbxGui.CreateSlider(10,200,UDim2.new(0, 270, 0, 232))
graphicsSlider.Parent = gameSettingsMenuFrame
graphicsSlider.Bar.ZIndex = baseZIndex + 4
graphicsSlider.Bar.Slider.ZIndex = baseZIndex + 5
end
local fullscreenCheckbox = createTextButton("",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size18,UDim2.new(0,25,0,25),UDim2.new(0,30,0,144))
fullscreenCheckbox.Name = "FullscreenCheckbox"
fullscreenCheckbox.ZIndex = baseZIndex + 4
fullscreenCheckbox.Parent = gameSettingsMenuFrame
pcall(function()
if UserSettings().GameSettings:InFullScreen() then
fullscreenCheckbox.Text = "X"
end
end)
fullscreenCheckbox.MouseButton1Click:connect(function()
if fullscreenCheckbox.Text == "" then
fullscreenCheckbox.Text = "X"
else
fullscreenCheckbox.Text = ""
end
end)
pcall(function() fullscreenCheckbox:SetVerb("ToggleFullScreen") end)
local studioCheckbox = createTextButton("",Enum.ButtonStyle.RobloxButton,Enum.FontSize.Size18,UDim2.new(0,25,0,25),UDim2.new(0,30,0,176))
studioCheckbox.Name = "StudioCheckbox"
studioCheckbox.ZIndex = baseZIndex + 4
studioCheckbox.Parent = gameSettingsMenuFrame
pcall(function()
if UserSettings().GameSettings:InStudioMode() then
studioCheckbox.Text = "X"
end
end)
studioCheckbox.MouseButton1Click:connect(function()
if not studioCheckbox.Active then return end
if studioCheckbox.Text == "" then
studioCheckbox.Text = "X"
else
studioCheckbox.Text = ""
end
end)
pcall(function() studioCheckbox:SetVerb("TogglePlayMode") end)
if game:FindFirstChild("NetworkClient") then -- we are playing online
setDisabledState(studioText)
setDisabledState(studioShortcut)
setDisabledState(studioCheckbox)
end
local backButton = createTextButton("OK",Enum.ButtonStyle.RobloxButtonDefault,Enum.FontSize.Size24,UDim2.new(0,180,0,50),UDim2.new(0,170,0,270))
backButton.Name = "BackButton"
backButton.ZIndex = baseZIndex + 4
backButton.Parent = gameSettingsMenuFrame
local syncVideoCaptureSetting = nil
local supportVideoCapture = pcall(function() return UserSettings().GameSettings.VideoUploadPromptBehavior end)
if supportVideoCapture and not macClient then
local videoCaptureLabel = Instance.new("TextLabel")
videoCaptureLabel.Name = "VideoCaptureLabel"
videoCaptureLabel.Text = "After Capturing Video"
videoCaptureLabel.Font = Enum.Font.Arial
videoCaptureLabel.FontSize = Enum.FontSize.Size18
videoCaptureLabel.Position = UDim2.new(0,32,0,100)
videoCaptureLabel.Size = UDim2.new(0,164,0,18)
videoCaptureLabel.BackgroundTransparency = 1
videoCaptureLabel.TextColor3 = Color3I(255,255,255)
videoCaptureLabel.TextXAlignment = Enum.TextXAlignment.Left
videoCaptureLabel.ZIndex = baseZIndex + 4
videoCaptureLabel.Parent = gameSettingsMenuFrame
local videoNames = {}
local videoNameToItem = {}
videoNames[1] = "Just Save to Disk"
videoNameToItem[videoNames[1]] = Enum.UploadSetting["Never"]
videoNames[2] = "Upload to YouTube"
videoNameToItem[videoNames[2]] = Enum.UploadSetting["Ask me first"]
local videoCaptureDropDown = nil
videoCaptureDropDown, updateVideoCaptureDropDownSelection = RbxGui.CreateDropDownMenu(videoNames,
function(text)
UserSettings().GameSettings.VideoUploadPromptBehavior = videoNameToItem[text]
end)
videoCaptureDropDown.Name = "VideoCaptureField"
videoCaptureDropDown.ZIndex = baseZIndex + 4
videoCaptureDropDown.DropDownMenuButton.ZIndex = baseZIndex + 4
videoCaptureDropDown.DropDownMenuButton.Icon.ZIndex = baseZIndex + 4
videoCaptureDropDown.Position = UDim2.new(0, 270, 0, 94)
videoCaptureDropDown.Size = UDim2.new(0,200,0,32)
videoCaptureDropDown.Parent = gameSettingsMenuFrame
syncVideoCaptureSetting = function()
if UserSettings().GameSettings.VideoUploadPromptBehavior == Enum.UploadSetting["Never"] then
updateVideoCaptureDropDownSelection(videoNames[1])
elseif UserSettings().GameSettings.VideoUploadPromptBehavior == Enum.UploadSetting["Ask me first"] then
updateVideoCaptureDropDownSelection(videoNames[2])
else
UserSettings().GameSettings.VideoUploadPromptBehavior = Enum.UploadSetting["Ask me first"]
updateVideoCaptureDropDownSelection(videoNames[2])
end
end
end
local cameraLabel = Instance.new("TextLabel")
cameraLabel.Name = "CameraLabel"
cameraLabel.Text = "Character & Camera Controls"
cameraLabel.Font = Enum.Font.Arial
cameraLabel.FontSize = Enum.FontSize.Size18
cameraLabel.Position = UDim2.new(0,31,0,58)
cameraLabel.Size = UDim2.new(0,224,0,18)
cameraLabel.TextColor3 = Color3I(255,255,255)
cameraLabel.TextXAlignment = Enum.TextXAlignment.Left
cameraLabel.BackgroundTransparency = 1
cameraLabel.ZIndex = baseZIndex + 4
cameraLabel.Parent = gameSettingsMenuFrame
local mouseLockLabel = game.CoreGui.RobloxGui:FindFirstChild("MouseLockLabel",true)
local enumItems = Enum.ControlMode:GetEnumItems()
local enumNames = {}
local enumNameToItem = {}
for i,obj in ipairs(enumItems) do
enumNames[i] = obj.Name
enumNameToItem[obj.Name] = obj
end
local cameraDropDown
cameraDropDown, updateCameraDropDownSelection = RbxGui.CreateDropDownMenu(enumNames,
function(text)
UserSettings().GameSettings.ControlMode = enumNameToItem[text]
pcall(function()
if mouseLockLabel and UserSettings().GameSettings.ControlMode == Enum.ControlMode["Mouse Lock Switch"] then
mouseLockLabel.Visible = true
elseif mouseLockLabel then
mouseLockLabel.Visible = false
end
end)
end)
cameraDropDown.Name = "CameraField"
cameraDropDown.ZIndex = baseZIndex + 4
cameraDropDown.DropDownMenuButton.ZIndex = baseZIndex + 4
cameraDropDown.DropDownMenuButton.Icon.ZIndex = baseZIndex + 4
cameraDropDown.Position = UDim2.new(0, 270, 0, 52)
cameraDropDown.Size = UDim2.new(0,200,0,32)
cameraDropDown.Parent = gameSettingsMenuFrame
return gameSettingsMenuFrame
end
if LoadLibrary then
RbxGui = LoadLibrary("RbxGui")
local baseZIndex = 0
if UserSettings then
local createOldSettingsDialog = function()
waitForChild(gui,"BottomLeftControl")
settingsButton = gui.BottomLeftControl:FindFirstChild("SettingsButton")
if settingsButton == nil then
settingsButton = Instance.new("ImageButton")
settingsButton.Name = "SettingsButton"
settingsButton.BackgroundTransparency = 1
settingsButton.Active = false
settingsButton.Size = UDim2.new(0,54,0,46)
settingsButton.Position = UDim2.new(0,2,0,50)
settingsButton.Parent = gui.BottomLeftControl
settingsButton.Image = "http://www.roblox.com/asset/?id=54608960"
settingsButton.Size = UDim2.new(0,33,0,33)
settingsButton.Position = UDim2.new(0, 128, 0.5, -17)
settingsButton.MouseEnter:connect(function()
settingsButton.Image = "http://www.roblox.com/asset/?id=54609004"
end)
settingsButton.MouseLeave:connect(function()
settingsButton.Image = "http://www.roblox.com/asset/?id=54608960"
end)
end
local shield = Instance.new("TextButton")
shield.Text = ""
shield.Name = "UserSettingsShield"
shield.Active = true
shield.AutoButtonColor = false
shield.Visible = false
shield.Size = UDim2.new(1,0,1,0)
shield.BackgroundColor3 = Color3I(51,51,51)
shield.BorderColor3 = Color3I(27,42,53)
shield.BackgroundTransparency = 0.4
shield.ZIndex = baseZIndex + 1
local frame = Instance.new("Frame")
frame.Name = "Settings"
frame.Position = UDim2.new(0.5, -262, 0.5, -150)
frame.Size = UDim2.new(0, 525, 0, 290)
frame.BackgroundTransparency = 1
frame.Active = true
frame.Parent = shield
local settingsFrame = Instance.new("Frame")
settingsFrame.Name = "SettingsStyle"
settingsFrame.Size = UDim2.new(1, 0, 1, 0)
settingsFrame.Style = Enum.FrameStyle.RobloxRound
settingsFrame.Active = true
settingsFrame.ZIndex = baseZIndex + 1
settingsFrame.Parent = frame
local title = Instance.new("TextLabel")
title.Name = "Title"
title.Text = "Settings"
title.TextColor3 = Color3I(221,221,221)
title.Position = UDim2.new(0.5, 0, 0, 30)
title.Font = Enum.Font.ArialBold
title.FontSize = Enum.FontSize.Size36
title.ZIndex = baseZIndex + 1
title.Parent = settingsFrame
local cameraLabel = Instance.new("TextLabel")
cameraLabel.Name = "CameraLabel"
cameraLabel.Text = "Character & Camera Controls:"
cameraLabel.Font = Enum.Font.Arial
cameraLabel.FontSize = Enum.FontSize.Size18
cameraLabel.Position = UDim2.new(0,20,0,105)
cameraLabel.TextColor3 = Color3I(255,255,255)
cameraLabel.TextXAlignment = Enum.TextXAlignment.Left
cameraLabel.ZIndex = baseZIndex + 1
cameraLabel.Parent = settingsFrame
local mouseLockLabel = game.CoreGui.RobloxGui:FindFirstChild("MouseLockLabel",true)
local enumItems = Enum.ControlMode:GetEnumItems()
local enumNames = {}
local enumNameToItem = {}
for i,obj in ipairs(enumItems) do
enumNames[i] = obj.Name
enumNameToItem[obj.Name] = obj
end
local cameraDropDown
local updateCameraDropDownSelection
cameraDropDown, updateCameraDropDownSelection = RbxGui.CreateDropDownMenu(enumNames,
function(text)
UserSettings().GameSettings.ControlMode = enumNameToItem[text]
pcall(function()
if mouseLockLabel and UserSettings().GameSettings.ControlMode == Enum.ControlMode["Mouse Lock Switch"] then
mouseLockLabel.Visible = true
elseif mouseLockLabel then
mouseLockLabel.Visible = false
end
end)
end)
cameraDropDown.Name = "CameraField"
cameraDropDown.ZIndex = baseZIndex + 1
cameraDropDown.Position = UDim2.new(0, 300, 0, 88)
cameraDropDown.Size = UDim2.new(0,200,0,32)
cameraDropDown.Parent = settingsFrame
local syncVideoCaptureSetting = nil
local supportVideoCapture = pcall(function() return UserSettings().GameSettings.VideoUploadPromptBehavior end)
if supportVideoCapture then
local videoCaptureLabel = Instance.new("TextLabel")
videoCaptureLabel.Name = "VideoCaptureLabel"
videoCaptureLabel.Text = "After Capturing Video:"
videoCaptureLabel.Font = Enum.Font.Arial
videoCaptureLabel.FontSize = Enum.FontSize.Size18
videoCaptureLabel.Position = UDim2.new(0,20,0,145)
videoCaptureLabel.TextColor3 = Color3I(255,255,255)
videoCaptureLabel.TextXAlignment = Enum.TextXAlignment.Left
videoCaptureLabel.ZIndex = baseZIndex + 1
videoCaptureLabel.Parent = settingsFrame
local videoNames = {}
local videoNameToItem = {}
videoNames[1] = "Just Save to Disk"
videoNameToItem[videoNames[1]] = Enum.UploadSetting["Never"]
videoNames[2] = "Upload to YouTube"
videoNameToItem[videoNames[2]] = Enum.UploadSetting["Ask me first"]
local videoCaptureDropDown, updateVideoCaptureDropDownSelection = RbxGui.CreateDropDownMenu(videoNames,
function(text)
UserSettings().GameSettings.VideoUploadPromptBehavior = videoNameToItem[text]
end)
videoCaptureDropDown.Name = "VideoCaptureField"
videoCaptureDropDown.ZIndex = baseZIndex + 1
videoCaptureDropDown.Position = UDim2.new(0, 300, 0, 128)
videoCaptureDropDown.Size = UDim2.new(0,200,0,32)
videoCaptureDropDown.Parent = settingsFrame
syncVideoCaptureSetting = function()
if gui:FindFirstChild("BottomRightControl") and gui.BottomRightControl:FindFirstChild("RecordToggle") then
videoCaptureLabel.Visible = true
videoCaptureDropDown.Visible = true
if UserSettings().GameSettings.VideoUploadPromptBehavior == Enum.UploadSetting["Never"] then
updateVideoCaptureDropDownSelection(videoNames[1])
elseif UserSettings().GameSettings.VideoUploadPromptBehavior == Enum.UploadSetting["Ask me first"] then
updateVideoCaptureDropDownSelection(videoNames[2])
else
UserSettings().GameSettings.VideoUploadPromptBehavior = Enum.UploadSetting["Ask me first"]
updateVideoCaptureDropDownSelection(videoNames[2])
end
else
videoCaptureLabel.Visible = false
videoCaptureDropDown.Visible = false
end
end
end
local exitButton = Instance.new("TextButton")
exitButton.Name = "ExitBtn"
exitButton.Font = Enum.Font.Arial
exitButton.FontSize = Enum.FontSize.Size18
exitButton.Position = UDim2.new(0.5, -100, 0, 200)
exitButton.Size = UDim2.new(0,200,0,50)
exitButton.AutoButtonColor = true
exitButton.Style = Enum.ButtonStyle.RobloxButtonDefault
exitButton.Text = "OK"
exitButton.TextColor3 = Color3I(255,255,255)
exitButton.ZIndex = baseZIndex + 1
exitButton.Parent = settingsFrame
robloxLock(shield)
exitButton.MouseButton1Click:connect(
function()
shield.Visible = false
pcall(function() game.GuiService:RemoveCenterDialog(shield) end)
settingsButton.Active = true
end
)
settingsButton.MouseButton1Click:connect(
function()
local centerDialogSuccess = pcall(function() game.GuiService:AddCenterDialog(shield, Enum.CenterDialogType.ModalDialog,
--showFunction
function()
settingsButton.Active = false
updateCameraDropDownSelection(UserSettings().GameSettings.ControlMode.Name)
if syncVideoCaptureSetting then
syncVideoCaptureSetting()
end
shield.Visible = true
end,
--hideFunction
function()
shield.Visible = false
settingsButton.Active = true
end
)
end)
if centerDialogSuccess == false then
settingsButton.Active = false
updateCameraDropDownSelection(UserSettings().GameSettings.ControlMode.Name)
if syncVideoCaptureSetting then
syncVideoCaptureSetting()
end
shield.Visible = true
end
end
)
print("Create old settings dialog return")
return shield
end
local createSettingsDialog = function()
waitForChild(gui,"BottomLeftControl")
settingsButton = gui.BottomLeftControl:FindFirstChild("SettingsButton")
if settingsButton == nil then
settingsButton = Instance.new("ImageButton")
settingsButton.Name = "SettingsButton"
settingsButton.Image = "rbxasset://textures/ui/SettingsButton.png"
settingsButton.BackgroundTransparency = 1
settingsButton.Active = false
settingsButton.Size = UDim2.new(0,54,0,46)
settingsButton.Position = UDim2.new(0,2,0,50)
settingsButton.Parent = gui.BottomLeftControl
end
if not useNewGui then
settingsButton.Image = "http://www.roblox.com/asset/?id=54608960"
settingsButton.Size = UDim2.new(0,33,0,33)
settingsButton.Position = UDim2.new(0, 128, 0.5, -17)
settingsButton.MouseEnter:connect(function()
settingsButton.Image = "http://www.roblox.com/asset/?id=54609004"
end)
settingsButton.MouseLeave:connect(function()
settingsButton.Image = "http://www.roblox.com/asset/?id=54608960"
end)
end
local shield = Instance.new("TextButton")
shield.Text = ""
shield.Name = "UserSettingsShield"
shield.Active = true
shield.AutoButtonColor = false
shield.Visible = false
shield.Size = UDim2.new(1,0,1,0)
shield.BackgroundColor3 = Color3I(51,51,51)
shield.BorderColor3 = Color3I(27,42,53)
shield.BackgroundTransparency = 0.4
shield.ZIndex = baseZIndex + 2
local frame = Instance.new("Frame")
frame.Name = "Settings"
frame.Position = UDim2.new(0.5, -262, -0.5, -200)
frame.Size = UDim2.new(0, 525, 0, 430)
frame.BackgroundTransparency = 1
frame.Active = true
frame.Parent = shield
local settingsFrame = Instance.new("Frame")
settingsFrame.Name = "SettingsStyle"
settingsFrame.Size = UDim2.new(1, 0, 1, 0)
settingsFrame.Style = Enum.FrameStyle.RobloxRound
settingsFrame.Active = true
settingsFrame.ZIndex = baseZIndex + 3
settingsFrame.Parent = frame
local gameMainMenu = createGameMainMenu(baseZIndex, shield)
gameMainMenu.Parent = settingsFrame
gameMainMenu.ScreenshotButton.MouseButton1Click:connect(function()
backToGame(gameMainMenu.ScreenshotButton, shield, settingsButton)
end)
gameMainMenu.RecordVideoButton.MouseButton1Click:connect(function()
recordVideoClick(gameMainMenu.RecordVideoButton, gui.StopRecordButton)
backToGame(gameMainMenu.RecordVideoButton, shield, settingsButton)
end)
if not useNewGui then
pcall(function()
gui.BottomRightControl.RecordToggle.MouseButton1Click:connect(function()
recordVideoClick(gameMainMenu.RecordVideoButton, gui.StopRecordButton)
end)
end)
end
game.CoreGui.RobloxGui.Changed:connect(function(prop) -- We have stopped recording when we resize
if prop == "AbsoluteSize" and recordingVideo then
recordVideoClick(gameMainMenu.RecordVideoButton, gui.StopRecordButton)
end
end)
gameMainMenu.ResetButton.Visible = game.Players.LocalPlayer
if game.Players.LocalPlayer ~= nil then
game.Players.LocalPlayer.Changed:connect(function()
gameMainMenu.ResetButton.Visible = game.Players.LocalPlayer
end)
else
delay(0,function()
waitForProperty(game.Players,"LocalPlayer")
gameMainMenu.ResetButton.Visible = game.Players.LocalPlayer
game.Players.LocalPlayer.Changed:connect(function()
gameMainMenu.ResetButton.Visible = game.Players.LocalPlayer
end)
end)
end
gameMainMenu.ReportAbuseButton.Visible = game:FindFirstChild("NetworkClient")
if not gameMainMenu.ReportAbuseButton.Visible then
game.ChildAdded:connect(function(child)
if child:IsA("NetworkClient") then
gameMainMenu.ReportAbuseButton.Visible = game:FindFirstChild("NetworkClient")
end
end)
end
gameMainMenu.ResetButton.MouseButton1Click:connect(function()
goToMenu(settingsFrame,"ResetConfirmationMenu","up")
settingsFrame.Parent:TweenSize(UDim2.new(0,525,0,370),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
end)
gameMainMenu.LeaveGameButton.MouseButton1Click:connect(function()
goToMenu(settingsFrame,"LeaveConfirmationMenu","down")
settingsFrame.Parent:TweenSize(UDim2.new(0,525,0,300),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
end)
local gameSettingsMenu = createGameSettingsMenu(baseZIndex, shield)
gameSettingsMenu.Visible = false
gameSettingsMenu.Parent = settingsFrame
gameMainMenu.SettingsButton.MouseButton1Click:connect(function()
goToMenu(settingsFrame,"GameSettingsMenu","left")
settingsFrame.Parent:TweenSize(UDim2.new(0,525,0,350),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
end)
gameSettingsMenu.BackButton.MouseButton1Click:connect(function()
goToMenu(settingsFrame,"GameMainMenu","right")
settingsFrame.Parent:TweenSize(UDim2.new(0,525,0,430),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
end)
local resetConfirmationWindow = createResetConfirmationMenu(baseZIndex, shield)
resetConfirmationWindow.Visible = false
resetConfirmationWindow.Parent = settingsFrame
local leaveConfirmationWindow = createLeaveConfirmationMenu(baseZIndex,shield)
leaveConfirmationWindow.Visible = false
leaveConfirmationWindow.Parent = settingsFrame
robloxLock(shield)
settingsButton.MouseButton1Click:connect(
function()
local centerDialogSuccess = pcall(function() game.GuiService:AddCenterDialog(shield, Enum.CenterDialogType.ModalDialog,
--showFunction
function()
settingsButton.Active = false
updateCameraDropDownSelection(UserSettings().GameSettings.ControlMode.Name)
if syncVideoCaptureSetting then
syncVideoCaptureSetting()
end
goToMenu(settingsFrame,"GameMainMenu","right")
shield.Visible = true
settingsFrame.Parent:TweenPosition(UDim2.new(0.5, -262,0.5, -200),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
settingsFrame.Parent:TweenSize(UDim2.new(0,525,0,430),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
end,
--hideFunction
function()
settingsFrame.Parent:TweenPosition(UDim2.new(0.5, -262,-0.5, -200),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
settingsFrame.Parent:TweenSize(UDim2.new(0,525,0,430),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
shield.Visible = false
settingsButton.Active = true
end
)
end)
if centerDialogSuccess == false then
settingsButton.Active = false
updateCameraDropDownSelection(UserSettings().GameSettings.ControlMode.Name)
if syncVideoCaptureSetting then
syncVideoCaptureSetting()
end
goToMenu(settingsFrame,"GameMainMenu","right")
settingsFrame.Parent:TweenSize(UDim2.new(0,525,0,430),Enum.EasingDirection.InOut,Enum.EasingStyle.Sine,tweenTime,true)
shield.Visible = true
end
end
)
return shield
end
delay(0, function()
for i = 1, #newGuiPlaces do
if game.PlaceId == newGuiPlaces[i] then
useNewGui = true
break
end
end
if useNewGui then
createSettingsDialog().Parent = gui
gui.BottomLeftControl.SettingsButton.Active = true
gui.BottomLeftControl.SettingsButton.Position = UDim2.new(0,2,0,-2)
if mouseLockLabel and UserSettings().GameSettings.ControlMode == Enum.ControlMode["Mouse Lock Switch"] then
mouseLockLabel.Visible = true
elseif mouseLockLabel then
mouseLockLabel.Visible = false
end
-- our script has loaded, get rid of older buttons now
local leaveGameButton = gui.BottomLeftControl:FindFirstChild("Exit")
if leaveGameButton then leaveGameButton:Remove() end
local topLeft = gui:FindFirstChild("TopLeftControl")
if topLeft then topLeft:Remove() end
local toggle = gui.BottomLeftControl:FindFirstChild("TogglePlayMode")
if toggle then toggle:Remove() end
local bottomRightChildren = gui.BottomRightControl:GetChildren()
for i = 1, #bottomRightChildren do
if not string.find(bottomRightChildren[i].Name,"Camera") then
bottomRightChildren[i]:Remove()
end
end
else
if useOldDialog then
createOldSettingsDialog().Parent = gui
else
createSettingsDialog().Parent = gui
end
gui.BottomLeftControl.SettingsButton.Active = true
end
end)
end --UserSettings call
local createSaveDialogs = function()
local shield = Instance.new("TextButton")
shield.Text = ""
shield.AutoButtonColor = false
shield.Name = "SaveDialogShield"
shield.Active = true
shield.Visible = false
shield.Size = UDim2.new(1,0,1,0)
shield.BackgroundColor3 = Color3I(51,51,51)
shield.BorderColor3 = Color3I(27,42,53)
shield.BackgroundTransparency = 0.4
shield.ZIndex = baseZIndex+1
local clearAndResetDialog
local save
local saveLocal
local dontSave
local cancel
local messageBoxButtons = {}
messageBoxButtons[1] = {}
messageBoxButtons[1].Text = "Save"
messageBoxButtons[1].Function = function() save() end
messageBoxButtons[2] = {}
messageBoxButtons[2].Text = "Cancel"
messageBoxButtons[2].Function = function() cancel() end
messageBoxButtons[3] = {}
messageBoxButtons[3].Text = "Don't Save"
messageBoxButtons[3].Function = function() dontSave() end
local saveDialogMessageBox = RbxGui.CreateStyledMessageDialog("Unsaved Changes", "Save your changes to ROBLOX before leaving?", "Confirm", messageBoxButtons)
saveDialogMessageBox.Visible = true
saveDialogMessageBox.Parent = shield
local errorBoxButtons = {}
local buttonOffset = 1
if game.LocalSaveEnabled then
errorBoxButtons[buttonOffset] = {}
errorBoxButtons[buttonOffset].Text = "Save to Disk"
errorBoxButtons[buttonOffset].Function = function() saveLocal() end
buttonOffset = buttonOffset + 1
end
errorBoxButtons[buttonOffset] = {}
errorBoxButtons[buttonOffset].Text = "Keep Playing"
errorBoxButtons[buttonOffset].Function = function() cancel() end
errorBoxButtons[buttonOffset+1] = {}
errorBoxButtons[buttonOffset+1].Text = "Don't Save"
errorBoxButtons[buttonOffset+1].Function = function() dontSave() end
local errorDialogMessageBox = RbxGui.CreateStyledMessageDialog("Upload Failed", "Sorry, we could not save your changes to ROBLOX.", "Error", errorBoxButtons)
errorDialogMessageBox.Visible = false
errorDialogMessageBox.Parent = shield
local spinnerDialog = Instance.new("Frame")
spinnerDialog.Name = "SpinnerDialog"
spinnerDialog.Style = Enum.FrameStyle.RobloxRound
spinnerDialog.Size = UDim2.new(0, 350, 0, 150)
spinnerDialog.Position = UDim2.new(.5, -175, .5, -75)
spinnerDialog.Visible = false
spinnerDialog.Active = true
spinnerDialog.Parent = shield
local waitingLabel = Instance.new("TextLabel")
waitingLabel.Name = "WaitingLabel"
waitingLabel.Text = "Saving to ROBLOX..."
waitingLabel.Font = Enum.Font.ArialBold
waitingLabel.FontSize = Enum.FontSize.Size18
waitingLabel.Position = UDim2.new(0.5, 25, 0.5, 0)
waitingLabel.TextColor3 = Color3.new(1,1,1)
waitingLabel.Parent = spinnerDialog
local spinnerFrame = Instance.new("Frame")
spinnerFrame.Name = "Spinner"
spinnerFrame.Size = UDim2.new(0, 80, 0, 80)
spinnerFrame.Position = UDim2.new(0.5, -150, 0.5, -40)
spinnerFrame.BackgroundTransparency = 1
spinnerFrame.Parent = spinnerDialog
local spinnerIcons = {}
local spinnerNum = 1
while spinnerNum <= 8 do
local spinnerImage = Instance.new("ImageLabel")
spinnerImage.Name = "Spinner"..spinnerNum
spinnerImage.Size = UDim2.new(0, 16, 0, 16)
spinnerImage.Position = UDim2.new(.5+.3*math.cos(math.rad(45*spinnerNum)), -8, .5+.3*math.sin(math.rad(45*spinnerNum)), -8)
spinnerImage.BackgroundTransparency = 1
spinnerImage.Image = "http://morblox.us/asset/?id=45880710"
spinnerImage.Parent = spinnerFrame
spinnerIcons[spinnerNum] = spinnerImage
spinnerNum = spinnerNum + 1
end
save = function()
saveDialogMessageBox.Visible = false
--Show the spinner dialog
spinnerDialog.Visible = true
local spin = true
--Make it spin
delay(0, function()
local spinPos = 0
while spin do
local pos = 0
while pos < 8 do
if pos == spinPos or pos == ((spinPos+1)%8) then
spinnerIcons[pos+1].Image = "http://morblox.us/asset/?id=45880668"
else
spinnerIcons[pos+1].Image = "http://morblox.us/asset/?id=45880710"
end
pos = pos + 1
end
spinPos = (spinPos + 1) % 8
wait(0.2)
end
end)
--Do the save while the spinner is going, function will wait
local result = game:SaveToRoblox()
if not result then
--Try once more
result = game:SaveToRoblox()
end
--Hide the spinner dialog
spinnerDialog.Visible = false
--And cause the delay thread to stop
spin = false
--Now process the result
if result then
--Success, close
game:FinishShutdown(false)
clearAndResetDialog()
else
--Failure, show the second dialog prompt
errorDialogMessageBox.Visible = true
end
end
saveLocal = function()
errorDialogMessageBox.Visible = false
game:FinishShutdown(true)
clearAndResetDialog()
end
dontSave = function()
saveDialogMessageBox.Visible = false
errorDialogMessageBox.Visible = false
game:FinishShutdown(false)
clearAndResetDialog()
end
cancel = function()
saveDialogMessageBox.Visible = false
errorDialogMessageBox.Visible = false
clearAndResetDialog()
end
clearAndResetDialog = function()
saveDialogMessageBox.Visible = true
errorDialogMessageBox.Visible = false
spinnerDialog.Visible = false
shield.Visible = false
pcall(function() game.GuiService:RemoveCenterDialog(shield) end)
end
robloxLock(shield)
shield.Visible = false
return shield
end
local createReportAbuseDialog = function()
--Only show things if we are a NetworkClient
waitForChild(game,"NetworkClient")
waitForChild(game,"Players")
waitForProperty(game.Players, "LocalPlayer")
local localPlayer = game.Players.LocalPlayer
local reportAbuseButton
if gui:FindFirstChild("BottomRightControl") and gui.BottomRightControl:FindFirstChild("ReportAbuse") then
reportAbuseButton = gui.BottomRightControl.ReportAbuse
if not useOldDialog then
waitForChild(gui,"UserSettingsShield")
waitForChild(gui.UserSettingsShield, "Settings")
waitForChild(gui.UserSettingsShield.Settings,"SettingsStyle")
waitForChild(gui.UserSettingsShield.Settings.SettingsStyle,"GameMainMenu")
waitForChild(gui.UserSettingsShield.Settings.SettingsStyle.GameMainMenu, "ReportAbuseButton")
gui.UserSettingsShield.Settings.SettingsStyle.GameMainMenu.ReportAbuseButton.Visible = false
end
else
waitForChild(gui,"UserSettingsShield")
waitForChild(gui.UserSettingsShield, "Settings")
waitForChild(gui.UserSettingsShield.Settings,"SettingsStyle")
waitForChild(gui.UserSettingsShield.Settings.SettingsStyle,"GameMainMenu")
waitForChild(gui.UserSettingsShield.Settings.SettingsStyle.GameMainMenu, "ReportAbuseButton")
reportAbuseButton = gui.UserSettingsShield.Settings.SettingsStyle.GameMainMenu.ReportAbuseButton
end
local shield = Instance.new("TextButton")
shield.Name = "ReportAbuseShield"
shield.Text = ""
shield.AutoButtonColor = false
shield.Active = true
shield.Visible = false
shield.Size = UDim2.new(1,0,1,0)
shield.BackgroundColor3 = Color3I(51,51,51)
shield.BorderColor3 = Color3I(27,42,53)
shield.BackgroundTransparency = 0.4
shield.ZIndex = baseZIndex + 1
local closeAndResetDialog
local messageBoxButtons = {}
messageBoxButtons[1] = {}
messageBoxButtons[1].Text = "Ok"
messageBoxButtons[1].Function = function() closeAndResetDialog() end
local calmingMessageBox = RbxGui.CreateMessageDialog("Thanks for your report!", "Our moderators will review the chat logs and determine what happened. The other user is probably just trying to make you mad.\n\nIf anyone used swear words, inappropriate language, or threatened you in real life, please report them for Bad Words or Threats", messageBoxButtons)
calmingMessageBox.Visible = false
calmingMessageBox.Parent = shield
local normalMessageBox = RbxGui.CreateMessageDialog("Thanks for your report!", "Our moderators will review the chat logs and determine what happened.", messageBoxButtons)
normalMessageBox.Visible = false
normalMessageBox.Parent = shield
local frame = Instance.new("Frame")
frame.Name = "Settings"
frame.Position = UDim2.new(0.5, -250, 0.5, -200)
frame.Size = UDim2.new(0.0, 500, 0.0, 400)
frame.BackgroundTransparency = 1
frame.Active = true
frame.Parent = shield
local settingsFrame = Instance.new("Frame")
settingsFrame.Name = "ReportAbuseStyle"
settingsFrame.Size = UDim2.new(1, 0, 1, 0)
settingsFrame.Style = Enum.FrameStyle.RobloxRound
settingsFrame.Active = true
settingsFrame.ZIndex = baseZIndex + 1
settingsFrame.Parent = frame
local title = Instance.new("TextLabel")
title.Name = "Title"
title.Text = "Report Abuse"
title.TextColor3 = Color3I(221,221,221)
title.Position = UDim2.new(0.5, 0, 0, 30)
title.Font = Enum.Font.ArialBold
title.FontSize = Enum.FontSize.Size36
title.ZIndex = baseZIndex + 2
title.Parent = settingsFrame
local description = Instance.new("TextLabel")
description.Name = "Description"
description.Text = "This will send a complete report to a moderator. The moderator will review the chat log and take appropriate action."
description.TextColor3 = Color3I(221,221,221)
description.Position = UDim2.new(0,20, 0, 55)
description.Size = UDim2.new(1, -40, 0, 40)
description.BackgroundTransparency = 1
description.Font = Enum.Font.Arial
description.FontSize = Enum.FontSize.Size18
description.TextWrap = true
description.ZIndex = baseZIndex + 2
description.TextXAlignment = Enum.TextXAlignment.Left
description.TextYAlignment = Enum.TextYAlignment.Top
description.Parent = settingsFrame
local playerLabel = Instance.new("TextLabel")
playerLabel.Name = "PlayerLabel"
playerLabel.Text = "Which player?"
playerLabel.BackgroundTransparency = 1
playerLabel.Font = Enum.Font.Arial
playerLabel.FontSize = Enum.FontSize.Size18
playerLabel.Position = UDim2.new(0.025,0,0,100)
playerLabel.Size = UDim2.new(0.4,0,0,36)
playerLabel.TextColor3 = Color3I(255,255,255)
playerLabel.TextXAlignment = Enum.TextXAlignment.Left
playerLabel.ZIndex = baseZIndex + 2
playerLabel.Parent = settingsFrame
local abusingPlayer = nil
local abuse = nil
local submitReportButton = nil
local updatePlayerSelection = nil
local createPlayersDropDown = function()
local players = game:GetService("Players")
local playerNames = {}
local nameToPlayer = {}
local children = players:GetChildren()
local pos = 1
if children then
for i, player in ipairs(children) do
if player:IsA("Player") and player ~= localPlayer then
playerNames[pos] = player.Name
nameToPlayer[player.Name] = player
pos = pos + 1
end
end
end
local playerDropDown = nil
playerDropDown, updatePlayerSelection = RbxGui.CreateDropDownMenu(playerNames,
function(playerName)
abusingPlayer = nameToPlayer[playerName]
if abuse and abusingPlayer then
submitReportButton.Active = true
end
end)
playerDropDown.Name = "PlayersComboBox"
playerDropDown.ZIndex = baseZIndex + 2
playerDropDown.Position = UDim2.new(.425, 0, 0, 102)
playerDropDown.Size = UDim2.new(.55,0,0,32)
return playerDropDown
end
local abuseLabel = Instance.new("TextLabel")
abuseLabel.Name = "AbuseLabel"
abuseLabel.Text = "What did they do?"
abuseLabel.Font = Enum.Font.Arial
abuseLabel.BackgroundTransparency = 1
abuseLabel.FontSize = Enum.FontSize.Size18
abuseLabel.Position = UDim2.new(0.025,0,0,140)
abuseLabel.Size = UDim2.new(0.4,0,0,36)
abuseLabel.TextColor3 = Color3I(255,255,255)
abuseLabel.TextXAlignment = Enum.TextXAlignment.Left
abuseLabel.ZIndex = baseZIndex + 2
abuseLabel.Parent = settingsFrame
local abuses = {"Bad Words or Threats","Bad Username","Talking about Dating","Account Trading or Sharing","Asking Personal Questions","Rude or Mean Behavior","False Reporting Me"}
local abuseDropDown, updateAbuseSelection = RbxGui.CreateDropDownMenu(abuses,
function(abuseText)
abuse = abuseText
if abuse and abusingPlayer then
submitReportButton.Active = true
end
end, true)
abuseDropDown.Name = "AbuseComboBox"
abuseDropDown.ZIndex = baseZIndex + 2
abuseDropDown.Position = UDim2.new(0.425, 0, 0, 142)
abuseDropDown.Size = UDim2.new(0.55,0,0,32)
abuseDropDown.Parent = settingsFrame
local shortDescriptionLabel = Instance.new("TextLabel")
shortDescriptionLabel.Name = "ShortDescriptionLabel"
shortDescriptionLabel.Text = "Short Description: (optional)"
shortDescriptionLabel.Font = Enum.Font.Arial
shortDescriptionLabel.FontSize = Enum.FontSize.Size18
shortDescriptionLabel.Position = UDim2.new(0.025,0,0,180)
shortDescriptionLabel.Size = UDim2.new(0.95,0,0,36)
shortDescriptionLabel.TextColor3 = Color3I(255,255,255)
shortDescriptionLabel.TextXAlignment = Enum.TextXAlignment.Left
shortDescriptionLabel.BackgroundTransparency = 1
shortDescriptionLabel.ZIndex = baseZIndex + 2
shortDescriptionLabel.Parent = settingsFrame
local shortDescriptionWrapper = Instance.new("Frame")
shortDescriptionWrapper.Name = "ShortDescriptionWrapper"
shortDescriptionWrapper.Position = UDim2.new(0.025,0,0,220)
shortDescriptionWrapper.Size = UDim2.new(0.95,0,1,-310)
shortDescriptionWrapper.BackgroundColor3 = Color3I(0,0,0)
shortDescriptionWrapper.BorderSizePixel = 0
shortDescriptionWrapper.ZIndex = baseZIndex + 2
shortDescriptionWrapper.Parent = settingsFrame
local shortDescriptionBox = Instance.new("TextBox")
shortDescriptionBox.Name = "TextBox"
shortDescriptionBox.Text = ""
shortDescriptionBox.Font = Enum.Font.Arial
shortDescriptionBox.FontSize = Enum.FontSize.Size18
shortDescriptionBox.Position = UDim2.new(0,3,0,3)
shortDescriptionBox.Size = UDim2.new(1,-6,1,-6)
shortDescriptionBox.TextColor3 = Color3I(255,255,255)
shortDescriptionBox.TextXAlignment = Enum.TextXAlignment.Left
shortDescriptionBox.TextYAlignment = Enum.TextYAlignment.Top
shortDescriptionBox.TextWrap = true
shortDescriptionBox.BackgroundColor3 = Color3I(0,0,0)
shortDescriptionBox.BorderSizePixel = 0
shortDescriptionBox.ZIndex = baseZIndex + 2
shortDescriptionBox.Parent = shortDescriptionWrapper
submitReportButton = Instance.new("TextButton")
submitReportButton.Name = "SubmitReportBtn"
submitReportButton.Active = false
submitReportButton.Font = Enum.Font.Arial
submitReportButton.FontSize = Enum.FontSize.Size18
submitReportButton.Position = UDim2.new(0.1, 0, 1, -80)
submitReportButton.Size = UDim2.new(0.35,0,0,50)
submitReportButton.AutoButtonColor = true
submitReportButton.Style = Enum.ButtonStyle.RobloxButtonDefault
submitReportButton.Text = "Submit Report"
submitReportButton.TextColor3 = Color3I(255,255,255)
submitReportButton.ZIndex = baseZIndex + 2
submitReportButton.Parent = settingsFrame
submitReportButton.MouseButton1Click:connect(function()
if submitReportButton.Active then
if abuse and abusingPlayer then
frame.Visible = false
game.Players:ReportAbuse(abusingPlayer, abuse, shortDescriptionBox.Text)
if abuse == "Rude or Mean Behavior" or abuse == "False Reporting Me" then
calmingMessageBox.Visible = true
else
normalMessageBox.Visible = true
end
else
closeAndResetDialog()
end
end
end)
local cancelButton = Instance.new("TextButton")
cancelButton.Name = "CancelBtn"
cancelButton.Font = Enum.Font.Arial
cancelButton.FontSize = Enum.FontSize.Size18
cancelButton.Position = UDim2.new(0.55, 0, 1, -80)
cancelButton.Size = UDim2.new(0.35,0,0,50)
cancelButton.AutoButtonColor = true
cancelButton.Style = Enum.ButtonStyle.RobloxButtonDefault
cancelButton.Text = "Cancel"
cancelButton.TextColor3 = Color3I(255,255,255)
cancelButton.ZIndex = baseZIndex + 2
cancelButton.Parent = settingsFrame
closeAndResetDialog = function()
--Delete old player combo box
local oldComboBox = settingsFrame:FindFirstChild("PlayersComboBox")
if oldComboBox then
oldComboBox.Parent = nil
end
abusingPlayer = nil updatePlayerSelection(nil)
abuse = nil updateAbuseSelection(nil)
submitReportButton.Active = false
shortDescriptionBox.Text = ""
frame.Visible = true
calmingMessageBox.Visible = false
normalMessageBox.Visible = false
shield.Visible = false
reportAbuseButton.Active = true
pcall(function() game.GuiService:RemoveCenterDialog(shield) end)
end
cancelButton.MouseButton1Click:connect(closeAndResetDialog)
reportAbuseButton.MouseButton1Click:connect(
function()
createPlayersDropDown().Parent = settingsFrame
local centerDialogSuccess = pcall(function() game.GuiService:AddCenterDialog(shield, Enum.CenterDialogType.ModalDialog,
--ShowFunction
function()
reportAbuseButton.Active = false
shield.Visible = true
end,
--HideFunction
function()
reportAbuseButton.Active = true
shield.Visible = false
end)
end)
if centerDialogSuccess == false then
reportAbuseButton.Active = false
shield.Visible = true
end
end
)
robloxLock(shield)
return shield
end
local createChatBar = function()
--Only show a chat bar if we are a NetworkClient
waitForChild(game, "NetworkClient")
waitForChild(game, "Players")
waitForProperty(game.Players, "LocalPlayer")
local chatBar = Instance.new("Frame")
chatBar.Name = "ChatBar"
chatBar.Size = UDim2.new(1, 0, 0, 22)
chatBar.Position = UDim2.new(0, 0, 1, 0)
chatBar.BackgroundColor3 = Color3.new(0,0,0)
chatBar.BorderSizePixel = 0
local chatBox = Instance.new("TextBox")
chatBox.Text = ""
chatBox.Visible = false
chatBox.Size = UDim2.new(1,-4,1,0)
chatBox.Position = UDim2.new(0,2,0,0)
chatBox.TextXAlignment = Enum.TextXAlignment.Left
chatBox.Font = Enum.Font.Arial
chatBox.ClearTextOnFocus = false
chatBox.FontSize = Enum.FontSize.Size14
chatBox.TextColor3 = Color3.new(1,1,1)
chatBox.BackgroundTransparency = 1
chatBox.Parent = chatBar
local chatButton = Instance.new("TextButton")
chatButton.Size = UDim2.new(1,-4,1,0)
chatButton.Position = UDim2.new(0,2,0,0)
chatButton.AutoButtonColor = false
chatButton.Text = "To chat click here or press \"/\" key"
chatButton.TextXAlignment = Enum.TextXAlignment.Left
chatButton.Font = Enum.Font.Arial
chatButton.FontSize = Enum.FontSize.Size14
chatButton.TextColor3 = Color3.new(1,1,1)
chatButton.BackgroundTransparency = 1
chatButton.Parent = chatBar
local activateChat = function()
if chatBox.Visible then
return
end
chatButton.Visible = false
chatBox.Text = ""
chatBox.Visible = true
chatBox:CaptureFocus()
end
chatButton.MouseButton1Click:connect(activateChat)
local hotKeyEnabled = true
local toggleHotKey = function(value)
hotKeyEnabled = value
end
local guiService = game:GetService("GuiService")
local newChatMode = pcall(function()
guiService:AddSpecialKey(Enum.SpecialKey.ChatHotkey)
guiService.SpecialKeyPressed:connect(function(key) if key == Enum.SpecialKey.ChatHotkey and hotKeyEnabled then activateChat() end end)
end)
if not newChatMode then
guiService:AddKey("/")
guiService.KeyPressed:connect(function(key) if key == "/" and hotKeyEnabled then activateChat() end end)
end
chatBox.FocusLost:connect(
function(enterPressed)
if enterPressed then
if chatBox.Text ~= "" then
local str = chatBox.Text
if string.sub(str, 1, 1) == '%' then
game.Players:TeamChat(string.sub(str, 2))
else
game.Players:Chat(str)
end
end
end
chatBox.Text = ""
chatBox.Visible = false
chatButton.Visible = true
end)
robloxLock(chatBar)
return chatBar, toggleHotKey
end
--Spawn a thread for the help dialog
delay(0,
function()
local helpDialog = createHelpDialog(0)
helpDialog.Parent = gui
helpButton.MouseButton1Click:connect(
function()
local centerDialogSuccess = pcall(function() game.GuiService:AddCenterDialog(helpDialog, Enum.CenterDialogType.ModalDialog,
--ShowFunction
function()
helpDialog.Visible = true
end,
--HideFunction
function()
helpDialog.Visible = false
end)
end)
if centerDialogSuccess == false then
helpDialog.Visible = true
end
end)
helpButton.Active = true
end)
--Spawn a thread for the Save dialogs
local isSaveDialogSupported = pcall(function() local var = game.LocalSaveEnabled end)
if isSaveDialogSupported then
delay(0,
function()
local saveDialogs = createSaveDialogs()
saveDialogs.Parent = gui
game.RequestShutdown = function()
local centerDialogSuccess = pcall(function() game.GuiService:AddCenterDialog(saveDialogs, Enum.CenterDialogType.QuitDialog,
--ShowFunction
function()
saveDialogs.Visible = true
end,
--HideFunction
function()
saveDialogs.Visible = false
end)
end)
if centerDialogSuccess == false then
saveDialogs.Visible = true
end
return true
end
end)
end
--Spawn a thread for the Report Abuse dialogs
print("about to create")
delay(0,
function()
createReportAbuseDialog().Parent = gui
print("parenting report abuse")
if gui:FindFirstChild("BottomRightControl") and gui.BottomRightControl:FindFirstChild("ReportAbuse") then
gui.BottomRightControl.ReportAbuse.Active = true
elseif useOldDialog then
gui.BottomRightControl.ReportAbuse.Active = true
print("old stuff")
else
waitForChild(gui,"UserSettingsShield")
waitForChild(gui.UserSettingsShield, "Settings")
waitForChild(gui.UserSettingsShield.Settings,"SettingsStyle")
waitForChild(gui.UserSettingsShield.Settings.SettingsStyle,"GameMainMenu")
waitForChild(gui.UserSettingsShield.Settings.SettingsStyle.GameMainMenu, "ReportAbuseButton")
gui.UserSettingsShield.Settings.SettingsStyle.GameMainMenu.ReportAbuseButton.Active = true
end
end)
--Spawn a thread for Chat Bar
local isChatBarSupported, coreGuiVersion = pcall(function() return game.CoreGui.Version end) -- isChatBarSupported is for PC Lua chat, coreGuiVersion should be >=2 as well
local isMacChat, version = pcall(function() return game.GuiService.Version end)
if isMacChat and version >= 2 then
delay(0,
function()
waitForChild(game, "Players")
waitForProperty(game.Players, "LocalPlayer")
local advancedChatBarSupported = pcall(function() return game.Players.LocalPlayer.ChatMode end)
local chatBar, toggleHotKey = createChatBar()
if advancedChatBarSupported then
local function toggleChatBar(chatMode)
if chatMode == Enum.ChatMode.Menu then
chatBar.Parent = nil
game.GuiService:SetGlobalSizeOffsetPixel(0,0)
toggleHotKey(false)
elseif chatMode == Enum.ChatMode.TextAndMenu then
chatBar.Parent = gui
game.GuiService:SetGlobalSizeOffsetPixel(0,-22)
toggleHotKey(true)
end
end
game.Players.LocalPlayer.Changed:connect(
function(prop)
if prop == "ChatMode" then
toggleChatBar(game.Players.LocalPlayer.ChatMode)
end
end)
toggleChatBar(game.Players.LocalPlayer.ChatMode)
else
chatBar.Parent = gui
game.GuiService:SetGlobalSizeOffsetPixel(0,-22)
end
end)
end
local BurningManPlaceID = 41324860
-- TODO: remove click to walk completely if testing shows we don't need it
-- Removes click to walk option from Burning Man
delay(0,
function()
waitForChild(game,"NetworkClient")
waitForChild(game,"Players")
waitForProperty(game.Players, "LocalPlayer")
waitForProperty(game.Players.LocalPlayer, "Character")
waitForChild(game.Players.LocalPlayer.Character, "Humanoid")
waitForProperty(game, "PlaceId")
pcall(function()
if game.PlaceId == BurningManPlaceID then
game.Players.LocalPlayer.Character.Humanoid:SetClickToWalkEnabled(false)
game.Players.LocalPlayer.CharacterAdded:connect(function(character)
waitForChild(character, "Humanoid")
character.Humanoid:SetClickToWalkEnabled(false)
end)
end
end)
end)
end --LoadLibrary if