The text below is selected, press Ctrl+C to copy to your clipboard. (⌘+C on Mac) No line numbers will be copied.
Guest
Emptyness GUI script pastebin roblox
By Emptyness GUI on 2024-09-22 08:00 am | Syntax: LUA | Views: 9



New Script | Raw | Show/Hide line no. | Copy text to clipboard
  1. local ImpostorGui = Instance.new("ScreenGui")
  2. local Background = Instance.new("Frame")
  3. local DeleteGui = Instance.new("TextButton")
  4. local DeleteGuiCorners = Instance.new("UICorner")
  5. local HideGui = Instance.new("TextButton")
  6. local HideGuiCorners = Instance.new("UICorner")
  7. local Title = Instance.new("Frame")
  8. local EmptynessGui = Instance.new("TextLabel")
  9. local Line = Instance.new("Frame")
  10. local NextPage = Instance.new("TextButton")
  11. local PrevPage = Instance.new("TextButton")
  12. local Pages = Instance.new("Frame")
  13. local Page1 = Instance.new("Frame")
  14. local ClickTPCTRL = Instance.new("TextButton")
  15. local ClickTPINV = Instance.new("TextButton")
  16. local CustomConsole = Instance.new("TextButton")
  17. local Fly = Instance.new("TextButton")
  18. local GodMode = Instance.new("TextButton")
  19. local NoClip = Instance.new("TextButton")
  20. local RemoveArms = Instance.new("TextButton")
  21. local RemoveLegs = Instance.new("TextButton")
  22. local TargetTP = Instance.new("TextButton")
  23. local UnlockBuilds = Instance.new("TextButton")
  24. local targetNameInput = Instance.new("TextBox")
  25. local Page1Text = Instance.new("TextLabel")
  26. local BTools = Instance.new("TextButton")
  27. local Page2 = Instance.new("Frame")
  28. local InfJump = Instance.new("TextButton")
  29. local FPSBoost = Instance.new("TextButton")
  30. local SetJumpPower = Instance.new("TextButton")
  31. local RemoteSpy = Instance.new("TextButton")
  32. local ShiftSprint = Instance.new("TextButton")
  33. local Explorer = Instance.new("TextButton")
  34. local HitboxExpander = Instance.new("TextButton")
  35. local AutoClick = Instance.new("TextButton")
  36. local SetWalkSpeed = Instance.new("TextButton")
  37. local AntiAFK = Instance.new("TextButton")
  38. local NumberInput = Instance.new("TextBox")
  39. local Page2Text = Instance.new("TextLabel")
  40. local GodMode2 = Instance.new("TextButton")
  41. local UIPageLayout = Instance.new("UIPageLayout")
  42. local CustomConsoleBG = Instance.new("Frame")
  43. local LogsText = Instance.new("TextBox")
  44. local ClearLogs = Instance.new("TextButton")
  45. local CopyLogs = Instance.new("TextButton")
  46.  
  47. local Page3 = Instance.new("Frame")
  48. local uno = Instance.new("TextButton")
  49. local dos = Instance.new("TextButton")
  50. local tres = Instance.new("TextButton")
  51. local cuatro = Instance.new("TextButton")
  52. local cinco = Instance.new("TextButton")
  53. local seis = Instance.new("TextButton")
  54. local siete = Instance.new("TextButton")
  55. local ocho = Instance.new("TextButton")
  56. local nueve = Instance.new("TextButton")
  57. local diez = Instance.new("TextButton")
  58. local onceInput = Instance.new("TextBox")
  59. local Page3Text = Instance.new("TextLabel")
  60. local doce = Instance.new("TextButton")
  61.  
  62. local top = 130
  63. local timer = 0.05
  64.  
  65. function randomString(leng, seed)
  66.  
  67.         local array = {}
  68.  
  69.         for i = 0, leng do
  70.                 local leNumberPlus = (math.floor((i*6)*(256^2)))
  71.                 math.randomseed(seed+leNumberPlus)
  72.                 array[i] = string.char(math.random(33, 126))
  73.  
  74.         end
  75.  
  76.         return table.concat(array)
  77.  
  78. end
  79.  
  80. ImpostorGui.Name = randomString(12, 0)
  81. ImpostorGui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui")
  82.  
  83. Background.Name = randomString(12, 1)
  84. Background.Parent = ImpostorGui
  85. Background.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
  86. Background.BorderSizePixel = 2
  87. Background.Position = UDim2.new(0.0606601238, 0, 0.0904204398, 0)
  88. Background.Size = UDim2.new(0, 520, 0, 350)
  89. Background.ZIndex = -1
  90.  
  91. DeleteGui.Name = randomString(12, 2)
  92. DeleteGui.Parent = Background
  93. DeleteGui.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  94. DeleteGui.BackgroundTransparency = 0.850
  95. DeleteGui.BorderColor3 = Color3.fromRGB(0, 0, 0)
  96. DeleteGui.BorderSizePixel = 0
  97. DeleteGui.Position = UDim2.new(0.917784631, 0, 0.0457142852, 0)
  98. DeleteGui.Selectable = false
  99. DeleteGui.Size = UDim2.new(0, 22, 0, 22)
  100. DeleteGui.Font = Enum.Font.Ubuntu
  101. DeleteGui.Text = ""
  102. DeleteGui.TextColor3 = Color3.fromRGB(255, 255, 255)
  103. DeleteGui.TextSize = 50.000
  104. DeleteGui.TextWrapped = true
  105.  
  106. DeleteGuiCorners.CornerRadius = UDim.new(2, 8)
  107. DeleteGuiCorners.Name = randomString(12, 3)
  108. DeleteGuiCorners.Parent = DeleteGui
  109.  
  110. HideGui.Name = randomString(12, 4)
  111. HideGui.Parent = Background
  112. HideGui.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  113. HideGui.BackgroundTransparency = 0.850
  114. HideGui.BorderColor3 = Color3.fromRGB(0, 0, 0)
  115. HideGui.BorderSizePixel = 0
  116. HideGui.Position = UDim2.new(0.859846115, 0, 0.0454285741, 0)
  117. HideGui.Size = UDim2.new(0, 22, 0, 22)
  118. HideGui.Font = Enum.Font.Ubuntu
  119. HideGui.Text = ""
  120. HideGui.TextColor3 = Color3.fromRGB(255, 255, 255)
  121. HideGui.TextSize = 35.000
  122. HideGui.TextWrapped = true
  123.  
  124. HideGuiCorners.CornerRadius = UDim.new(2, 8)
  125. HideGuiCorners.Name = randomString(12, 5)
  126. HideGuiCorners.Parent = HideGui
  127.  
  128. Title.Name = randomString(12, 6)
  129. Title.Parent = Background
  130. Title.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  131. Title.BackgroundTransparency = 0.850
  132. Title.BorderColor3 = Color3.fromRGB(255, 0, 0)
  133. Title.BorderSizePixel = 0
  134. Title.Size = UDim2.new(0, 520, 0, 55)
  135.  
  136. EmptynessGui.Name = randomString(12, 7)
  137. EmptynessGui.Parent = Title
  138. EmptynessGui.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  139. EmptynessGui.BackgroundTransparency = 1.000
  140. EmptynessGui.BorderColor3 = Color3.fromRGB(0, 0, 0)
  141. EmptynessGui.BorderSizePixel = 0
  142. EmptynessGui.Size = UDim2.new(0, 419, 0, 55)
  143. EmptynessGui.Font = Enum.Font.Ubuntu
  144. EmptynessGui.Text = "Emptyness Gui"
  145. EmptynessGui.TextSize = 40.000
  146. EmptynessGui.TextWrapped = true
  147.  
  148. Line.Name = randomString(12, 8)
  149. Line.Parent = Title
  150. Line.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
  151. Line.BorderSizePixel = 2
  152. Line.Position = UDim2.new(0, 0, -0.00285705575, 0)
  153. Line.Size = UDim2.new(0, 520, 0, 55)
  154. Line.ZIndex = 0
  155.  
  156. NextPage.Name = randomString(12, 9)
  157. NextPage.Parent = Background
  158. NextPage.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  159. NextPage.BackgroundTransparency = 0.850
  160. NextPage.BorderColor3 = Color3.fromRGB(255, 255, 255)
  161. NextPage.Position = UDim2.new(0.655846179, 0, 0.885285676, 0)
  162. NextPage.Selectable = false
  163. NextPage.Size = UDim2.new(0, 22, 0, 22)
  164. NextPage.Font = Enum.Font.Ubuntu
  165. NextPage.Text = ">"
  166. NextPage.TextColor3 = Color3.fromRGB(255, 255, 0)
  167. NextPage.TextSize = 16.000
  168. NextPage.TextWrapped = true
  169.  
  170. PrevPage.Name = randomString(12, 10)
  171. PrevPage.Parent = Background
  172. PrevPage.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
  173. PrevPage.BackgroundTransparency = 0.850
  174. PrevPage.BorderColor3 = Color3.fromRGB(255, 255, 255)
  175. PrevPage.Position = UDim2.new(0.301076919, 0, 0.885285676, 0)
  176. PrevPage.Selectable = false
  177. PrevPage.Size = UDim2.new(0, 22, 0, 22)
  178. PrevPage.Font = Enum.Font.Ubuntu
  179. PrevPage.Text = "= 0 and less than the size of the layout, acts like JumpTo. If it's out of bounds and circular is set, it will animate the full distance between the in-bounds index of CurrentPage and the new index.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PageEnter","Summary":"Fires when a page comes into view, and is going to be rendered.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PageLeave","Summary":"Fires when a page leaves view, and will not be rendered.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Stopped","Summary":"Fires when an animation to CurrentPage is completed without being cancelled, and the view stops scrolling.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UITableLayout","Summary":"Provides a layout of rows and columns that are sized based on the cells in them.","ExplorerOrder":3,"ExplorerImageIndex":26,"Browsable":true,"PreferredParent":"","Members":[{"Name":"Padding","Summary":"The amount of padding to insert in between the cells of the table.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FillEmptySpaceRows","Summary":"Whether the table should expand to fill the available space of its container, row-wise.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FillEmptySpaceColumns","Summary":"Whether the table should expand to fill the available space of its container, column-wise.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MajorAxis","Summary":"Whether the direct siblings are considered the rows or the columns. The children of the direct siblings are the columns or rows, respectively.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UISizeConstraint","Summary":"Ensures a GuiObject does not become smaller or larger than the min and max size. If an element with a constraint is under the control of a layout, the constraint takes precedence in determining the element�s size, but not position. You can use a Constraint by parenting it to the element you wish to constrain.","ExplorerOrder":3,"ExplorerImageIndex":26,"Browsable":true,"PreferredParent":"","Members":[{"Name":"MinSize","Summary":"The smallest size the GuiObject is allowed to be.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MaxSize","Summary":"The biggest size the GuiObject is allowed to be.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UITextSizeConstraint","Summary":"Ensures a GuiObject with text does not allow the font size to become larger or smaller than min and max text sizes. If an element with a constraint is under the control of a layout, the constraint takes precedence in determining the element�s size, but not position. You can use a Constraint by parenting it to the element you wish to constrain.","ExplorerOrder":3,"ExplorerImageIndex":26,"Browsable":true,"PreferredParent":"","Members":[{"Name":"MinTextSize","Summary":"The smallest size the font is allowed to be.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MaxTextSize","Summary":"The biggest size the font is allowed to be.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UIAspectRatioConstraint","Summary":"Ensures a GuiObject will always have a particular aspect ratio. If an element with a constraint is under the control of a layout, the constraint takes precedence in determining the element�s size, but not position. You can use a Constraint by parenting it to the element you wish to constrain.","ExplorerOrder":3,"ExplorerImageIndex":26,"Browsable":true,"PreferredParent":"","Members":[{"Name":"AspectRatio","Summary":"The aspect ratio to maintain. This is the width/height. Only positive numbers allowed.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"AspectType","Summary":"Describes how the aspect ratio will determine its size. Options are FitWithinMaxSize, ScaleWithParentSize. FitWithinMaxSize will make the element the maximum size it can be within the current possible AbsoluteSize of the element while maintaining the AspectRatio. ScaleWithParentSize will make the element the closest to the parent element�s maximum size while maintaining aspect ratio.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DominantAxis","Summary":"Describes which axis to use when determining the new size of the element, while keeping respect to the aspect ratio.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UIScale","Summary":"Uniformly scales a GUI object and all its children.","ExplorerOrder":3,"ExplorerImageIndex":26,"Browsable":true,"PreferredParent":"","Members":[{"Name":"Scale","Summary":"The scale factor to apply.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UIPadding","Summary":"","ExplorerOrder":3,"ExplorerImageIndex":26,"Browsable":true,"PreferredParent":"","Members":[{"Name":"PaddingLeft","Summary":"The padding to apply on the left side relative to the parent's normal size.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PaddingRight","Summary":"The padding to apply on the right side relative to the parent's normal size.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PaddingTop","Summary":"The padding to apply on the top side relative to the parent's normal size.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PaddingBottom","Summary":"The padding to apply on the bottom side relative to the parent's normal size.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TweenBase","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[{"Name":"PlaybackState","Summary":"The current state of how the tween is animating. Possible values are Begin, Playing, Paused, Completed and Cancelled. This property is modified by using functions such as Tween:Play(), Tween:Pause(), and Tween:Cancel(). Read-only.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Play","Summary":"Starts or resumes (if Tween.PlaybackState is Paused) the tween animation. If current PlaybackState is Cancelled, this property will reset the tween to the beginning properties and play the animations from the beginning.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Pause","Summary":"Temporarily stops the tween animation. Animation can be resumed by calling Play().","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Cancel","Summary":"Stops the tween animation. Animation can be restarted by calling Play(). Animation will start from the beginning values.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Completed","Summary":"Fires when the tween either reaches PlaybackState Completed or Cancelled. PlaybackState of one of these types is passed as the first arg to the function listening to this event.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Tween","Summary":"An object linked to an instance that animates properties on the instance over a specified period of time. Useful for easily moving UI objects around, rotating objects, etc. without having to write a lot of code. To create a new tween, please use TweenService:Create.","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[{"Name":"Instance","Summary":"The object this tween is operating on. Read-only.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TweenInfo","Summary":"Specifies how the tween animates. Read-only.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TweenService","Summary":"Service responsible for creating tweens on instances.","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"StarterGui","Summary":"","ExplorerOrder":3,"ExplorerImageIndex":46,"Browsable":true,"PreferredParent":"","Members":[{"Name":"SetCoreGuiEnabled","Summary":"Will stop/begin certain core gui elements being rendered. See CoreGuiType for core guis that can be modified.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetCoreGuiEnabled","Summary":"Returns a boolean describing whether a CoreGuiType is currently being rendered.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GuiService","Summary":"The GuiService is a special service, which currently allows developers to control what GuiObject is currently being selected by the Gamepad Gui navigator, and allows clients to check if Roblox's main menu is currently open. This service has a lot of hidden members, which are mainly used internally by Roblox's CoreScripts.","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[{"Name":"GetGuiInset","Summary":"Returns a Tuple containing two Vector2 values representing the offset of user GUIs in pixels from the top right corner of the screen and the bottom right corner of the screen respectively.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ContextActionService","Summary":"A service used to bind input to various lua functions.","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[{"Name":"BindAction","Summary":"Binds 'functionToBind' to fire when any 'inputTypes' happen. InputTypes can be variable in number and type. Types can be Enum.KeyCode, single character strings corresponding to keys, or Enum.UserInputType. 'actionName' is a key used by many other ContextActionService functions to query state. 'createTouchButton' if true will create a button on screen on touch devices.  This button will fire 'functionToBind' with three arguments: first argument is the actionName, second argument is the UserInputState of the input, and the third is the InputObject that fired this function. If 'functionToBind' yields or returns nil or Enum.ContextActionResult.Sink, the input will be sunk. If it returns Enum.ContextActionResult.Pass, the next bound action in the stack will be invoked.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SetTitle","Summary":"If 'actionName' key contains a bound action, then 'title' is set as the title of the touch button. Does nothing if a touch button was not created. No guarantees are made whether title will be set when button is manipulated.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SetDescription","Summary":"If 'actionName' key contains a bound action, then 'description' is set as the description of the bound action. This description will appear for users in a listing of current actions availables.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SetImage","Summary":"If 'actionName' key contains a bound action, then 'image' is set as the image of the touch button. Does nothing if a touch button was not created. No guarantees are made whether image will be set when button is manipulated.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SetPosition","Summary":"If 'actionName' key contains a bound action, then 'position' is set as the position of the touch button. Does nothing if a touch button was not created. No guarantees are made whether position will be set when button is manipulated.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UnbindAction","Summary":"If 'actionName' key contains a bound action, removes function from being called by all input that it was bound by (if function was also bound by a different action name as well, those bound input are still active). Will also remove any touch button created (if button was manipulated manually there is no guarantee it will be cleaned up).","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UnbindAllActions","Summary":"Removes all functions bound. No actionNames will remain. All touch buttons will be removed. If button was manipulated manually there is no guarantee it will be cleaned up.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetBoundActionInfo","Summary":"Returns a table with info regarding the function bound with 'actionName'. Table has the keys 'title' (current title that was set with SetTitle) 'image' (image set with SetImage) 'description' (description set with SetDescription) 'inputTypes' (tuple containing all input bound for this 'actionName') 'createTouchButton' (whether or not we created a touch button for this 'actionName').","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetAllBoundActionInfo","Summary":"Returns a table with all bound action info. Each entry is a key with 'actionName' and value being the same table you would get from ContextActionService:GetBoundActionInfo('actionName').","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetButton","Summary":"If 'actionName' key contains a bound action, then this will return the touch button (if was created). Returns nil if a touch button was not created. No guarantees are made whether button will be retrievable when button is manipulated.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PointsService","Summary":"A service used to query and award points for Roblox users using the universal point system.","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[{"Name":"PointsAwarded","Summary":"Fired when points are successfully awarded 'userId'. Also returns the updated balance of points for usedId in universe via 'userBalanceInUniverse', total points via 'userTotalBalance', and the amount points that were awarded via 'pointsAwarded'. This event fires on the server and also all clients in the game that awarded the points.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"AwardPoints","Summary":"Will attempt to award the 'amount' points to 'userId', returns 'userId' awarded to, the number of points awarded, the new point total the user has in the game, and the total number of points the user now has. Will also fire PointsService.PointsAwarded. Works with server scripts ONLY.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetPointBalance","Summary":"Returns the overall balance of points that player with userId has (the sum of all points across all games). Works with server scripts ONLY.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetGamePointBalance","Summary":"Returns the balance of points that player with userId has in the current game (all placeID points combined within the game). Works with server scripts ONLY.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetAwardablePoints","Summary":"Returns the number of points the current universe can award to players. Works with server scripts ONLY.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Chat","Summary":"","ExplorerOrder":51,"ExplorerImageIndex":33,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ChatService","Summary":"","ExplorerOrder":51,"ExplorerImageIndex":33,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"LocalizationService","Summary":"","ExplorerOrder":-1,"ExplorerImageIndex":92,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MarketplaceService","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":46,"Browsable":true,"PreferredParent":"","Members":[{"Name":"PromptPurchase","Summary":"Will prompt 'player' to purchase the item associated with 'assetId'.  'equipIfPurchased' is an optional argument that will give the item to the player immediately if they buy it (only applies to gear).  'currencyType' is also optional and will attempt to prompt the user with a specified currency if the product can be purchased with this currency, otherwise we use the default currency of the product.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetProductInfo","Summary":"Takes one argument \"assetId\" which should be a number of an asset on www.roblox.com.  Returns a table containing the product information (if this process fails, returns an empty table).","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PlayerOwnsAsset","Summary":"Checks to see if 'Player' owns the product associated with 'assetId'. Returns true if the player owns it, false otherwise. This call will produce a warning if called on a guest player.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ProcessReceipt","Summary":"Callback that is executed for pending Developer Product receipts.\n            \n            If this function does not return Enum.ProductPurchaseDecision.PurchaseGranted, then you will not be granted the money for the purchase!\n            \n            The callback will be invoked with a table, containing the following informational fields:\n            PlayerId - the id of the player making the purchase.\n            PlaceIdWherePurchased - the specific place where the purchase was made.\n            PurchaseId - a unique identifier for the purchase, should be used to prevent granting an item multiple times for one purchase.\n            ProductId - the id of the purchased product.\n            CurrencyType - the type of currency used (Tix, Robux).\n            CurrencySpent - the amount of currency spent on the product for this purchase.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PromptPurchaseFinished","Summary":"Fired when a 'player' dismisses a purchase dialog for 'assetId'.  If the player purchased the item 'isPurchased' will be true, otherwise it will be false. This call will produce a warning if called on a guest player.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UserInputService","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[{"Name":"TouchEnabled","Summary":"Returns true if the local device accepts touch input, false otherwise.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"KeyboardEnabled","Summary":"Returns true if the local device accepts keyboard input, false otherwise.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MouseEnabled","Summary":"Returns true if the local device accepts mouse input, false otherwise.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"AccelerometerEnabled","Summary":"Returns true if the local device has an accelerometer, false otherwise.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GyroscopeEnabled","Summary":"Returns true if the local device has an gyroscope, false otherwise.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchTap","Summary":"Fired when a user taps their finger on a TouchEnabled device. 'touchPositions' is a Lua array of Vector2, each indicating the position of all the fingers involved in the tap gesture. This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchPinch","Summary":"Fired when a user pinches their fingers on a TouchEnabled device. 'touchPositions' is a Lua array of Vector2, each indicating the position of all the fingers involved in the pinch gesture. 'scale' is a float that indicates the difference from the beginning of the pinch gesture. 'velocity' is a float indicating how quickly the pinch gesture is happening. 'state' indicates the Enum.UserInputState of the gesture.  This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchSwipe","Summary":"Fired when a user swipes their fingers on a TouchEnabled device. 'swipeDirection' is an Enum.SwipeDirection, indicating the direction the user swiped. 'numberOfTouches' is an int that indicates how many touches were involved with the gesture.  This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchLongPress","Summary":"Fired when a user holds at least one finger for a short amount of time on the same screen position on a TouchEnabled device. 'touchPositions' is a Lua array of Vector2, each indicating the position of all the fingers involved in the gesture. 'state' indicates the Enum.UserInputState of the gesture.  This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchRotate","Summary":"Fired when a user rotates two fingers on a TouchEnabled device. 'touchPositions' is a Lua array of Vector2, each indicating the position of all the fingers involved in the gesture. 'rotation' is a float indicating how much the rotation has gone from the start of the gesture. 'velocity' is a float that indicates how quickly the gesture is being performed. 'state' indicates the Enum.UserInputState of the gesture.  This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchPan","Summary":"Fired when a user drags at least one finger on a TouchEnabled device. 'touchPositions' is a Lua array of Vector2, each indicating the position of all the fingers involved in the gesture. 'totalTranslation' is a Vector2, indicating how far the pan gesture has gone from its starting point. 'velocity' is a Vector2 that indicates how quickly the gesture is being performed in each dimension. 'state' indicates the Enum.UserInputState of the gesture.  This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchStarted","Summary":"Fired when a user places their finger on a TouchEnabled device. 'touch' is an InputObject, which contains useful data for querying user input.  This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchMoved","Summary":"Fired when a user moves their finger on a TouchEnabled device. 'touch' is an InputObject, which contains useful data for querying user input.  This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchEnded","Summary":"Fired when a user moves their finger on a TouchEnabled device. 'touch' is an InputObject, which contains useful data for querying user input.  This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"InputBegan","Summary":"Fired when a user begins interacting via a Human-Computer Interface device (Mouse button down, touch begin, keyboard button down, etc.). 'inputObject' is an InputObject, which contains useful data for querying user input.  This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"InputChanged","Summary":"Fired when a user changes interacting via a Human-Computer Interface device (Mouse move, touch move, mouse wheel, etc.). 'inputObject' is an InputObject, which contains useful data for querying user input.  This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"InputEnded","Summary":"Fired when a user stops interacting via a Human-Computer Interface device (Mouse button up, touch end, keyboard button up, etc.). 'inputObject' is an InputObject, which contains useful data for querying user input.  This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TextBoxFocused","Summary":"Fired when a user clicks/taps on a textbox to begin text entry. Argument is the textbox that was put in focus. This also fires if a textbox forces focus on the user. This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TextBoxFocusReleased","Summary":"Fired when a user stops text entry into a textbox (usually by pressing return or clicking/tapping somewhere else on the screen). Argument is the textbox that was taken out of focus. This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DeviceAccelerationChanged","Summary":"Fired when a user moves a device that has an accelerometer. This is fired with an InputObject, which has type Enum.InputType.Accelerometer, and position that shows the g force in each local device axis. This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DeviceGravityChanged","Summary":"Fired when the force of gravity changes on a device that has an accelerometer. This is fired with an InputObject, which has type Enum.InputType.Accelerometer, and position that shows the g force in each local device axis. This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DeviceRotationChanged","Summary":"Fired when a user rotates a device that has an gyroscope. This is fired with an InputObject, which has type Enum.InputType.Gyroscope, and position that shows total rotation in each local device axis.  The delta property describes the amount of rotation that last happened. A second argument of Vector4 is the device's current quaternion rotation in reference to it's default reference frame. This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetDeviceAcceleration","Summary":"Returns an InputObject that describes the device's current acceleration. This is fired with an InputObject, which has type Enum.InputType.Accelerometer, and position that shows the g force in each local device axis.  The delta property describes the amount of rotation that last happened. This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetDeviceGravity","Summary":"Returns an InputObject that describes the device's current gravity vector. This is fired with an InputObject, which has type Enum.InputType.Accelerometer, and position that shows the g force in each local device axis. The delta property describes the amount of rotation that last happened. This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetDeviceRotation","Summary":"Returns an InputObject and a Vector4 that describes the device's current rotation vector. This is fired with an InputObject, which has type Enum.InputType.Gyroscope, and position that shows total rotation in each local device axis. The delta property describes the amount of rotation that last happened. The Vector4 is the device's current quaternion rotation in reference to it's default reference frame. This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Sky","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":28,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ColorCorrectionEffect","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":83,"Browsable":true,"PreferredParent":"","Members":[{"Name":"Brightness","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Contrast","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Saturation","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BloomEffect","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":83,"Browsable":true,"PreferredParent":"","Members":[{"Name":"Intensity","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Threshold","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Size","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BlurEffect","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":83,"Browsable":true,"PreferredParent":"","Members":[{"Name":"Size","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SunRaysEffect","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":83,"Browsable":true,"PreferredParent":"","Members":[{"Name":"Intensity","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Spread","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Motor","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Humanoid","Summary":"","ExplorerOrder":3,"ExplorerImageIndex":9,"Browsable":true,"PreferredParent":"","Members":[{"Name":"MoveTo","Summary":"Attempts to move the Humanoid and it's associated character to 'part'. 'location' is used as an offset from part's origin.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Jump","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Sit","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TakeDamage","Summary":"Decreases health by the amount.  Use this instead of changing health directly to make sure weapons are filtered for things such as ForceField(s).","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UnequipTools","Summary":"Takes any active gear/tools that the Humanoid is using and puts them into the backpack.  This function only works on Humanoids with a corresponding Player.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"EquipTool","Summary":"Takes a specified tool and equips it to the Humanoid's Character.  Tool argument should be of type 'Tool'.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"NameOcclusion","Summary":"Sets how to display other humanoid names to this humanoid's player. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BodyColors","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Shirt","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":43,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Pants","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":44,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ShirtGraphic","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":40,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Skin","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":0,"Browsable":true,"Deprecated":"true","PreferredParent":"","Members":[],"Preliminary":false,"IsBackend":false},{"Name":"DebugSettings","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FaceInstance","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GameSettings","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GlobalSettings","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Item","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"NetworkPeer","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"NetworkSettings","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PVInstance","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[{"Name":"CoordinateFrame","Summary":"Deprecated. Use CFrame instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"RenderSettings","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"RootInstance","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ServiceProvider","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[{"Name":"service","Summary":"Use GetService() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ProfilingItem","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"NetworkMarker","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Hopper","Summary":"Use StarterPack instead","ExplorerOrder":2,"ExplorerImageIndex":0,"Browsable":true,"Deprecated":"true","PreferredParent":"","Members":[],"Preliminary":false,"IsBackend":false},{"Name":"Instance","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[{"Name":"Archivable","Summary":"Determines whether or not an Instance can be saved when the game closes/attempts to save the game. Note: this only applies to games that use Data Persistence, or SavePlaceAsync.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ClassName","Summary":"The string name of this Instance's most derived class.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Parent","Summary":"The Instance that is directly above this Instance in the tree.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetDebugId","Summary":"This function is for internal testing. Don't use in production code","Browsable":"false","Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Clone","Summary":"Returns a copy of this Object and all its children. The copy's Parent is nil","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"clone","Summary":"Use Clone() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"isA","Summary":"Use IsA() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"IsA","Summary":"Returns a boolean if this Instance is of type 'className' or a is a subclass of type 'className'.  If 'className' is not a valid class type in ROBLOX, this function will always return false.  More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FindFirstChild","Summary":"Returns the first child of this Instance that matches the first argument 'name'.  The second argument 'recursive' is an optional boolean (defaults to false) that will force the call to traverse down thru all of this Instance's descendants until it finds an object with a name that matches the 'name' argument.  The function will return nil if no Instance is found.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FindFirstChildOfClass","Summary":"Returns the first child of this Instance that with a ClassName equal to 'className'.  The function will return nil if no Instance is found.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FindFirstChildWhichIsA","Summary":"Returns the first child of this Instance that :IsA(className).  The second argument 'recursive' is an optional boolean (defaults to false) that will force the call to traverse down thru all of this Instance's descendants until it finds an object with a name that matches the 'className' argument.  The function will return nil if no Instance is found.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FindFirstAncestor","Summary":"Returns the first ancestor of this Instance that matches the first argument 'name'.  The function will return nil if no Instance is found.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FindFirstAncestorOfClass","Summary":"Returns the first ancestor of this Instance with a ClassName equal to 'className'.  The function will return nil if no Instance is found.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FindFirstAncestorWhichIsA","Summary":"Returns the first ancestor of this Instance that :IsA(className).  The function will return nil if no Instance is found.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetFullName","Summary":"Returns a string that shows the path from the root node (DataModel) to this Instance.  This string does not include the root node (DataModel).","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"children","Summary":"Use GetChildren() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"getChildren","Summary":"Use GetChildren() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"GetChildren","Summary":"Returns a read-only table of this Object's children","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetDescendants","Summary":"Returns an array containing all of the descendants of the instance. Returns in preorder traversal, or in other words, where the parents come before their children, depth first.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Remove","Summary":"Deprecated. Use ClearAllChildren() to get rid of all child objects, or Destroy() to invalidate this object and its descendants","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"remove","Summary":"Use Remove() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"ClearAllChildren","Summary":"Removes all children (but not this object) from the workspace.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Destroy","Summary":"Removes object and all of its children from the workspace. Disconnects object and all children from open connections. Object and children may not be usable after calling Destroy.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"findFirstChild","Summary":"Use FindFirstChild() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"AncestryChanged","Summary":"Fired when any of this object's ancestors change.  First argument 'child' is the object whose parent changed.  Second argument 'parent' is the first argument's new parent.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DescendantAdded","Summary":"Fired after an Instance is parented to this object, or any of this object's descendants.  The 'descendant' argument is the Instance that is being added.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DescendantRemoving","Summary":"Fired after an Instance is unparented from this object, or any of this object's descendants.  The 'descendant' argument is the Instance that is being added.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Changed","Summary":"Fired after a property changes value.  The property argument is the name of the property","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BodyGyro","Summary":"Attempts to maintain a fixed orientation of its parent Part","ExplorerOrder":14,"ExplorerImageIndex":14,"Browsable":true,"PreferredParent":"","Members":[{"Name":"MaxTorque","Summary":"The maximum torque that will be exerted on the Part","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"maxTorque","Summary":"Use MaxTorque instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"D","Summary":"The dampening factor applied to this force","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"P","Summary":"The power continually applied to this force","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"CFrame","Summary":"The cframe that this force is trying to orient its parent Part to.  Note: this force only uses the rotation of the cframe, not the position.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"cframe","Summary":"Use CFrame instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BodyPosition","Summary":"","ExplorerOrder":14,"ExplorerImageIndex":14,"Browsable":true,"PreferredParent":"","Members":[{"Name":"MaxForce","Summary":"The maximum force that will be exerted on the Part","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"maxForce","Summary":"Use MaxForce instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"D","Summary":"The dampening factor applied to this force","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"P","Summary":"The power factor continually applied to this force","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Position","Summary":"The Vector3 that this force is trying to position its parent Part to.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"position","Summary":"Use position instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"RocketPropulsion","Summary":"A propulsion system that mimics a rocket","ExplorerOrder":14,"ExplorerImageIndex":14,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BodyVelocity","Summary":"","ExplorerOrder":14,"ExplorerImageIndex":14,"Browsable":true,"PreferredParent":"","Members":[{"Name":"MaxForce","Summary":"The maximum force that will be exerted on the Part in each axis","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"maxForce","Summary":"Use MaxForce instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"P","Summary":"The amount of power we add to the system.  The higher the power, the quicker the force will achieve its goal.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Velocity","Summary":"The velocity this system tries to achieve.  How quickly the system reaches this velocity (if ever) is defined by P.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"velocity","Summary":"Use Velocity instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BodyAngularVelocity","Summary":"","ExplorerOrder":14,"ExplorerImageIndex":14,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BodyForce","Summary":"When parented to a physical part, BodyForce will continually exert a force upon its parent object.","ExplorerOrder":14,"ExplorerImageIndex":14,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BodyThrust","Summary":"","ExplorerOrder":14,"ExplorerImageIndex":14,"Browsable":true,"PreferredParent":"","Members":[{"Name":"Force","Summary":"The power continually applied to this force","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"force","Summary":"Use Force instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"Location","Summary":"The Vector3 location of where to apply the force to.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"location","Summary":"Use Location instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Hole","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":0,"Browsable":true,"Deprecated":"true","PreferredParent":"","Members":[],"Preliminary":false,"IsBackend":false},{"Name":"Feature","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Teams","Summary":"This Service-level object is the container for all Team objects in a level. A map that supports team games must have a Teams service. More info","ExplorerOrder":14,"ExplorerImageIndex":23,"Browsable":true,"PreferredParent":"","Members":[{"Name":"GetPlayers","Summary":"Returns a read-only table of players which are on this team.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Team","Summary":"The Team class is used to represent a faction in a team game. The only valid location for a Team object is under the Teams service. More info","ExplorerOrder":1,"ExplorerImageIndex":24,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SpawnLocation","Summary":"","ExplorerOrder":3,"ExplorerImageIndex":25,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"NetworkClient","Summary":"","ExplorerOrder":3,"ExplorerImageIndex":16,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"NetworkServer","Summary":"","ExplorerOrder":3,"ExplorerImageIndex":15,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"LuaSourceContainer","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[{"Name":"CurrentEditor","Summary":"The name of the player who is currently editing the script in Team Create.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Script","Summary":"","ExplorerOrder":3,"ExplorerImageIndex":6,"Browsable":true,"PreferredParent":"","Members":[{"Name":"LinkedScript","Summary":"This property is under development. Do not use","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"LocalScript","Summary":"A script that runs on clients, NOT servers.  LocalScripts can only run when parented under the PlayerGui currently.","ExplorerOrder":4,"ExplorerImageIndex":18,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"NetworkReplicator","Summary":"","ExplorerOrder":3,"ExplorerImageIndex":29,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Model","Summary":"A construct used to group Parts and other objects together, also allows manipulation of multiple objects.","ExplorerOrder":10,"ExplorerImageIndex":2,"Browsable":true,"PreferredParent":"","Members":[{"Name":"BreakJoints","Summary":"Breaks all surface joints contained within","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetModelCFrame","Summary":"Returns a CFrame that has position of the centroid of all Parts in the Model.  The rotation matrix is either the rotation matrix of the user-defined PrimaryPart, or if not specified then  a part in the Model chosen by the engine.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetModelSize","Summary":"Returns a Vector3 that is union of the extents of all Parts in the model.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MakeJoints","Summary":"Creates the appropriate SurfaceJoints between all touching Parts contrained within the model. Technically, this function calls MakeJoints() on all Parts inside the model.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MoveTo","Summary":"Moves the centroid of the Model to the specified location, respecting all relative distances between parts in the model.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ResetOrientationToIdentity","Summary":"Rotates all parts in the model to the orientation that was set using SetIdentityOrientation().  If this function has never been called, rotation is reset to GetModelCFrame()'s rotation.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SetIdentityOrientation","Summary":"Takes the current rotation matrix of the model and stores it as the model's identity matrix. The rotation is applied when ResetOrientationToIdentity() is called.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TranslateBy","Summary":"Similar to MoveTo(), except instead of moving to an explicit location, we use the model's current CFrame location and offset it.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetPrimaryPartCFrame","Summary":"Returns the cframe of the Model.PrimaryPart. If PrimaryPart is nil, then this function will throw an error.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SetPrimaryPartCFrame","Summary":"Sets the cframe of the Model.PrimaryPart. If PrimaryPart is nil, then this function will throw an error. This also sets the cframe of all descendant Parts relative to the cframe change to PrimaryPart.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"makeJoints","Summary":"Use MakeJoints() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"move","Summary":"Use MoveTo() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"PrimaryPart","Summary":"A Part that serves as a reference for the Model's CFrame. Used in conjunction with GetModelPrimaryPartCFrame and SetModelPrimaryPartCFrame. Use this to rotate/translate all Parts relative to the PrimaryPart.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Status","Summary":"","ExplorerOrder":10,"ExplorerImageIndex":2,"Browsable":true,"Deprecated":"true","PreferredParent":"","Members":[{"Name":"move","Summary":"Use MoveTo() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Preliminary":false,"IsBackend":false},{"Name":"DataModel","Summary":"The root of ROBLOX's parent-child hierarchy (commonly known as game after the global variable used to access it)","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[{"Name":"OnClose","Summary":"Deprecated. Use DataModel.BindToClose","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"Workspace","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"workspace","Summary":"Deprecated. Use Workspace","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"ShowMouse","Summary":"Deprecated. Use Workspace.IsMouseCursorVisible","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"IsLoaded","Summary":"Returns true if the game has finished loading, false otherwise.  Check this before listening to the Loaded signal to ensure a script knows when a game finishes loading.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Loaded","Summary":"Fires when the game finishes loading.  Use this to know when to remove your custom loading gui.  It is best to check IsLoaded() before connecting to this event, as the game may load before the event is connected to.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SetPlaceID","Summary":"Use SetPlaceId() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"SetCreatorID","Summary":"Use SetCreatorId() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DataStoreService","Summary":"Responsible for storing data across multiple user created places","ExplorerOrder":-1,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[{"Name":"GetDataStore","Summary":"Returns a data store with the given name and scope","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetGlobalDataStore","Summary":"Returns the default data store","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetOrderedDataStore","Summary":"Returns an ordered data store with the given name and scope","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GlobalDataStore","Summary":"Exposes functions for saving and loading data for the DataStoreService","ExplorerOrder":-1,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[{"Name":"OnUpdate","Summary":"Sets callback as a function to be executed any time the value associated with key is changed. It is important to disconnect the connection when the subscription to the key is no longer needed.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetAsync","Summary":"Returns the value of the entry in the DataStore with the given key","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"IncrementAsync","Summary":"Increments the value of a particular key amd returns the incremented value","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SetAsync","Summary":"Sets the value of the key. This overwrites any existing data stored in the key","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UpdateAsync","Summary":"Retrieves the value of the key from the website, and updates it with a new value. The callback until the value fetched matches the value on the web. Returning nil means it will not save.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"OrderedDataStore","Summary":"A type of DataStore where values must be positive integers. This makes OrderedDataStore suitable for leaderboard related scripting where you are required to order large amounts of data efficiently.","ExplorerOrder":-1,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[{"Name":"GetSortedAsync","Summary":"Returns a DataStorePages object. The length of each page is determined by pageSize, and the order is determined by isAscending. minValue and maxValue are optional parameters which will filter the result.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"HopperBin","Summary":"","ExplorerOrder":24,"ExplorerImageIndex":22,"Browsable":true,"Deprecated":"true","PreferredParent":"","Members":[],"Preliminary":false,"IsBackend":false},{"Name":"Camera","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":5,"Browsable":true,"PreferredParent":"","Members":[{"Name":"CameraSubject","Summary":"Where the Camera's focus is.  Any rotation of the camera will be about this subject.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"CameraType","Summary":"Defines how the camera will behave. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"CoordinateFrame","Summary":"The current position and rotation of the Camera.  For most CameraTypes, the rotation is set such that the CoordinateFrame lookVector is pointing at the Focus.","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"CFrame","Summary":"The current position and rotation of the Camera.  For most CameraTypes, the rotation is set such that the CoordinateFrame lookVector is pointing at the Focus.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FieldOfView","Summary":"The current angle, or width, of what the camera can see.  Current acceptable values are from 20 degrees to 80.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Focus","Summary":"The current CoordinateFrame that the camera is looking at.  Note: it is not always guaranteed that the camera is always looking here.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ViewportSize","Summary":"Holds the x,y screen resolution of the viewport the camera is presenting (note: this can differ from the AbsoluteSize property of a full screen gui).","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetRoll","Summary":"Returns the camera's current roll. Roll is defined in radians, and is stored as the delta from the camera's y axis default normal vector.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"WorldToScreenPoint","Summary":"Takes a 3D position in the world and projects it onto x,y coordinates of screen space. Returns two values, first is a Vector3 that has x,y position and z position which is distance from camera (negative if behind camera, positive if in front). Second return value is a boolean indicating if the first argument is an on-screen coordinate.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ScreenPointToRay","Summary":"Takes a 2D screen position and produces a Ray object to be used for 3D raycasting. Input is x,y screen coordinates, and a (optional, defaults to 0) z position which sets how far in the camera look vector to start the ray origin.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ViewportPointToRay","Summary":"Same as ScreenPointToRay, except no GUI offsets are taken into account. Useful for things like casting a ray from the middle of the Camera.ViewportSize","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"WorldToViewportPoint","Summary":"Same as WorldToScreenPoint, except no GUI offsets are taken into account.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SetRoll","Summary":"Sets the camera's current roll. Roll is defined in radians, and is stored as the delta from the camera's y axis default normal vector.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Players","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":21,"Browsable":true,"PreferredParent":"","Members":[{"Name":"CharacterAutoLoads","Summary":"Set to true, when a player joins a game, they get a character automatically, as well as when they die.  When set to false, characters do not auto load and will only load in using Player:LoadCharacter().","Browsable":"true","Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"players","Summary":"Use GetPlayers() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ReplicatedStorage","Summary":"A container whose contents are replicated to all clients and the server.","ExplorerOrder":3,"ExplorerImageIndex":70,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"RobloxReplicatedStorage","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ReplicatedFirst","Summary":"A container whose contents are replicated to all clients (but not back to the server) first before anything else. Useful for creating loading guis, tutorials, etc.","ExplorerOrder":3,"ExplorerImageIndex":70,"Browsable":true,"PreferredParent":"","Members":[{"Name":"RemoveRobloxLoadingScreen","Summary":"Removes the default Roblox loading screen from view. Call this when you are ready to either show your own loading gui, or when the game is ready to play.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ServerStorage","Summary":"A container whose contents are only on the server.","ExplorerOrder":3,"ExplorerImageIndex":69,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ServerScriptService","Summary":"A container whose contents should be scripts. Scripts that are added to the container are run on the server.","ExplorerOrder":3,"ExplorerImageIndex":71,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Lighting","Summary":"Responsible for all lighting aspects of the world (affects how things are rendered).","ExplorerOrder":3,"ExplorerImageIndex":13,"Browsable":true,"PreferredParent":"","Members":[{"Name":"GetMinutesAfterMidnight","Summary":"The number of minutes that the current time is past midnight.  If currently at midnight, returns 0.  Will return decimal values if not at an exact minute.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetMoonDirection","Summary":"Returns the lookVector (Vector3) of the moon. If this lookVector was used in a CFrame, the Part would face the moon.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetMoonPhase","Summary":"Currently always returns 0.75. MoonPhase cannot be edited.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetSunDirection","Summary":"Returns the lookVector (Vector3) of the sun. If this lookVector was used in a CFrame, the Part would face the sun.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SetMinutesAfterMidnight","Summary":"Sets the time to be a certain number of minutes after midnight.  This works with integer and decimal values.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Ambient","Summary":"The hue of the global lighting.  Changing this changes the color tint of all objects in the Workspace.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Brightness","Summary":"How much global light each Part in the Workspace receives. Standard range is 0 to 1 (0 being little light), but can be increased all the way to 5 (colors start to be appear very different at this value).","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ColorShift_Bottom","Summary":"The hue of global lighting on the bottom surfaces of an object.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ColorShift_Top","Summary":"The hue of global lighting on the top surfaces of an object.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FogColor","Summary":"A Color3 value that changes the hue of distance fog.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FogEnd","Summary":"The distance at which fog completely blocks your vision. This distance is relative to the camera position. Units are in studs","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FogStart","Summary":"The distance at which the fog gradient begins. This distance is relative to the camera position. Units are in studs.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GeographicLatitude","Summary":"The latitude position the level is placed at.  This affects sun position. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GlobalShadows","Summary":"Flag enabling shadows from sun and moon in the place","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"OutdoorAmbient","Summary":"Effective ambient value for outdoors, effectively shadow color outdoors (requires GlobalShadows enabled)","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Outlines","Summary":"Flag enabling or disabling outlines on parts and terrain","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ShadowColor","Summary":"Color the shadows appear as. Shadows are drawn mostly for characters, but depending on the lighting will also show for Parts in the Workspace.  Rendering settings can also affect if shadows are drawn.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TimeOfDay","Summary":"A string that represent the current time of day. Time is in 24-hour clock format \"XX::YY:ZZ\", where X is hour, Y is minute, and Z is seconds.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ClockTime","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"LightingChanged","Summary":"Fired whenever a property of Lighting is changed, or a skybox is added or removed. Skyboxes are of type 'Sky' and should be parented directly to lighting.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TestService","Summary":"","ExplorerOrder":100,"ExplorerImageIndex":68,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DebuggerManager","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ScriptDebugger","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DebuggerBreakpoint","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DebuggerWatch","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Debris","Summary":"A service that provides utility in cleaning up objects","ExplorerOrder":-1,"ExplorerImageIndex":30,"Browsable":true,"PreferredParent":"","Members":[{"Name":"addItem","Summary":"Use AddItem() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"AddItem","Summary":"Adds an Instance into the debris service that will later be destroyed.  Second argument 'lifetime' is optional and specifies how long (in seconds) to wait before destroying the item. If no time is specified then the item added will automatically be destroyed in 10 seconds.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MaxItems","Summary":"Deprecated. No replacement","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Accoutrement","Summary":"","ExplorerOrder":2,"ExplorerImageIndex":32,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Player","Summary":"","ExplorerOrder":1,"ExplorerImageIndex":12,"Browsable":true,"PreferredParent":"","Members":[{"Name":"CharacterAppearance","Summary":"","Browsable":"false","Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"CameraMode","Summary":"An enum that describes how a Player's camera is allowed to behave. More info.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DataReady","Summary":"Read-only. If true, this Player's persistent data can be loaded, false otherwise. Info on Data Persistence.","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"DataComplexity","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"LoadCharacter","Summary":"Loads in a new character for this player.  This will replace the player's current character, if they have one. This should be used in conjunction with Players.CharacterAutoLoads to control spawning of characters. This function only works from a server-side script (NOT a LocalScript).","Browsable":"true","Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"LoadData","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"SaveData","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"SaveBoolean","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"SaveInstance","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"SaveString","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"LoadBoolean","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"LoadNumber","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"LoadString","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"LoadInstance","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"SaveNumber","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"playerFromCharacter","Summary":"Use GetPlayerFromCharacter() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"SetUnder13","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"WaitForDataReady","Summary":"Yields until the persistent data for this Player is ready to be loaded. Info on Data Persistence.","Browsable":"true","Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"Idled","Summary":"Fired periodically after the user has been AFK for a while.  Currently this event is only fired for the *local* Player.  \"time\" is the time in seconds that the user has been idle.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Workspace","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":19,"Browsable":true,"PreferredParent":"","Members":[{"Name":"FindPartsInRegion3","Summary":"Returns parts in the area defined by the Region3, up to specified maxCount or 100, whichever is less","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FindPartsInRegion3WithIgnoreList","Summary":"Returns parts in the area defined by the Region3, up to specified maxCount or 100, whichever is less","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FindPartOnRay","Summary":"Return type is (BasePart, Vector3) if the ray hits.  If it misses it will return (nil, PointAtEndOfRay)","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FindPartOnRayWithIgnoreList","Summary":"Return type is (BasePart, Vector3) if the ray hits.  If it misses it will return (nil, PointAtEndOfRay)","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PGSPhysicsSolverEnabled","Summary":"Boolean used to enable the experimental physics solver","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FallenPartsDestroyHeight","Summary":"Sets the height at which falling characters and parts are destroyed. This property is not scriptable and can only be set in Studio","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BasePart","Summary":"A structural class, not creatable","ExplorerOrder":-1,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[{"Name":"Color","Summary":"Color3 of the part.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"CFrame","Summary":"Contains information regarding the Part's position and a matrix that defines the Part's rotation.  Can read/write. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"CanCollide","Summary":"Determines whether physical interactions with other Parts are respected.  If true, will collide and react with physics to other Parts.  If false, other parts will pass thru instead of colliding","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Anchored","Summary":"Determines whether or not physics acts upon the Part.  If true, part stays 'Anchored' in space, not moving regardless of any collision/forces acting upon it.  If false, physics works normally on the part.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Elasticity","Summary":"A float value ranging from 0.0f to 1.0f. Sets how much the Part will rebound against another. a value of 1 is like a superball, and 0 is like a lead block.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Friction","Summary":"A float value ranging from 0.0f to 1.0f. Sets how much the Part will be able to slide. a value of 1 is no sliding, and 0 is no friction, so infinite sliding.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Locked","Summary":"Determines whether building tools (in-game and studio) can manipulate this Part.  If true, no editing allowed.  If false, editing is allowed.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Material","Summary":"Specifies the look and feel the Part should have.  Note: this does not define the color the Part is, see BrickColor for that. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Reflectance","Summary":"Specifies how shiny the Part is. A value of 1 is completely reflective (chrome), while a value of 0 is no reflectance (concrete wall)","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ResizeIncrement","Summary":"Sets the value for the smallest change in size allowable by the Resize(NormalId, int) function.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ResizeableFaces","Summary":"Sets the value for the faces allowed to be resized by the Resize(NormalId, int) function.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Transparency","Summary":"Sets how visible an object is. A value of 1 makes the object invisible, while a value of 0 makes the object opaque.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Velocity","Summary":"How fast the Part is traveling in studs/second. This property is NOT recommended to be modified directly, unless there is good reason.  Otherwise, try using a BodyForce to move a Part.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PositionLocal","Summary":"Position relative to parent part, or global space if there is no parent.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"OrientationLocal","Summary":"Orientation relative to parent part, or global space if there is no parent.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Orientation","Summary":"Rotation around X, Y, and Z axis.  Rotations applied in YXZ order.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Rotation","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"CenterOfMass","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"makeJoints","Summary":"Use MakeJoints() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"MakeJoints","Summary":"Creates the appropriate SurfaceJoints with all parts that are touching this Instance (including internal joints in the Instance, as in a Model).  This uses the SurfaceTypes defined on the surfaces of parts to create the appropriate welds. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BreakJoints","Summary":"Destroys SurfaceJoints with all parts that are touching this Instance (including internal joints in the Instance, as in a Model).","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetMass","Summary":"Returns a number that is the mass of this Instance.  Mass of a Part is immutable, and is changed only by the size of the Part.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Resize","Summary":"Resizes a Part in the direction of the face defined by 'NormalId', by the amount specified by 'deltaAmount'. If the operation will expand the part to intersect another Instance, the part will not resize at all.  Return true if the call is successful, false otherwise.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"getMass","Summary":"Use GetMass() instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"OutfitChanged","Summary":"","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"LocalSimulationTouched","Summary":"Deprecated. Use Touched instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"StoppedTouching","Summary":"Deprecated. Use TouchEnded instead","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchEnded","Summary":"Fired when the part stops touching another part","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Part","Summary":"A plastic building block - the fundamental component of ROBLOX","ExplorerOrder":11,"ExplorerImageIndex":1,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TrussPart","Summary":"An extendable building truss","ExplorerOrder":12,"ExplorerImageIndex":1,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"WedgePart","Summary":"A Wedge Part","ExplorerOrder":12,"ExplorerImageIndex":1,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PrismPart","Summary":"A Prism Part","ExplorerOrder":12,"ExplorerImageIndex":1,"Browsable":"false","Deprecated":"true","PreferredParent":"","Members":[],"Preliminary":false,"IsBackend":false},{"Name":"PyramidPart","Summary":"A Pyramid Part","ExplorerOrder":12,"ExplorerImageIndex":1,"Browsable":"false","Deprecated":"true","PreferredParent":"","Members":[],"Preliminary":false,"IsBackend":false},{"Name":"ParallelRampPart","Summary":"A ParallelRamp Part","ExplorerOrder":12,"ExplorerImageIndex":1,"Browsable":"false","Deprecated":"true","PreferredParent":"","Members":[],"Preliminary":false,"IsBackend":false},{"Name":"RightAngleRampPart","Summary":"A RightAngleRamp Part","ExplorerOrder":12,"ExplorerImageIndex":1,"Browsable":"false","Deprecated":"true","PreferredParent":"","Members":[],"Preliminary":false,"IsBackend":false},{"Name":"CornerWedgePart","Summary":"A CornerWedge Part","ExplorerOrder":12,"ExplorerImageIndex":1,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PlayerGui","Summary":"A container instance that syncs data between a single player and the server.  ScreenGui objects that are placed in this container will be shown to the Player parent only","ExplorerOrder":13,"ExplorerImageIndex":46,"Browsable":true,"PreferredParent":"","Members":[{"Name":"SelectionImageObject","Summary":"Overrides the default selection adornment (used for gamepads). For best results, this should point to a GuiObject.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PlayerScripts","Summary":"A container instance that contains LocalScripts.  LocalScript objects that are placed in this container will be exectue only when a Player is the parent.","ExplorerOrder":13,"ExplorerImageIndex":78,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"StarterPlayerScripts","Summary":"A container instance that contains LocalScripts.  LocalScript objects that are placed in this container will be copied to new Players on startup.","ExplorerOrder":13,"ExplorerImageIndex":78,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"StarterCharacterScripts","Summary":"A container instance that contains LocalScripts.  LocalScript objects that are placed in this container will be copied to new characters on startup.","ExplorerOrder":13,"ExplorerImageIndex":78,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GuiMain","Summary":"Deprecated, please use ScreenGui","ExplorerOrder":14,"ExplorerImageIndex":47,"Browsable":true,"Deprecated":"true","PreferredParent":"","Members":[],"Preliminary":false,"IsBackend":false},{"Name":"LayerCollector","Summary":"The base class of ScreenGui, BillboardGui, and SurfaceGui.","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ScreenGui","Summary":"The core GUI object on which tools are built.  Add Frames/Labels/Buttons to this object to have them rendered as a 2D overlay","ExplorerOrder":14,"ExplorerImageIndex":47,"Browsable":true,"PreferredParent":"StarterGui","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"FunctionalTest","Summary":"Deprecated. Use TestService instead","ExplorerOrder":1,"ExplorerImageIndex":0,"Browsable":true,"Deprecated":"true","PreferredParent":"","Members":[],"Preliminary":false,"IsBackend":false},{"Name":"BillboardGui","Summary":"A GUI that adorns an object in the 3D world.  Add Frames/Labels/Buttons to this object to have them rendered while attached to a 3D object","ExplorerOrder":14,"ExplorerImageIndex":64,"Browsable":true,"PreferredParent":"StarterGui","Members":[{"Name":"Adornee","Summary":"The Object the billboard gui uses as its base to render from.  Currently, the only way to set this property is thru a script, and must exist in the workspace.  This will only render if the object assigned derives from BasePart.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"AbsolutePosition","Summary":"A read-only Vector2 value that is the GuiObject's current position (x,y) in pixel space, from the top left corner of the GuiObject.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"AbsoluteSize","Summary":"A read-only Vector2 value that is the GuiObject's current size (width, height) in pixel space.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Active","Summary":"If true, this GuiObject can fire mouse events and will pass them to any GuiObjects layered underneath, while false will do neither.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"AlwaysOnTop","Summary":"If true, billboard gui does not get occluded by 3D objects, but always renders on the screen.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Enabled","Summary":"If true, billboard gui will render, otherwise rendering will be skipped.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ExtentsOffset","Summary":"A Vector3 (x,y,z) defined in studs that will offset the gui from the extents of the 3d object it is rendering from.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PlayerToHideFrom","Summary":"Specifies a Player that the BillboardGui will not render to.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"StudsOffset","Summary":"A Vector3 (x,y,z) defined in studs that will offset the gui from the centroid of the 3d object it is rendering from","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SizeOffset","Summary":"A Vector2 (x,y) defined in studs that will offset the gui size from it's current size.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Size","Summary":"A UDim2 value describing the size of the BillboardGui. More information on UDim2 is available here. Relative values are defined as one-to-one with studs.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"LightInfluence","Summary":"Specifies the amount of influence lighting has on the billboard gui. A value of 0 is unlit, 1 is fully lit. Fractional values blend from unlit to lit.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SurfaceGui","Summary":"Renders its contained GuiObjects flat against the face of a part.","ExplorerOrder":14,"ExplorerImageIndex":64,"Browsable":true,"PreferredParent":"StarterGui","Members":[{"Name":"Adornee","Summary":"The Object the surface gui uses as its base to render from.  Currently, the only way to set this property is thru a script, and must exist in the workspace.  This will only render if the object assigned derives from BasePart.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Active","Summary":"If true, this GuiObject can fire mouse events and will pass them to any GuiObjects layered underneath, while false will do neither.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Enabled","Summary":"If true, surface gui will render, otherwise rendering will be skipped.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"LightInfluence","Summary":"Specifies the amount of influence lighting has on the surface gui. A value of 0 is unlit, 1 is fully lit. Fractional values blend from unlit to lit.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GuiBase2d","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[{"Name":"AbsolutePosition","Summary":"A read-only Vector2 value that is the GuiObject's current position (x,y) in pixel space, from the top left corner of the GuiObject.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"AbsoluteSize","Summary":"A read-only Vector2 value that is the GuiObject's current size (width, height) in pixel space.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"InputObject","Summary":"An object that describes a particular user input, such as mouse movement, touches, keyboard, and more.","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":true,"PreferredParent":"","Members":[{"Name":"UserInputType","Summary":"An enum that describes what kind of input this object is describing (mousebutton, touch, etc.).  See Enum.UserInputType for more info.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UserInputState","Summary":"An enum that describes what state of a particular input (touch began, touch moved, touch ended, etc.). See Enum.UserInputState for more info.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Position","Summary":"A Vector3 value that describes a positional value of this input. For mouse and touch input, this is the screen position of the mouse/touch, described in the x and y components. For mouse wheel input, the z component describes whether the wheel was moved forward or backward.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"KeyCode","Summary":"An enum that describes what kind of input is being pressed. For types of input like Keyboard, this describes what key was pressed. For input like mousebutton, this provides no additional information.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GuiObject","Summary":"","ExplorerOrder":0,"ExplorerImageIndex":0,"Browsable":"false","PreferredParent":"","Members":[{"Name":"TweenPosition","Summary":"Smoothly moves a GuiObject from its current position to 'endPosition'. The only required argument is 'endPosition'. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TweenSize","Summary":"Smoothly translates a GuiObject's current size to 'endSize'. The only required argument is 'endSize'. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TweenSizeAndPosition","Summary":"Smoothly translates a GuiObject's current size to 'endSize', and also smoothly translates the GuiObject's current position to 'endPosition'. The only required arguments are 'endSize' and 'endPosition'. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Active","Summary":"If true, this GuiObject can fire mouse events and will pass them to any GuiObjects layered underneath, while false will do neither.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BackgroundColor3","Summary":"A Color3 value that specifies the background color for the GuiObject. This value is ignored if the Style property (not found on all GuiObjects) is set to something besides custom.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BackgroundTransparency","Summary":"A number value that specifies how transparent the background of the GuiObject is. This value is ignored if the Style property (not found on all GuiObjects) is set to something besides custom.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BorderColor3","Summary":"A Color3 value that specifies the color of the outline of the GuiObject. This value is ignored if the Style property (not found on all GuiObjects) is set to something besides custom.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BorderSizePixel","Summary":"A number value that specifies the thickness (in pixels) of the outline of the GuiObject. Currently this value can only be set to either 0 or 1, any other number has no effect. This value is ignored if the Style property (not found on all GuiObjects) is set to something besides custom.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ClipsDescendants","Summary":"If set to true, any descendants of this GuiObject will only render if contained within it's borders. If set to false, all descendants will render regardless of position.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Draggable","Summary":"If true, allows a GuiObject to be dragged by the user's mouse. The events 'DragBegin' and 'DragStopped' are fired when the appropriate action happens, and only will fire on Draggable=true GuiObjects.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Size","Summary":"A UDim2 value describing the size of the GuiObject on screen in both absolute and relative coordinates. More information on UDim2 is available here.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Position","Summary":"A UDim2 value describing the position of the top-left corner of the GuiObject on screen. More information on UDim2 is available here.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SizeConstraint","Summary":"The direction(s) that an object can be resized in. More info.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ZIndex","Summary":"Describes the ordering in which overlapping GuiObjects will be drawn. A value of 1 is drawn first, while higher values are drawn in ascending order (each value draws over the last).","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BackgroundColor","Summary":"Deprecated. Use BackgroundColor3 instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"BorderColor","Summary":"Deprecated. Use BorderColor3 instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false},{"Name":"SelectionImageObject","Summary":"Overrides the default selection adornment (used for gamepads). For best results, this should point to a GuiObject.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DragBegin","Summary":"Fired when a GuiObject with Draggable set to true starts to be dragged. 'InitialPosition' is a UDim2 value of the position of the GuiObject before any drag operation began.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DragStopped","Summary":"Always fired after a DragBegin event, DragStopped is fired when the user releases the mouse button causing a drag operation on the GuiObject. Arguments 'x', and 'y' specify the top-left absolute position of the GuiObject when the event is fired.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MouseEnter","Summary":"Fired when the mouse enters a GuiObject, as long as the GuiObject is active (see active property for more detail). Arguments 'x', and 'y' specify the absolute pixel position of the mouse.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MouseLeave","Summary":"Fired when the mouse leaves a GuiObject, as long as the GuiObject is active (see active property for more detail). Arguments 'x', and 'y' specify the absolute pixel position of the mouse.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MouseMoved","Summary":"Fired when the mouse is inside a GuiObject and moves, as long as the GuiObject is active (see active property for more detail). Arguments 'x', and 'y' specify the absolute pixel position of the mouse.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchTap","Summary":"Fired when a user taps their finger on a TouchEnabled device. 'touchPositions' is a Lua array of Vector2, each indicating the position of all the fingers involved in the tap gesture. This event only fires locally.  This event will always fire regardless of game state.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchPinch","Summary":"Fired when a user pinches their fingers on a TouchEnabled device. 'touchPositions' is a Lua array of Vector2, each indicating the position of all the fingers involved in the pinch gesture. 'scale' is a float that indicates the difference from the beginning of the pinch gesture. 'velocity' is a float indicating how quickly the pinch gesture is happening. 'state' indicates the Enum.UserInputState of the gesture.  This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchSwipe","Summary":"Fired when a user swipes their fingers on a TouchEnabled device. 'swipeDirection' is an Enum.SwipeDirection, indicating the direction the user swiped. 'numberOfTouches' is an int that indicates how many touches were involved with the gesture.  This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchLongPress","Summary":"Fired when a user holds at least one finger for a short amount of time on the same screen position on a TouchEnabled device. 'touchPositions' is a Lua array of Vector2, each indicating the position of all the fingers involved in the gesture. 'state' indicates the Enum.UserInputState of the gesture.  This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchRotate","Summary":"Fired when a user rotates two fingers on a TouchEnabled device. 'touchPositions' is a Lua array of Vector2, each indicating the position of all the fingers involved in the gesture. 'rotation' is a float indicating how much the rotation has gone from the start of the gesture. 'velocity' is a float that indicates how quickly the gesture is being performed. 'state' indicates the Enum.UserInputState of the gesture.  This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TouchPan","Summary":"Fired when a user drags at least one finger on a TouchEnabled device. 'touchPositions' is a Lua array of Vector2, each indicating the position of all the fingers involved in the gesture. 'totalTranslation' is a Vector2, indicating how far the pan gesture has gone from its starting point. 'velocity' is a Vector2 that indicates how quickly the gesture is being performed in each dimension. 'state' indicates the Enum.UserInputState of the gesture.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"InputBegan","Summary":"Fired when a user begins interacting via a Human-Computer Interface device (Mouse button down, touch begin, keyboard button down, etc.). 'inputObject' is an InputObject, which contains useful data for querying user input.  This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"InputChanged","Summary":"Fired when a user changes interacting via a Human-Computer Interface device (Mouse move, touch move, mouse wheel, etc.). 'inputObject' is an InputObject, which contains useful data for querying user input.  This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"InputEnded","Summary":"Fired when a user stops interacting via a Human-Computer Interface device (Mouse button up, touch end, keyboard button up, etc.). 'inputObject' is an InputObject, which contains useful data for querying user input.  This event only fires locally.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Frame","Summary":"A container object used to layout other GUI objects","ExplorerOrder":15,"ExplorerImageIndex":48,"Browsable":true,"PreferredParent":"StarterGui","Members":[{"Name":"Style","Summary":"Determines how a frame will look. Uses Enum.FrameStyle. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ScrollingFrame","Summary":"A container object used to layout other GUI objects, and allows for scrolling.","ExplorerOrder":15,"ExplorerImageIndex":48,"Browsable":true,"PreferredParent":"StarterGui","Members":[{"Name":"ScrollingEnabled","Summary":"Determines whether or not scrolling is allowed on this frame. If turned off, no scroll bars will be rendered.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"CanvasSize","Summary":"Determines the size of the area that is scrollable. The UDim2 is calculated using the parent gui's size, similar to the regular Size property on gui objects.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"CanvasPosition","Summary":"The absolute position the scroll frame is in respect to the canvas size. The minimum this can be set to is (0,0), while the max is the absolute canvas size - AbsoluteWindowSize.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"AbsoluteWindowSize","Summary":"The size in pixels of the frame, without the scrollbars.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ScrollBarThickness","Summary":"How thick the scroll bar appears. This applies to both the horizontal and vertical scroll bars. Can be set to 0 for no bars render.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TopImage","Summary":"The \"Up\" image on the vertical scrollbar. Size of this is always ScrollBarThickness by ScrollBarThickness. This is also used as the \"left\" image on the horizontal scroll bar.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MidImage","Summary":"The \"Middle\" image on the vertical scrollbar. Size of this can vary in the y direction, but is always set at ScrollBarThickness in x direction. This is also used as the \"mid\" image on the horizontal scroll bar.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BottomImage","Summary":"The \"Down\" image on the vertical scrollbar. Size of this is always ScrollBarThickness by ScrollBarThickness. This is also used as the \"right\" image on the horizontal scroll bar.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ImageLabel","Summary":"A GUI object containing an Image","ExplorerOrder":18,"ExplorerImageIndex":49,"Browsable":true,"PreferredParent":"StarterGui","Members":[{"Name":"Image","Summary":"Specifies the id of the texture to display. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ScaleType","Summary":"Specifies how an image should be displayed. See ScaleType for more info.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SliceCenter","Summary":"If ScaleType is set to Slice, this Rect is used to specify the central part of the image. Everything outside of this is considered to be the border.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TileSize","Summary":"If ScaleType is set to Tile, this sets the size of the tile.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TextLabel","Summary":"A GUI object containing text","ExplorerOrder":19,"ExplorerImageIndex":50,"Browsable":true,"PreferredParent":"StarterGui","Members":[{"Name":"TextColor","Summary":"Deprecated. Use TextColor3 instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TextButton","Summary":"A GUI button containing text","ExplorerOrder":17,"ExplorerImageIndex":51,"Browsable":true,"PreferredParent":"StarterGui","Members":[{"Name":"TextColor","Summary":"Deprecated. Use TextColor3 instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TextBox","Summary":"A text entry box","ExplorerOrder":17,"ExplorerImageIndex":51,"Browsable":true,"PreferredParent":"StarterGui","Members":[{"Name":"TextColor","Summary":"Deprecated. Use TextColor3 instead","Browsable":true,"Deprecated":"true","Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GuiButton","Summary":"A GUI button containing an Image","ExplorerOrder":16,"ExplorerImageIndex":52,"Browsable":"false","PreferredParent":"","Members":[{"Name":"AutoButtonColor","Summary":"Determines whether a button changes color automatically when reacting to mouse events.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Modal","Summary":"Allows the mouse to be free in first person mode. If a button with this property set to true is visible, the mouse is 'free' in first person mode.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Style","Summary":"Determines how a button will look, including mouse event states. Uses Enum.ButtonStyle. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MouseButton1Click","Summary":"Fired when the mouse is over the button, and the mouse down and up events fire without the mouse leaving the button.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MouseButton1Down","Summary":"Fired when the mouse button is pushed down on a button.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MouseButton1Up","Summary":"Fired when the mouse button is released on a button.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MouseButton2Click","Summary":"This function currently does not work :(","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MouseButton2Down","Summary":"This function currently does not work :(","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MouseButton2Up","Summary":"This function currently does not work :(","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ImageButton","Summary":"A GUI button containing an Image","ExplorerOrder":16,"ExplorerImageIndex":52,"Browsable":true,"PreferredParent":"StarterGui","Members":[{"Name":"Image","Summary":"Specifies the asset id of the texture to display. More info","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ScaleType","Summary":"Specifies how an image should be displayed. See ScaleType for more info.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SliceCenter","Summary":"If ScaleType is set to Slice, this Rect is used to specify the central part of the image. Everything outside of this is considered to be the border.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TileSize","Summary":"If ScaleType is set to Tile, this sets the size of the tile.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Handles","Summary":"A 3D GUI object to represent draggable handles","ExplorerOrder":19,"ExplorerImageIndex":53,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ArcHandles","Summary":"A 3D GUI object to represent draggable arc handles","ExplorerOrder":20,"ExplorerImageIndex":56,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SelectionBox","Summary":"A 3D GUI object to represent the visible selection around an object","ExplorerOrder":21,"ExplorerImageIndex":54,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SelectionSphere","Summary":"A 3D GUI object to represent the visible selection around an object","ExplorerOrder":21,"ExplorerImageIndex":54,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SurfaceSelection","Summary":"A 3D GUI object to represent the visible selection around a face of an object","ExplorerOrder":21,"ExplorerImageIndex":55,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Configuration","Summary":"An object that can be placed under parts to hold Value objects that represent that part's configuration","ExplorerOrder":22,"ExplorerImageIndex":58,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Folder","Summary":"An object that can be created to hold and organize objects","ExplorerOrder":1,"ExplorerImageIndex":77,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SelectionPartLasso","Summary":"A visual line drawn representation between two part objects","ExplorerOrder":22,"ExplorerImageIndex":57,"Browsable":true,"Deprecated":"true","PreferredParent":"","Members":[],"Preliminary":false,"IsBackend":false},{"Name":"SelectionPointLasso","Summary":"A visual line drawn representation between two positions","ExplorerOrder":22,"ExplorerImageIndex":57,"Browsable":true,"Deprecated":"true","PreferredParent":"","Members":[],"Preliminary":false,"IsBackend":false},{"Name":"PartPairLasso","Summary":"A visual line drawn representation between two parts.","ExplorerOrder":22,"ExplorerImageIndex":57,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Pose","Summary":"The pose of a joint relative to it's parent part in a keyframe","ExplorerOrder":22,"ExplorerImageIndex":60,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Keyframe","Summary":"One keyframe of an animation","ExplorerOrder":22,"ExplorerImageIndex":60,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Animation","Summary":"Represents a linked animation object, containing keyframes and poses.","ExplorerOrder":22,"ExplorerImageIndex":60,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"AnimationTrack","Summary":"Returned by a call to LoadAnimation. Controls the playback of an animation on a Humanoid.","ExplorerOrder":22,"ExplorerImageIndex":60,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"AnimationController","Summary":"Allows animations to be played on joints of the parent object.","ExplorerOrder":22,"ExplorerImageIndex":60,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"CharacterMesh","Summary":"Modifies the appearance of a body part.","ExplorerOrder":22,"ExplorerImageIndex":60,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Dialog","Summary":"An object used to make dialog trees to converse with players","ExplorerOrder":22,"ExplorerImageIndex":62,"Browsable":true,"PreferredParent":"","Members":[{"Name":"ConversationDistance","Summary":"The maximum distance that the player's character can be from the dialog's parent in order to use the dialog.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GoodbyeChoiceActive","Summary":"Indicates whether or not an extra choice is available for the player to exit the dialog tree at this node.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GoodbyeDialog","Summary":"The prompt text for an extra choice that allows the player to exit the dialog tree at this node.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"InUse","Summary":"Indicates whether or not the dialog is currently being used by one or more players.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"InitialPrompt","Summary":"The chat message that is displayed to the player when they first activate the dialog.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Purpose","Summary":"Describes the purpose of the dialog, which is used to display a relevant icon on the dialog's activation button.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Tone","Summary":"Describes the tone of the dialog, which is used to display a relevant color in the dialog interface.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"BehaviorType","Summary":"Indicates how the dialog may be used by players. Use Enum.DialogBehaviorType.SinglePlayer if only one player should interact with the dialog at a time, otherwise use Enum.DialogBehaviorType.MultiplePlayers.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetCurrentPlayers","Summary":"Returns an array of the players currently conversing with this dialog.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"DialogChoice","Summary":"An object used to make dialog trees to converse with players","ExplorerOrder":22,"ExplorerImageIndex":63,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"UnionOperation","Summary":"A UnionOperation is a union of multiple parts","ExplorerOrder":2,"ExplorerImageIndex":73,"Browsable":"true","PreferredParent":"","Members":[{"Name":"UsePartColor","Summary":"Override the colors of the mesh with the part color.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"NegateOperation","Summary":"A NegateOperation can be used to create holes in other parts","ExplorerOrder":2,"ExplorerImageIndex":72,"Browsable":"true","PreferredParent":"","Members":[{"Name":"UsePartColor","Summary":"Override the colors of the mesh with the part color.","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"MeshPart","Summary":"A MeshPart is a physically simulatable mesh","ExplorerOrder":2,"ExplorerImageIndex":73,"Browsable":"true","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Terrain","Summary":"Object representing a high performance bounded grid of static 4x4 parts","ExplorerOrder":0,"ExplorerImageIndex":65,"Browsable":"true","PreferredParent":"","Members":[{"Name":"WaterTransparency","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"WaterWaveSize","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"WaterWaveSpeed","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"WaterReflectance","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetCell","Summary":"Returns CellMaterial, CellBlock, CellOrientation","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"GetWaterCell","Summary":"Returns hasAnyWater, WaterForce, WaterDirection","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SetWaterCell","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Light","Summary":"Parent of all light objects","ExplorerOrder":3,"ExplorerImageIndex":13,"Browsable":true,"PreferredParent":"","Members":[{"Name":"Brightness","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"PointLight","Summary":"Makes the parent part emit light in a spherical shape","ExplorerOrder":3,"ExplorerImageIndex":13,"Browsable":true,"PreferredParent":"","Members":[{"Name":"Range","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SpotLight","Summary":"Makes the parent part emit light in a conical shape","ExplorerOrder":3,"ExplorerImageIndex":13,"Browsable":true,"PreferredParent":"","Members":[{"Name":"Range","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Angle","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"SurfaceLight","Summary":"Makes the parent part emit light in a frustum shape from rectangle defined by part","ExplorerOrder":3,"ExplorerImageIndex":13,"Browsable":true,"PreferredParent":"","Members":[{"Name":"Range","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Brightness","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"Angle","Summary":"","Browsable":true,"Deprecated":false,"Preliminary":false,"IsBackend":false}],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"RemoteFunction","Summary":"Allow functions defined in one script to be called by another script across client/server boundary","ExplorerOrder":4,"ExplorerImageIndex":74,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"RemoteEvent","Summary":"Allow events defined in one script to be subscribed to by another script across client/server boundary","ExplorerOrder":5,"ExplorerImageIndex":75,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"TerrainRegion","Summary":"Object representing a snapshot of the region of terrain","ExplorerOrder":2,"ExplorerImageIndex":65,"Browsable":"true","PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false},{"Name":"ModuleScript","Summary":"A script fragment. Only runs when another script uses require() on it.","ExplorerOrder":5,"ExplorerImageIndex":76,"Browsable":true,"PreferredParent":"","Members":[],"Deprecated":false,"Preliminary":false,"IsBackend":false}]]==]
  180.                                 -- TODO: Show critical error
  181.                         end
  182.                         rawRMD = Services.HttpService:JSONDecode(rawRMD)
  183.  
  184.                         local RMD = {}
  185.                         for _,v in pairs(rawRMD) do
  186.                                 RMD[v.Name] = v
  187.                         end
  188.  
  189.                         return RMD
  190.                 end
  191.  
  192.                 function f.checkInPane(window)
  193.                         local inPane = false
  194.                         for i,v in pairs(LPaneItems) do if v.Window == window then inPane = true end end
  195.                         for i,v in pairs(RPaneItems) do if v.Window == window then inPane = true end end
  196.                         return inPane
  197.                 end
  198.  
  199.                 function f.transGui(gui,num)
  200.                         if gui:IsA("GuiObject") then gui.BackgroundTransparency = num end
  201.                         if gui:IsA("TextBox") or gui:IsA("TextLabel") then gui.TextTransparency = num
  202.                         elseif gui:IsA("ImageButton") or gui:IsA("ImageLabel") then gui.ImageTransparency = num end
  203.                         for i,v in pairs(gui:GetChildren()) do
  204.                                 f.transGui(v,num)
  205.                         end
  206.                 end
  207.  
  208.                 function f.hookWindowListener(window)
  209.                         local selected = false
  210.                         local user = Services.UserInputService
  211.  
  212.                         window.TopBar.InputBegan:connect(function(input)
  213.                                 if input.UserInputType == Enum.UserInputType.MouseButton1 then
  214.                                         selected = true
  215.                                         local selectedInit = false
  216.                                         local initPos = {mouse.X,mouse.Y}
  217.                                         local dragOffX,dragOffY = mouse.X-window.TopBar.AbsolutePosition.X,mouse.Y-window.TopBar.AbsolutePosition.Y
  218.                                         local inPane = false
  219.                                         local releaseEvent
  220.                                         local mouseEvent
  221.  
  222.                                         for i,v in pairs(LPaneItems) do if v.Window == window then inPane = true end end
  223.                                         for i,v in pairs(RPaneItems) do if v.Window == window then inPane = true end end
  224.  
  225.                                         releaseEvent = user.InputEnded:Connect(function(input)
  226.                                                 if input.UserInputType ~= Enum.UserInputType.MouseButton1 then return end
  227.                                                 releaseEvent:Disconnect()
  228.                                                 if mouseEvent then mouseEvent:Disconnect() end
  229.                                                 selected = false
  230.                                                 if setPane ~= "None" then window.Position = window.Position - UDim2.new(0,gui.AbsoluteSize.X-300,0,0) f.addToPane(window,setPane) end
  231.                                                 mouseWindow = nil
  232.                                         end)
  233.  
  234.                                         mouseEvent = user.InputChanged:Connect(function(input)
  235.                                                 if input.UserInputType == Enum.UserInputType.MouseMovement and (selectedInit or f.distance(initPos[1],initPos[2],mouse.X,mouse.Y) >= (inPane and 20 or 5)) then
  236.                                                         if not selectedInit then selectedInit = true window.Position = UDim2.new(0,mouse.X-dragOffX,0,mouse.Y-dragOffY) window.Parent = nil end
  237.                                                         for i,v in pairs(LPaneItems) do if v.Window == window then f.removeFromPane(window,"Left") break end end
  238.                                                         for i,v in pairs(RPaneItems) do if v.Window == window then f.removeFromPane(window,"Right") break end end
  239.  
  240.                                                         mouseWindow = window
  241.  
  242.                                                         window.Parent = gui
  243.                                                         window.Position = UDim2.new(0,mouse.X-dragOffX,0,mouse.Y-dragOffY)
  244.                                                         window.Size = UDim2.new(0,window.Size.X.Offset,0,300)
  245.                                                 end
  246.                                         end)
  247.                                 end
  248.                         end)
  249.  
  250.                         --window.TopBar.InputEnded:connect(function(input)
  251.                         --      if input.UserInputType == Enum.UserInputType.MouseButton1 then
  252.                         --              print("OH")
  253.                         --      end
  254.                         --end)
  255.  
  256.                         window.InputBegan:connect(function(input)
  257.                                 if input.UserInputType == Enum.UserInputType.MouseButton1 then
  258.                                         local inPane = f.checkInPane(window)
  259.  
  260.                                         if inPane then return end
  261.  
  262.                                         for i,v in pairs(activeWindows) do
  263.                                                 if v ~= window then
  264.                                                         if f.checkMouseInGui(v) and not f.checkInPane(v) then return end
  265.                                                 end
  266.                                         end                    
  267.  
  268.                                         window.Parent = nil
  269.                                         window.Parent = gui
  270.                                 end
  271.                         end)
  272.  
  273.                         window.TopBar.Close.MouseEnter:connect(function()
  274.                                 window.TopBar.Close.BackgroundTransparency = 0.5
  275.                         end)
  276.  
  277.                         window.TopBar.Close.MouseLeave:connect(function()
  278.                                 window.TopBar.Close.BackgroundTransparency = 1
  279.                         end)
  280.  
  281.                         window.TopBar.Close.MouseButton1Click:connect(function()
  282.                                 if f.checkInPane(window) then f.removeFromPane(window) window.Visible = false return end
  283.                                 window.Content:TweenSize(UDim2.new(1,-4,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quad,0.4,true)
  284.                                 wait(0.4)
  285.                                 window.Visible = false
  286.                         end)
  287.                 end
  288.  
  289.                 -- Explorer Functions
  290.  
  291.                 function f.tabIsA(tab,class)
  292.                         for i,v in pairs(tab) do
  293.                                 if v:IsA(class) then
  294.                                         return true
  295.                                 end
  296.                         end
  297.                         return false
  298.                 end
  299.  
  300.                 function f.hasChildren(tab)
  301.                         for i,v in pairs(tab) do
  302.                                 if #v:GetChildren() > 0 then
  303.                                         return true
  304.                                 end
  305.                         end
  306.                         return false
  307.                 end
  308.  
  309.                 function f.tabHasChar(tab)
  310.                         local players = Services.Players
  311.                         for i,v in pairs(tab) do
  312.                                 if players:GetPlayerFromCharacter(v) then
  313.                                         return true
  314.                                 end
  315.                         end
  316.                         return false
  317.                 end
  318.  
  319.                 function f.expandAll(obj)
  320.                         local node = nodes[obj]
  321.                         while node do
  322.                                 explorerTree.Expanded[node] = true
  323.                                 node = node.Parent
  324.                         end
  325.                 end
  326.  
  327.                 function f.rightClick()
  328.                         rightClickContext:Clear()
  329.  
  330.                         local selection = explorerTree.Selection       
  331.  
  332.                         -- Cut
  333.                         rightClickContext:Add({Name = "Cut", Icon = f.icon(nil,iconIndex.CUT_ICON), DisabledIcon = f.icon(nil,iconIndex.CUT_D_ICON), Shortcut = "Ctrl+X", Disabled = #selection.List == 0, OnClick = function()
  334.                                 print("CUT")
  335.                                 pcall(function()
  336.                                         clipboard = {}
  337.                                         for i,v in pairs(selection.List) do
  338.                                                 table.insert(clipboard,v:Clone())
  339.                                                 v:Destroy()
  340.                                         end
  341.                                 end)
  342.                                 rightClickContext:Hide()
  343.                         end})
  344.  
  345.                         rightClickContext:Add({Name = "Copy", Icon = f.icon(nil,iconIndex.COPY_ICON), DisabledIcon = f.icon(nil,iconIndex.COPY_D_ICON), Shortcut = "Ctrl+C", Disabled = #selection.List == 0, OnClick = function()
  346.                                 print("COPY")
  347.                                 pcall(function()
  348.                                         clipboard = {}
  349.                                         for i,v in pairs(selection.List) do
  350.                                                 table.insert(clipboard,v:Clone())
  351.                                         end
  352.                                 end)
  353.                                 rightClickContext:Hide()
  354.                         end})
  355.  
  356.                         rightClickContext:Add({Name = "Paste Into", Icon = f.icon(nil,iconIndex.PASTE_ICON), DisabledIcon = f.icon(nil,iconIndex.PASTE_D_ICON), Shortcut = "Ctrl+B", Disabled = #clipboard == 0, OnClick = function()
  357.                                 print("PASTE")
  358.                                 pcall(function()
  359.                                         for i,v in pairs(selection.List) do
  360.                                                 for _,copy in pairs(clipboard) do
  361.                                                         copy:Clone().Parent = v
  362.                                                 end
  363.                                         end
  364.                                 end)
  365.                                 rightClickContext:Hide()
  366.                         end})
  367.  
  368.                         rightClickContext:Add({Name = "Duplicate", Icon = f.icon(nil,iconIndex.COPY_ICON), DisabledIcon = f.icon(nil,iconIndex.COPY_D_ICON), Shortcut = "Ctrl+D", Disabled = #selection.List == 0, OnClick = function()
  369.                                 print("DUPLICATE")
  370.                                 pcall(function()
  371.                                         for i,v in pairs(selection.List) do
  372.                                                 v:Clone().Parent = v.Parent
  373.                                         end
  374.                                 end)
  375.                                 rightClickContext:Hide()
  376.                         end})
  377.  
  378.                         rightClickContext:Add({Name = "Delete", Icon = f.icon(nil,iconIndex.DELETE_ICON), DisabledIcon = f.icon(nil,iconIndex.DELETE_D_ICON), Shortcut = "Del", Disabled = #selection.List == 0, OnClick = function()
  379.                                 print("DELETE")
  380.                                 pcall(function()
  381.                                         for i,v in pairs(selection.List) do
  382.                                                 v:Destroy()
  383.                                         end
  384.                                 end)
  385.                                 rightClickContext:Hide()
  386.                         end})
  387.  
  388.                         rightClickContext:Add({Name = "Rename", Icon = "", DisabledIcon = "", Shortcut = "Ctrl+R", Disabled = #selection.List == 0, OnClick = function()
  389.                                 print("RENAME")
  390.                         end})
  391.  
  392.                         rightClickContext:AddDivider()
  393.  
  394.                         rightClickContext:Add({Name = "Group", Icon = f.icon(nil,iconIndex.GROUP_ICON), DisabledIcon = f.icon(nil,iconIndex.GROUP_D_ICON), Shortcut = "Ctrl+G", Disabled = #selection.List == 0, OnClick = function()
  395.                                 print("GROUP")
  396.                                 local base = selection.List[1]
  397.                                 local model = Instance.new("Model",base.Parent)
  398.                                 for i,v in pairs(selection.List) do
  399.                                         v.Parent = model
  400.                                 end
  401.                                 rightClickContext:Hide()
  402.                         end})
  403.  
  404.                         rightClickContext:Add({Name = "Ungroup", Icon = f.icon(nil,iconIndex.UNGROUP_ICON), DisabledIcon = f.icon(nil,iconIndex.UNGROUP_D_ICON), Shortcut = "Ctrl+U", Disabled = not f.tabIsA(selection.List,"Model"), OnClick = function()
  405.                                 print("UNGROUP")
  406.                                 for i,v in pairs(selection.List) do
  407.                                         if v:IsA("Model") then
  408.                                                 for _,child in pairs(v:GetChildren()) do
  409.                                                         child.Parent = v.Parent
  410.                                                 end
  411.                                                 v:Destroy()
  412.                                         end
  413.                                 end
  414.                                 rightClickContext:Hide()
  415.                         end})
  416.  
  417.                         rightClickContext:Add({Name = "Select Children", Icon = f.icon(nil,iconIndex.SELECTCHILDREN_ICON), DisabledIcon = f.icon(nil,iconIndex.SELECTCHILDREN_D_ICON), Shortcut = "", Disabled = not f.hasChildren(selection.List), OnClick = function()
  418.                                 print("SELECT CHILDREN")
  419.                                 local oldSel = selection.List
  420.                                 selection.List = {}
  421.                                 selection.Selected = {}
  422.                                 for i,v in pairs(oldSel) do
  423.                                         for _,child in pairs(v:GetChildren()) do
  424.                                                 explorerTree.Selection:Add(child)
  425.                                                 f.expandAll(child.Parent)
  426.                                         end
  427.                                 end
  428.                                 explorerTree:TreeUpdate()
  429.                                 explorerTree:Refresh()
  430.                                 rightClickContext:Hide()
  431.                         end})
  432.  
  433.                         rightClickContext:Add({Name = "Jump To Parent", Icon = "", DisabledIcon = "", Shortcut = "", Disabled = #selection.List == 0, OnClick = function()
  434.                                 print("JUMP TO PARENT")
  435.                                 local oldSel = selection.List
  436.                                 selection.List = {}
  437.                                 selection.Selected = {}
  438.                                 for i,v in pairs(oldSel) do
  439.                                         if v.Parent ~= nil then
  440.                                                 selection:Add(v.Parent)
  441.                                         end
  442.                                 end
  443.                                 explorerTree:Refresh()
  444.                                 rightClickContext:Hide()
  445.                         end})
  446.  
  447.                         -- Parts
  448.                         if f.tabIsA(selection.List, "BasePart") or f.tabIsA(selection.List, "Model") then
  449.                                 rightClickContext:AddDivider()
  450.  
  451.                                 rightClickContext:Add({Name = "Teleport To", Icon = "", DisabledIcon = "", Shortcut = "", Disabled = #selection.List == 0, OnClick = function()
  452.                                         print("TELEPORT TO")
  453.                                         for i,v in pairs(selection.List) do
  454.                                                 if v:IsA("BasePart") then
  455.                                                         Services.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = v.CFrame
  456.                                                         break;
  457.                                                 end
  458.                                         end
  459.                                         rightClickContext:Hide()
  460.                                 end})
  461.  
  462.                                 rightClickContext:Add({Name = "Teleport Here", Icon = "", DisabledIcon = "", Shortcut = "", Disabled = #selection.List == 0, OnClick = function()
  463.                                         print("TELEPORT HERE")
  464.                                         rightClickContext:Hide()
  465.                                 end})
  466.                         end
  467.  
  468.                         -- Player
  469.                         local hasPlayer = false
  470.  
  471.                         if f.tabIsA(selection.List, "Player") then
  472.                                 hasPlayer = true
  473.                                 rightClickContext:AddDivider()
  474.  
  475.                                 rightClickContext:Add({Name = "Jump To Character", Icon = "", DisabledIcon = "", Shortcut = "", Disabled = #selection.List == 0, OnClick = function()
  476.                                         print("JUMP TO CHARACTER")
  477.                                         rightClickContext:Hide()
  478.                                 end})
  479.                         end
  480.  
  481.                         if f.tabHasChar(selection.List) then
  482.                                 if not hasPlayer then rightClickContext:AddDivider() end
  483.  
  484.                                 rightClickContext:Add({Name = "Jump To Player", Icon = "", DisabledIcon = "", Shortcut = "", Disabled = #selection.List == 0, OnClick = function()
  485.                                         print("JUMP TO PLAYER")
  486.                                         rightClickContext:Hide()
  487.                                 end})
  488.                         end
  489.  
  490.                         rightClickContext:Refresh()
  491.                         rightClickContext:Show(gui,mouse.X,mouse.Y)
  492.                 end
  493.  
  494.                 function f.newExplorer()
  495.                         local newgui = getResource("ExplorerPanel")
  496.                         local explorerScroll = ScrollBar.new()
  497.                         local explorerScrollH = ScrollBar.new(true)
  498.                         local newTree = TreeView.new()
  499.                         newTree.Scroll = explorerScroll
  500.                         newTree.DisplayFrame = newgui.Content.List
  501.                         newTree.TreeUpdate = f.updateTree
  502.                         newTree.SearchText = ""
  503.                         newTree.SearchExpanded = {}
  504.  
  505.                         local nameEvents = {}
  506.  
  507.                         newTree.PreUpdate = function(self)
  508.                                 for i,v in pairs(nameEvents) do v:Disconnect() nameEvents[i] = nil end
  509.                         end
  510.  
  511.                         newTree.NodeCreate = function(self,entry,i)
  512.                                 entry.Indent.IconFrame.Icon.Image = iconMap
  513.  
  514.                                 entry.MouseEnter:Connect(function()
  515.                                         local node = self.Tree[i + self.Index]
  516.                                         if node then
  517.                                                 if self.Selection.Selected[node.Obj] then return end
  518.                                                 if rightClickContext.Frame.Parent ~= nil and f.checkMouseInGui(rightClickContext.Frame) then return end
  519.                                                 entry.BackgroundTransparency = 0.7
  520.                                         end
  521.                                 end)
  522.                                 entry.MouseLeave:Connect(function()
  523.                                         local node = self.Tree[i + self.Index]
  524.                                         if node then
  525.                                                 if self.Selection.Selected[node.Obj] then return end
  526.                                                 entry.BackgroundTransparency = 1
  527.                                         end
  528.                                 end)                                           
  529.                                 entry.MouseButton1Down:Connect(function()
  530.                                         local node = self.Tree[i + self.Index]
  531.                                         if Services.UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then
  532.                                                 self.Selection:Add(node.Obj)
  533.                                         else
  534.                                                 self.Selection:Set({node.Obj})
  535.                                         end
  536.                                         self:Refresh()
  537.                                         propertiesTree:TreeUpdate()
  538.                                         propertiesTree:Refresh()
  539.                                 end)
  540.                                 entry.MouseButton2Down:Connect(function()
  541.                                         local node = self.Tree[i + self.Index]
  542.                                         rightEntry = entry
  543.                                         rightClickContext.Frame.Parent = nil
  544.                                         if not self.Selection.Selected[node.Obj] then
  545.                                                 self.Selection:Set({node.Obj})
  546.                                         end
  547.                                         self:Refresh()
  548.                                 end)
  549.                                 entry.MouseButton2Up:Connect(function()
  550.                                         if rightEntry and f.checkMouseInGui(rightEntry) then
  551.                                                 f.rightClick()
  552.                                         end
  553.                                 end)
  554.  
  555.                                 entry.Indent.Expand.MouseEnter:Connect(function()
  556.                                         local node = self.Tree[i + self.Index]
  557.                                         if node then
  558.                                                 if (not self.SearchResults and self.Expanded[node]) or (self.SearchResults and self.SearchExpanded[node.Obj]) then
  559.                                                         f.icon(entry.Indent.Expand,iconIndex.NodeExpandedOver)
  560.                                                 else
  561.                                                         f.icon(entry.Indent.Expand,iconIndex.NodeCollapsedOver)
  562.                                                 end
  563.                                         end
  564.                                 end)
  565.                                 entry.Indent.Expand.MouseLeave:Connect(function()
  566.                                         local node = self.Tree[i + self.Index]
  567.                                         if node then
  568.                                                 if (not self.SearchResults and self.Expanded[node]) or (self.SearchResults and self.SearchExpanded[node.Obj]) then
  569.                                                         f.icon(entry.Indent.Expand,iconIndex.NodeExpanded)
  570.                                                 else
  571.                                                         f.icon(entry.Indent.Expand,iconIndex.NodeCollapsed)
  572.                                                 end
  573.                                         end
  574.                                 end)
  575.                                 entry.Indent.Expand.MouseButton1Down:Connect(function()
  576.                                         local node = self.Tree[i + self.Index]
  577.                                         if node and not self.SearchResults then
  578.                                                 self:Expand(node)
  579.                                         else
  580.                                                 if self.SearchExpanded[node.Obj] then
  581.                                                         self.SearchExpanded[node.Obj] = nil
  582.                                                 else
  583.                                                         self.SearchExpanded[node.Obj] = 2
  584.                                                 end
  585.                                                 if self.TreeUpdate then self:TreeUpdate() end
  586.                                                 self:Refresh()
  587.                                         end
  588.                                 end)
  589.                         end
  590.  
  591.                         newTree.NodeDraw = function(self,entry,node)
  592.                                 f.icon(entry.Indent.IconFrame,iconIndex[node.Obj.ClassName] or 0)
  593.                                 entry.Indent.EntryName.Text = node.Obj.Name                                                                    
  594.                                 if #node > 0 then
  595.                                         entry.Indent.Expand.Visible = true
  596.                                         if (not self.SearchResults and self.Expanded[node]) or (self.SearchResults and self.SearchExpanded[node.Obj] == 2) then
  597.                                                 f.icon(entry.Indent.Expand,iconIndex.NodeExpanded)
  598.                                         else
  599.                                                 f.icon(entry.Indent.Expand,iconIndex.NodeCollapsed)
  600.                                         end
  601.                                         if self.SearchExpanded[node.Obj] == 1 then
  602.                                                 entry.Indent.Expand.Visible = false
  603.                                         end
  604.                                 else
  605.                                         entry.Indent.Expand.Visible = false
  606.                                 end
  607.  
  608.                                 if node.Obj.Parent ~= node.Parent.Obj then
  609.                                         spawn(function() f.moveObject(node.Obj,node.Obj.Parent) end)
  610.                                 end
  611.  
  612.                                 if self.Selection.Selected[node.Obj] then
  613.                                         entry.Indent.EntryName.TextColor3 = Color3.new(1,1,1)
  614.                                         entry.BackgroundTransparency = 0
  615.                                 else
  616.                                         entry.Indent.EntryName.TextColor3 = Color3.new(220/255, 220/255, 220/255)
  617.                                         entry.BackgroundTransparency = 1
  618.                                 end
  619.  
  620.                                 nameEvents[node.Obj] = node.Obj:GetPropertyChangedSignal("Name"):Connect(function()
  621.                                         entry.Indent.EntryName.Text = node.Obj.Name
  622.                                 end)
  623.  
  624.                                 entry.Indent.Position = UDim2.new(0,18*node.Depth,0,0)
  625.                                 entry.Size = UDim2.new(0,nodeWidth+10,0,18)
  626.                         end
  627.  
  628.                         explorerScroll.Gui.Parent = newgui.Content
  629.                         explorerScroll:Texture({
  630.                                 FrameColor = Color3.new(80/255,80/255,80/255),
  631.                                 ThumbColor = Color3.new(120/255,120/255,120/255),
  632.                                 ThumbSelectColor = Color3.new(140/255,140/255,140/255),
  633.                                 ButtonColor = Color3.new(163/255,162/255,165/255),
  634.                                 ArrowColor = Color3.new(220/255,220/255,220/255)
  635.                         })
  636.                         explorerScroll:SetScrollFrame(newgui.Content,3)
  637.  
  638.                         explorerScrollH.Gui.Visible = false
  639.                         explorerScrollH.Gui.Parent = newgui.Content
  640.                         explorerScrollH:Texture({
  641.                                 FrameColor = Color3.new(80/255,80/255,80/255),
  642.                                 ThumbColor = Color3.new(120/255,120/255,120/255),
  643.                                 ThumbSelectColor = Color3.new(140/255,140/255,140/255),
  644.                                 ButtonColor = Color3.new(163/255,162/255,165/255),
  645.                                 ArrowColor = Color3.new(220/255,220/255,220/255)
  646.                         })
  647.                         explorerScrollH.Gui.Position = UDim2.new(0,0,1,-16)
  648.                         explorerScrollH.Gui.Size = UDim2.new(1,-16,0,16)
  649.  
  650.                         newTree.OnUpdate = function(self)
  651.                                 local guiX = explorerPanel.Content.AbsoluteSize.X-16
  652.                                 explorerScrollH.VisibleSpace = guiX
  653.                                 explorerScrollH.TotalSpace = nodeWidth+10
  654.                                 if nodeWidth > guiX then
  655.                                         explorerScrollH.Gui.Visible = true
  656.                                         explorerScroll.Gui.Size = UDim2.new(0,16,1,-16)
  657.                                         self.DisplayFrame.Size = UDim2.new(1,-16,1,-16)
  658.                                 else
  659.                                         explorerScrollH.Gui.Visible = false
  660.                                         explorerScroll.Gui.Size = UDim2.new(0,16,1,0)
  661.                                         self.DisplayFrame.Size = UDim2.new(1,-16,1,0)
  662.                                 end
  663.                                 explorerScroll.TotalSpace = #self.Tree + 1
  664.                                 explorerScroll.VisibleSpace = math.ceil(self.DisplayFrame.AbsoluteSize.Y / 19)
  665.                                 explorerScrollH:Update()               
  666.                                 explorerScroll:Update()
  667.                         end
  668.                         explorerScroll.OnUpdate = function(self) if newTree.Index == self.Index then return end newTree.Index = self.Index newTree:Refresh() end
  669.                         explorerScrollH.OnUpdate = function(self)
  670.                                 for i,v in pairs(explorerTree.Entries) do
  671.                                         v.Position = UDim2.new(0,1-self.Index,0,v.Position.Y.Offset)
  672.                                 end
  673.                         end
  674.                         --explorerData = {Window = newgui, NodeData = {}, Scroll = explorerScroll, Entries = {}}
  675.  
  676.                         explorerTree = newTree
  677.  
  678.                         table.insert(activeWindows,newgui)
  679.                         f.hookWindowListener(newgui)
  680.                         newgui.Changed:connect(function(prop) if prop == "AbsoluteSize" or prop == "AbsolutePosition" then newTree:Refresh() end end)
  681.  
  682.                         local searchBox = newgui.TopBar.SearchFrame.Search
  683.                         local searchAnim = searchBox.Parent.Entering
  684.                         searchBox:GetPropertyChangedSignal("Text"):Connect(function()
  685.                                 local searchTime = tick()
  686.                                 lastSearch = searchTime
  687.                                 wait()
  688.                                 if lastSearch ~= searchTime then return end
  689.                                 newTree.SearchText = searchBox.Text
  690.                                 f.updateSearch(newTree)
  691.                                 explorerTree:TreeUpdate()
  692.                                 explorerTree:Refresh()
  693.                         end)
  694.  
  695.                         searchBox.Focused:Connect(function()
  696.                                 searchBox.Empty.Visible = false
  697.                                 searchAnim:TweenSizeAndPosition(UDim2.new(1,0,0,2),UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  698.                         end)
  699.  
  700.                         searchBox.FocusLost:Connect(function()
  701.                                 if searchBox.Text == "" then searchBox.Empty.Visible = true else searchBox.Empty.Visible = false end
  702.                                 searchAnim:TweenSizeAndPosition(UDim2.new(0,0,0,2),UDim2.new(0.5,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  703.                         end)
  704.  
  705.                         return newgui
  706.                 end
  707.  
  708.                 function f.refreshExplorer()
  709.                         --if updateDebounce then return end
  710.                         --updateDebounce = true
  711.                         --Services.RunService.RenderStepped:wait()
  712.                         --updateDebounce = false
  713.                         explorerTree:Refresh()
  714.                 end
  715.  
  716.                 function f.makeWindow(name)
  717.                         local newWindow = getResource(name)
  718.  
  719.                         table.insert(activeWindows,newWindow)
  720.                         f.hookWindowListener(newWindow)
  721.  
  722.                         return newWindow
  723.                 end
  724.  
  725.                 function f.getRMDOrder(class)
  726.                         local currentClass = API.Classes[class]
  727.                         while currentClass do
  728.                                 if RMD[currentClass.Name] and RMD[currentClass.Name].ExplorerOrder then return RMD[currentClass.Name].ExplorerOrder end
  729.                                 currentClass = API.Classes[currentClass.Superclass]
  730.                         end
  731.                         return 999
  732.                 end
  733.  
  734.                 function f.reDepth(node,depth)
  735.                         for i,v in ipairs(node) do
  736.                                 v.Depth = depth + 1
  737.                                 f.reDepth(node[i], depth + 1)
  738.                         end
  739.                 end
  740.  
  741.                 function f.moveObject(obj,par)
  742.                         ypcall(function()
  743.                                 if obj.Parent == nil then return end
  744.                                 local node = nodes[obj]
  745.                                 local newNode = nodes[par]
  746.                                 if node and newNode then
  747.                                         local parNode = node.Parent
  748.                                         for i,v in ipairs(parNode) do
  749.                                                 if v == node then
  750.                                                         table.remove(parNode,i)
  751.                                                         break
  752.                                                 end
  753.                                         end
  754.  
  755.                                         node.Depth = f.depth(par) + 1
  756.                                         f.reDepth(node,node.Depth)
  757.  
  758.                                         node.Parent = newNode
  759.                                         newNode.Sorted = nil
  760.                                         table.insert(newNode,node)
  761.  
  762.                                         if not updateDebounce then
  763.                                                 updateDebounce = true
  764.                                                 wait()
  765.                                                 updateDebounce = false
  766.                                                 explorerTree:TreeUpdate()
  767.                                                 f.refreshExplorer()
  768.                                         end
  769.                                 end
  770.                         end)
  771.                 end
  772.  
  773.                 function f.addObject(obj,noupdate,recurse)
  774.                         ypcall(function()
  775.                                 local access = obj.Changed
  776.                                 if not nodes[obj.Parent] then return end
  777.                                 local newNode = {
  778.                                         Obj = obj,
  779.                                         Parent = nodes[obj.Parent],
  780.                                         --Ind = #nodes[obj.Parent] + 1,
  781.                                         ExplorerOrder = f.getRMDOrder(obj.ClassName),
  782.                                         Depth = f.depth(obj),
  783.                                         UID = tick()--RMD[v.ClassName] and (RMD[v.ClassName].ExplorerOrder or 999) or 999
  784.                                 }
  785.                                 if newNode.ExplorerOrder  nodeWidth and textWidth or nodeWidth
  786.                                                 table.insert(tree,node[i])
  787.                                                 if (not isSearching and explorerTree.Expanded[node[i]]) or (isSearching and searchExpanded[node[i].Obj] == 2) then
  788.                                                         fillTree(node[i],tree)
  789.                                                 end
  790.                                         end
  791.                                 end
  792.                         end
  793.  
  794.                         self.Tree = {}
  795.                         fillTree(nodes[game],self.Tree)
  796.                         --self.Scroll:Update()
  797.                 end
  798.  
  799.                 function f.icon(frame,index)
  800.                         local row,col = math.floor(index/14%14),math.floor(index%14)
  801.                         local pad,border = 2,1
  802.                         if not frame then
  803.                                 frame = Instance.new("Frame")
  804.                                 frame.BackgroundTransparency = 1
  805.                                 frame.Size = UDim2.new(0,16,0,16)
  806.                                 frame.ClipsDescendants = true
  807.                                 local newMap = Instance.new("ImageLabel",frame)
  808.                                 newMap.Name = "Icon"
  809.                                 newMap.BackgroundTransparency = 1
  810.                                 newMap.Size = UDim2.new(16,0,16,0)
  811.                                 newMap.Image = iconMap
  812.                         end
  813.                         local icon = frame.Icon
  814.                         icon.Position = UDim2.new(-col - (pad*(col+1) + border)/16,0,-row - (pad*(row+1) + border)/16,0)
  815.                         return frame
  816.                 end
  817.  
  818.                 function f.depth(obj)
  819.                         local depth = 0
  820.                         local curPar = obj.Parent
  821.                         while curPar ~= nil do
  822.                                 curPar = curPar.Parent
  823.                                 depth = depth + 1
  824.                         end
  825.                         return depth
  826.                 end
  827.  
  828.                 local Selection do
  829.                         Selection = {
  830.                                 List = {},
  831.                                 Selected = {}
  832.                         }
  833.  
  834.                         function Selection:Add(obj)
  835.                                 if Selection.Selected[obj] then return end
  836.  
  837.                                 Selection.Selected[obj] = true
  838.                                 table.insert(Selection.List,obj)
  839.                         end
  840.  
  841.                         function Selection:Set(objs)
  842.                                 for i,v in pairs(Selection.List) do
  843.                                         Selection.Selected[v] = nil
  844.                                 end
  845.                                 Selection.List = {}
  846.  
  847.                                 for i,v in pairs(objs) do
  848.                                         if not Selection.Selected[v] then
  849.                                                 Selection.Selected[v] = true
  850.                                                 table.insert(Selection.List,v)
  851.                                         end
  852.                                 end
  853.                         end
  854.  
  855.                         function Selection:Remove(obj)
  856.                                 if not Selection.Selected[obj] then return end
  857.  
  858.                                 Selection.Selected[obj] = false
  859.                                 for i,v in pairs(Selection.List) do
  860.                                         if v == obj then table.remove(Selection.List,i) break end
  861.                                 end
  862.                         end
  863.                 end
  864.  
  865.                 function f.refreshExplorers(id)
  866.                         --wait()
  867.                         local e = explorerData
  868.                         local window = e.Window
  869.                         local scroll = e.Scroll
  870.                         local entrySpace = math.floor(window.Content.List.AbsoluteSize.Y / 19) + 1
  871.  
  872.                         scroll.TotalSpace = #e.Tree
  873.                         scroll.VisibleSpace = entrySpace - 1           
  874.  
  875.                         for i = 1,entrySpace do
  876.                                 local node = e.Tree[i + scroll.Index]
  877.                                 if node then
  878.                                         local nodeData = e.NodeData[node.Obj]
  879.                                         local cEntry = e.Entries[i]
  880.                                         if not cEntry then
  881.                                                 cEntry = entryTemplate:Clone()
  882.                                                 cEntry.Position = UDim2.new(0,1,0,2 + 19 * #window.Content.List:GetChildren())
  883.                                                 cEntry.Parent = window.Content.List
  884.                                                 e.Entries[i] = cEntry
  885.  
  886.                                                 cEntry.MouseEnter:connect(function()
  887.                                                         local node = e.Tree[i + scroll.Index]
  888.                                                         if node then
  889.                                                                 if Selection.Selected[node.Obj] then return end
  890.                                                                 cEntry.BackgroundTransparency = 0.7
  891.                                                         end
  892.                                                 end)
  893.                                                 cEntry.MouseLeave:connect(function()
  894.                                                         local node = e.Tree[i + scroll.Index]
  895.                                                         if node then
  896.                                                                 if Selection.Selected[node.Obj] then return end
  897.                                                                 cEntry.BackgroundTransparency = 1
  898.                                                         end
  899.                                                 end)                                           
  900.                                                 cEntry.MouseButton1Down:connect(function()
  901.                                                         local node = e.Tree[i + scroll.Index]
  902.                                                         if Services.UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then
  903.                                                                 Selection:Add(node.Obj)
  904.                                                         else
  905.                                                                 Selection:Set({node.Obj})
  906.                                                         end
  907.                                                         f.refreshExplorer()
  908.                                                 end)
  909.  
  910.                                                 cEntry.Indent.Expand.MouseEnter:connect(function()
  911.                                                         local node = e.Tree[i + scroll.Index]
  912.                                                         if node then
  913.                                                                 if not e.NodeData[node.Obj] then e.NodeData[node.Obj] = {} end
  914.                                                                 if e.NodeData[node.Obj].Expanded then
  915.                                                                         f.icon(cEntry.Indent.Expand,iconIndex.NodeExpandedOver)
  916.                                                                 else
  917.                                                                         f.icon(cEntry.Indent.Expand,iconIndex.NodeCollapsedOver)
  918.                                                                 end
  919.                                                         end
  920.                                                 end)
  921.                                                 cEntry.Indent.Expand.MouseLeave:connect(function()
  922.                                                         local node = e.Tree[i + scroll.Index]
  923.                                                         if node then
  924.                                                                 if not e.NodeData[node.Obj] then e.NodeData[node.Obj] = {} end
  925.                                                                 if e.NodeData[node.Obj].Expanded then
  926.                                                                         f.icon(cEntry.Indent.Expand,iconIndex.NodeExpanded)
  927.                                                                 else
  928.                                                                         f.icon(cEntry.Indent.Expand,iconIndex.NodeCollapsed)
  929.                                                                 end
  930.                                                         end
  931.                                                 end)
  932.                                                 cEntry.Indent.Expand.MouseButton1Down:connect(function()
  933.                                                         local node = e.Tree[i + scroll.Index]
  934.                                                         if node then
  935.                                                                 if not e.NodeData[node.Obj] then e.NodeData[node.Obj] = {} end
  936.                                                                 if e.NodeData[node.Obj].Expanded then
  937.                                                                         e.NodeData[node.Obj].Expanded = false
  938.                                                                 else
  939.                                                                         e.NodeData[node.Obj].Expanded = true
  940.                                                                 end
  941.                                                                 f.updateTree()
  942.                                                                 f.refreshExplorer()
  943.                                                         end
  944.                                                 end)
  945.                                         end
  946.  
  947.                                         cEntry.Visible = true
  948.                                         f.icon(cEntry.Indent.IconFrame,iconIndex[node.Obj.ClassName] or 0)
  949.                                         cEntry.Indent.EntryName.Text = node.Obj.Name                                                                   
  950.                                         if #node.Obj:GetChildren() > 0 then
  951.                                                 cEntry.Indent.Expand.Visible = true
  952.                                                 if nodeData and nodeData.Expanded then
  953.                                                         f.icon(cEntry.Indent.Expand,iconIndex.NodeExpanded)
  954.                                                 else
  955.                                                         f.icon(cEntry.Indent.Expand,iconIndex.NodeCollapsed)
  956.                                                 end
  957.                                         else
  958.                                                 cEntry.Indent.Expand.Visible = false
  959.                                         end
  960.  
  961.                                         if Selection.Selected[node.Obj] then
  962.                                                 cEntry.Indent.EntryName.TextColor3 = Color3.new(1,1,1)
  963.                                                 cEntry.BackgroundTransparency = 0
  964.                                         else
  965.                                                 cEntry.Indent.EntryName.TextColor3 = Color3.new(220/255, 220/255, 220/255)
  966.                                                 cEntry.BackgroundTransparency = 1
  967.                                         end
  968.  
  969.                                         cEntry.Indent.Position = UDim2.new(0,18*node.Depth,0,0)
  970.                                 else
  971.                                         local cEntry = e.Entries[i]
  972.                                         if cEntry then
  973.                                                 cEntry.Visible = false
  974.                                         end
  975.                                 end
  976.                         end
  977.  
  978.                         -- Outliers
  979.                         for i = entrySpace+1, #e.Entries do
  980.                                 if e.Entries[i] then
  981.                                         e.Entries[i]:Destroy()
  982.                                         e.Entries[i] = nil
  983.                                 end
  984.                         end
  985.                 end
  986.  
  987.                 -- Properties Functions
  988.  
  989.                 function f.toValue(str,valueType)
  990.                         if valueType == "int" or valueType == "float" or valueType == "double" then
  991.                                 return tonumber(str)
  992.                         end
  993.                 end
  994.  
  995.                 function f.childValue(prop,value,obj)
  996.                         local propName = prop.Name
  997.                         local parentPropName = prop.ParentProp.Name
  998.                         local parentPropType = prop.ParentProp.ValueType
  999.                         local objProp = obj[parentPropName]
  1000.  
  1001.                         if parentPropType == "Vector3" then
  1002.                                 return Vector3.new(
  1003.                                         propName == "X" and value or objProp.X,
  1004.                                         propName == "Y" and value or objProp.Y,
  1005.                                         propName == "Z" and value or objProp.Z
  1006.                                 )
  1007.                         elseif parentPropType == "Rect2D" then
  1008.                                 return Rect.new(
  1009.                                         propName == "X0" and value or objProp.Min.X,
  1010.                                         propName == "Y0" and value or objProp.Min.Y,
  1011.                                         propName == "X1" and value or objProp.Max.X,
  1012.                                         propName == "Y1" and value or objProp.Max.Y
  1013.                                 )
  1014.                         end
  1015.                 end
  1016.  
  1017.                 function f.setProp(prop,str,child)
  1018.                         local value = f.toValue(str,prop.ValueType)
  1019.                         if value then
  1020.                                 for i,v in pairs(explorerTree.Selection.List) do
  1021.                                         pcall(function()
  1022.                                                 if v:IsA(prop.Class) then
  1023.                                                         if #child == 0 then
  1024.                                                                 v[prop.Name] = value
  1025.                                                         else
  1026.                                                                 v[prop.ParentProp.Name] = f.childValue(prop,value,v)
  1027.                                                         end
  1028.                                                 end
  1029.                                         end)
  1030.                                 end
  1031.                         end
  1032.                 end
  1033.  
  1034.                 local propControls = {
  1035.                         ["Default"] = function(prop,child)
  1036.                                 local newMt = setmetatable({},{})
  1037.  
  1038.                                 local controlGui,readOnlyText,lastValue
  1039.  
  1040.                                 local function setup(self,frame)
  1041.                                         controlGui = resources.PropControls.String:Clone()
  1042.                                         readOnlyText = controlGui.ReadOnly             
  1043.  
  1044.                                         if prop.Tags["readonly"] then
  1045.                                                 if lastValue then readOnlyText.Text = tostring(lastValue) end
  1046.                                                 readOnlyText.Visible = true
  1047.                                                 readOnlyText.Parent = frame
  1048.                                         else
  1049.                                                 if lastValue then controlGui.Text = tostring(lastValue) end
  1050.                                                 controlGui.FocusLost:Connect(function()
  1051.                                                         f.setProp(prop,controlGui.Text,child or {})
  1052.                                                 end)
  1053.                                                 controlGui.Parent = frame
  1054.                                         end    
  1055.                                 end
  1056.                                 newMt.Setup = setup
  1057.  
  1058.                                 local function update(self,value)
  1059.                                         lastValue = value
  1060.                                         if not controlGui then return end
  1061.                                         if not prop.Tags["readonly"] then
  1062.                                                 controlGui.Text = tostring(value)
  1063.                                         else
  1064.                                                 readOnlyText.Text = tostring(value)
  1065.                                         end
  1066.                                 end    
  1067.                                 newMt.Update = update
  1068.  
  1069.                                 local function focus(self)
  1070.                                         controlGui:CaptureFocus()
  1071.                                 end
  1072.                                 newMt.Focus = focus
  1073.                                 return newMt
  1074.                         end,
  1075.                         ["Vector3"] = function(prop,child)
  1076.                                 local newMt = setmetatable({},{})
  1077.  
  1078.                                 local controlGui,readOnlyText
  1079.  
  1080.                                 local function setup(self,frame)
  1081.                                         controlGui = resources.PropControls.String:Clone()
  1082.                                         readOnlyText = controlGui.ReadOnly             
  1083.  
  1084.                                         if prop.Tags["readonly"] then
  1085.                                                 readOnlyText.Visible = true
  1086.                                                 readOnlyText.Parent = frame
  1087.                                         else
  1088.                                                 controlGui.FocusLost:Connect(function()
  1089.                                                         f.setProp(prop,controlGui.Text,child or {})
  1090.                                                 end)
  1091.                                                 controlGui.Parent = frame
  1092.                                         end    
  1093.                                 end
  1094.                                 newMt.Setup = setup
  1095.  
  1096.                                 local function update(self,value)
  1097.                                         if not prop.Tags["readonly"] then
  1098.                                                 controlGui.Text = tostring(value)
  1099.                                                 self.Children[1].Control:Update(value.X)
  1100.                                                 self.Children[2].Control:Update(value.Y)
  1101.                                                 self.Children[3].Control:Update(value.Z)
  1102.                                         else
  1103.                                                 readOnlyText.Text = tostring(value)
  1104.                                                 self.Children[1].Control:Update(value.X)
  1105.                                                 self.Children[2].Control:Update(value.Y)
  1106.                                                 self.Children[3].Control:Update(value.Z)
  1107.                                         end
  1108.                                 end    
  1109.                                 newMt.Update = update
  1110.  
  1111.                                 local function focus(self)
  1112.                                         controlGui:CaptureFocus()
  1113.                                 end
  1114.                                 newMt.Focus = focus
  1115.  
  1116.                                 newMt.Children = {
  1117.                                         f.getChildProp(prop,{Name = "X",ValueType = "double",Depth = 2}),
  1118.                                         f.getChildProp(prop,{Name = "Y",ValueType = "double",Depth = 2}),
  1119.                                         f.getChildProp(prop,{Name = "Z",ValueType = "double",Depth = 2})
  1120.                                 }
  1121.  
  1122.                                 return newMt
  1123.                         end,
  1124.                         ["Rect2D"] = function(prop,child)
  1125.                                 local newMt = setmetatable({},{})
  1126.  
  1127.                                 local controlGui,readOnlyText
  1128.  
  1129.                                 local function setup(self,frame)
  1130.                                         controlGui = resources.PropControls.String:Clone()
  1131.                                         readOnlyText = controlGui.ReadOnly             
  1132.  
  1133.                                         if prop.Tags["readonly"] then
  1134.                                                 readOnlyText.Visible = true
  1135.                                                 readOnlyText.Parent = frame
  1136.                                         else
  1137.                                                 controlGui.FocusLost:Connect(function()
  1138.                                                         f.setProp(prop,controlGui.Text,child or {})
  1139.                                                 end)
  1140.                                                 controlGui.Parent = frame
  1141.                                         end    
  1142.                                 end
  1143.                                 newMt.Setup = setup
  1144.  
  1145.                                 local function update(self,value)
  1146.                                         if not prop.Tags["readonly"] then
  1147.                                                 controlGui.Text = tostring(value)
  1148.                                                 self.Children[1].Control:Update(value.Min.X)
  1149.                                                 self.Children[2].Control:Update(value.Min.Y)
  1150.                                                 self.Children[3].Control:Update(value.Max.X)
  1151.                                                 self.Children[4].Control:Update(value.Max.Y)
  1152.                                         else
  1153.                                                 readOnlyText.Text = tostring(value)
  1154.                                                 self.Children[1].Control:Update(value.Min.X)
  1155.                                                 self.Children[2].Control:Update(value.Min.Y)
  1156.                                                 self.Children[3].Control:Update(value.Max.X)
  1157.                                                 self.Children[4].Control:Update(value.Max.Y)
  1158.                                         end
  1159.                                 end    
  1160.                                 newMt.Update = update
  1161.  
  1162.                                 local function focus(self)
  1163.                                         controlGui:CaptureFocus()
  1164.                                 end
  1165.                                 newMt.Focus = focus
  1166.  
  1167.                                 newMt.Children = {
  1168.                                         f.getChildProp(prop,{Name = "X0",ValueType = "double",Depth = 2}),
  1169.                                         f.getChildProp(prop,{Name = "Y0",ValueType = "double",Depth = 2}),
  1170.                                         f.getChildProp(prop,{Name = "X1",ValueType = "double",Depth = 2}),
  1171.                                         f.getChildProp(prop,{Name = "Y1",ValueType = "double",Depth = 2})
  1172.                                 }
  1173.  
  1174.                                 return newMt
  1175.                         end
  1176.                 }
  1177.  
  1178.                 function f.getPropControl(prop,child)
  1179.                         local control = propControls[prop.ValueType] or propControls["Default"]
  1180.                         return control(prop,child)
  1181.                 end
  1182.  
  1183.         --[[
  1184.         local propExpandable = {
  1185.                 ["Vector3"] = true
  1186.         }
  1187.         --]]
  1188.  
  1189.         --[[
  1190.         function f.getChildrenControls(obj,prop)
  1191.                 local children = {}
  1192.                 if prop.ValueType == "Vector3" then
  1193.                         local newProp = {}
  1194.                         for i,v in pairs(prop) do newProp[i] = v end
  1195.                         newProp.ValueType = "double"
  1196.                         newProp.Name = "X"
  1197.                         newProp.ParentName = prop.Name
  1198.                         newProp.ParentType = prop.ValueType
  1199.                         local newNode = {
  1200.                                 Prop = newProp,
  1201.                                 RefName = prop.Class.."|"..prop.Name.."|X",
  1202.                                 Control = f.getPropControl(newProp,{"X"}),
  1203.                                 Depth = 2,
  1204.                                 Obj = obj,
  1205.                                 Children = {}
  1206.                         }
  1207.                         table.insert(children,newNode)
  1208.                 end
  1209.                 return children
  1210.         end
  1211.         --]]
  1212.  
  1213.                 function f.getChildProp(prop,data)
  1214.                         local newProp = {
  1215.                                 Name = data.Name,
  1216.                                 ValueType = data.ValueType,
  1217.                                 ParentProp = prop,
  1218.                                 Tags = prop.Tags,
  1219.                                 Class = prop.Class
  1220.                         }
  1221.                         local childNode = {
  1222.                                 Prop = newProp,
  1223.                                 RefName = prop.Class.."|"..prop.Name.."|"..data.Name,
  1224.                                 Control = f.getPropControl(newProp,{data.Name}),
  1225.                                 Depth = data.Depth,
  1226.                                 Children = {}
  1227.                         }
  1228.                         return childNode
  1229.                 end
  1230.  
  1231.                 function f.updatePropTree(self)
  1232.                         self.Tree = {}
  1233.  
  1234.                         propWidth = 0
  1235.                         local gotProps = {}
  1236.                         local props = {}
  1237.                         local newTree = {}     
  1238.  
  1239.                         for i,v in pairs(explorerTree.Selection.List) do
  1240.                                 local class = API.Classes[v.ClassName]
  1241.                                 while class ~= nil and not gotProps[class.Name] do
  1242.                                         for _,prop in pairs(class.Properties) do
  1243.                                                 pcall(function()
  1244.                                                         local check = v[prop.Name]
  1245.                                                         local categoryList = propCategories[class.Name] or {}
  1246.                                                         local newNode = {
  1247.                                                                 Prop = prop,
  1248.                                                                 RefName = class.Name.."|"..prop.Name,
  1249.                                                                 Obj = v,
  1250.                                                                 Control = f.getPropControl(prop),
  1251.                                                                 Depth = 1,
  1252.                                                                 --Children = f.getChildrenControls(v,prop)
  1253.                                                         }
  1254.                                                         --f.setupControls(newNode)
  1255.                                                         --newNode.Control.Children = newNode.Children
  1256.                                                         local textWidth = f.textWidth(prop.Name) + newNode.Depth * 18 + 5
  1257.                                                         propWidth = textWidth > propWidth and textWidth or propWidth
  1258.                                                         table.insert(props,newNode)
  1259.                                                 end)
  1260.                                         end
  1261.                                         gotProps[class.Name] = true
  1262.                                         class = API.Classes[class.Superclass]
  1263.                                 end
  1264.                         end
  1265.  
  1266.                         table.sort(props,function(a,b)
  1267.                                 local o1 = categoryOrder[a.Prop.Category] or 0
  1268.                                 local o2 = categoryOrder[b.Prop.Category] or 0
  1269.                                 if o1 ~= o2 then
  1270.                                         return o1 < o2
  1271.                                 else
  1272.                                         return a.Prop.Name < b.Prop.Name
  1273.                                 end
  1274.                         end)
  1275.  
  1276.                         local nextCategory = ""
  1277.                         local categoryNode
  1278.                         for i,v in pairs(props) do
  1279.                                 if nextCategory ~= v.Prop.Category then
  1280.                                         nextCategory = v.Prop.Category
  1281.                                         categoryNode = {
  1282.                                                 Category = true,
  1283.                                                 RefName = "CAT:"..nextCategory,
  1284.                                                 Prop = {Name=nextCategory},
  1285.                                                 Depth = 1
  1286.                                         }
  1287.                                         table.insert(newTree,categoryNode)
  1288.                                 end
  1289.                                 if self.Expanded["CAT:"..nextCategory] then
  1290.                                         table.insert(newTree,v)
  1291.                                         if v.Control.Children and self.Expanded[v.RefName] then
  1292.                                                 for _,child in pairs(v.Control.Children) do
  1293.                                                         table.insert(newTree,child)
  1294.                                                 end
  1295.                                         end
  1296.                                 end
  1297.                         end
  1298.  
  1299.                         self.Tree = newTree
  1300.                 end
  1301.  
  1302.                 function f.newProperties()
  1303.                         local newgui = getResource("PropertiesPanel")
  1304.                         local propertiesScroll = ScrollBar.new()
  1305.                         local propertiesScrollH = ScrollBar.new(true)
  1306.                         local newTree = TreeView.new()
  1307.                         newTree.NodeTemplate = getResource("PEntry")
  1308.                         newTree.Height = 22
  1309.                         newTree.OffY = 0
  1310.                         newTree.Scroll = propertiesScroll
  1311.                         newTree.DisplayFrame = newgui.Content.List
  1312.                         newTree.TreeUpdate = f.updatePropTree
  1313.                         newTree.SearchText = ""
  1314.  
  1315.                         local changeEvents = {}
  1316.                         local drawOrder = 0
  1317.  
  1318.                         newTree.PreUpdate = function(self)
  1319.                                 drawOrder = 0
  1320.                                 for i,v in pairs(changeEvents) do v:Disconnect() changeEvents[i] = nil end
  1321.                         end
  1322.  
  1323.                         newTree.NodeCreate = function(self,entry,i)    
  1324.                                 entry.MouseEnter:Connect(function()
  1325.                                         local node = self.Tree[i + self.Index]
  1326.                                         if node then
  1327.                                                 if self.Selection.Selected[node.RefName] then return end
  1328.                                                 entry.Indent.BackgroundTransparency = 0.7
  1329.                                         end
  1330.                                 end)
  1331.                                 entry.MouseLeave:Connect(function()
  1332.                                         local node = self.Tree[i + self.Index]
  1333.                                         if node then
  1334.                                                 if self.Selection.Selected[node.RefName] then return end
  1335.                                                 entry.Indent.BackgroundTransparency = 1
  1336.                                         end
  1337.                                 end)                                           
  1338.                                 entry.MouseButton1Down:Connect(function()
  1339.                                         local node = self.Tree[i + self.Index]
  1340.                                         --node.Control:Focus()
  1341.                                 end)
  1342.                                 entry.MouseButton2Down:Connect(function()
  1343.                                         local node = self.Tree[i + self.Index]
  1344.                                         --node.Control:Focus()
  1345.                                 end)
  1346.  
  1347.                                 entry.Indent.Expand.MouseEnter:Connect(function()
  1348.                                         local node = self.Tree[i + self.Index]
  1349.                                         if node then
  1350.                                                 if (not self.SearchResults and self.Expanded[node]) or (self.SearchResults and self.SearchExpanded[node.Obj]) then
  1351.                                                         f.icon(entry.Indent.Expand,iconIndex.NodeExpandedOver)
  1352.                                                 else
  1353.                                                         f.icon(entry.Indent.Expand,iconIndex.NodeCollapsedOver)
  1354.                                                 end
  1355.                                         end
  1356.                                 end)
  1357.                                 entry.Indent.Expand.MouseLeave:Connect(function()
  1358.                                         local node = self.Tree[i + self.Index]
  1359.                                         if node then
  1360.                                                 if (not self.SearchResults and self.Expanded[node]) or (self.SearchResults and self.SearchExpanded[node.Obj]) then
  1361.                                                         f.icon(entry.Indent.Expand,iconIndex.NodeExpanded)
  1362.                                                 else
  1363.                                                         f.icon(entry.Indent.Expand,iconIndex.NodeCollapsed)
  1364.                                                 end
  1365.                                         end
  1366.                                 end)
  1367.                                 entry.Indent.Expand.MouseButton1Down:Connect(function()
  1368.                                         local node = self.Tree[i + self.Index]
  1369.                                         self:Expand(node.RefName)
  1370.                                 end)
  1371.                         end
  1372.  
  1373.                         newTree.NodeDraw = function(self,entry,node)
  1374.                                 entry.Indent.EntryName.Text = node.Prop.Name
  1375.                                 entry.Indent.Control:ClearAllChildren()
  1376.  
  1377.                                 if not node.Category then
  1378.                                         -- Update property controls
  1379.                                         node.Control:Setup(entry.Indent.Control)
  1380.                                         if node.Depth > 1 then
  1381.                                                 --node.Control:Update(node.Obj[node.Prop.ParentName][node.Prop.Name])
  1382.                                         else
  1383.                                                 node.Control:Update(node.Obj[node.Prop.Name])
  1384.                                         end
  1385.  
  1386.                                         -- Color switching
  1387.                                         --if drawOrder % 2 == 0 and not node.Category then
  1388.                                         --      entry.BackgroundColor3 = Color3.new(96/255,96/255,96/255)
  1389.                                         --else
  1390.                                         entry.BackgroundColor3 = Color3.new(80/255,80/255,80/255)
  1391.                                         --end
  1392.                                 else
  1393.                                         entry.BackgroundColor3 = Color3.new(64/255,64/255,64/255)
  1394.                                 end
  1395.                                 drawOrder = drawOrder + 1
  1396.  
  1397.                                 -- Fonts for category nodes and property nodes
  1398.                                 if node.Category then
  1399.                                         entry.Indent.Sep.Visible = false
  1400.                                         entry.Indent.EntryName.Font = Enum.Font.SourceSansBold
  1401.                                         entry.Indent.EntryName.TextColor3 = Color3.new(220/255,220/255,220/255)
  1402.                                 else
  1403.                                         entry.Indent.Sep.Visible = true
  1404.                                         entry.Indent.EntryName.Font = Enum.Font.SourceSans
  1405.                                         if node.Prop.Tags["readonly"] then
  1406.                                                 entry.Indent.EntryName.TextColor3 = Color3.new(144/255,144/255,144/255)
  1407.                                         else
  1408.                                                 entry.Indent.EntryName.TextColor3 = Color3.new(220/255,220/255,220/255)
  1409.                                         end
  1410.                                 end
  1411.  
  1412.                                 if node.Category or node.Control.Children then
  1413.                                         entry.Indent.Expand.Visible = true
  1414.                                         if self.Expanded[node.RefName] then
  1415.                                                 f.icon(entry.Indent.Expand,iconIndex.NodeExpanded)
  1416.                                         else
  1417.                                                 f.icon(entry.Indent.Expand,iconIndex.NodeCollapsed)
  1418.                                         end
  1419.                                 else
  1420.                                         entry.Indent.Expand.Visible = false
  1421.                                 end
  1422.  
  1423.                                 if self.Selection.Selected[node.Obj] then
  1424.                                         entry.Indent.EntryName.TextColor3 = Color3.new(1,1,1)
  1425.                                         entry.Indent.BackgroundTransparency = 0
  1426.                                 else
  1427.                                         --entry.Indent.EntryName.TextColor3 = Color3.new(220/255, 220/255, 220/255)
  1428.                                         entry.Indent.BackgroundTransparency = 1
  1429.                                 end
  1430.  
  1431.                                 if not node.Category and node.Depth == 1 then
  1432.                                         changeEvents[node.Obj] = node.Obj:GetPropertyChangedSignal(node.Prop.Name):Connect(function()
  1433.                                                 node.Control:Update(node.Obj[node.Prop.Name])
  1434.                                         end)
  1435.                                 end
  1436.  
  1437.                                 entry.Indent.Position = UDim2.new(0,18*node.Depth,0,0)
  1438.  
  1439.                                 local newPropWidth = propWidth - node.Depth*18
  1440.                                 entry.Indent.EntryName.Size = UDim2.new(0,newPropWidth,0,22)
  1441.                                 entry.Indent.Control.Position = UDim2.new(0,newPropWidth+2,0,0)
  1442.                                 entry.Indent.Control.Size = UDim2.new(1,-newPropWidth-2,0,22)
  1443.                                 entry.Indent.Sep.Position = UDim2.new(0,newPropWidth+1,0,0)
  1444.                                 entry.Size = UDim2.new(0,281,0,22)
  1445.                         end
  1446.  
  1447.                         propertiesScroll.Gui.Parent = newgui.Content
  1448.                         propertiesScroll:Texture({
  1449.                                 FrameColor = Color3.new(80/255,80/255,80/255),
  1450.                                 ThumbColor = Color3.new(120/255,120/255,120/255),
  1451.                                 ThumbSelectColor = Color3.new(140/255,140/255,140/255),
  1452.                                 ButtonColor = Color3.new(163/255,162/255,165/255),
  1453.                                 ArrowColor = Color3.new(220/255,220/255,220/255)
  1454.                         })
  1455.                         propertiesScroll:SetScrollFrame(newgui.Content,3)
  1456.  
  1457.                         propertiesScrollH.Gui.Visible = false
  1458.                         propertiesScrollH.Gui.Parent = newgui.Content
  1459.                         propertiesScrollH:Texture({
  1460.                                 FrameColor = Color3.new(80/255,80/255,80/255),
  1461.                                 ThumbColor = Color3.new(120/255,120/255,120/255),
  1462.                                 ThumbSelectColor = Color3.new(140/255,140/255,140/255),
  1463.                                 ButtonColor = Color3.new(163/255,162/255,165/255),
  1464.                                 ArrowColor = Color3.new(220/255,220/255,220/255)
  1465.                         })
  1466.                         propertiesScrollH.Gui.Position = UDim2.new(0,0,1,-16)
  1467.                         propertiesScrollH.Gui.Size = UDim2.new(1,-16,0,16)
  1468.  
  1469.                         newTree.OnUpdate = function(self)
  1470.                                 local guiX = propertiesPanel.Content.AbsoluteSize.X-16
  1471.                         --[[
  1472.                         propertiesScrollH.VisibleSpace = guiX
  1473.                         propertiesScrollH.TotalSpace = nodeWidth+10
  1474.                         if nodeWidth > guiX then
  1475.                                 explorerScrollH.Gui.Visible = true
  1476.                                 explorerScroll.Gui.Size = UDim2.new(0,16,1,-16)
  1477.                                 self.DisplayFrame.Size = UDim2.new(1,-16,1,-16)
  1478.                         else
  1479.                                 explorerScrollH.Gui.Visible = false
  1480.                                 explorerScroll.Gui.Size = UDim2.new(0,16,1,0)
  1481.                                 self.DisplayFrame.Size = UDim2.new(1,-16,1,0)
  1482.                         end
  1483.                         --]]
  1484.                                 propertiesScroll.TotalSpace = #self.Tree + 1
  1485.                                 propertiesScroll.VisibleSpace = math.ceil(self.DisplayFrame.AbsoluteSize.Y / 23)
  1486.                                 propertiesScrollH:Update()             
  1487.                                 propertiesScroll:Update()
  1488.                         end
  1489.                         propertiesScroll.OnUpdate = function(self) if newTree.Index == self.Index then return end newTree.Index = self.Index newTree:Refresh() end
  1490.                         propertiesScrollH.OnUpdate = function(self)
  1491.                                 for i,v in pairs(propertiesTree.Entries) do
  1492.                                         v.Position = UDim2.new(0,-self.Index,0,v.Position.Y.Offset)
  1493.                                 end
  1494.                         end
  1495.                         --explorerData = {Window = newgui, NodeData = {}, Scroll = explorerScroll, Entries = {}}
  1496.  
  1497.                         propertiesTree = newTree
  1498.  
  1499.                         table.insert(activeWindows,newgui)
  1500.                         f.hookWindowListener(newgui)
  1501.                         newgui.Changed:connect(function(prop) if prop == "AbsoluteSize" or prop == "AbsolutePosition" then newTree:Refresh() end end)
  1502.  
  1503.                         local searchBox = newgui.TopBar.SearchFrame.Search
  1504.                         local searchAnim = searchBox.Parent.Entering
  1505.                         searchBox:GetPropertyChangedSignal("Text"):Connect(function()
  1506.                         --[[
  1507.                         local searchTime = tick()
  1508.                         lastSearch = searchTime
  1509.                         wait()
  1510.                         if lastSearch ~= searchTime then return end
  1511.                         newTree.SearchText = searchBox.Text
  1512.                         f.updateSearch(newTree)
  1513.                         explorerTree:TreeUpdate()
  1514.                         explorerTree:Refresh()
  1515.                         --]]
  1516.                         end)
  1517.  
  1518.                         searchBox.Focused:Connect(function()
  1519.                                 searchBox.Empty.Visible = false
  1520.                                 searchAnim:TweenSizeAndPosition(UDim2.new(1,0,0,2),UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  1521.                         end)
  1522.  
  1523.                         searchBox.FocusLost:Connect(function()
  1524.                                 if searchBox.Text == "" then searchBox.Empty.Visible = true else searchBox.Empty.Visible = false end
  1525.                                 searchAnim:TweenSizeAndPosition(UDim2.new(0,0,0,2),UDim2.new(0.5,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  1526.                         end)
  1527.  
  1528.                         return newgui
  1529.                 end
  1530.  
  1531.                 local function welcomePlayer()
  1532.                         welcomeFrame.Visible = true
  1533.                         welcomeMain.Position = UDim2.new(-0.6,0,0,0)
  1534.                         welcomeChangelog.Position = UDim2.new(1,5,0,20)
  1535.                         welcomeBottom.Position = UDim2.new(0.6,0,1,0)
  1536.  
  1537.                         welcomeFrame.BackgroundTransparency = 1
  1538.                         welcomeOutline.ImageTransparency = 1
  1539.  
  1540.                         wait(2)
  1541.  
  1542.                         for i = 1,0,-0.1 do
  1543.                                 welcomeFrame.BackgroundTransparency = i
  1544.                                 welcomeOutline.ImageTransparency = i
  1545.                                 wait()
  1546.                         end
  1547.  
  1548.                         welcomeMain:TweenPosition(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  1549.                         welcomeChangelog:TweenPosition(UDim2.new(0.6,5,0,20),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  1550.                         welcomeBottom:TweenPosition(UDim2.new(0.6,0,1,-50),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  1551.  
  1552.                         wait(0.5)
  1553.  
  1554.                         welcomeProgress:WaitForChild("Progress1").TextColor3 = Color3.new(1,1,1)       
  1555.                         API = f.fetchAPI()
  1556.                         welcomeProgress:WaitForChild("Progress2").TextColor3 = Color3.new(1,1,1)
  1557.                         RMD = f.fetchRMD()
  1558.                         welcomeProgress:WaitForChild("Progress3").TextColor3 = Color3.new(1,1,1)
  1559.                         wait(0.25)
  1560.                         welcomeProgress:WaitForChild("Progress4").TextColor3 = Color3.new(1,1,1)
  1561.                         rightClickContext = ContextMenu.new()
  1562.                         f.indexNodes()
  1563.                         explorerTree:TreeUpdate()
  1564.                         wait(0.25)
  1565.                         welcomeProgress:WaitForChild("Progress5").TextColor3 = Color3.new(1,1,1)
  1566.  
  1567.  
  1568.                         -- Attach explorer and properties to right content pane then launch
  1569.                         explorerTree:Refresh()
  1570.                         f.addToPane(explorerPanel,"Right")
  1571.                         f.addToPane(propertiesPanel,"Right")
  1572.                         f.resizePaneItem(propertiesPanel,"Right",0.5)
  1573.  
  1574.                         contentL:TweenPosition(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  1575.                         contentR:TweenPosition(UDim2.new(1,-explorerSettings.RPaneWidth,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  1576.  
  1577.                         wait(2)
  1578.  
  1579.                         welcomeFrame:TweenPosition(UDim2.new(0.5,-250,0,-350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,0.5,true)
  1580.                 end
  1581.  
  1582.                 mouse.Move:connect(function()
  1583.                         --if mouseWindow == nil then return end
  1584.                         local x,y = mouse.X,mouse.Y
  1585.  
  1586.                         if x = gui.AbsoluteSize.X - 50 then
  1587.                                 setPane = "Right"
  1588.                         else
  1589.                                 setPane = "None"
  1590.                         end
  1591.                 end)
  1592.  
  1593.                 explorerPanel = f.newExplorer()
  1594.                 propertiesPanel = f.newProperties()
  1595.  
  1596.                 for category,_ in pairs(categoryOrder) do
  1597.                         propertiesTree.Expanded["CAT:"..category] = true
  1598.                 end
  1599.  
  1600.                 propertiesTree.Expanded["CAT:Surface Inputs"] = false
  1601.                 propertiesTree.Expanded["CAT:Surface"] = false
  1602.  
  1603.                 welcomePlayer()
  1604.  
  1605.                 for i,v in pairs(nodes[workspace]) do
  1606.                         print(type(i))
  1607.                 end
  1608.         end
  1609. )
  1610.  
  1611. -- function TitleWeird()
  1612.         -- spawn(
  1613.                 -- function()
  1614.                         -- while true do
  1615.                                 -- wait(timer)
  1616.                                 -- for i = 39, 41, 1 do
  1617.                                         -- EmptynessGui.TextSize = i
  1618.                                         -- wait(timer)
  1619.                                 -- end
  1620.                                 -- for i = 41, 39, -1 do
  1621.                                         -- EmptynessGui.TextSize = i
  1622.                                         -- wait(timer)
  1623.                                 -- end
  1624.                         -- end
  1625.                 -- end
  1626.         -- )
  1627. -- end
  1628.  
  1629. function TypingTitle()
  1630.     spawn(
  1631.         function()
  1632.             while true do
  1633.                 i = 0
  1634.                 wait(timer)
  1635.                                 while i == 0 do
  1636.                     EmptynessGui.Text = ""
  1637.                     wait(timer*10)
  1638.                     i = i + 1
  1639.                 end
  1640.                 while i == 1 do
  1641.                     EmptynessGui.Text = "E"
  1642.                     wait(timer*10)
  1643.                     i = i + 1
  1644.                 end
  1645.                 while i == 2 do
  1646.                     EmptynessGui.Text = "Em"
  1647.                     wait(timer*10)
  1648.                     i = i + 1
  1649.                 end
  1650.                 while i == 3 do
  1651.                     EmptynessGui.Text = "Emp"
  1652.                     wait(timer*10)
  1653.                     i = i + 1
  1654.                 end
  1655.                 while i == 4 do
  1656.                     EmptynessGui.Text = "Empt"
  1657.                     wait(timer*10)
  1658.                     i = i + 1
  1659.                 end
  1660.                 while i == 5 do
  1661.                     EmptynessGui.Text = "Empty"
  1662.                     wait(timer*10)
  1663.                     i = i + 1
  1664.                 end
  1665.                 while i == 6 do
  1666.                     EmptynessGui.Text = "Emptyn"
  1667.                     wait(timer*10)
  1668.                     i = i + 1
  1669.                 end
  1670.                 while i == 7 do
  1671.                     EmptynessGui.Text = "Emptyne"
  1672.                     wait(timer*10)
  1673.                     i = i + 1
  1674.                 end
  1675.                 while i == 8 do
  1676.                     EmptynessGui.Text = "Emptynes"
  1677.                     wait(timer*10)
  1678.                     i = i + 1
  1679.                 end
  1680.                 while i == 9 do
  1681.                     EmptynessGui.Text = "Emptyness"
  1682.                     wait(timer*10)
  1683.                     i = i + 1
  1684.                 end
  1685.                 while i == 10 do
  1686.                     EmptynessGui.Text = "Emptyness G"
  1687.                     wait(timer*10)
  1688.                     i = i + 1
  1689.                 end
  1690.                 while i == 11 do
  1691.                     EmptynessGui.Text = "Emptyness Gu"
  1692.                     wait(timer*10)
  1693.                     i = i + 1
  1694.                 end
  1695.                 while i == 12 do
  1696.                     EmptynessGui.Text = "Emptyness Gui"
  1697.                     wait(timer*100)
  1698.                     i = i + 1
  1699.                 end
  1700.                 while i == 13 do
  1701.                     EmptynessGui.Text = "Emptyness Gu"
  1702.                     wait(timer*10)
  1703.                     i = i + 1
  1704.                 end
  1705.                 while i == 14 do
  1706.                     EmptynessGui.Text = "Emptyness G"
  1707.                     wait(timer*10)
  1708.                     i = i + 1
  1709.                 end
  1710.                 while i == 15 do
  1711.                     EmptynessGui.Text = "Emptyness"
  1712.                     wait(timer*10)
  1713.                     i = i + 1
  1714.                 end
  1715.                 while i == 16 do
  1716.                     EmptynessGui.Text = "Emptynes"
  1717.                     wait(timer*10)
  1718.                     i = i + 1
  1719.                 end
  1720.                 while i == 17 do
  1721.                     EmptynessGui.Text = "Emptyne"
  1722.                     wait(timer*10)
  1723.                     i = i + 1
  1724.                 end
  1725.                 while i == 18 do
  1726.                     EmptynessGui.Text = "Emptyn"
  1727.                     wait(timer*10)
  1728.                     i = i + 1
  1729.                 end
  1730.                 while i == 19 do
  1731.                     EmptynessGui.Text = "Empty"
  1732.                     wait(timer*10)
  1733.                     i = i + 1
  1734.                 end
  1735.                 while i == 20 do
  1736.                     EmptynessGui.Text = "Empt"
  1737.                     wait(timer*10)
  1738.                     i = i + 1
  1739.                 end
  1740.                 while i == 21 do
  1741.                     EmptynessGui.Text = "Emp"
  1742.                     wait(timer*10)
  1743.                     i = i + 1
  1744.                 end
  1745.                 while i == 22 do
  1746.                     EmptynessGui.Text = "Em"
  1747.                     wait(timer*10)
  1748.                     i = i + 1
  1749.                 end
  1750.                 while i == 23 do
  1751.                     EmptynessGui.Text = "E"
  1752.                     wait(timer*10)
  1753.                     i = i + 1
  1754.                 end
  1755.                                 while i == 24 do
  1756.                     EmptynessGui.Text = ""
  1757.                     wait(timer*10)
  1758.                     i = i + 1
  1759.                 end
  1760.                 if i == 25 then
  1761.                     i = 0
  1762.                 end
  1763.             end
  1764.         end
  1765.     )
  1766. end
  1767.  
  1768.  
  1769.  
  1770. function SuperRGB()
  1771.         spawn(
  1772.                 function()
  1773.                         while true do
  1774.                                 wait(timer)
  1775.  
  1776.                                 for i = 30, top, 1 do
  1777.                                         local aShauShinBlisikt69 = Color3.new(i / top, 0 / top, 0 / top)
  1778.                                         EmptynessGui.TextColor3 = aShauShinBlisikt69
  1779.                                         Line.BorderColor3 = aShauShinBlisikt69
  1780.                                         Background.BorderColor3 = aShauShinBlisikt69
  1781.                                         targetNameInput.TextColor3 = aShauShinBlisikt69
  1782.                                         targetNameInput.BorderColor3 = aShauShinBlisikt69
  1783.                                         NumberInput.BorderColor3 = aShauShinBlisikt69
  1784.                                         NumberInput.TextColor3 = aShauShinBlisikt69
  1785.                                         onceInput.BorderColor3 = aShauShinBlisikt69
  1786.                                         onceInput.TextColor3 = aShauShinBlisikt69
  1787.                                         wait(timer)
  1788.                                 end
  1789.  
  1790.                                 for i = 30, top, 1 do
  1791.                                         local bShauShinBlisikt69 = Color3.new(top / top, i / top, 0 / top)
  1792.                                         EmptynessGui.TextColor3 = bShauShinBlisikt69
  1793.                                         Line.BorderColor3 = bShauShinBlisikt69
  1794.                                         Background.BorderColor3 = bShauShinBlisikt69
  1795.                                         targetNameInput.TextColor3 = bShauShinBlisikt69
  1796.                                         targetNameInput.BorderColor3 = bShauShinBlisikt69
  1797.                                         NumberInput.BorderColor3 = bShauShinBlisikt69
  1798.                                         NumberInput.TextColor3 = bShauShinBlisikt69
  1799.                                         onceInput.BorderColor3 = bShauShinBlisikt69
  1800.                                         onceInput.TextColor3 = bShauShinBlisikt69
  1801.                                         wait(timer)
  1802.                                 end
  1803.  
  1804.                                 for i = 30, top, 1 do
  1805.                                         local cShauShinBlisikt69 = Color3.new(top / top, top / top, i / top)
  1806.                                         EmptynessGui.TextColor3 = cShauShinBlisikt69
  1807.                                         Line.BorderColor3 = cShauShinBlisikt69
  1808.                                         Background.BorderColor3 = cShauShinBlisikt69
  1809.                                         targetNameInput.TextColor3 = cShauShinBlisikt69
  1810.                                         targetNameInput.BorderColor3 = cShauShinBlisikt69
  1811.                                         NumberInput.BorderColor3 = cShauShinBlisikt69
  1812.                                         NumberInput.TextColor3 = cShauShinBlisikt69
  1813.                                         onceInput.BorderColor3 = cShauShinBlisikt69
  1814.                                         onceInput.TextColor3 = cShauShinBlisikt69
  1815.                                         wait(timer)
  1816.                                 end
  1817.  
  1818.                                 for i = top, 30, -1 do
  1819.                                         local dShauShinBlisikt69 = Color3.new(i / top, top / top, top / top)
  1820.                                         EmptynessGui.TextColor3 = dShauShinBlisikt69
  1821.                                         Line.BorderColor3 = dShauShinBlisikt69
  1822.                                         Background.BorderColor3 = dShauShinBlisikt69
  1823.                                         targetNameInput.TextColor3 = dShauShinBlisikt69
  1824.                                         targetNameInput.BorderColor3 = dShauShinBlisikt69
  1825.                                         NumberInput.BorderColor3 = dShauShinBlisikt69
  1826.                                         NumberInput.TextColor3 = dShauShinBlisikt69
  1827.                                         onceInput.BorderColor3 = dShauShinBlisikt69
  1828.                                         onceInput.TextColor3 = dShauShinBlisikt69
  1829.                                         wait(timer)
  1830.                                 end
  1831.  
  1832.                                 for i = top, 30, -1 do
  1833.                                         local eShauShinBlisikt69 = Color3.new(0 / top, i / top, top / top)
  1834.                                         EmptynessGui.TextColor3 = eShauShinBlisikt69
  1835.                                         Line.BorderColor3 = eShauShinBlisikt69
  1836.                                         Background.BorderColor3 = eShauShinBlisikt69
  1837.                                         targetNameInput.TextColor3 = eShauShinBlisikt69
  1838.                                         targetNameInput.BorderColor3 = eShauShinBlisikt69
  1839.                                         NumberInput.BorderColor3 = eShauShinBlisikt69
  1840.                                         NumberInput.TextColor3 = eShauShinBlisikt69
  1841.                                         onceInput.BorderColor3 = eShauShinBlisikt69
  1842.                                         onceInput.TextColor3 = eShauShinBlisikt69
  1843.                                         wait(timer)
  1844.                                 end
  1845.  
  1846.                                 for i = top, 30, -1 do
  1847.                                         local fShauShinBlisikt69 = Color3.new(0 / top, 0 / top, i / top)
  1848.                                         EmptynessGui.TextColor3 = fShauShinBlisikt69
  1849.                                         Line.BorderColor3 = fShauShinBlisikt69
  1850.                                         Background.BorderColor3 = fShauShinBlisikt69
  1851.                                         targetNameInput.TextColor3 = fShauShinBlisikt69
  1852.                                         targetNameInput.BorderColor3 = fShauShinBlisikt69
  1853.                                         NumberInput.BorderColor3 = fShauShinBlisikt69
  1854.                                         NumberInput.TextColor3 = fShauShinBlisikt69
  1855.                                         onceInput.BorderColor3 = fShauShinBlisikt69
  1856.                                         onceInput.TextColor3 = fShauShinBlisikt69
  1857.                                         wait(timer)
  1858.                                 end
  1859.                         end
  1860.                 end
  1861.         )
  1862. end
  1863.  
  1864. SuperRGB()
  1865. TypingTitle()



  • Recent Roblox Scripts