diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml new file mode 100644 index 0000000..1dabce0 --- /dev/null +++ b/.github/workflows/beta.yml @@ -0,0 +1,30 @@ +name: Beta Release + +on: + push: + branches: + - master + workflow_dispatch: + +jobs: + ci: + name: CI and Deployment + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + with: + submodules: true + + - uses: Roblox/setup-foreman@v1 + with: + version: "^1.0.0" + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Report tool versions + run: rojo --version + + - name: Deploy + run: rojo upload --cookie "$ROBLOSECURITY" --asset_id 6605037523 default.project.json + env: + ROBLOSECURITY: ${{ secrets.ROBLOSECURITY }} \ No newline at end of file diff --git a/.github/workflows/stable.yml b/.github/workflows/stable.yml new file mode 100644 index 0000000..a68b401 --- /dev/null +++ b/.github/workflows/stable.yml @@ -0,0 +1,29 @@ +name: Stable Release + +on: + release: + types: [released] + workflow_dispatch: + +jobs: + ci: + name: CI and Deployment + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + with: + submodules: true + + - uses: Roblox/setup-foreman@v1 + with: + version: "^1.0.0" + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Report tool versions + run: rojo --version + + - name: Deploy + run: rojo upload --cookie "$ROBLOSECURITY" --asset_id 6605034516 default.project.json + env: + ROBLOSECURITY: ${{ secrets.ROBLOSECURITY }} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7e9257c --- /dev/null +++ b/README.md @@ -0,0 +1,50 @@ +
+ +# LundstrongOrders +A beautiful ordering system, designed for your Roblox Cafes. + +GitHub license +GitHub release (latest by date) +
+ +## Getting Started + +### Prerequisites + +None. + +### Installation + +
+ +#### Roblox + + * Search `Lundstrong Orders` in the toolbox, and insert the model made by `LundBot` + +#### GitHub + +* Type in: `git clone https://github.com/Lundstrong/LundstrongOrders.git` + +#### More + +* More Installion methods are avaliable in the docs. + +## Usage + +Open up the configuration file and configure it up to your needs! + +## Roadmap +The Roadmap for this project is on GitHub Pages. If you have any ideas please let us know on the discord or open an issue! + +## Contributing +We love contributions! Pull requests are warmly welcomed and highly appriciated. For major changes, please open an issue first or discuss on the discord to let us know what you would like to change. + +## Support +Join the [Lundstrong Discord](https://discord.gg/2w9PmHZPwX). A channel will be opened up in the near-future for support. + +## License +FOSSA Coming soon. + +## Acknowledgements + +This Product has been expanded by the [DataStore2](https://kampfkarren.github.io/Roblox/) library. If it wasn't for them - the cases of data loss may be an issue. \ No newline at end of file diff --git a/default.project.json b/default.project.json new file mode 100644 index 0000000..48c95be --- /dev/null +++ b/default.project.json @@ -0,0 +1,6 @@ +{ + "name": "MainModule", + "tree": { + "$path": "src" + } +} diff --git a/development.project.json b/development.project.json new file mode 100644 index 0000000..98fe090 --- /dev/null +++ b/development.project.json @@ -0,0 +1,21 @@ +{ + "name": "LundstrongOrders Development", + "tree": { + "$className": "DataModel", + "ReplicatedStorage": { + "$className": "ReplicatedStorage", + "$ignoreUnknownInstances": true, + "$path": "src/ReplicatedStorage" + }, + "StarterGui": { + "$className": "StarterGui", + "$ignoreUnknownInstances": true, + "$path": "src/StarterGui" + }, + "ServerScriptService": { + "$className": "ServerScriptService", + "$ignoreUnknownInstances": true, + "$path": "src/Server" + } + } +} \ No newline at end of file diff --git a/foreman.toml b/foreman.toml new file mode 100644 index 0000000..3fefb42 --- /dev/null +++ b/foreman.toml @@ -0,0 +1,3 @@ +[tools] +rojo = { source = "rojo-rbx/rojo", version = "6.0.2" } +selene = { source = "Kampfkarren/selene", version = "0.11.0" } diff --git a/roblox.toml b/roblox.toml new file mode 100644 index 0000000..f060efe --- /dev/null +++ b/roblox.toml @@ -0,0 +1,9060 @@ +# This file was @generated by generate-roblox-std at 2021-01-25 17:05:53.488408800 +10:00 +[selene] +base = "lua51" +name = "roblox" +[selene.structs.BasePart."*"] +struct = "Instance" + +[selene.structs.BasePart.AncestryChanged] +struct = "Event" + +[selene.structs.BasePart.Anchored] +property = true +writable = "overridden" + +[selene.structs.BasePart.ApplyAngularImpulse] +method = true + +[[selene.structs.BasePart.ApplyAngularImpulse.args]] +required = false +type = "any" + +[selene.structs.BasePart.ApplyImpulse] +method = true + +[[selene.structs.BasePart.ApplyImpulse.args]] +required = false +type = "any" + +[selene.structs.BasePart.ApplyImpulseAtPosition] +method = true + +[[selene.structs.BasePart.ApplyImpulseAtPosition.args]] +required = false +type = "any" + +[[selene.structs.BasePart.ApplyImpulseAtPosition.args]] +required = false +type = "any" + +[selene.structs.BasePart.Archivable] +property = true +writable = "overridden" + +[selene.structs.BasePart.AssemblyAngularVelocity] +property = true +writable = "overridden" + +[selene.structs.BasePart.AssemblyCenterOfMass] +property = true + +[selene.structs.BasePart.AssemblyLinearVelocity] +property = true +writable = "overridden" + +[selene.structs.BasePart.AssemblyMass] +property = true + +[selene.structs.BasePart.AssemblyRootPart] +struct = "BasePart" + +[selene.structs.BasePart.AttributeChanged] +struct = "Event" + +[selene.structs.BasePart.BackParamA] +property = true +writable = "overridden" + +[selene.structs.BasePart.BackParamB] +property = true +writable = "overridden" + +[selene.structs.BasePart.BackSurface] +property = true +writable = "overridden" + +[selene.structs.BasePart.BackSurfaceInput] +property = true +writable = "overridden" + +[selene.structs.BasePart.BottomParamA] +property = true +writable = "overridden" + +[selene.structs.BasePart.BottomParamB] +property = true +writable = "overridden" + +[selene.structs.BasePart.BottomSurface] +property = true +writable = "overridden" + +[selene.structs.BasePart.BottomSurfaceInput] +property = true +writable = "overridden" + +[selene.structs.BasePart.BreakJoints] +method = true +args = [] + +[selene.structs.BasePart.BrickColor] +property = true +writable = "overridden" + +[selene.structs.BasePart.CFrame] +property = true +writable = "overridden" + +[selene.structs.BasePart.CanCollide] +property = true +writable = "overridden" + +[selene.structs.BasePart.CanCollideWith] +method = true + +[[selene.structs.BasePart.CanCollideWith.args]] +required = false +type = "any" + +[selene.structs.BasePart.CanSetNetworkOwnership] +method = true +args = [] + +[selene.structs.BasePart.CanTouch] +property = true +writable = "overridden" + +[selene.structs.BasePart.CastShadow] +property = true +writable = "overridden" + +[selene.structs.BasePart.CenterOfMass] +property = true + +[selene.structs.BasePart.Changed] +struct = "Event" + +[selene.structs.BasePart.ChildAdded] +struct = "Event" + +[selene.structs.BasePart.ChildRemoved] +struct = "Event" + +[selene.structs.BasePart.ClassName] +property = true + +[selene.structs.BasePart.ClearAllChildren] +method = true +args = [] + +[selene.structs.BasePart.Clone] +method = true +args = [] + +[selene.structs.BasePart.CollisionGroupId] +property = true +writable = "overridden" + +[selene.structs.BasePart.Color] +property = true +writable = "overridden" + +[selene.structs.BasePart.CustomPhysicalProperties] +property = true +writable = "overridden" + +[selene.structs.BasePart.DescendantAdded] +struct = "Event" + +[selene.structs.BasePart.DescendantRemoving] +struct = "Event" + +[selene.structs.BasePart.Destroy] +method = true +args = [] + +[selene.structs.BasePart.FindFirstAncestor] +method = true + +[[selene.structs.BasePart.FindFirstAncestor.args]] +required = false +type = "any" + +[selene.structs.BasePart.FindFirstAncestorOfClass] +method = true + +[[selene.structs.BasePart.FindFirstAncestorOfClass.args]] +required = false +type = "any" + +[selene.structs.BasePart.FindFirstAncestorWhichIsA] +method = true + +[[selene.structs.BasePart.FindFirstAncestorWhichIsA.args]] +required = false +type = "any" + +[selene.structs.BasePart.FindFirstChild] +method = true + +[[selene.structs.BasePart.FindFirstChild.args]] +required = false +type = "any" + +[[selene.structs.BasePart.FindFirstChild.args]] +required = false +type = "any" + +[selene.structs.BasePart.FindFirstChildOfClass] +method = true + +[[selene.structs.BasePart.FindFirstChildOfClass.args]] +required = false +type = "any" + +[selene.structs.BasePart.FindFirstChildWhichIsA] +method = true + +[[selene.structs.BasePart.FindFirstChildWhichIsA.args]] +required = false +type = "any" + +[[selene.structs.BasePart.FindFirstChildWhichIsA.args]] +required = false +type = "any" + +[selene.structs.BasePart.FrontParamA] +property = true +writable = "overridden" + +[selene.structs.BasePart.FrontParamB] +property = true +writable = "overridden" + +[selene.structs.BasePart.FrontSurface] +property = true +writable = "overridden" + +[selene.structs.BasePart.FrontSurfaceInput] +property = true +writable = "overridden" + +[selene.structs.BasePart.GetActor] +method = true +args = [] + +[selene.structs.BasePart.GetAttribute] +method = true + +[[selene.structs.BasePart.GetAttribute.args]] +required = false +type = "any" + +[selene.structs.BasePart.GetAttributeChangedSignal] +method = true + +[[selene.structs.BasePart.GetAttributeChangedSignal.args]] +required = false +type = "any" + +[selene.structs.BasePart.GetAttributes] +method = true +args = [] + +[selene.structs.BasePart.GetChildren] +method = true +args = [] + +[selene.structs.BasePart.GetConnectedParts] +method = true + +[[selene.structs.BasePart.GetConnectedParts.args]] +required = false +type = "any" + +[selene.structs.BasePart.GetDebugId] +method = true + +[[selene.structs.BasePart.GetDebugId.args]] +required = false +type = "any" + +[selene.structs.BasePart.GetDescendants] +method = true +args = [] + +[selene.structs.BasePart.GetFullName] +method = true +args = [] + +[selene.structs.BasePart.GetJoints] +method = true +args = [] + +[selene.structs.BasePart.GetMass] +method = true +args = [] + +[selene.structs.BasePart.GetNetworkOwner] +method = true +args = [] + +[selene.structs.BasePart.GetNetworkOwnershipAuto] +method = true +args = [] + +[selene.structs.BasePart.GetPropertyChangedSignal] +method = true + +[[selene.structs.BasePart.GetPropertyChangedSignal.args]] +required = false +type = "any" + +[selene.structs.BasePart.GetRootPart] +method = true +args = [] + +[selene.structs.BasePart.GetTouchingParts] +method = true +args = [] + +[selene.structs.BasePart.IsA] +method = true + +[[selene.structs.BasePart.IsA.args]] +required = false +type = "any" + +[selene.structs.BasePart.IsAncestorOf] +method = true + +[[selene.structs.BasePart.IsAncestorOf.args]] +required = false +type = "any" + +[selene.structs.BasePart.IsDescendantOf] +method = true + +[[selene.structs.BasePart.IsDescendantOf.args]] +required = false +type = "any" + +[selene.structs.BasePart.IsGrounded] +method = true +args = [] + +[selene.structs.BasePart.LeftParamA] +property = true +writable = "overridden" + +[selene.structs.BasePart.LeftParamB] +property = true +writable = "overridden" + +[selene.structs.BasePart.LeftSurface] +property = true +writable = "overridden" + +[selene.structs.BasePart.LeftSurfaceInput] +property = true +writable = "overridden" + +[selene.structs.BasePart.LocalTransparencyModifier] +property = true +writable = "overridden" + +[selene.structs.BasePart.Locked] +property = true +writable = "overridden" + +[selene.structs.BasePart.MakeJoints] +method = true +args = [] + +[selene.structs.BasePart.Mass] +property = true + +[selene.structs.BasePart.Massless] +property = true +writable = "overridden" + +[selene.structs.BasePart.Material] +property = true +writable = "overridden" + +[selene.structs.BasePart.Name] +property = true +writable = "overridden" + +[selene.structs.BasePart.Orientation] +property = true +writable = "overridden" + +[selene.structs.BasePart.Parent] +struct = "Instance" + +[selene.structs.BasePart.Position] +property = true +writable = "overridden" + +[selene.structs.BasePart.ReceiveAge] +property = true + +[selene.structs.BasePart.Reflectance] +property = true +writable = "overridden" + +[selene.structs.BasePart.Resize] +method = true + +[[selene.structs.BasePart.Resize.args]] +required = false +type = "any" + +[[selene.structs.BasePart.Resize.args]] +required = false +type = "any" + +[selene.structs.BasePart.ResizeIncrement] +property = true + +[selene.structs.BasePart.ResizeableFaces] +property = true + +[selene.structs.BasePart.RightParamA] +property = true +writable = "overridden" + +[selene.structs.BasePart.RightParamB] +property = true +writable = "overridden" + +[selene.structs.BasePart.RightSurface] +property = true +writable = "overridden" + +[selene.structs.BasePart.RightSurfaceInput] +property = true +writable = "overridden" + +[selene.structs.BasePart.RootPriority] +property = true +writable = "overridden" + +[selene.structs.BasePart.RotVelocity] +property = true +writable = "overridden" + +[selene.structs.BasePart.Rotation] +property = true +writable = "overridden" + +[selene.structs.BasePart.SetAttribute] +method = true + +[[selene.structs.BasePart.SetAttribute.args]] +required = false +type = "any" + +[[selene.structs.BasePart.SetAttribute.args]] +required = false +type = "any" + +[selene.structs.BasePart.SetNetworkOwner] +method = true + +[[selene.structs.BasePart.SetNetworkOwner.args]] +required = false +type = "any" + +[selene.structs.BasePart.SetNetworkOwnershipAuto] +method = true +args = [] + +[selene.structs.BasePart.Size] +property = true +writable = "overridden" + +[selene.structs.BasePart.SubtractAsync] +method = true + +[[selene.structs.BasePart.SubtractAsync.args]] +required = false +type = "any" + +[[selene.structs.BasePart.SubtractAsync.args]] +required = false +type = "any" + +[[selene.structs.BasePart.SubtractAsync.args]] +required = false +type = "any" + +[selene.structs.BasePart.TopParamA] +property = true +writable = "overridden" + +[selene.structs.BasePart.TopParamB] +property = true +writable = "overridden" + +[selene.structs.BasePart.TopSurface] +property = true +writable = "overridden" + +[selene.structs.BasePart.TopSurfaceInput] +property = true +writable = "overridden" + +[selene.structs.BasePart.TouchEnded] +struct = "Event" + +[selene.structs.BasePart.Touched] +struct = "Event" + +[selene.structs.BasePart.Transparency] +property = true +writable = "overridden" + +[selene.structs.BasePart.UnionAsync] +method = true + +[[selene.structs.BasePart.UnionAsync.args]] +required = false +type = "any" + +[[selene.structs.BasePart.UnionAsync.args]] +required = false +type = "any" + +[[selene.structs.BasePart.UnionAsync.args]] +required = false +type = "any" + +[selene.structs.BasePart.Velocity] +property = true +writable = "overridden" + +[selene.structs.BasePart.WaitForChild] +method = true + +[[selene.structs.BasePart.WaitForChild.args]] +required = false +type = "any" + +[[selene.structs.BasePart.WaitForChild.args]] +required = false +type = "any" +[selene.structs.Camera."*"] +struct = "Instance" + +[selene.structs.Camera.AncestryChanged] +struct = "Event" + +[selene.structs.Camera.Archivable] +property = true +writable = "overridden" + +[selene.structs.Camera.AttributeChanged] +struct = "Event" + +[selene.structs.Camera.CFrame] +property = true +writable = "overridden" + +[selene.structs.Camera.CameraSubject] +struct = "Instance" + +[selene.structs.Camera.CameraType] +property = true +writable = "overridden" + +[selene.structs.Camera.Changed] +struct = "Event" + +[selene.structs.Camera.ChildAdded] +struct = "Event" + +[selene.structs.Camera.ChildRemoved] +struct = "Event" + +[selene.structs.Camera.ClassName] +property = true + +[selene.structs.Camera.ClearAllChildren] +method = true +args = [] + +[selene.structs.Camera.Clone] +method = true +args = [] + +[selene.structs.Camera.DescendantAdded] +struct = "Event" + +[selene.structs.Camera.DescendantRemoving] +struct = "Event" + +[selene.structs.Camera.Destroy] +method = true +args = [] + +[selene.structs.Camera.DiagonalFieldOfView] +property = true +writable = "overridden" + +[selene.structs.Camera.FieldOfView] +property = true +writable = "overridden" + +[selene.structs.Camera.FieldOfViewMode] +property = true +writable = "overridden" + +[selene.structs.Camera.FindFirstAncestor] +method = true + +[[selene.structs.Camera.FindFirstAncestor.args]] +required = false +type = "any" + +[selene.structs.Camera.FindFirstAncestorOfClass] +method = true + +[[selene.structs.Camera.FindFirstAncestorOfClass.args]] +required = false +type = "any" + +[selene.structs.Camera.FindFirstAncestorWhichIsA] +method = true + +[[selene.structs.Camera.FindFirstAncestorWhichIsA.args]] +required = false +type = "any" + +[selene.structs.Camera.FindFirstChild] +method = true + +[[selene.structs.Camera.FindFirstChild.args]] +required = false +type = "any" + +[[selene.structs.Camera.FindFirstChild.args]] +required = false +type = "any" + +[selene.structs.Camera.FindFirstChildOfClass] +method = true + +[[selene.structs.Camera.FindFirstChildOfClass.args]] +required = false +type = "any" + +[selene.structs.Camera.FindFirstChildWhichIsA] +method = true + +[[selene.structs.Camera.FindFirstChildWhichIsA.args]] +required = false +type = "any" + +[[selene.structs.Camera.FindFirstChildWhichIsA.args]] +required = false +type = "any" + +[selene.structs.Camera.FirstPersonTransition] +struct = "Event" + +[selene.structs.Camera.Focus] +property = true +writable = "overridden" + +[selene.structs.Camera.GetActor] +method = true +args = [] + +[selene.structs.Camera.GetAttribute] +method = true + +[[selene.structs.Camera.GetAttribute.args]] +required = false +type = "any" + +[selene.structs.Camera.GetAttributeChangedSignal] +method = true + +[[selene.structs.Camera.GetAttributeChangedSignal.args]] +required = false +type = "any" + +[selene.structs.Camera.GetAttributes] +method = true +args = [] + +[selene.structs.Camera.GetChildren] +method = true +args = [] + +[selene.structs.Camera.GetDebugId] +method = true + +[[selene.structs.Camera.GetDebugId.args]] +required = false +type = "any" + +[selene.structs.Camera.GetDescendants] +method = true +args = [] + +[selene.structs.Camera.GetFullName] +method = true +args = [] + +[selene.structs.Camera.GetPanSpeed] +method = true +args = [] + +[selene.structs.Camera.GetPartsObscuringTarget] +method = true + +[[selene.structs.Camera.GetPartsObscuringTarget.args]] +required = false +type = "any" + +[[selene.structs.Camera.GetPartsObscuringTarget.args]] +required = false +type = "any" + +[selene.structs.Camera.GetPropertyChangedSignal] +method = true + +[[selene.structs.Camera.GetPropertyChangedSignal.args]] +required = false +type = "any" + +[selene.structs.Camera.GetRenderCFrame] +method = true +args = [] + +[selene.structs.Camera.GetRoll] +method = true +args = [] + +[selene.structs.Camera.GetTiltSpeed] +method = true +args = [] + +[selene.structs.Camera.HeadLocked] +property = true +writable = "overridden" + +[selene.structs.Camera.HeadScale] +property = true +writable = "overridden" + +[selene.structs.Camera.InterpolationFinished] +struct = "Event" + +[selene.structs.Camera.IsA] +method = true + +[[selene.structs.Camera.IsA.args]] +required = false +type = "any" + +[selene.structs.Camera.IsAncestorOf] +method = true + +[[selene.structs.Camera.IsAncestorOf.args]] +required = false +type = "any" + +[selene.structs.Camera.IsDescendantOf] +method = true + +[[selene.structs.Camera.IsDescendantOf.args]] +required = false +type = "any" + +[selene.structs.Camera.MaxAxisFieldOfView] +property = true +writable = "overridden" + +[selene.structs.Camera.Name] +property = true +writable = "overridden" + +[selene.structs.Camera.NearPlaneZ] +property = true + +[selene.structs.Camera.Parent] +struct = "Instance" + +[selene.structs.Camera.ScreenPointToRay] +method = true + +[[selene.structs.Camera.ScreenPointToRay.args]] +required = false +type = "any" + +[[selene.structs.Camera.ScreenPointToRay.args]] +required = false +type = "any" + +[[selene.structs.Camera.ScreenPointToRay.args]] +required = false +type = "any" + +[selene.structs.Camera.SetAttribute] +method = true + +[[selene.structs.Camera.SetAttribute.args]] +required = false +type = "any" + +[[selene.structs.Camera.SetAttribute.args]] +required = false +type = "any" + +[selene.structs.Camera.SetCameraPanMode] +method = true + +[[selene.structs.Camera.SetCameraPanMode.args]] +required = false +type = "any" + +[selene.structs.Camera.SetImageServerView] +method = true + +[[selene.structs.Camera.SetImageServerView.args]] +required = false +type = "any" + +[selene.structs.Camera.SetRoll] +method = true + +[[selene.structs.Camera.SetRoll.args]] +required = false +type = "any" + +[selene.structs.Camera.ViewportPointToRay] +method = true + +[[selene.structs.Camera.ViewportPointToRay.args]] +required = false +type = "any" + +[[selene.structs.Camera.ViewportPointToRay.args]] +required = false +type = "any" + +[[selene.structs.Camera.ViewportPointToRay.args]] +required = false +type = "any" + +[selene.structs.Camera.ViewportSize] +property = true + +[selene.structs.Camera.WaitForChild] +method = true + +[[selene.structs.Camera.WaitForChild.args]] +required = false +type = "any" + +[[selene.structs.Camera.WaitForChild.args]] +required = false +type = "any" + +[selene.structs.Camera.WorldToScreenPoint] +method = true + +[[selene.structs.Camera.WorldToScreenPoint.args]] +required = false +type = "any" + +[selene.structs.Camera.WorldToViewportPoint] +method = true + +[[selene.structs.Camera.WorldToViewportPoint.args]] +required = false +type = "any" + +[selene.structs.Camera.Zoom] +method = true + +[[selene.structs.Camera.Zoom.args]] +required = false +type = "any" +[selene.structs.DataModel."*"] +struct = "Instance" + +[selene.structs.DataModel.AncestryChanged] +struct = "Event" + +[selene.structs.DataModel.Archivable] +property = true +writable = "overridden" + +[selene.structs.DataModel.AttributeChanged] +struct = "Event" + +[selene.structs.DataModel.BindToClose] +method = true + +[[selene.structs.DataModel.BindToClose.args]] +required = false +type = "any" + +[selene.structs.DataModel.Changed] +struct = "Event" + +[selene.structs.DataModel.ChildAdded] +struct = "Event" + +[selene.structs.DataModel.ChildRemoved] +struct = "Event" + +[selene.structs.DataModel.ClassName] +property = true + +[selene.structs.DataModel.ClearAllChildren] +method = true +args = [] + +[selene.structs.DataModel.Clone] +method = true +args = [] + +[selene.structs.DataModel.Close] +struct = "Event" + +[selene.structs.DataModel.CloseLate] +struct = "Event" + +[selene.structs.DataModel.CreatorId] +property = true + +[selene.structs.DataModel.CreatorType] +property = true + +[selene.structs.DataModel.DefineFastFlag] +method = true + +[[selene.structs.DataModel.DefineFastFlag.args]] +required = false +type = "any" + +[[selene.structs.DataModel.DefineFastFlag.args]] +required = false +type = "any" + +[selene.structs.DataModel.DefineFastInt] +method = true + +[[selene.structs.DataModel.DefineFastInt.args]] +required = false +type = "any" + +[[selene.structs.DataModel.DefineFastInt.args]] +required = false +type = "any" + +[selene.structs.DataModel.DefineFastString] +method = true + +[[selene.structs.DataModel.DefineFastString.args]] +required = false +type = "any" + +[[selene.structs.DataModel.DefineFastString.args]] +required = false +type = "any" + +[selene.structs.DataModel.DescendantAdded] +struct = "Event" + +[selene.structs.DataModel.DescendantRemoving] +struct = "Event" + +[selene.structs.DataModel.Destroy] +method = true +args = [] + +[selene.structs.DataModel.FindFirstAncestor] +method = true + +[[selene.structs.DataModel.FindFirstAncestor.args]] +required = false +type = "any" + +[selene.structs.DataModel.FindFirstAncestorOfClass] +method = true + +[[selene.structs.DataModel.FindFirstAncestorOfClass.args]] +required = false +type = "any" + +[selene.structs.DataModel.FindFirstAncestorWhichIsA] +method = true + +[[selene.structs.DataModel.FindFirstAncestorWhichIsA.args]] +required = false +type = "any" + +[selene.structs.DataModel.FindFirstChild] +method = true + +[[selene.structs.DataModel.FindFirstChild.args]] +required = false +type = "any" + +[[selene.structs.DataModel.FindFirstChild.args]] +required = false +type = "any" + +[selene.structs.DataModel.FindFirstChildOfClass] +method = true + +[[selene.structs.DataModel.FindFirstChildOfClass.args]] +required = false +type = "any" + +[selene.structs.DataModel.FindFirstChildWhichIsA] +method = true + +[[selene.structs.DataModel.FindFirstChildWhichIsA.args]] +required = false +type = "any" + +[[selene.structs.DataModel.FindFirstChildWhichIsA.args]] +required = false +type = "any" + +[selene.structs.DataModel.FindService] +method = true + +[[selene.structs.DataModel.FindService.args]] +required = false +type = "any" + +[selene.structs.DataModel.GameId] +property = true + +[selene.structs.DataModel.Genre] +property = true + +[selene.structs.DataModel.GetActor] +method = true +args = [] + +[selene.structs.DataModel.GetAttribute] +method = true + +[[selene.structs.DataModel.GetAttribute.args]] +required = false +type = "any" + +[selene.structs.DataModel.GetAttributeChangedSignal] +method = true + +[[selene.structs.DataModel.GetAttributeChangedSignal.args]] +required = false +type = "any" + +[selene.structs.DataModel.GetAttributes] +method = true +args = [] + +[selene.structs.DataModel.GetChildren] +method = true +args = [] + +[selene.structs.DataModel.GetDebugId] +method = true + +[[selene.structs.DataModel.GetDebugId.args]] +required = false +type = "any" + +[selene.structs.DataModel.GetDescendants] +method = true +args = [] + +[selene.structs.DataModel.GetEngineFeature] +method = true + +[[selene.structs.DataModel.GetEngineFeature.args]] +required = false +type = "any" + +[selene.structs.DataModel.GetFastFlag] +method = true + +[[selene.structs.DataModel.GetFastFlag.args]] +required = false +type = "any" + +[selene.structs.DataModel.GetFastInt] +method = true + +[[selene.structs.DataModel.GetFastInt.args]] +required = false +type = "any" + +[selene.structs.DataModel.GetFastString] +method = true + +[[selene.structs.DataModel.GetFastString.args]] +required = false +type = "any" + +[selene.structs.DataModel.GetFullName] +method = true +args = [] + +[selene.structs.DataModel.GetJobsInfo] +method = true +args = [] + +[selene.structs.DataModel.GetObjects] +method = true + +[[selene.structs.DataModel.GetObjects.args]] +required = false +type = "any" + +[selene.structs.DataModel.GetObjectsAsync] +method = true + +[[selene.structs.DataModel.GetObjectsAsync.args]] +required = false +type = "any" + +[selene.structs.DataModel.GetObjectsList] +method = true + +[[selene.structs.DataModel.GetObjectsList.args]] +required = false +type = "any" + +[selene.structs.DataModel.GetPropertyChangedSignal] +method = true + +[[selene.structs.DataModel.GetPropertyChangedSignal.args]] +required = false +type = "any" + +[selene.structs.DataModel.GetService] +method = true + +[[selene.structs.DataModel.GetService.args]] +type = ["ABTestService", "AdService", "AnalyticsService", "AppUpdateService", "AssetCounterService", "AssetDeliveryProxy", "AssetManagerService", "AssetService", "AvatarEditorService", "BadgeService", "CoreGui", "StarterGui", "BrowserService", "BulkImportService", "CacheableContentProvider", "MeshContentProvider", "SolidModelContentProvider", "ChangeHistoryService", "Chat", "ClusterPacketCache", "CollectionService", "ContentProvider", "ContextActionService", "ControllerService", "CookiesService", "CorePackages", "CoreScriptSyncService", "DataStoreService", "Debris", "DraftsService", "EventIngestService", "FlagStandService", "FlyweightService", "CSGDictionaryService", "NonReplicatedCSGDictionaryService", "FriendService", "GamePassService", "GamepadService", "Geometry", "GoogleAnalyticsConfiguration", "GroupService", "GuiService", "GuidRegistryService", "HapticService", "HeightmapImporterService", "Hopper", "HttpRbxApiService", "HttpService", "ILegacyStudioBridge", "LegacyStudioBridge", "InsertService", "InternalContainer", "JointsService", "KeyboardService", "KeyframeSequenceProvider", "LanguageService", "Lighting", "LocalStorageService", "AppStorageService", "UserStorageService", "LocalizationService", "LogService", "LoginService", "LuaWebService", "MarketplaceService", "MemStorageService", "MessagingService", "MouseService", "NetworkClient", "NetworkServer", "NetworkSettings", "NotificationService", "Workspace", "PackageService", "PathfindingService", "PermissionsService", "PhysicsService", "PlayerEmulatorService", "Players", "PluginDebugService", "PluginGuiService", "PointsService", "PolicyService", "ProximityPromptService", "RbxAnalyticsService", "RenderSettings", "ReplicatedFirst", "ReplicatedScriptService", "ReplicatedStorage", "RobloxPluginGuiService", "RobloxReplicatedStorage", "RunService", "RuntimeScriptService", "ScriptContext", "ScriptService", "Selection", "ServerScriptService", "ServerStorage", "SessionService", "SocialService", "SoundService", "SpawnerService", "StarterPack", "StarterPlayer", "Stats", "StopWatchReporter", "Studio", "StudioData", "StudioService", "TaskScheduler", "Teams", "TeleportService", "TestService", "TextService", "ThirdPartyUserService", "TimerService", "TouchInputService", "TracerService", "TweenService", "UGCValidationService", "UnvalidatedAssetService", "UserInputService", "UserService", "VRService", "VersionControlService", "VirtualInputManager", "VirtualUser", "Visit"] + +[selene.structs.DataModel.GraphicsQualityChangeRequest] +struct = "Event" + +[selene.structs.DataModel.HttpGetAsync] +method = true + +[[selene.structs.DataModel.HttpGetAsync.args]] +required = false +type = "any" + +[[selene.structs.DataModel.HttpGetAsync.args]] +required = false +type = "any" + +[selene.structs.DataModel.HttpPostAsync] +method = true + +[[selene.structs.DataModel.HttpPostAsync.args]] +required = false +type = "any" + +[[selene.structs.DataModel.HttpPostAsync.args]] +required = false +type = "any" + +[[selene.structs.DataModel.HttpPostAsync.args]] +required = false +type = "any" + +[[selene.structs.DataModel.HttpPostAsync.args]] +required = false +type = "any" + +[selene.structs.DataModel.InsertObjectsAndJoinIfLegacyAsync] +method = true + +[[selene.structs.DataModel.InsertObjectsAndJoinIfLegacyAsync.args]] +required = false +type = "any" + +[selene.structs.DataModel.IsA] +method = true + +[[selene.structs.DataModel.IsA.args]] +required = false +type = "any" + +[selene.structs.DataModel.IsAncestorOf] +method = true + +[[selene.structs.DataModel.IsAncestorOf.args]] +required = false +type = "any" + +[selene.structs.DataModel.IsDescendantOf] +method = true + +[[selene.structs.DataModel.IsDescendantOf.args]] +required = false +type = "any" + +[selene.structs.DataModel.IsLoaded] +method = true +args = [] + +[selene.structs.DataModel.JobId] +property = true + +[selene.structs.DataModel.Load] +method = true + +[[selene.structs.DataModel.Load.args]] +required = false +type = "any" + +[selene.structs.DataModel.Loaded] +struct = "Event" + +[selene.structs.DataModel.Name] +property = true +writable = "overridden" + +[selene.structs.DataModel.OpenScreenshotsFolder] +method = true +args = [] + +[selene.structs.DataModel.OpenVideosFolder] +method = true +args = [] + +[selene.structs.DataModel.Parent] +struct = "Instance" + +[selene.structs.DataModel.PlaceId] +property = true + +[selene.structs.DataModel.PlaceVersion] +property = true + +[selene.structs.DataModel.PrivateServerId] +property = true + +[selene.structs.DataModel.PrivateServerOwnerId] +property = true + +[selene.structs.DataModel.ReportInGoogleAnalytics] +method = true + +[[selene.structs.DataModel.ReportInGoogleAnalytics.args]] +required = false +type = "any" + +[[selene.structs.DataModel.ReportInGoogleAnalytics.args]] +required = false +type = "any" + +[[selene.structs.DataModel.ReportInGoogleAnalytics.args]] +required = false +type = "any" + +[[selene.structs.DataModel.ReportInGoogleAnalytics.args]] +required = false +type = "any" + +[selene.structs.DataModel.ScreenshotReady] +struct = "Event" + +[selene.structs.DataModel.ServiceAdded] +struct = "Event" + +[selene.structs.DataModel.ServiceRemoving] +struct = "Event" + +[selene.structs.DataModel.SetAttribute] +method = true + +[[selene.structs.DataModel.SetAttribute.args]] +required = false +type = "any" + +[[selene.structs.DataModel.SetAttribute.args]] +required = false +type = "any" + +[selene.structs.DataModel.SetFastFlagForTesting] +method = true + +[[selene.structs.DataModel.SetFastFlagForTesting.args]] +required = false +type = "any" + +[[selene.structs.DataModel.SetFastFlagForTesting.args]] +required = false +type = "any" + +[selene.structs.DataModel.SetFastIntForTesting] +method = true + +[[selene.structs.DataModel.SetFastIntForTesting.args]] +required = false +type = "any" + +[[selene.structs.DataModel.SetFastIntForTesting.args]] +required = false +type = "any" + +[selene.structs.DataModel.SetFastStringForTesting] +method = true + +[[selene.structs.DataModel.SetFastStringForTesting.args]] +required = false +type = "any" + +[[selene.structs.DataModel.SetFastStringForTesting.args]] +required = false +type = "any" + +[selene.structs.DataModel.SetPlaceId] +method = true + +[[selene.structs.DataModel.SetPlaceId.args]] +required = false +type = "any" + +[selene.structs.DataModel.SetUniverseId] +method = true + +[[selene.structs.DataModel.SetUniverseId.args]] +required = false +type = "any" + +[selene.structs.DataModel.Shutdown] +method = true +args = [] + +[selene.structs.DataModel.WaitForChild] +method = true + +[[selene.structs.DataModel.WaitForChild.args]] +required = false +type = "any" + +[[selene.structs.DataModel.WaitForChild.args]] +required = false +type = "any" + +[selene.structs.DataModel.Workspace] +struct = "Workspace" +[selene.structs.EnumItem.Name] +property = true + +[selene.structs.EnumItem.Value] +property = true +[selene.structs.Event.Connect] +method = true + +[[selene.structs.Event.Connect.args]] +type = "function" + +[selene.structs.Event.Wait] +method = true +args = [] +[selene.structs.Instance."*"] +any = true +[selene.structs.Plugin."*"] +struct = "Instance" + +[selene.structs.Plugin.Activate] +method = true + +[[selene.structs.Plugin.Activate.args]] +required = false +type = "any" + +[selene.structs.Plugin.AncestryChanged] +struct = "Event" + +[selene.structs.Plugin.Archivable] +property = true +writable = "overridden" + +[selene.structs.Plugin.AttributeChanged] +struct = "Event" + +[selene.structs.Plugin.Changed] +struct = "Event" + +[selene.structs.Plugin.ChildAdded] +struct = "Event" + +[selene.structs.Plugin.ChildRemoved] +struct = "Event" + +[selene.structs.Plugin.ClassName] +property = true + +[selene.structs.Plugin.ClearAllChildren] +method = true +args = [] + +[selene.structs.Plugin.Clone] +method = true +args = [] + +[selene.structs.Plugin.CollisionEnabled] +property = true + +[selene.structs.Plugin.CreateDockWidgetPluginGui] +method = true + +[[selene.structs.Plugin.CreateDockWidgetPluginGui.args]] +required = false +type = "any" + +[[selene.structs.Plugin.CreateDockWidgetPluginGui.args]] +required = false +type = "any" + +[selene.structs.Plugin.CreatePluginAction] +method = true + +[[selene.structs.Plugin.CreatePluginAction.args]] +required = false +type = "any" + +[[selene.structs.Plugin.CreatePluginAction.args]] +required = false +type = "any" + +[[selene.structs.Plugin.CreatePluginAction.args]] +required = false +type = "any" + +[[selene.structs.Plugin.CreatePluginAction.args]] +required = false +type = "any" + +[[selene.structs.Plugin.CreatePluginAction.args]] +required = false +type = "any" + +[selene.structs.Plugin.CreatePluginMenu] +method = true + +[[selene.structs.Plugin.CreatePluginMenu.args]] +required = false +type = "any" + +[[selene.structs.Plugin.CreatePluginMenu.args]] +required = false +type = "any" + +[[selene.structs.Plugin.CreatePluginMenu.args]] +required = false +type = "any" + +[selene.structs.Plugin.CreateQWidgetPluginGui] +method = true + +[[selene.structs.Plugin.CreateQWidgetPluginGui.args]] +required = false +type = "any" + +[[selene.structs.Plugin.CreateQWidgetPluginGui.args]] +required = false +type = "any" + +[selene.structs.Plugin.CreateToolbar] +method = true + +[[selene.structs.Plugin.CreateToolbar.args]] +required = false +type = "any" + +[selene.structs.Plugin.Deactivate] +method = true +args = [] + +[selene.structs.Plugin.Deactivation] +struct = "Event" + +[selene.structs.Plugin.DescendantAdded] +struct = "Event" + +[selene.structs.Plugin.DescendantRemoving] +struct = "Event" + +[selene.structs.Plugin.Destroy] +method = true +args = [] + +[selene.structs.Plugin.FindFirstAncestor] +method = true + +[[selene.structs.Plugin.FindFirstAncestor.args]] +required = false +type = "any" + +[selene.structs.Plugin.FindFirstAncestorOfClass] +method = true + +[[selene.structs.Plugin.FindFirstAncestorOfClass.args]] +required = false +type = "any" + +[selene.structs.Plugin.FindFirstAncestorWhichIsA] +method = true + +[[selene.structs.Plugin.FindFirstAncestorWhichIsA.args]] +required = false +type = "any" + +[selene.structs.Plugin.FindFirstChild] +method = true + +[[selene.structs.Plugin.FindFirstChild.args]] +required = false +type = "any" + +[[selene.structs.Plugin.FindFirstChild.args]] +required = false +type = "any" + +[selene.structs.Plugin.FindFirstChildOfClass] +method = true + +[[selene.structs.Plugin.FindFirstChildOfClass.args]] +required = false +type = "any" + +[selene.structs.Plugin.FindFirstChildWhichIsA] +method = true + +[[selene.structs.Plugin.FindFirstChildWhichIsA.args]] +required = false +type = "any" + +[[selene.structs.Plugin.FindFirstChildWhichIsA.args]] +required = false +type = "any" + +[selene.structs.Plugin.GetActor] +method = true +args = [] + +[selene.structs.Plugin.GetAttribute] +method = true + +[[selene.structs.Plugin.GetAttribute.args]] +required = false +type = "any" + +[selene.structs.Plugin.GetAttributeChangedSignal] +method = true + +[[selene.structs.Plugin.GetAttributeChangedSignal.args]] +required = false +type = "any" + +[selene.structs.Plugin.GetAttributes] +method = true +args = [] + +[selene.structs.Plugin.GetChildren] +method = true +args = [] + +[selene.structs.Plugin.GetDebugId] +method = true + +[[selene.structs.Plugin.GetDebugId.args]] +required = false +type = "any" + +[selene.structs.Plugin.GetDescendants] +method = true +args = [] + +[selene.structs.Plugin.GetFullName] +method = true +args = [] + +[selene.structs.Plugin.GetItem] +method = true + +[[selene.structs.Plugin.GetItem.args]] +required = false +type = "any" + +[[selene.structs.Plugin.GetItem.args]] +required = false +type = "any" + +[selene.structs.Plugin.GetJoinMode] +method = true +args = [] + +[selene.structs.Plugin.GetMouse] +method = true +args = [] + +[selene.structs.Plugin.GetPropertyChangedSignal] +method = true + +[[selene.structs.Plugin.GetPropertyChangedSignal.args]] +required = false +type = "any" + +[selene.structs.Plugin.GetSelectedRibbonTool] +method = true +args = [] + +[selene.structs.Plugin.GetSetting] +method = true + +[[selene.structs.Plugin.GetSetting.args]] +required = false +type = "any" + +[selene.structs.Plugin.GridSize] +property = true + +[selene.structs.Plugin.ImportFbxAnimation] +method = true + +[[selene.structs.Plugin.ImportFbxAnimation.args]] +required = false +type = "any" + +[[selene.structs.Plugin.ImportFbxAnimation.args]] +required = false +type = "any" + +[selene.structs.Plugin.ImportFbxRig] +method = true + +[[selene.structs.Plugin.ImportFbxRig.args]] +required = false +type = "any" + +[selene.structs.Plugin.Invoke] +method = true + +[[selene.structs.Plugin.Invoke.args]] +required = false +type = "any" + +[[selene.structs.Plugin.Invoke.args]] +required = false +type = "any" + +[selene.structs.Plugin.IsA] +method = true + +[[selene.structs.Plugin.IsA.args]] +required = false +type = "any" + +[selene.structs.Plugin.IsActivated] +method = true +args = [] + +[selene.structs.Plugin.IsActivatedWithExclusiveMouse] +method = true +args = [] + +[selene.structs.Plugin.IsAncestorOf] +method = true + +[[selene.structs.Plugin.IsAncestorOf.args]] +required = false +type = "any" + +[selene.structs.Plugin.IsDescendantOf] +method = true + +[[selene.structs.Plugin.IsDescendantOf.args]] +required = false +type = "any" + +[selene.structs.Plugin.Name] +property = true +writable = "overridden" + +[selene.structs.Plugin.Negate] +method = true + +[[selene.structs.Plugin.Negate.args]] +required = false +type = "any" + +[selene.structs.Plugin.OnInvoke] +method = true + +[[selene.structs.Plugin.OnInvoke.args]] +required = false +type = "any" + +[[selene.structs.Plugin.OnInvoke.args]] +required = false +type = "any" + +[selene.structs.Plugin.OnSetItem] +method = true + +[[selene.structs.Plugin.OnSetItem.args]] +required = false +type = "any" + +[[selene.structs.Plugin.OnSetItem.args]] +required = false +type = "any" + +[selene.structs.Plugin.OpenScript] +method = true + +[[selene.structs.Plugin.OpenScript.args]] +required = false +type = "any" + +[[selene.structs.Plugin.OpenScript.args]] +required = false +type = "any" + +[selene.structs.Plugin.OpenWikiPage] +method = true + +[[selene.structs.Plugin.OpenWikiPage.args]] +required = false +type = "any" + +[selene.structs.Plugin.Parent] +struct = "Instance" + +[selene.structs.Plugin.PauseSound] +method = true + +[[selene.structs.Plugin.PauseSound.args]] +required = false +type = "any" + +[selene.structs.Plugin.PlaySound] +method = true + +[[selene.structs.Plugin.PlaySound.args]] +required = false +type = "any" + +[[selene.structs.Plugin.PlaySound.args]] +required = false +type = "any" + +[selene.structs.Plugin.PromptForExistingAssetId] +method = true + +[[selene.structs.Plugin.PromptForExistingAssetId.args]] +required = false +type = "any" + +[selene.structs.Plugin.PromptSaveSelection] +method = true + +[[selene.structs.Plugin.PromptSaveSelection.args]] +required = false +type = "any" + +[selene.structs.Plugin.ResumeSound] +method = true + +[[selene.structs.Plugin.ResumeSound.args]] +required = false +type = "any" + +[selene.structs.Plugin.SaveSelectedToRoblox] +method = true +args = [] + +[selene.structs.Plugin.SelectRibbonTool] +method = true + +[[selene.structs.Plugin.SelectRibbonTool.args]] +required = false +type = "any" + +[[selene.structs.Plugin.SelectRibbonTool.args]] +required = false +type = "any" + +[selene.structs.Plugin.Separate] +method = true + +[[selene.structs.Plugin.Separate.args]] +required = false +type = "any" + +[selene.structs.Plugin.SetAttribute] +method = true + +[[selene.structs.Plugin.SetAttribute.args]] +required = false +type = "any" + +[[selene.structs.Plugin.SetAttribute.args]] +required = false +type = "any" + +[selene.structs.Plugin.SetItem] +method = true + +[[selene.structs.Plugin.SetItem.args]] +required = false +type = "any" + +[[selene.structs.Plugin.SetItem.args]] +required = false +type = "any" + +[selene.structs.Plugin.SetSetting] +method = true + +[[selene.structs.Plugin.SetSetting.args]] +required = false +type = "any" + +[[selene.structs.Plugin.SetSetting.args]] +required = false +type = "any" + +[selene.structs.Plugin.StartDecalDrag] +method = true + +[[selene.structs.Plugin.StartDecalDrag.args]] +required = false +type = "any" + +[selene.structs.Plugin.StartDrag] +method = true + +[[selene.structs.Plugin.StartDrag.args]] +required = false +type = "any" + +[selene.structs.Plugin.StopAllSounds] +method = true +args = [] + +[selene.structs.Plugin.Union] +method = true + +[[selene.structs.Plugin.Union.args]] +required = false +type = "any" + +[selene.structs.Plugin.Unloading] +struct = "Event" + +[selene.structs.Plugin.WaitForChild] +method = true + +[[selene.structs.Plugin.WaitForChild.args]] +required = false +type = "any" + +[[selene.structs.Plugin.WaitForChild.args]] +required = false +type = "any" +[selene.structs.Script."*"] +struct = "Instance" + +[selene.structs.Script.AncestryChanged] +struct = "Event" + +[selene.structs.Script.Archivable] +property = true +writable = "overridden" + +[selene.structs.Script.AttributeChanged] +struct = "Event" + +[selene.structs.Script.Changed] +struct = "Event" + +[selene.structs.Script.ChildAdded] +struct = "Event" + +[selene.structs.Script.ChildRemoved] +struct = "Event" + +[selene.structs.Script.ClassName] +property = true + +[selene.structs.Script.ClearAllChildren] +method = true +args = [] + +[selene.structs.Script.Clone] +method = true +args = [] + +[selene.structs.Script.CurrentEditor] +struct = "Instance" + +[selene.structs.Script.DescendantAdded] +struct = "Event" + +[selene.structs.Script.DescendantRemoving] +struct = "Event" + +[selene.structs.Script.Destroy] +method = true +args = [] + +[selene.structs.Script.Disabled] +property = true +writable = "overridden" + +[selene.structs.Script.FindFirstAncestor] +method = true + +[[selene.structs.Script.FindFirstAncestor.args]] +required = false +type = "any" + +[selene.structs.Script.FindFirstAncestorOfClass] +method = true + +[[selene.structs.Script.FindFirstAncestorOfClass.args]] +required = false +type = "any" + +[selene.structs.Script.FindFirstAncestorWhichIsA] +method = true + +[[selene.structs.Script.FindFirstAncestorWhichIsA.args]] +required = false +type = "any" + +[selene.structs.Script.FindFirstChild] +method = true + +[[selene.structs.Script.FindFirstChild.args]] +required = false +type = "any" + +[[selene.structs.Script.FindFirstChild.args]] +required = false +type = "any" + +[selene.structs.Script.FindFirstChildOfClass] +method = true + +[[selene.structs.Script.FindFirstChildOfClass.args]] +required = false +type = "any" + +[selene.structs.Script.FindFirstChildWhichIsA] +method = true + +[[selene.structs.Script.FindFirstChildWhichIsA.args]] +required = false +type = "any" + +[[selene.structs.Script.FindFirstChildWhichIsA.args]] +required = false +type = "any" + +[selene.structs.Script.GetActor] +method = true +args = [] + +[selene.structs.Script.GetAttribute] +method = true + +[[selene.structs.Script.GetAttribute.args]] +required = false +type = "any" + +[selene.structs.Script.GetAttributeChangedSignal] +method = true + +[[selene.structs.Script.GetAttributeChangedSignal.args]] +required = false +type = "any" + +[selene.structs.Script.GetAttributes] +method = true +args = [] + +[selene.structs.Script.GetChildren] +method = true +args = [] + +[selene.structs.Script.GetDebugId] +method = true + +[[selene.structs.Script.GetDebugId.args]] +required = false +type = "any" + +[selene.structs.Script.GetDescendants] +method = true +args = [] + +[selene.structs.Script.GetFullName] +method = true +args = [] + +[selene.structs.Script.GetHash] +method = true +args = [] + +[selene.structs.Script.GetPropertyChangedSignal] +method = true + +[[selene.structs.Script.GetPropertyChangedSignal.args]] +required = false +type = "any" + +[selene.structs.Script.IsA] +method = true + +[[selene.structs.Script.IsA.args]] +required = false +type = "any" + +[selene.structs.Script.IsAncestorOf] +method = true + +[[selene.structs.Script.IsAncestorOf.args]] +required = false +type = "any" + +[selene.structs.Script.IsDescendantOf] +method = true + +[[selene.structs.Script.IsDescendantOf.args]] +required = false +type = "any" + +[selene.structs.Script.LinkedSource] +property = true +writable = "overridden" + +[selene.structs.Script.Name] +property = true +writable = "overridden" + +[selene.structs.Script.Parent] +struct = "Instance" + +[selene.structs.Script.SetAttribute] +method = true + +[[selene.structs.Script.SetAttribute.args]] +required = false +type = "any" + +[[selene.structs.Script.SetAttribute.args]] +required = false +type = "any" + +[selene.structs.Script.WaitForChild] +method = true + +[[selene.structs.Script.WaitForChild.args]] +required = false +type = "any" + +[[selene.structs.Script.WaitForChild.args]] +required = false +type = "any" +[selene.structs.Workspace."*"] +struct = "Instance" + +[selene.structs.Workspace.AllowThirdPartySales] +property = true +writable = "overridden" + +[selene.structs.Workspace.AncestryChanged] +struct = "Event" + +[selene.structs.Workspace.Archivable] +property = true +writable = "overridden" + +[selene.structs.Workspace.ArePartsTouchingOthers] +method = true + +[[selene.structs.Workspace.ArePartsTouchingOthers.args]] +required = false +type = "any" + +[[selene.structs.Workspace.ArePartsTouchingOthers.args]] +required = false +type = "any" + +[selene.structs.Workspace.AttributeChanged] +struct = "Event" + +[selene.structs.Workspace.BreakJoints] +method = true +args = [] + +[selene.structs.Workspace.BulkMoveTo] +method = true + +[[selene.structs.Workspace.BulkMoveTo.args]] +required = false +type = "any" + +[[selene.structs.Workspace.BulkMoveTo.args]] +required = false +type = "any" + +[[selene.structs.Workspace.BulkMoveTo.args]] +required = false +type = "any" + +[selene.structs.Workspace.CalculateJumpDistance] +method = true + +[[selene.structs.Workspace.CalculateJumpDistance.args]] +required = false +type = "any" + +[[selene.structs.Workspace.CalculateJumpDistance.args]] +required = false +type = "any" + +[[selene.structs.Workspace.CalculateJumpDistance.args]] +required = false +type = "any" + +[selene.structs.Workspace.CalculateJumpHeight] +method = true + +[[selene.structs.Workspace.CalculateJumpHeight.args]] +required = false +type = "any" + +[[selene.structs.Workspace.CalculateJumpHeight.args]] +required = false +type = "any" + +[selene.structs.Workspace.CalculateJumpPower] +method = true + +[[selene.structs.Workspace.CalculateJumpPower.args]] +required = false +type = "any" + +[[selene.structs.Workspace.CalculateJumpPower.args]] +required = false +type = "any" + +[selene.structs.Workspace.Changed] +struct = "Event" + +[selene.structs.Workspace.ChildAdded] +struct = "Event" + +[selene.structs.Workspace.ChildRemoved] +struct = "Event" + +[selene.structs.Workspace.ClassName] +property = true + +[selene.structs.Workspace.ClearAllChildren] +method = true +args = [] + +[selene.structs.Workspace.Clone] +method = true +args = [] + +[selene.structs.Workspace.CurrentCamera] +struct = "Camera" + +[selene.structs.Workspace.DescendantAdded] +struct = "Event" + +[selene.structs.Workspace.DescendantRemoving] +struct = "Event" + +[selene.structs.Workspace.Destroy] +method = true +args = [] + +[selene.structs.Workspace.DistributedGameTime] +property = true +writable = "overridden" + +[selene.structs.Workspace.ExperimentalSolverIsEnabled] +method = true +args = [] + +[selene.structs.Workspace.FindFirstAncestor] +method = true + +[[selene.structs.Workspace.FindFirstAncestor.args]] +required = false +type = "any" + +[selene.structs.Workspace.FindFirstAncestorOfClass] +method = true + +[[selene.structs.Workspace.FindFirstAncestorOfClass.args]] +required = false +type = "any" + +[selene.structs.Workspace.FindFirstAncestorWhichIsA] +method = true + +[[selene.structs.Workspace.FindFirstAncestorWhichIsA.args]] +required = false +type = "any" + +[selene.structs.Workspace.FindFirstChild] +method = true + +[[selene.structs.Workspace.FindFirstChild.args]] +required = false +type = "any" + +[[selene.structs.Workspace.FindFirstChild.args]] +required = false +type = "any" + +[selene.structs.Workspace.FindFirstChildOfClass] +method = true + +[[selene.structs.Workspace.FindFirstChildOfClass.args]] +required = false +type = "any" + +[selene.structs.Workspace.FindFirstChildWhichIsA] +method = true + +[[selene.structs.Workspace.FindFirstChildWhichIsA.args]] +required = false +type = "any" + +[[selene.structs.Workspace.FindFirstChildWhichIsA.args]] +required = false +type = "any" + +[selene.structs.Workspace.FindPartsInRegion3] +method = true + +[[selene.structs.Workspace.FindPartsInRegion3.args]] +required = false +type = "any" + +[[selene.structs.Workspace.FindPartsInRegion3.args]] +required = false +type = "any" + +[[selene.structs.Workspace.FindPartsInRegion3.args]] +required = false +type = "any" + +[selene.structs.Workspace.FindPartsInRegion3WithIgnoreList] +method = true + +[[selene.structs.Workspace.FindPartsInRegion3WithIgnoreList.args]] +required = false +type = "any" + +[[selene.structs.Workspace.FindPartsInRegion3WithIgnoreList.args]] +required = false +type = "any" + +[[selene.structs.Workspace.FindPartsInRegion3WithIgnoreList.args]] +required = false +type = "any" + +[selene.structs.Workspace.FindPartsInRegion3WithWhiteList] +method = true + +[[selene.structs.Workspace.FindPartsInRegion3WithWhiteList.args]] +required = false +type = "any" + +[[selene.structs.Workspace.FindPartsInRegion3WithWhiteList.args]] +required = false +type = "any" + +[[selene.structs.Workspace.FindPartsInRegion3WithWhiteList.args]] +required = false +type = "any" + +[selene.structs.Workspace.GetActor] +method = true +args = [] + +[selene.structs.Workspace.GetAttribute] +method = true + +[[selene.structs.Workspace.GetAttribute.args]] +required = false +type = "any" + +[selene.structs.Workspace.GetAttributeChangedSignal] +method = true + +[[selene.structs.Workspace.GetAttributeChangedSignal.args]] +required = false +type = "any" + +[selene.structs.Workspace.GetAttributes] +method = true +args = [] + +[selene.structs.Workspace.GetBoundingBox] +method = true +args = [] + +[selene.structs.Workspace.GetChildren] +method = true +args = [] + +[selene.structs.Workspace.GetDebugId] +method = true + +[[selene.structs.Workspace.GetDebugId.args]] +required = false +type = "any" + +[selene.structs.Workspace.GetDescendants] +method = true +args = [] + +[selene.structs.Workspace.GetExtentsSize] +method = true +args = [] + +[selene.structs.Workspace.GetFullName] +method = true +args = [] + +[selene.structs.Workspace.GetNumAwakeParts] +method = true +args = [] + +[selene.structs.Workspace.GetPhysicsThrottling] +method = true +args = [] + +[selene.structs.Workspace.GetPrimaryPartCFrame] +method = true +args = [] + +[selene.structs.Workspace.GetPropertyChangedSignal] +method = true + +[[selene.structs.Workspace.GetPropertyChangedSignal.args]] +required = false +type = "any" + +[selene.structs.Workspace.GetRealPhysicsFPS] +method = true +args = [] + +[selene.structs.Workspace.Gravity] +property = true +writable = "overridden" + +[selene.structs.Workspace.IKMoveTo] +method = true + +[[selene.structs.Workspace.IKMoveTo.args]] +required = false +type = "any" + +[[selene.structs.Workspace.IKMoveTo.args]] +required = false +type = "any" + +[[selene.structs.Workspace.IKMoveTo.args]] +required = false +type = "any" + +[[selene.structs.Workspace.IKMoveTo.args]] +required = false +type = "any" + +[[selene.structs.Workspace.IKMoveTo.args]] +required = false +type = "any" + +[selene.structs.Workspace.IsA] +method = true + +[[selene.structs.Workspace.IsA.args]] +required = false +type = "any" + +[selene.structs.Workspace.IsAncestorOf] +method = true + +[[selene.structs.Workspace.IsAncestorOf.args]] +required = false +type = "any" + +[selene.structs.Workspace.IsDescendantOf] +method = true + +[[selene.structs.Workspace.IsDescendantOf.args]] +required = false +type = "any" + +[selene.structs.Workspace.IsRegion3Empty] +method = true + +[[selene.structs.Workspace.IsRegion3Empty.args]] +required = false +type = "any" + +[[selene.structs.Workspace.IsRegion3Empty.args]] +required = false +type = "any" + +[selene.structs.Workspace.IsRegion3EmptyWithIgnoreList] +method = true + +[[selene.structs.Workspace.IsRegion3EmptyWithIgnoreList.args]] +required = false +type = "any" + +[[selene.structs.Workspace.IsRegion3EmptyWithIgnoreList.args]] +required = false +type = "any" + +[selene.structs.Workspace.JoinToOutsiders] +method = true + +[[selene.structs.Workspace.JoinToOutsiders.args]] +required = false +type = "any" + +[[selene.structs.Workspace.JoinToOutsiders.args]] +required = false +type = "any" + +[selene.structs.Workspace.MakeJoints] +method = true +args = [] + +[selene.structs.Workspace.MeshPartHeads] +property = true +writable = "overridden" + +[selene.structs.Workspace.MoveTo] +method = true + +[[selene.structs.Workspace.MoveTo.args]] +required = false +type = "any" + +[selene.structs.Workspace.Name] +property = true +writable = "overridden" + +[selene.structs.Workspace.PGSIsEnabled] +method = true +args = [] + +[selene.structs.Workspace.Parent] +struct = "Instance" + +[selene.structs.Workspace.PhysicsSimulationRate] +property = true +writable = "overridden" + +[selene.structs.Workspace.PrimaryPart] +struct = "BasePart" + +[selene.structs.Workspace.Raycast] +method = true + +[[selene.structs.Workspace.Raycast.args]] +required = false +type = "any" + +[[selene.structs.Workspace.Raycast.args]] +required = false +type = "any" + +[[selene.structs.Workspace.Raycast.args]] +required = false +type = "any" + +[selene.structs.Workspace.SetAttribute] +method = true + +[[selene.structs.Workspace.SetAttribute.args]] +required = false +type = "any" + +[[selene.structs.Workspace.SetAttribute.args]] +required = false +type = "any" + +[selene.structs.Workspace.SetInsertPoint] +method = true + +[[selene.structs.Workspace.SetInsertPoint.args]] +required = false +type = "any" + +[[selene.structs.Workspace.SetInsertPoint.args]] +required = false +type = "any" + +[selene.structs.Workspace.SetMeshPartHeads] +method = true + +[[selene.structs.Workspace.SetMeshPartHeads.args]] +required = false +type = "any" + +[selene.structs.Workspace.SetPhysicsThrottleEnabled] +method = true + +[[selene.structs.Workspace.SetPhysicsThrottleEnabled.args]] +required = false +type = "any" + +[selene.structs.Workspace.SetPrimaryPartCFrame] +method = true + +[[selene.structs.Workspace.SetPrimaryPartCFrame.args]] +required = false +type = "any" + +[selene.structs.Workspace.StreamingMinRadius] +property = true +writable = "overridden" + +[selene.structs.Workspace.StreamingPauseMode] +property = true +writable = "overridden" + +[selene.structs.Workspace.StreamingTargetRadius] +property = true +writable = "overridden" + +[selene.structs.Workspace.Terrain] +struct = "Instance" + +[selene.structs.Workspace.TouchesUseCollisionGroups] +property = true +writable = "overridden" + +[selene.structs.Workspace.TranslateBy] +method = true + +[[selene.structs.Workspace.TranslateBy.args]] +required = false +type = "any" + +[selene.structs.Workspace.UnjoinFromOutsiders] +method = true + +[[selene.structs.Workspace.UnjoinFromOutsiders.args]] +required = false +type = "any" + +[selene.structs.Workspace.WaitForChild] +method = true + +[[selene.structs.Workspace.WaitForChild.args]] +required = false +type = "any" + +[[selene.structs.Workspace.WaitForChild.args]] +required = false +type = "any" + +[selene.structs.Workspace.ZoomToExtents] +method = true +args = [] +[[Axes.new.args]] +type = "..." +[BrickColor.Black] +args = [] + +[BrickColor.Blue] +args = [] + +[BrickColor.DarkGray] +args = [] + +[BrickColor.Gray] +args = [] + +[BrickColor.Green] +args = [] + +[BrickColor.Red] +args = [] + +[BrickColor.White] +args = [] + +[BrickColor.Yellow] +args = [] +[[BrickColor.new.args]] +type = "any" + +[[BrickColor.new.args]] +required = false +type = "number" + +[[BrickColor.new.args]] +required = false +type = "number" +[[BrickColor.palette.args]] +type = "number" + +[BrickColor.random] +args = [] +[[CFrame.Angles.args]] +required = false +type = "number" + +[[CFrame.Angles.args]] +required = false +type = "number" + +[[CFrame.Angles.args]] +required = false +type = "number" +[[CFrame.fromAxisAngle.args]] +[CFrame.fromAxisAngle.args.type] +display = "Vector3" + +[[CFrame.fromAxisAngle.args]] +type = "number" +[[CFrame.fromEulerAnglesXYZ.args]] +type = "number" + +[[CFrame.fromEulerAnglesXYZ.args]] +type = "number" + +[[CFrame.fromEulerAnglesXYZ.args]] +type = "number" +[[CFrame.fromEulerAnglesYXZ.args]] +type = "number" + +[[CFrame.fromEulerAnglesYXZ.args]] +type = "number" + +[[CFrame.fromEulerAnglesYXZ.args]] +type = "number" +[[CFrame.fromMatrix.args]] +[CFrame.fromMatrix.args.type] +display = "Vector3" + +[[CFrame.fromMatrix.args]] +[CFrame.fromMatrix.args.type] +display = "Vector3" + +[[CFrame.fromMatrix.args]] +[CFrame.fromMatrix.args.type] +display = "Vector3" + +[[CFrame.fromMatrix.args]] +required = false + +[CFrame.fromMatrix.args.type] +display = "Vector3" +[[CFrame.fromOrientation.args]] +type = "number" + +[[CFrame.fromOrientation.args]] +type = "number" + +[[CFrame.fromOrientation.args]] +type = "number" +[[CFrame.lookAt.args]] +[CFrame.lookAt.args.type] +display = "Vector3" + +[[CFrame.lookAt.args]] +[CFrame.lookAt.args.type] +display = "Vector3" + +[[CFrame.lookAt.args]] +required = false + +[CFrame.lookAt.args.type] +display = "Vector3" +[[CFrame.new.args]] +required = false +type = "any" + +[[CFrame.new.args]] +required = false +type = "any" + +[[CFrame.new.args]] +required = false +type = "number" + +[[CFrame.new.args]] +required = false +type = "number" + +[[CFrame.new.args]] +required = false +type = "number" + +[[CFrame.new.args]] +required = false +type = "number" + +[[CFrame.new.args]] +required = false +type = "number" + +[[CFrame.new.args]] +required = false +type = "number" + +[[CFrame.new.args]] +required = false +type = "number" + +[[CFrame.new.args]] +required = false +type = "number" + +[[CFrame.new.args]] +required = false +type = "number" + +[[CFrame.new.args]] +required = false +type = "number" +[[Color3.fromHSV.args]] +type = "number" + +[[Color3.fromHSV.args]] +type = "number" + +[[Color3.fromHSV.args]] +type = "number" +[[Color3.fromRGB.args]] +type = "number" + +[[Color3.fromRGB.args]] +type = "number" + +[[Color3.fromRGB.args]] +type = "number" +[[Color3.new.args]] +required = false +type = "number" + +[[Color3.new.args]] +required = false +type = "number" + +[[Color3.new.args]] +required = false +type = "number" +[[Color3.toHSV.args]] +[Color3.toHSV.args.type] +display = "Color3" +[[ColorSequence.new.args]] +type = "any" + +[[ColorSequence.new.args]] +required = false + +[ColorSequence.new.args.type] +display = "Color3" +[[ColorSequenceKeypoint.new.args]] +type = "number" + +[[ColorSequenceKeypoint.new.args]] +[ColorSequenceKeypoint.new.args.type] +display = "Color3" +[[DateTime.fromIsoDate.args]] +type = "string" +[[DateTime.fromLocalTime.args]] +required = false +type = "number" + +[[DateTime.fromLocalTime.args]] +required = false +type = "number" + +[[DateTime.fromLocalTime.args]] +required = false +type = "number" + +[[DateTime.fromLocalTime.args]] +required = false +type = "number" + +[[DateTime.fromLocalTime.args]] +required = false +type = "number" + +[[DateTime.fromLocalTime.args]] +required = false +type = "number" + +[[DateTime.fromLocalTime.args]] +required = false +type = "number" +[[DateTime.fromUniversalTime.args]] +required = false +type = "number" + +[[DateTime.fromUniversalTime.args]] +required = false +type = "number" + +[[DateTime.fromUniversalTime.args]] +required = false +type = "number" + +[[DateTime.fromUniversalTime.args]] +required = false +type = "number" + +[[DateTime.fromUniversalTime.args]] +required = false +type = "number" + +[[DateTime.fromUniversalTime.args]] +required = false +type = "number" + +[[DateTime.fromUniversalTime.args]] +required = false +type = "number" +[[DateTime.fromUnixTimestamp.args]] +type = "number" +[[DateTime.fromUnixTimestampMillis.args]] +type = "number" + +[DateTime.now] +args = [] + +[DebuggerManager] +args = [] +[[DockWidgetPluginGuiInfo.new.args]] +required = false + +[DockWidgetPluginGuiInfo.new.args.type] +display = "InitialDockState" + +[[DockWidgetPluginGuiInfo.new.args]] +required = false +type = "bool" + +[[DockWidgetPluginGuiInfo.new.args]] +required = false +type = "bool" + +[[DockWidgetPluginGuiInfo.new.args]] +required = false +type = "number" + +[[DockWidgetPluginGuiInfo.new.args]] +required = false +type = "number" + +[[DockWidgetPluginGuiInfo.new.args]] +required = false +type = "number" + +[[DockWidgetPluginGuiInfo.new.args]] +required = false +type = "number" +[Enum.ABTestLoadingStatus.Error] +struct = "EnumItem" + +[Enum.ABTestLoadingStatus.GetEnumItems] +args = [] +method = true + +[Enum.ABTestLoadingStatus.Initialized] +struct = "EnumItem" + +[Enum.ABTestLoadingStatus.None] +struct = "EnumItem" + +[Enum.ABTestLoadingStatus.Pending] +struct = "EnumItem" + +[Enum.ABTestLoadingStatus.ShutOff] +struct = "EnumItem" + +[Enum.ABTestLoadingStatus.TimedOut] +struct = "EnumItem" +[Enum.ActionType.Draw] +struct = "EnumItem" + +[Enum.ActionType.GetEnumItems] +args = [] +method = true + +[Enum.ActionType.Lose] +struct = "EnumItem" + +[Enum.ActionType.Nothing] +struct = "EnumItem" + +[Enum.ActionType.Pause] +struct = "EnumItem" + +[Enum.ActionType.Win] +struct = "EnumItem" +[Enum.ActuatorRelativeTo.Attachment0] +struct = "EnumItem" + +[Enum.ActuatorRelativeTo.Attachment1] +struct = "EnumItem" + +[Enum.ActuatorRelativeTo.GetEnumItems] +args = [] +method = true + +[Enum.ActuatorRelativeTo.World] +struct = "EnumItem" +[Enum.ActuatorType.GetEnumItems] +args = [] +method = true + +[Enum.ActuatorType.Motor] +struct = "EnumItem" + +[Enum.ActuatorType.None] +struct = "EnumItem" + +[Enum.ActuatorType.Servo] +struct = "EnumItem" +[Enum.AdornCullingMode.Automatic] +struct = "EnumItem" + +[Enum.AdornCullingMode.GetEnumItems] +args = [] +method = true + +[Enum.AdornCullingMode.Never] +struct = "EnumItem" +[Enum.AlignType.GetEnumItems] +args = [] +method = true + +[Enum.AlignType.Parallel] +struct = "EnumItem" + +[Enum.AlignType.Perpendicular] +struct = "EnumItem" +[Enum.AlphaMode.GetEnumItems] +args = [] +method = true + +[Enum.AlphaMode.Overlay] +struct = "EnumItem" + +[Enum.AlphaMode.Transparency] +struct = "EnumItem" +[Enum.AnalyticsEconomyAction.Acquire] +struct = "EnumItem" + +[Enum.AnalyticsEconomyAction.Default] +struct = "EnumItem" + +[Enum.AnalyticsEconomyAction.GetEnumItems] +args = [] +method = true + +[Enum.AnalyticsEconomyAction.Spend] +struct = "EnumItem" +[Enum.AnalyticsLogLevel.Debug] +struct = "EnumItem" + +[Enum.AnalyticsLogLevel.Error] +struct = "EnumItem" + +[Enum.AnalyticsLogLevel.Fatal] +struct = "EnumItem" + +[Enum.AnalyticsLogLevel.GetEnumItems] +args = [] +method = true + +[Enum.AnalyticsLogLevel.Information] +struct = "EnumItem" + +[Enum.AnalyticsLogLevel.Trace] +struct = "EnumItem" + +[Enum.AnalyticsLogLevel.Warning] +struct = "EnumItem" +[Enum.AnalyticsProgressionStatus.Abandon] +struct = "EnumItem" + +[Enum.AnalyticsProgressionStatus.Begin] +struct = "EnumItem" + +[Enum.AnalyticsProgressionStatus.Complete] +struct = "EnumItem" + +[Enum.AnalyticsProgressionStatus.Default] +struct = "EnumItem" + +[Enum.AnalyticsProgressionStatus.Fail] +struct = "EnumItem" + +[Enum.AnalyticsProgressionStatus.GetEnumItems] +args = [] +method = true +[Enum.AnimationPriority.Action] +struct = "EnumItem" + +[Enum.AnimationPriority.Core] +struct = "EnumItem" + +[Enum.AnimationPriority.GetEnumItems] +args = [] +method = true + +[Enum.AnimationPriority.Idle] +struct = "EnumItem" + +[Enum.AnimationPriority.Movement] +struct = "EnumItem" +[Enum.AppShellActionType.AvatarEditorPageLoaded] +struct = "EnumItem" + +[Enum.AppShellActionType.GamePageLoaded] +struct = "EnumItem" + +[Enum.AppShellActionType.GetEnumItems] +args = [] +method = true + +[Enum.AppShellActionType.HomePageLoaded] +struct = "EnumItem" + +[Enum.AppShellActionType.None] +struct = "EnumItem" + +[Enum.AppShellActionType.OpenApp] +struct = "EnumItem" + +[Enum.AppShellActionType.ReadConversation] +struct = "EnumItem" + +[Enum.AppShellActionType.TapAvatarTab] +struct = "EnumItem" + +[Enum.AppShellActionType.TapChatTab] +struct = "EnumItem" + +[Enum.AppShellActionType.TapConversationEntry] +struct = "EnumItem" + +[Enum.AppShellActionType.TapGamePageTab] +struct = "EnumItem" + +[Enum.AppShellActionType.TapHomePageTab] +struct = "EnumItem" +[Enum.AppShellFeature.AvatarEditor] +struct = "EnumItem" + +[Enum.AppShellFeature.Chat] +struct = "EnumItem" + +[Enum.AppShellFeature.GamePage] +struct = "EnumItem" + +[Enum.AppShellFeature.GetEnumItems] +args = [] +method = true + +[Enum.AppShellFeature.HomePage] +struct = "EnumItem" + +[Enum.AppShellFeature.Landing] +struct = "EnumItem" + +[Enum.AppShellFeature.More] +struct = "EnumItem" + +[Enum.AppShellFeature.None] +struct = "EnumItem" +[Enum.AppUpdateStatus.Available] +struct = "EnumItem" + +[Enum.AppUpdateStatus.Failed] +struct = "EnumItem" + +[Enum.AppUpdateStatus.GetEnumItems] +args = [] +method = true + +[Enum.AppUpdateStatus.NotAvailable] +struct = "EnumItem" + +[Enum.AppUpdateStatus.NotSupported] +struct = "EnumItem" + +[Enum.AppUpdateStatus.Unknown] +struct = "EnumItem" +[Enum.AspectType.FitWithinMaxSize] +struct = "EnumItem" + +[Enum.AspectType.GetEnumItems] +args = [] +method = true + +[Enum.AspectType.ScaleWithParentSize] +struct = "EnumItem" +[Enum.AssetFetchStatus.Failure] +struct = "EnumItem" + +[Enum.AssetFetchStatus.GetEnumItems] +args = [] +method = true + +[Enum.AssetFetchStatus.Success] +struct = "EnumItem" +[Enum.AssetType.Animation] +struct = "EnumItem" + +[Enum.AssetType.Audio] +struct = "EnumItem" + +[Enum.AssetType.BackAccessory] +struct = "EnumItem" + +[Enum.AssetType.Badge] +struct = "EnumItem" + +[Enum.AssetType.ClimbAnimation] +struct = "EnumItem" + +[Enum.AssetType.DeathAnimation] +struct = "EnumItem" + +[Enum.AssetType.Decal] +struct = "EnumItem" + +[Enum.AssetType.EarAccessory] +struct = "EnumItem" + +[Enum.AssetType.EmoteAnimation] +struct = "EnumItem" + +[Enum.AssetType.EyeAccessory] +struct = "EnumItem" + +[Enum.AssetType.Face] +struct = "EnumItem" + +[Enum.AssetType.FaceAccessory] +struct = "EnumItem" + +[Enum.AssetType.FallAnimation] +struct = "EnumItem" + +[Enum.AssetType.FrontAccessory] +struct = "EnumItem" + +[Enum.AssetType.GamePass] +struct = "EnumItem" + +[Enum.AssetType.Gear] +struct = "EnumItem" + +[Enum.AssetType.GetEnumItems] +args = [] +method = true + +[Enum.AssetType.HairAccessory] +struct = "EnumItem" + +[Enum.AssetType.Hat] +struct = "EnumItem" + +[Enum.AssetType.Head] +struct = "EnumItem" + +[Enum.AssetType.IdleAnimation] +struct = "EnumItem" + +[Enum.AssetType.Image] +struct = "EnumItem" + +[Enum.AssetType.JumpAnimation] +struct = "EnumItem" + +[Enum.AssetType.LeftArm] +struct = "EnumItem" + +[Enum.AssetType.LeftLeg] +struct = "EnumItem" + +[Enum.AssetType.Lua] +struct = "EnumItem" + +[Enum.AssetType.Mesh] +struct = "EnumItem" + +[Enum.AssetType.MeshPart] +struct = "EnumItem" + +[Enum.AssetType.Model] +struct = "EnumItem" + +[Enum.AssetType.NeckAccessory] +struct = "EnumItem" + +[Enum.AssetType.Package] +struct = "EnumItem" + +[Enum.AssetType.Pants] +struct = "EnumItem" + +[Enum.AssetType.Place] +struct = "EnumItem" + +[Enum.AssetType.Plugin] +struct = "EnumItem" + +[Enum.AssetType.PoseAnimation] +struct = "EnumItem" + +[Enum.AssetType.RightArm] +struct = "EnumItem" + +[Enum.AssetType.RightLeg] +struct = "EnumItem" + +[Enum.AssetType.RunAnimation] +struct = "EnumItem" + +[Enum.AssetType.Shirt] +struct = "EnumItem" + +[Enum.AssetType.ShoulderAccessory] +struct = "EnumItem" + +[Enum.AssetType.SwimAnimation] +struct = "EnumItem" + +[Enum.AssetType.TeeShirt] +struct = "EnumItem" + +[Enum.AssetType.Torso] +struct = "EnumItem" + +[Enum.AssetType.Video] +struct = "EnumItem" + +[Enum.AssetType.WaistAccessory] +struct = "EnumItem" + +[Enum.AssetType.WalkAnimation] +struct = "EnumItem" +[Enum.AssetTypeVerification.Always] +struct = "EnumItem" + +[Enum.AssetTypeVerification.ClientOnly] +struct = "EnumItem" + +[Enum.AssetTypeVerification.Default] +struct = "EnumItem" + +[Enum.AssetTypeVerification.GetEnumItems] +args = [] +method = true +[Enum.AutoIndentRule.Absolute] +struct = "EnumItem" + +[Enum.AutoIndentRule.GetEnumItems] +args = [] +method = true + +[Enum.AutoIndentRule.Off] +struct = "EnumItem" + +[Enum.AutoIndentRule.Relative] +struct = "EnumItem" +[Enum.AutomaticSize.GetEnumItems] +args = [] +method = true + +[Enum.AutomaticSize.None] +struct = "EnumItem" + +[Enum.AutomaticSize.X] +struct = "EnumItem" + +[Enum.AutomaticSize.XY] +struct = "EnumItem" + +[Enum.AutomaticSize.Y] +struct = "EnumItem" +[Enum.AvatarAssetType.BackAccessory] +struct = "EnumItem" + +[Enum.AvatarAssetType.ClimbAnimation] +struct = "EnumItem" + +[Enum.AvatarAssetType.EmoteAnimation] +struct = "EnumItem" + +[Enum.AvatarAssetType.Face] +struct = "EnumItem" + +[Enum.AvatarAssetType.FaceAccessory] +struct = "EnumItem" + +[Enum.AvatarAssetType.FallAnimation] +struct = "EnumItem" + +[Enum.AvatarAssetType.FrontAccessory] +struct = "EnumItem" + +[Enum.AvatarAssetType.Gear] +struct = "EnumItem" + +[Enum.AvatarAssetType.GetEnumItems] +args = [] +method = true + +[Enum.AvatarAssetType.HairAccessory] +struct = "EnumItem" + +[Enum.AvatarAssetType.Hat] +struct = "EnumItem" + +[Enum.AvatarAssetType.Head] +struct = "EnumItem" + +[Enum.AvatarAssetType.IdleAnimation] +struct = "EnumItem" + +[Enum.AvatarAssetType.JumpAnimation] +struct = "EnumItem" + +[Enum.AvatarAssetType.LeftArm] +struct = "EnumItem" + +[Enum.AvatarAssetType.LeftLeg] +struct = "EnumItem" + +[Enum.AvatarAssetType.NeckAccessory] +struct = "EnumItem" + +[Enum.AvatarAssetType.Pants] +struct = "EnumItem" + +[Enum.AvatarAssetType.RightArm] +struct = "EnumItem" + +[Enum.AvatarAssetType.RightLeg] +struct = "EnumItem" + +[Enum.AvatarAssetType.RunAnimation] +struct = "EnumItem" + +[Enum.AvatarAssetType.Shirt] +struct = "EnumItem" + +[Enum.AvatarAssetType.ShoulderAccessory] +struct = "EnumItem" + +[Enum.AvatarAssetType.SwimAnimation] +struct = "EnumItem" + +[Enum.AvatarAssetType.TShirt] +struct = "EnumItem" + +[Enum.AvatarAssetType.Torso] +struct = "EnumItem" + +[Enum.AvatarAssetType.WaistAccessory] +struct = "EnumItem" + +[Enum.AvatarAssetType.WalkAnimation] +struct = "EnumItem" +[Enum.AvatarContextMenuOption.Chat] +struct = "EnumItem" + +[Enum.AvatarContextMenuOption.Emote] +struct = "EnumItem" + +[Enum.AvatarContextMenuOption.Friend] +struct = "EnumItem" + +[Enum.AvatarContextMenuOption.GetEnumItems] +args = [] +method = true + +[Enum.AvatarContextMenuOption.InspectMenu] +struct = "EnumItem" +[Enum.AvatarItemType.Asset] +struct = "EnumItem" + +[Enum.AvatarItemType.Bundle] +struct = "EnumItem" + +[Enum.AvatarItemType.GetEnumItems] +args = [] +method = true +[Enum.AvatarJointPositionType.ArtistIntent] +struct = "EnumItem" + +[Enum.AvatarJointPositionType.Fixed] +struct = "EnumItem" + +[Enum.AvatarJointPositionType.GetEnumItems] +args = [] +method = true +[Enum.AvatarPromptResult.Failed] +struct = "EnumItem" + +[Enum.AvatarPromptResult.GetEnumItems] +args = [] +method = true + +[Enum.AvatarPromptResult.PermissionDenied] +struct = "EnumItem" + +[Enum.AvatarPromptResult.Success] +struct = "EnumItem" +[Enum.Axis.GetEnumItems] +args = [] +method = true + +[Enum.Axis.X] +struct = "EnumItem" + +[Enum.Axis.Y] +struct = "EnumItem" + +[Enum.Axis.Z] +struct = "EnumItem" +[Enum.BinType.Clone] +struct = "EnumItem" + +[Enum.BinType.GameTool] +struct = "EnumItem" + +[Enum.BinType.GetEnumItems] +args = [] +method = true + +[Enum.BinType.Grab] +struct = "EnumItem" + +[Enum.BinType.Hammer] +struct = "EnumItem" + +[Enum.BinType.Script] +struct = "EnumItem" +[Enum.BodyPart.GetEnumItems] +args = [] +method = true + +[Enum.BodyPart.Head] +struct = "EnumItem" + +[Enum.BodyPart.LeftArm] +struct = "EnumItem" + +[Enum.BodyPart.LeftLeg] +struct = "EnumItem" + +[Enum.BodyPart.RightArm] +struct = "EnumItem" + +[Enum.BodyPart.RightLeg] +struct = "EnumItem" + +[Enum.BodyPart.Torso] +struct = "EnumItem" +[Enum.BodyPartR15.GetEnumItems] +args = [] +method = true + +[Enum.BodyPartR15.Head] +struct = "EnumItem" + +[Enum.BodyPartR15.LeftFoot] +struct = "EnumItem" + +[Enum.BodyPartR15.LeftHand] +struct = "EnumItem" + +[Enum.BodyPartR15.LeftLowerArm] +struct = "EnumItem" + +[Enum.BodyPartR15.LeftLowerLeg] +struct = "EnumItem" + +[Enum.BodyPartR15.LeftUpperArm] +struct = "EnumItem" + +[Enum.BodyPartR15.LeftUpperLeg] +struct = "EnumItem" + +[Enum.BodyPartR15.LowerTorso] +struct = "EnumItem" + +[Enum.BodyPartR15.RightFoot] +struct = "EnumItem" + +[Enum.BodyPartR15.RightHand] +struct = "EnumItem" + +[Enum.BodyPartR15.RightLowerArm] +struct = "EnumItem" + +[Enum.BodyPartR15.RightLowerLeg] +struct = "EnumItem" + +[Enum.BodyPartR15.RightUpperArm] +struct = "EnumItem" + +[Enum.BodyPartR15.RightUpperLeg] +struct = "EnumItem" + +[Enum.BodyPartR15.RootPart] +struct = "EnumItem" + +[Enum.BodyPartR15.Unknown] +struct = "EnumItem" + +[Enum.BodyPartR15.UpperTorso] +struct = "EnumItem" +[Enum.BorderMode.GetEnumItems] +args = [] +method = true + +[Enum.BorderMode.Inset] +struct = "EnumItem" + +[Enum.BorderMode.Middle] +struct = "EnumItem" + +[Enum.BorderMode.Outline] +struct = "EnumItem" +[Enum.BreakReason.Error] +struct = "EnumItem" + +[Enum.BreakReason.GetEnumItems] +args = [] +method = true + +[Enum.BreakReason.Other] +struct = "EnumItem" + +[Enum.BreakReason.SpecialBreakpoint] +struct = "EnumItem" + +[Enum.BreakReason.UserBreakpoint] +struct = "EnumItem" +[Enum.BulkMoveMode.FireAllEvents] +struct = "EnumItem" + +[Enum.BulkMoveMode.FireCFrameChanged] +struct = "EnumItem" + +[Enum.BulkMoveMode.GetEnumItems] +args = [] +method = true +[Enum.BundleType.Animations] +struct = "EnumItem" + +[Enum.BundleType.BodyParts] +struct = "EnumItem" + +[Enum.BundleType.GetEnumItems] +args = [] +method = true +[Enum.Button.Dismount] +struct = "EnumItem" + +[Enum.Button.GetEnumItems] +args = [] +method = true + +[Enum.Button.Jump] +struct = "EnumItem" +[Enum.ButtonStyle.Custom] +struct = "EnumItem" + +[Enum.ButtonStyle.GetEnumItems] +args = [] +method = true + +[Enum.ButtonStyle.RobloxButton] +struct = "EnumItem" + +[Enum.ButtonStyle.RobloxButtonDefault] +struct = "EnumItem" + +[Enum.ButtonStyle.RobloxRoundButton] +struct = "EnumItem" + +[Enum.ButtonStyle.RobloxRoundDefaultButton] +struct = "EnumItem" + +[Enum.ButtonStyle.RobloxRoundDropdownButton] +struct = "EnumItem" +[Enum.CameraMode.Classic] +struct = "EnumItem" + +[Enum.CameraMode.GetEnumItems] +args = [] +method = true + +[Enum.CameraMode.LockFirstPerson] +struct = "EnumItem" +[Enum.CameraPanMode.Classic] +struct = "EnumItem" + +[Enum.CameraPanMode.EdgeBump] +struct = "EnumItem" + +[Enum.CameraPanMode.GetEnumItems] +args = [] +method = true +[Enum.CameraType.Attach] +struct = "EnumItem" + +[Enum.CameraType.Custom] +struct = "EnumItem" + +[Enum.CameraType.Fixed] +struct = "EnumItem" + +[Enum.CameraType.Follow] +struct = "EnumItem" + +[Enum.CameraType.GetEnumItems] +args = [] +method = true + +[Enum.CameraType.Orbital] +struct = "EnumItem" + +[Enum.CameraType.Scriptable] +struct = "EnumItem" + +[Enum.CameraType.Track] +struct = "EnumItem" + +[Enum.CameraType.Watch] +struct = "EnumItem" +[Enum.CatalogCategoryFilter.Collectibles] +struct = "EnumItem" + +[Enum.CatalogCategoryFilter.CommunityCreations] +struct = "EnumItem" + +[Enum.CatalogCategoryFilter.Featured] +struct = "EnumItem" + +[Enum.CatalogCategoryFilter.GetEnumItems] +args = [] +method = true + +[Enum.CatalogCategoryFilter.None] +struct = "EnumItem" + +[Enum.CatalogCategoryFilter.Premium] +struct = "EnumItem" +[Enum.CatalogSortType.GetEnumItems] +args = [] +method = true + +[Enum.CatalogSortType.MostFavorited] +struct = "EnumItem" + +[Enum.CatalogSortType.PriceHighToLow] +struct = "EnumItem" + +[Enum.CatalogSortType.PriceLowToHigh] +struct = "EnumItem" + +[Enum.CatalogSortType.RecentlyUpdated] +struct = "EnumItem" + +[Enum.CatalogSortType.Relevance] +struct = "EnumItem" +[Enum.CellBlock.CornerWedge] +struct = "EnumItem" + +[Enum.CellBlock.GetEnumItems] +args = [] +method = true + +[Enum.CellBlock.HorizontalWedge] +struct = "EnumItem" + +[Enum.CellBlock.InverseCornerWedge] +struct = "EnumItem" + +[Enum.CellBlock.Solid] +struct = "EnumItem" + +[Enum.CellBlock.VerticalWedge] +struct = "EnumItem" +[Enum.CellMaterial.Aluminum] +struct = "EnumItem" + +[Enum.CellMaterial.Asphalt] +struct = "EnumItem" + +[Enum.CellMaterial.BluePlastic] +struct = "EnumItem" + +[Enum.CellMaterial.Brick] +struct = "EnumItem" + +[Enum.CellMaterial.Cement] +struct = "EnumItem" + +[Enum.CellMaterial.CinderBlock] +struct = "EnumItem" + +[Enum.CellMaterial.Empty] +struct = "EnumItem" + +[Enum.CellMaterial.GetEnumItems] +args = [] +method = true + +[Enum.CellMaterial.Gold] +struct = "EnumItem" + +[Enum.CellMaterial.Granite] +struct = "EnumItem" + +[Enum.CellMaterial.Grass] +struct = "EnumItem" + +[Enum.CellMaterial.Gravel] +struct = "EnumItem" + +[Enum.CellMaterial.Iron] +struct = "EnumItem" + +[Enum.CellMaterial.MossyStone] +struct = "EnumItem" + +[Enum.CellMaterial.RedPlastic] +struct = "EnumItem" + +[Enum.CellMaterial.Sand] +struct = "EnumItem" + +[Enum.CellMaterial.Water] +struct = "EnumItem" + +[Enum.CellMaterial.WoodLog] +struct = "EnumItem" + +[Enum.CellMaterial.WoodPlank] +struct = "EnumItem" +[Enum.CellOrientation.GetEnumItems] +args = [] +method = true + +[Enum.CellOrientation.NegX] +struct = "EnumItem" + +[Enum.CellOrientation.NegZ] +struct = "EnumItem" + +[Enum.CellOrientation.X] +struct = "EnumItem" + +[Enum.CellOrientation.Z] +struct = "EnumItem" +[Enum.CenterDialogType.GetEnumItems] +args = [] +method = true + +[Enum.CenterDialogType.ModalDialog] +struct = "EnumItem" + +[Enum.CenterDialogType.PlayerInitiatedDialog] +struct = "EnumItem" + +[Enum.CenterDialogType.QuitDialog] +struct = "EnumItem" + +[Enum.CenterDialogType.UnsolicitedDialog] +struct = "EnumItem" +[Enum.ChatCallbackType.GetEnumItems] +args = [] +method = true + +[Enum.ChatCallbackType.OnClientFormattingMessage] +struct = "EnumItem" + +[Enum.ChatCallbackType.OnClientSendingMessage] +struct = "EnumItem" + +[Enum.ChatCallbackType.OnCreatingChatWindow] +struct = "EnumItem" + +[Enum.ChatCallbackType.OnServerReceivingMessage] +struct = "EnumItem" +[Enum.ChatColor.Blue] +struct = "EnumItem" + +[Enum.ChatColor.GetEnumItems] +args = [] +method = true + +[Enum.ChatColor.Green] +struct = "EnumItem" + +[Enum.ChatColor.Red] +struct = "EnumItem" + +[Enum.ChatColor.White] +struct = "EnumItem" +[Enum.ChatMode.GetEnumItems] +args = [] +method = true + +[Enum.ChatMode.Menu] +struct = "EnumItem" + +[Enum.ChatMode.TextAndMenu] +struct = "EnumItem" +[Enum.ChatPrivacyMode.AllUsers] +struct = "EnumItem" + +[Enum.ChatPrivacyMode.Friends] +struct = "EnumItem" + +[Enum.ChatPrivacyMode.GetEnumItems] +args = [] +method = true + +[Enum.ChatPrivacyMode.NoOne] +struct = "EnumItem" +[Enum.ChatStyle.Bubble] +struct = "EnumItem" + +[Enum.ChatStyle.Classic] +struct = "EnumItem" + +[Enum.ChatStyle.ClassicAndBubble] +struct = "EnumItem" + +[Enum.ChatStyle.GetEnumItems] +args = [] +method = true +[Enum.CollisionFidelity.Box] +struct = "EnumItem" + +[Enum.CollisionFidelity.Default] +struct = "EnumItem" + +[Enum.CollisionFidelity.GetEnumItems] +args = [] +method = true + +[Enum.CollisionFidelity.Hull] +struct = "EnumItem" + +[Enum.CollisionFidelity.PreciseConvexDecomposition] +struct = "EnumItem" +[Enum.ComputerCameraMovementMode.CameraToggle] +struct = "EnumItem" + +[Enum.ComputerCameraMovementMode.Classic] +struct = "EnumItem" + +[Enum.ComputerCameraMovementMode.Default] +struct = "EnumItem" + +[Enum.ComputerCameraMovementMode.Follow] +struct = "EnumItem" + +[Enum.ComputerCameraMovementMode.GetEnumItems] +args = [] +method = true + +[Enum.ComputerCameraMovementMode.Orbital] +struct = "EnumItem" +[Enum.ComputerMovementMode.ClickToMove] +struct = "EnumItem" + +[Enum.ComputerMovementMode.Default] +struct = "EnumItem" + +[Enum.ComputerMovementMode.GetEnumItems] +args = [] +method = true + +[Enum.ComputerMovementMode.KeyboardMouse] +struct = "EnumItem" +[Enum.ConnectionError.DisconnectBadhash] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectBlockedIP] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectBySecurityPolicy] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectCloudEditKick] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectConnectionLost] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectDevMaintenance] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectDuplicatePlayer] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectDuplicateTicket] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectErrors] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectEvicted] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectHashTimeout] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectIdle] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectIllegalTeleport] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectLuaKick] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectNewSecurityKeyMismatch] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectOnRemoteSysStats] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectPlayerless] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectProtocolMismatch] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectRaknetErrors] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectReceivePacketError] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectReceivePacketStreamError] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectRejoin] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectRobloxMaintenance] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectSecurityKeyMismatch] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectSendPacketError] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectTimeout] +struct = "EnumItem" + +[Enum.ConnectionError.DisconnectWrongVersion] +struct = "EnumItem" + +[Enum.ConnectionError.GetEnumItems] +args = [] +method = true + +[Enum.ConnectionError.OK] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchCustomMessage] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchDisabled] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchError] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchErrors] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchFlooded] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchGameEnded] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchGameFull] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchHashException] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchHashExpired] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchHttpError] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchOtherError] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchPartyCannotFit] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchRestricted] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchUnauthorized] +struct = "EnumItem" + +[Enum.ConnectionError.PlacelaunchUserLeft] +struct = "EnumItem" + +[Enum.ConnectionError.TeleportErrors] +struct = "EnumItem" + +[Enum.ConnectionError.TeleportFailure] +struct = "EnumItem" + +[Enum.ConnectionError.TeleportFlooded] +struct = "EnumItem" + +[Enum.ConnectionError.TeleportGameEnded] +struct = "EnumItem" + +[Enum.ConnectionError.TeleportGameFull] +struct = "EnumItem" + +[Enum.ConnectionError.TeleportGameNotFound] +struct = "EnumItem" + +[Enum.ConnectionError.TeleportIsTeleporting] +struct = "EnumItem" + +[Enum.ConnectionError.TeleportUnauthorized] +struct = "EnumItem" +[Enum.ConnectionState.Connected] +struct = "EnumItem" + +[Enum.ConnectionState.Disconnected] +struct = "EnumItem" + +[Enum.ConnectionState.GetEnumItems] +args = [] +method = true +[Enum.ContextActionPriority.Default] +struct = "EnumItem" + +[Enum.ContextActionPriority.GetEnumItems] +args = [] +method = true + +[Enum.ContextActionPriority.High] +struct = "EnumItem" + +[Enum.ContextActionPriority.Low] +struct = "EnumItem" + +[Enum.ContextActionPriority.Medium] +struct = "EnumItem" +[Enum.ContextActionResult.GetEnumItems] +args = [] +method = true + +[Enum.ContextActionResult.Pass] +struct = "EnumItem" + +[Enum.ContextActionResult.Sink] +struct = "EnumItem" +[Enum.ControlMode.Classic] +struct = "EnumItem" + +[Enum.ControlMode.GetEnumItems] +args = [] +method = true + +[Enum.ControlMode.MouseLockSwitch] +struct = "EnumItem" +[Enum.CoreGuiType.All] +struct = "EnumItem" + +[Enum.CoreGuiType.Backpack] +struct = "EnumItem" + +[Enum.CoreGuiType.Chat] +struct = "EnumItem" + +[Enum.CoreGuiType.EmotesMenu] +struct = "EnumItem" + +[Enum.CoreGuiType.GetEnumItems] +args = [] +method = true + +[Enum.CoreGuiType.Health] +struct = "EnumItem" + +[Enum.CoreGuiType.PlayerList] +struct = "EnumItem" +[Enum.CreatorType.GetEnumItems] +args = [] +method = true + +[Enum.CreatorType.Group] +struct = "EnumItem" + +[Enum.CreatorType.User] +struct = "EnumItem" +[Enum.CurrencyType.Default] +struct = "EnumItem" + +[Enum.CurrencyType.GetEnumItems] +args = [] +method = true + +[Enum.CurrencyType.Robux] +struct = "EnumItem" + +[Enum.CurrencyType.Tix] +struct = "EnumItem" +[Enum.CustomCameraMode.Classic] +struct = "EnumItem" + +[Enum.CustomCameraMode.Default] +struct = "EnumItem" + +[Enum.CustomCameraMode.Follow] +struct = "EnumItem" + +[Enum.CustomCameraMode.GetEnumItems] +args = [] +method = true +[Enum.DataStoreRequestType.GetAsync] +struct = "EnumItem" + +[Enum.DataStoreRequestType.GetEnumItems] +args = [] +method = true + +[Enum.DataStoreRequestType.GetSortedAsync] +struct = "EnumItem" + +[Enum.DataStoreRequestType.OnUpdate] +struct = "EnumItem" + +[Enum.DataStoreRequestType.SetIncrementAsync] +struct = "EnumItem" + +[Enum.DataStoreRequestType.SetIncrementSortedAsync] +struct = "EnumItem" + +[Enum.DataStoreRequestType.UpdateAsync] +struct = "EnumItem" +[Enum.DevCameraOcclusionMode.GetEnumItems] +args = [] +method = true + +[Enum.DevCameraOcclusionMode.Invisicam] +struct = "EnumItem" + +[Enum.DevCameraOcclusionMode.Zoom] +struct = "EnumItem" +[Enum.DevComputerCameraMovementMode.CameraToggle] +struct = "EnumItem" + +[Enum.DevComputerCameraMovementMode.Classic] +struct = "EnumItem" + +[Enum.DevComputerCameraMovementMode.Follow] +struct = "EnumItem" + +[Enum.DevComputerCameraMovementMode.GetEnumItems] +args = [] +method = true + +[Enum.DevComputerCameraMovementMode.Orbital] +struct = "EnumItem" + +[Enum.DevComputerCameraMovementMode.UserChoice] +struct = "EnumItem" +[Enum.DevComputerMovementMode.ClickToMove] +struct = "EnumItem" + +[Enum.DevComputerMovementMode.GetEnumItems] +args = [] +method = true + +[Enum.DevComputerMovementMode.KeyboardMouse] +struct = "EnumItem" + +[Enum.DevComputerMovementMode.Scriptable] +struct = "EnumItem" + +[Enum.DevComputerMovementMode.UserChoice] +struct = "EnumItem" +[Enum.DevTouchCameraMovementMode.Classic] +struct = "EnumItem" + +[Enum.DevTouchCameraMovementMode.Follow] +struct = "EnumItem" + +[Enum.DevTouchCameraMovementMode.GetEnumItems] +args = [] +method = true + +[Enum.DevTouchCameraMovementMode.Orbital] +struct = "EnumItem" + +[Enum.DevTouchCameraMovementMode.UserChoice] +struct = "EnumItem" +[Enum.DevTouchMovementMode.ClickToMove] +struct = "EnumItem" + +[Enum.DevTouchMovementMode.DPad] +struct = "EnumItem" + +[Enum.DevTouchMovementMode.DynamicThumbstick] +struct = "EnumItem" + +[Enum.DevTouchMovementMode.GetEnumItems] +args = [] +method = true + +[Enum.DevTouchMovementMode.Scriptable] +struct = "EnumItem" + +[Enum.DevTouchMovementMode.Thumbpad] +struct = "EnumItem" + +[Enum.DevTouchMovementMode.Thumbstick] +struct = "EnumItem" + +[Enum.DevTouchMovementMode.UserChoice] +struct = "EnumItem" +[Enum.DeveloperMemoryTag.Animation] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.GetEnumItems] +args = [] +method = true + +[Enum.DeveloperMemoryTag.GraphicsMeshParts] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.GraphicsParticles] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.GraphicsParts] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.GraphicsSolidModels] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.GraphicsSpatialHash] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.GraphicsTerrain] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.GraphicsTexture] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.GraphicsTextureCharacter] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.Gui] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.HttpCache] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.Instances] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.Internal] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.LuaHeap] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.Navigation] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.PhysicsCollision] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.PhysicsParts] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.Script] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.Signals] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.Sounds] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.StreamingSounds] +struct = "EnumItem" + +[Enum.DeveloperMemoryTag.TerrainVoxels] +struct = "EnumItem" +[Enum.DeviceType.Desktop] +struct = "EnumItem" + +[Enum.DeviceType.GetEnumItems] +args = [] +method = true + +[Enum.DeviceType.Phone] +struct = "EnumItem" + +[Enum.DeviceType.Tablet] +struct = "EnumItem" + +[Enum.DeviceType.Unknown] +struct = "EnumItem" +[Enum.DialogBehaviorType.GetEnumItems] +args = [] +method = true + +[Enum.DialogBehaviorType.MultiplePlayers] +struct = "EnumItem" + +[Enum.DialogBehaviorType.SinglePlayer] +struct = "EnumItem" +[Enum.DialogPurpose.GetEnumItems] +args = [] +method = true + +[Enum.DialogPurpose.Help] +struct = "EnumItem" + +[Enum.DialogPurpose.Quest] +struct = "EnumItem" + +[Enum.DialogPurpose.Shop] +struct = "EnumItem" +[Enum.DialogTone.Enemy] +struct = "EnumItem" + +[Enum.DialogTone.Friendly] +struct = "EnumItem" + +[Enum.DialogTone.GetEnumItems] +args = [] +method = true + +[Enum.DialogTone.Neutral] +struct = "EnumItem" +[Enum.DominantAxis.GetEnumItems] +args = [] +method = true + +[Enum.DominantAxis.Height] +struct = "EnumItem" + +[Enum.DominantAxis.Width] +struct = "EnumItem" +[Enum.DraftStatusCode.DraftCommitted] +struct = "EnumItem" + +[Enum.DraftStatusCode.DraftOutdated] +struct = "EnumItem" + +[Enum.DraftStatusCode.GetEnumItems] +args = [] +method = true + +[Enum.DraftStatusCode.OK] +struct = "EnumItem" + +[Enum.DraftStatusCode.ScriptRemoved] +struct = "EnumItem" +[Enum.EasingDirection.GetEnumItems] +args = [] +method = true + +[Enum.EasingDirection.In] +struct = "EnumItem" + +[Enum.EasingDirection.InOut] +struct = "EnumItem" + +[Enum.EasingDirection.Out] +struct = "EnumItem" +[Enum.EasingStyle.Back] +struct = "EnumItem" + +[Enum.EasingStyle.Bounce] +struct = "EnumItem" + +[Enum.EasingStyle.Circular] +struct = "EnumItem" + +[Enum.EasingStyle.Cubic] +struct = "EnumItem" + +[Enum.EasingStyle.Elastic] +struct = "EnumItem" + +[Enum.EasingStyle.Exponential] +struct = "EnumItem" + +[Enum.EasingStyle.GetEnumItems] +args = [] +method = true + +[Enum.EasingStyle.Linear] +struct = "EnumItem" + +[Enum.EasingStyle.Quad] +struct = "EnumItem" + +[Enum.EasingStyle.Quart] +struct = "EnumItem" + +[Enum.EasingStyle.Quint] +struct = "EnumItem" + +[Enum.EasingStyle.Sine] +struct = "EnumItem" +[Enum.ElasticBehavior.Always] +struct = "EnumItem" + +[Enum.ElasticBehavior.GetEnumItems] +args = [] +method = true + +[Enum.ElasticBehavior.Never] +struct = "EnumItem" + +[Enum.ElasticBehavior.WhenScrollable] +struct = "EnumItem" +[Enum.EnviromentalPhysicsThrottle.Always] +struct = "EnumItem" + +[Enum.EnviromentalPhysicsThrottle.DefaultAuto] +struct = "EnumItem" + +[Enum.EnviromentalPhysicsThrottle.Disabled] +struct = "EnumItem" + +[Enum.EnviromentalPhysicsThrottle.GetEnumItems] +args = [] +method = true + +[Enum.EnviromentalPhysicsThrottle.Skip16] +struct = "EnumItem" + +[Enum.EnviromentalPhysicsThrottle.Skip2] +struct = "EnumItem" + +[Enum.EnviromentalPhysicsThrottle.Skip4] +struct = "EnumItem" + +[Enum.EnviromentalPhysicsThrottle.Skip8] +struct = "EnumItem" +[Enum.ExplosionType.Craters] +struct = "EnumItem" + +[Enum.ExplosionType.GetEnumItems] +args = [] +method = true + +[Enum.ExplosionType.NoCraters] +struct = "EnumItem" +[Enum.FieldOfViewMode.Diagonal] +struct = "EnumItem" + +[Enum.FieldOfViewMode.GetEnumItems] +args = [] +method = true + +[Enum.FieldOfViewMode.MaxAxis] +struct = "EnumItem" + +[Enum.FieldOfViewMode.Vertical] +struct = "EnumItem" +[Enum.FillDirection.GetEnumItems] +args = [] +method = true + +[Enum.FillDirection.Horizontal] +struct = "EnumItem" + +[Enum.FillDirection.Vertical] +struct = "EnumItem" +[Enum.FilterResult.Accepted] +struct = "EnumItem" + +[Enum.FilterResult.GetEnumItems] +args = [] +method = true + +[Enum.FilterResult.Rejected] +struct = "EnumItem" +[Enum.Font.AmaticSC] +struct = "EnumItem" + +[Enum.Font.Antique] +struct = "EnumItem" + +[Enum.Font.Arcade] +struct = "EnumItem" + +[Enum.Font.Arial] +struct = "EnumItem" + +[Enum.Font.ArialBold] +struct = "EnumItem" + +[Enum.Font.Bangers] +struct = "EnumItem" + +[Enum.Font.Bodoni] +struct = "EnumItem" + +[Enum.Font.Cartoon] +struct = "EnumItem" + +[Enum.Font.Code] +struct = "EnumItem" + +[Enum.Font.Creepster] +struct = "EnumItem" + +[Enum.Font.DenkOne] +struct = "EnumItem" + +[Enum.Font.Fantasy] +struct = "EnumItem" + +[Enum.Font.Fondamento] +struct = "EnumItem" + +[Enum.Font.FredokaOne] +struct = "EnumItem" + +[Enum.Font.Garamond] +struct = "EnumItem" + +[Enum.Font.GetEnumItems] +args = [] +method = true + +[Enum.Font.Gotham] +struct = "EnumItem" + +[Enum.Font.GothamBlack] +struct = "EnumItem" + +[Enum.Font.GothamBold] +struct = "EnumItem" + +[Enum.Font.GothamSemibold] +struct = "EnumItem" + +[Enum.Font.GrenzeGotisch] +struct = "EnumItem" + +[Enum.Font.Highway] +struct = "EnumItem" + +[Enum.Font.IndieFlower] +struct = "EnumItem" + +[Enum.Font.JosefinSans] +struct = "EnumItem" + +[Enum.Font.Jura] +struct = "EnumItem" + +[Enum.Font.Kalam] +struct = "EnumItem" + +[Enum.Font.Legacy] +struct = "EnumItem" + +[Enum.Font.LuckiestGuy] +struct = "EnumItem" + +[Enum.Font.Merriweather] +struct = "EnumItem" + +[Enum.Font.Michroma] +struct = "EnumItem" + +[Enum.Font.Nunito] +struct = "EnumItem" + +[Enum.Font.Oswald] +struct = "EnumItem" + +[Enum.Font.PatrickHand] +struct = "EnumItem" + +[Enum.Font.PermanentMarker] +struct = "EnumItem" + +[Enum.Font.Roboto] +struct = "EnumItem" + +[Enum.Font.RobotoCondensed] +struct = "EnumItem" + +[Enum.Font.RobotoMono] +struct = "EnumItem" + +[Enum.Font.Sarpanch] +struct = "EnumItem" + +[Enum.Font.SciFi] +struct = "EnumItem" + +[Enum.Font.SourceSans] +struct = "EnumItem" + +[Enum.Font.SourceSansBold] +struct = "EnumItem" + +[Enum.Font.SourceSansItalic] +struct = "EnumItem" + +[Enum.Font.SourceSansLight] +struct = "EnumItem" + +[Enum.Font.SourceSansSemibold] +struct = "EnumItem" + +[Enum.Font.SpecialElite] +struct = "EnumItem" + +[Enum.Font.TitilliumWeb] +struct = "EnumItem" + +[Enum.Font.Ubuntu] +struct = "EnumItem" +[Enum.FontSize.GetEnumItems] +args = [] +method = true + +[Enum.FontSize.Size10] +struct = "EnumItem" + +[Enum.FontSize.Size11] +struct = "EnumItem" + +[Enum.FontSize.Size12] +struct = "EnumItem" + +[Enum.FontSize.Size14] +struct = "EnumItem" + +[Enum.FontSize.Size18] +struct = "EnumItem" + +[Enum.FontSize.Size24] +struct = "EnumItem" + +[Enum.FontSize.Size28] +struct = "EnumItem" + +[Enum.FontSize.Size32] +struct = "EnumItem" + +[Enum.FontSize.Size36] +struct = "EnumItem" + +[Enum.FontSize.Size42] +struct = "EnumItem" + +[Enum.FontSize.Size48] +struct = "EnumItem" + +[Enum.FontSize.Size60] +struct = "EnumItem" + +[Enum.FontSize.Size8] +struct = "EnumItem" + +[Enum.FontSize.Size9] +struct = "EnumItem" + +[Enum.FontSize.Size96] +struct = "EnumItem" +[Enum.FormFactor.Brick] +struct = "EnumItem" + +[Enum.FormFactor.Custom] +struct = "EnumItem" + +[Enum.FormFactor.GetEnumItems] +args = [] +method = true + +[Enum.FormFactor.Plate] +struct = "EnumItem" + +[Enum.FormFactor.Symmetric] +struct = "EnumItem" +[Enum.FrameStyle.ChatBlue] +struct = "EnumItem" + +[Enum.FrameStyle.ChatGreen] +struct = "EnumItem" + +[Enum.FrameStyle.ChatRed] +struct = "EnumItem" + +[Enum.FrameStyle.Custom] +struct = "EnumItem" + +[Enum.FrameStyle.DropShadow] +struct = "EnumItem" + +[Enum.FrameStyle.GetEnumItems] +args = [] +method = true + +[Enum.FrameStyle.RobloxRound] +struct = "EnumItem" + +[Enum.FrameStyle.RobloxSquare] +struct = "EnumItem" +[Enum.FramerateManagerMode.Automatic] +struct = "EnumItem" + +[Enum.FramerateManagerMode.GetEnumItems] +args = [] +method = true + +[Enum.FramerateManagerMode.Off] +struct = "EnumItem" + +[Enum.FramerateManagerMode.On] +struct = "EnumItem" +[Enum.FriendRequestEvent.Accept] +struct = "EnumItem" + +[Enum.FriendRequestEvent.Deny] +struct = "EnumItem" + +[Enum.FriendRequestEvent.GetEnumItems] +args = [] +method = true + +[Enum.FriendRequestEvent.Issue] +struct = "EnumItem" + +[Enum.FriendRequestEvent.Revoke] +struct = "EnumItem" +[Enum.FriendStatus.Friend] +struct = "EnumItem" + +[Enum.FriendStatus.FriendRequestReceived] +struct = "EnumItem" + +[Enum.FriendStatus.FriendRequestSent] +struct = "EnumItem" + +[Enum.FriendStatus.GetEnumItems] +args = [] +method = true + +[Enum.FriendStatus.NotFriend] +struct = "EnumItem" + +[Enum.FriendStatus.Unknown] +struct = "EnumItem" +[Enum.FunctionalTestResult.Error] +struct = "EnumItem" + +[Enum.FunctionalTestResult.GetEnumItems] +args = [] +method = true + +[Enum.FunctionalTestResult.Passed] +struct = "EnumItem" + +[Enum.FunctionalTestResult.Warning] +struct = "EnumItem" +[Enum.GameAvatarType.GetEnumItems] +args = [] +method = true + +[Enum.GameAvatarType.PlayerChoice] +struct = "EnumItem" + +[Enum.GameAvatarType.R15] +struct = "EnumItem" + +[Enum.GameAvatarType.R6] +struct = "EnumItem" +[Enum.GearGenreSetting.AllGenres] +struct = "EnumItem" + +[Enum.GearGenreSetting.GetEnumItems] +args = [] +method = true + +[Enum.GearGenreSetting.MatchingGenreOnly] +struct = "EnumItem" +[Enum.GearType.BuildingTools] +struct = "EnumItem" + +[Enum.GearType.Explosives] +struct = "EnumItem" + +[Enum.GearType.GetEnumItems] +args = [] +method = true + +[Enum.GearType.MeleeWeapons] +struct = "EnumItem" + +[Enum.GearType.MusicalInstruments] +struct = "EnumItem" + +[Enum.GearType.NavigationEnhancers] +struct = "EnumItem" + +[Enum.GearType.PowerUps] +struct = "EnumItem" + +[Enum.GearType.RangedWeapons] +struct = "EnumItem" + +[Enum.GearType.SocialItems] +struct = "EnumItem" + +[Enum.GearType.Transport] +struct = "EnumItem" +[Enum.Genre.Adventure] +struct = "EnumItem" + +[Enum.Genre.All] +struct = "EnumItem" + +[Enum.Genre.Fantasy] +struct = "EnumItem" + +[Enum.Genre.Funny] +struct = "EnumItem" + +[Enum.Genre.GetEnumItems] +args = [] +method = true + +[Enum.Genre.Ninja] +struct = "EnumItem" + +[Enum.Genre.Pirate] +struct = "EnumItem" + +[Enum.Genre.Scary] +struct = "EnumItem" + +[Enum.Genre.SciFi] +struct = "EnumItem" + +[Enum.Genre.SkatePark] +struct = "EnumItem" + +[Enum.Genre.Sports] +struct = "EnumItem" + +[Enum.Genre.TownAndCity] +struct = "EnumItem" + +[Enum.Genre.Tutorial] +struct = "EnumItem" + +[Enum.Genre.War] +struct = "EnumItem" + +[Enum.Genre.WildWest] +struct = "EnumItem" +[Enum.GraphicsMode.Automatic] +struct = "EnumItem" + +[Enum.GraphicsMode.Direct3D11] +struct = "EnumItem" + +[Enum.GraphicsMode.Direct3D9] +struct = "EnumItem" + +[Enum.GraphicsMode.GetEnumItems] +args = [] +method = true + +[Enum.GraphicsMode.Metal] +struct = "EnumItem" + +[Enum.GraphicsMode.NoGraphics] +struct = "EnumItem" + +[Enum.GraphicsMode.OpenGL] +struct = "EnumItem" + +[Enum.GraphicsMode.Vulkan] +struct = "EnumItem" +[Enum.HandlesStyle.GetEnumItems] +args = [] +method = true + +[Enum.HandlesStyle.Movement] +struct = "EnumItem" + +[Enum.HandlesStyle.Resize] +struct = "EnumItem" +[Enum.HorizontalAlignment.Center] +struct = "EnumItem" + +[Enum.HorizontalAlignment.GetEnumItems] +args = [] +method = true + +[Enum.HorizontalAlignment.Left] +struct = "EnumItem" + +[Enum.HorizontalAlignment.Right] +struct = "EnumItem" +[Enum.HoverAnimateSpeed.Fast] +struct = "EnumItem" + +[Enum.HoverAnimateSpeed.GetEnumItems] +args = [] +method = true + +[Enum.HoverAnimateSpeed.Medium] +struct = "EnumItem" + +[Enum.HoverAnimateSpeed.Slow] +struct = "EnumItem" + +[Enum.HoverAnimateSpeed.VeryFast] +struct = "EnumItem" + +[Enum.HoverAnimateSpeed.VerySlow] +struct = "EnumItem" +[Enum.HttpCachePolicy.DataOnly] +struct = "EnumItem" + +[Enum.HttpCachePolicy.Default] +struct = "EnumItem" + +[Enum.HttpCachePolicy.Full] +struct = "EnumItem" + +[Enum.HttpCachePolicy.GetEnumItems] +args = [] +method = true + +[Enum.HttpCachePolicy.InternalRedirectRefresh] +struct = "EnumItem" + +[Enum.HttpCachePolicy.None] +struct = "EnumItem" +[Enum.HttpContentType.ApplicationJson] +struct = "EnumItem" + +[Enum.HttpContentType.ApplicationUrlEncoded] +struct = "EnumItem" + +[Enum.HttpContentType.ApplicationXml] +struct = "EnumItem" + +[Enum.HttpContentType.GetEnumItems] +args = [] +method = true + +[Enum.HttpContentType.TextPlain] +struct = "EnumItem" + +[Enum.HttpContentType.TextXml] +struct = "EnumItem" +[Enum.HttpError.Aborted] +struct = "EnumItem" + +[Enum.HttpError.ConnectFail] +struct = "EnumItem" + +[Enum.HttpError.DnsResolve] +struct = "EnumItem" + +[Enum.HttpError.GetEnumItems] +args = [] +method = true + +[Enum.HttpError.InvalidRedirect] +struct = "EnumItem" + +[Enum.HttpError.InvalidUrl] +struct = "EnumItem" + +[Enum.HttpError.NetFail] +struct = "EnumItem" + +[Enum.HttpError.OK] +struct = "EnumItem" + +[Enum.HttpError.OutOfMemory] +struct = "EnumItem" + +[Enum.HttpError.SslConnectFail] +struct = "EnumItem" + +[Enum.HttpError.SslVerificationFail] +struct = "EnumItem" + +[Enum.HttpError.TimedOut] +struct = "EnumItem" + +[Enum.HttpError.TooManyRedirects] +struct = "EnumItem" + +[Enum.HttpError.Unknown] +struct = "EnumItem" +[Enum.HttpRequestType.Analytics] +struct = "EnumItem" + +[Enum.HttpRequestType.Avatar] +struct = "EnumItem" + +[Enum.HttpRequestType.Chat] +struct = "EnumItem" + +[Enum.HttpRequestType.Default] +struct = "EnumItem" + +[Enum.HttpRequestType.GetEnumItems] +args = [] +method = true + +[Enum.HttpRequestType.Localization] +struct = "EnumItem" + +[Enum.HttpRequestType.MarketplaceService] +struct = "EnumItem" + +[Enum.HttpRequestType.Players] +struct = "EnumItem" +[Enum.HumanoidCollisionType.GetEnumItems] +args = [] +method = true + +[Enum.HumanoidCollisionType.InnerBox] +struct = "EnumItem" + +[Enum.HumanoidCollisionType.OuterBox] +struct = "EnumItem" +[Enum.HumanoidDisplayDistanceType.GetEnumItems] +args = [] +method = true + +[Enum.HumanoidDisplayDistanceType.None] +struct = "EnumItem" + +[Enum.HumanoidDisplayDistanceType.Subject] +struct = "EnumItem" + +[Enum.HumanoidDisplayDistanceType.Viewer] +struct = "EnumItem" +[Enum.HumanoidHealthDisplayType.AlwaysOff] +struct = "EnumItem" + +[Enum.HumanoidHealthDisplayType.AlwaysOn] +struct = "EnumItem" + +[Enum.HumanoidHealthDisplayType.DisplayWhenDamaged] +struct = "EnumItem" + +[Enum.HumanoidHealthDisplayType.GetEnumItems] +args = [] +method = true +[Enum.HumanoidRigType.GetEnumItems] +args = [] +method = true + +[Enum.HumanoidRigType.R15] +struct = "EnumItem" + +[Enum.HumanoidRigType.R6] +struct = "EnumItem" +[Enum.HumanoidStateType.Climbing] +struct = "EnumItem" + +[Enum.HumanoidStateType.Dead] +struct = "EnumItem" + +[Enum.HumanoidStateType.FallingDown] +struct = "EnumItem" + +[Enum.HumanoidStateType.Flying] +struct = "EnumItem" + +[Enum.HumanoidStateType.Freefall] +struct = "EnumItem" + +[Enum.HumanoidStateType.GetEnumItems] +args = [] +method = true + +[Enum.HumanoidStateType.GettingUp] +struct = "EnumItem" + +[Enum.HumanoidStateType.Jumping] +struct = "EnumItem" + +[Enum.HumanoidStateType.Landed] +struct = "EnumItem" + +[Enum.HumanoidStateType.None] +struct = "EnumItem" + +[Enum.HumanoidStateType.Physics] +struct = "EnumItem" + +[Enum.HumanoidStateType.PlatformStanding] +struct = "EnumItem" + +[Enum.HumanoidStateType.Ragdoll] +struct = "EnumItem" + +[Enum.HumanoidStateType.Running] +struct = "EnumItem" + +[Enum.HumanoidStateType.RunningNoPhysics] +struct = "EnumItem" + +[Enum.HumanoidStateType.Seated] +struct = "EnumItem" + +[Enum.HumanoidStateType.StrafingNoPhysics] +struct = "EnumItem" + +[Enum.HumanoidStateType.Swimming] +struct = "EnumItem" +[Enum.IKCollisionsMode.GetEnumItems] +args = [] +method = true + +[Enum.IKCollisionsMode.IncludeContactedMechanisms] +struct = "EnumItem" + +[Enum.IKCollisionsMode.NoCollisions] +struct = "EnumItem" + +[Enum.IKCollisionsMode.OtherMechanismsAnchored] +struct = "EnumItem" +[Enum.InOut.Center] +struct = "EnumItem" + +[Enum.InOut.Edge] +struct = "EnumItem" + +[Enum.InOut.GetEnumItems] +args = [] +method = true + +[Enum.InOut.Inset] +struct = "EnumItem" +[Enum.InfoType.Asset] +struct = "EnumItem" + +[Enum.InfoType.Bundle] +struct = "EnumItem" + +[Enum.InfoType.GamePass] +struct = "EnumItem" + +[Enum.InfoType.GetEnumItems] +args = [] +method = true + +[Enum.InfoType.Product] +struct = "EnumItem" + +[Enum.InfoType.Subscription] +struct = "EnumItem" +[Enum.InitialDockState.Bottom] +struct = "EnumItem" + +[Enum.InitialDockState.Float] +struct = "EnumItem" + +[Enum.InitialDockState.GetEnumItems] +args = [] +method = true + +[Enum.InitialDockState.Left] +struct = "EnumItem" + +[Enum.InitialDockState.Right] +struct = "EnumItem" + +[Enum.InitialDockState.Top] +struct = "EnumItem" +[Enum.InputType.Constant] +struct = "EnumItem" + +[Enum.InputType.GetEnumItems] +args = [] +method = true + +[Enum.InputType.NoInput] +struct = "EnumItem" + +[Enum.InputType.Sin] +struct = "EnumItem" +[Enum.InterpolationThrottlingMode.Default] +struct = "EnumItem" + +[Enum.InterpolationThrottlingMode.Disabled] +struct = "EnumItem" + +[Enum.InterpolationThrottlingMode.Enabled] +struct = "EnumItem" + +[Enum.InterpolationThrottlingMode.GetEnumItems] +args = [] +method = true +[Enum.JointCreationMode.All] +struct = "EnumItem" + +[Enum.JointCreationMode.GetEnumItems] +args = [] +method = true + +[Enum.JointCreationMode.None] +struct = "EnumItem" + +[Enum.JointCreationMode.Surface] +struct = "EnumItem" +[Enum.KeyCode.A] +struct = "EnumItem" + +[Enum.KeyCode.Ampersand] +struct = "EnumItem" + +[Enum.KeyCode.Asterisk] +struct = "EnumItem" + +[Enum.KeyCode.At] +struct = "EnumItem" + +[Enum.KeyCode.B] +struct = "EnumItem" + +[Enum.KeyCode.BackSlash] +struct = "EnumItem" + +[Enum.KeyCode.Backquote] +struct = "EnumItem" + +[Enum.KeyCode.Backspace] +struct = "EnumItem" + +[Enum.KeyCode.Break] +struct = "EnumItem" + +[Enum.KeyCode.ButtonA] +struct = "EnumItem" + +[Enum.KeyCode.ButtonB] +struct = "EnumItem" + +[Enum.KeyCode.ButtonL1] +struct = "EnumItem" + +[Enum.KeyCode.ButtonL2] +struct = "EnumItem" + +[Enum.KeyCode.ButtonL3] +struct = "EnumItem" + +[Enum.KeyCode.ButtonR1] +struct = "EnumItem" + +[Enum.KeyCode.ButtonR2] +struct = "EnumItem" + +[Enum.KeyCode.ButtonR3] +struct = "EnumItem" + +[Enum.KeyCode.ButtonSelect] +struct = "EnumItem" + +[Enum.KeyCode.ButtonStart] +struct = "EnumItem" + +[Enum.KeyCode.ButtonX] +struct = "EnumItem" + +[Enum.KeyCode.ButtonY] +struct = "EnumItem" + +[Enum.KeyCode.C] +struct = "EnumItem" + +[Enum.KeyCode.CapsLock] +struct = "EnumItem" + +[Enum.KeyCode.Caret] +struct = "EnumItem" + +[Enum.KeyCode.Clear] +struct = "EnumItem" + +[Enum.KeyCode.Colon] +struct = "EnumItem" + +[Enum.KeyCode.Comma] +struct = "EnumItem" + +[Enum.KeyCode.Compose] +struct = "EnumItem" + +[Enum.KeyCode.D] +struct = "EnumItem" + +[Enum.KeyCode.DPadDown] +struct = "EnumItem" + +[Enum.KeyCode.DPadLeft] +struct = "EnumItem" + +[Enum.KeyCode.DPadRight] +struct = "EnumItem" + +[Enum.KeyCode.DPadUp] +struct = "EnumItem" + +[Enum.KeyCode.Delete] +struct = "EnumItem" + +[Enum.KeyCode.Dollar] +struct = "EnumItem" + +[Enum.KeyCode.Down] +struct = "EnumItem" + +[Enum.KeyCode.E] +struct = "EnumItem" + +[Enum.KeyCode.Eight] +struct = "EnumItem" + +[Enum.KeyCode.End] +struct = "EnumItem" + +[Enum.KeyCode.Equals] +struct = "EnumItem" + +[Enum.KeyCode.Escape] +struct = "EnumItem" + +[Enum.KeyCode.Euro] +struct = "EnumItem" + +[Enum.KeyCode.F] +struct = "EnumItem" + +[Enum.KeyCode.F1] +struct = "EnumItem" + +[Enum.KeyCode.F10] +struct = "EnumItem" + +[Enum.KeyCode.F11] +struct = "EnumItem" + +[Enum.KeyCode.F12] +struct = "EnumItem" + +[Enum.KeyCode.F13] +struct = "EnumItem" + +[Enum.KeyCode.F14] +struct = "EnumItem" + +[Enum.KeyCode.F15] +struct = "EnumItem" + +[Enum.KeyCode.F2] +struct = "EnumItem" + +[Enum.KeyCode.F3] +struct = "EnumItem" + +[Enum.KeyCode.F4] +struct = "EnumItem" + +[Enum.KeyCode.F5] +struct = "EnumItem" + +[Enum.KeyCode.F6] +struct = "EnumItem" + +[Enum.KeyCode.F7] +struct = "EnumItem" + +[Enum.KeyCode.F8] +struct = "EnumItem" + +[Enum.KeyCode.F9] +struct = "EnumItem" + +[Enum.KeyCode.Five] +struct = "EnumItem" + +[Enum.KeyCode.Four] +struct = "EnumItem" + +[Enum.KeyCode.G] +struct = "EnumItem" + +[Enum.KeyCode.GetEnumItems] +args = [] +method = true + +[Enum.KeyCode.GreaterThan] +struct = "EnumItem" + +[Enum.KeyCode.H] +struct = "EnumItem" + +[Enum.KeyCode.Hash] +struct = "EnumItem" + +[Enum.KeyCode.Help] +struct = "EnumItem" + +[Enum.KeyCode.Home] +struct = "EnumItem" + +[Enum.KeyCode.I] +struct = "EnumItem" + +[Enum.KeyCode.Insert] +struct = "EnumItem" + +[Enum.KeyCode.J] +struct = "EnumItem" + +[Enum.KeyCode.K] +struct = "EnumItem" + +[Enum.KeyCode.KeypadDivide] +struct = "EnumItem" + +[Enum.KeyCode.KeypadEight] +struct = "EnumItem" + +[Enum.KeyCode.KeypadEnter] +struct = "EnumItem" + +[Enum.KeyCode.KeypadEquals] +struct = "EnumItem" + +[Enum.KeyCode.KeypadFive] +struct = "EnumItem" + +[Enum.KeyCode.KeypadFour] +struct = "EnumItem" + +[Enum.KeyCode.KeypadMinus] +struct = "EnumItem" + +[Enum.KeyCode.KeypadMultiply] +struct = "EnumItem" + +[Enum.KeyCode.KeypadNine] +struct = "EnumItem" + +[Enum.KeyCode.KeypadOne] +struct = "EnumItem" + +[Enum.KeyCode.KeypadPeriod] +struct = "EnumItem" + +[Enum.KeyCode.KeypadPlus] +struct = "EnumItem" + +[Enum.KeyCode.KeypadSeven] +struct = "EnumItem" + +[Enum.KeyCode.KeypadSix] +struct = "EnumItem" + +[Enum.KeyCode.KeypadThree] +struct = "EnumItem" + +[Enum.KeyCode.KeypadTwo] +struct = "EnumItem" + +[Enum.KeyCode.KeypadZero] +struct = "EnumItem" + +[Enum.KeyCode.L] +struct = "EnumItem" + +[Enum.KeyCode.Left] +struct = "EnumItem" + +[Enum.KeyCode.LeftAlt] +struct = "EnumItem" + +[Enum.KeyCode.LeftBracket] +struct = "EnumItem" + +[Enum.KeyCode.LeftControl] +struct = "EnumItem" + +[Enum.KeyCode.LeftCurly] +struct = "EnumItem" + +[Enum.KeyCode.LeftMeta] +struct = "EnumItem" + +[Enum.KeyCode.LeftParenthesis] +struct = "EnumItem" + +[Enum.KeyCode.LeftShift] +struct = "EnumItem" + +[Enum.KeyCode.LeftSuper] +struct = "EnumItem" + +[Enum.KeyCode.LessThan] +struct = "EnumItem" + +[Enum.KeyCode.M] +struct = "EnumItem" + +[Enum.KeyCode.Menu] +struct = "EnumItem" + +[Enum.KeyCode.Minus] +struct = "EnumItem" + +[Enum.KeyCode.Mode] +struct = "EnumItem" + +[Enum.KeyCode.N] +struct = "EnumItem" + +[Enum.KeyCode.Nine] +struct = "EnumItem" + +[Enum.KeyCode.NumLock] +struct = "EnumItem" + +[Enum.KeyCode.O] +struct = "EnumItem" + +[Enum.KeyCode.One] +struct = "EnumItem" + +[Enum.KeyCode.P] +struct = "EnumItem" + +[Enum.KeyCode.PageDown] +struct = "EnumItem" + +[Enum.KeyCode.PageUp] +struct = "EnumItem" + +[Enum.KeyCode.Pause] +struct = "EnumItem" + +[Enum.KeyCode.Percent] +struct = "EnumItem" + +[Enum.KeyCode.Period] +struct = "EnumItem" + +[Enum.KeyCode.Pipe] +struct = "EnumItem" + +[Enum.KeyCode.Plus] +struct = "EnumItem" + +[Enum.KeyCode.Power] +struct = "EnumItem" + +[Enum.KeyCode.Print] +struct = "EnumItem" + +[Enum.KeyCode.Q] +struct = "EnumItem" + +[Enum.KeyCode.Question] +struct = "EnumItem" + +[Enum.KeyCode.Quote] +struct = "EnumItem" + +[Enum.KeyCode.QuotedDouble] +struct = "EnumItem" + +[Enum.KeyCode.R] +struct = "EnumItem" + +[Enum.KeyCode.Return] +struct = "EnumItem" + +[Enum.KeyCode.Right] +struct = "EnumItem" + +[Enum.KeyCode.RightAlt] +struct = "EnumItem" + +[Enum.KeyCode.RightBracket] +struct = "EnumItem" + +[Enum.KeyCode.RightControl] +struct = "EnumItem" + +[Enum.KeyCode.RightCurly] +struct = "EnumItem" + +[Enum.KeyCode.RightMeta] +struct = "EnumItem" + +[Enum.KeyCode.RightParenthesis] +struct = "EnumItem" + +[Enum.KeyCode.RightShift] +struct = "EnumItem" + +[Enum.KeyCode.RightSuper] +struct = "EnumItem" + +[Enum.KeyCode.S] +struct = "EnumItem" + +[Enum.KeyCode.ScrollLock] +struct = "EnumItem" + +[Enum.KeyCode.Semicolon] +struct = "EnumItem" + +[Enum.KeyCode.Seven] +struct = "EnumItem" + +[Enum.KeyCode.Six] +struct = "EnumItem" + +[Enum.KeyCode.Slash] +struct = "EnumItem" + +[Enum.KeyCode.Space] +struct = "EnumItem" + +[Enum.KeyCode.SysReq] +struct = "EnumItem" + +[Enum.KeyCode.T] +struct = "EnumItem" + +[Enum.KeyCode.Tab] +struct = "EnumItem" + +[Enum.KeyCode.Three] +struct = "EnumItem" + +[Enum.KeyCode.Thumbstick1] +struct = "EnumItem" + +[Enum.KeyCode.Thumbstick2] +struct = "EnumItem" + +[Enum.KeyCode.Tilde] +struct = "EnumItem" + +[Enum.KeyCode.Two] +struct = "EnumItem" + +[Enum.KeyCode.U] +struct = "EnumItem" + +[Enum.KeyCode.Underscore] +struct = "EnumItem" + +[Enum.KeyCode.Undo] +struct = "EnumItem" + +[Enum.KeyCode.Unknown] +struct = "EnumItem" + +[Enum.KeyCode.Up] +struct = "EnumItem" + +[Enum.KeyCode.V] +struct = "EnumItem" + +[Enum.KeyCode.W] +struct = "EnumItem" + +[Enum.KeyCode.World0] +struct = "EnumItem" + +[Enum.KeyCode.World1] +struct = "EnumItem" + +[Enum.KeyCode.World10] +struct = "EnumItem" + +[Enum.KeyCode.World11] +struct = "EnumItem" + +[Enum.KeyCode.World12] +struct = "EnumItem" + +[Enum.KeyCode.World13] +struct = "EnumItem" + +[Enum.KeyCode.World14] +struct = "EnumItem" + +[Enum.KeyCode.World15] +struct = "EnumItem" + +[Enum.KeyCode.World16] +struct = "EnumItem" + +[Enum.KeyCode.World17] +struct = "EnumItem" + +[Enum.KeyCode.World18] +struct = "EnumItem" + +[Enum.KeyCode.World19] +struct = "EnumItem" + +[Enum.KeyCode.World2] +struct = "EnumItem" + +[Enum.KeyCode.World20] +struct = "EnumItem" + +[Enum.KeyCode.World21] +struct = "EnumItem" + +[Enum.KeyCode.World22] +struct = "EnumItem" + +[Enum.KeyCode.World23] +struct = "EnumItem" + +[Enum.KeyCode.World24] +struct = "EnumItem" + +[Enum.KeyCode.World25] +struct = "EnumItem" + +[Enum.KeyCode.World26] +struct = "EnumItem" + +[Enum.KeyCode.World27] +struct = "EnumItem" + +[Enum.KeyCode.World28] +struct = "EnumItem" + +[Enum.KeyCode.World29] +struct = "EnumItem" + +[Enum.KeyCode.World3] +struct = "EnumItem" + +[Enum.KeyCode.World30] +struct = "EnumItem" + +[Enum.KeyCode.World31] +struct = "EnumItem" + +[Enum.KeyCode.World32] +struct = "EnumItem" + +[Enum.KeyCode.World33] +struct = "EnumItem" + +[Enum.KeyCode.World34] +struct = "EnumItem" + +[Enum.KeyCode.World35] +struct = "EnumItem" + +[Enum.KeyCode.World36] +struct = "EnumItem" + +[Enum.KeyCode.World37] +struct = "EnumItem" + +[Enum.KeyCode.World38] +struct = "EnumItem" + +[Enum.KeyCode.World39] +struct = "EnumItem" + +[Enum.KeyCode.World4] +struct = "EnumItem" + +[Enum.KeyCode.World40] +struct = "EnumItem" + +[Enum.KeyCode.World41] +struct = "EnumItem" + +[Enum.KeyCode.World42] +struct = "EnumItem" + +[Enum.KeyCode.World43] +struct = "EnumItem" + +[Enum.KeyCode.World44] +struct = "EnumItem" + +[Enum.KeyCode.World45] +struct = "EnumItem" + +[Enum.KeyCode.World46] +struct = "EnumItem" + +[Enum.KeyCode.World47] +struct = "EnumItem" + +[Enum.KeyCode.World48] +struct = "EnumItem" + +[Enum.KeyCode.World49] +struct = "EnumItem" + +[Enum.KeyCode.World5] +struct = "EnumItem" + +[Enum.KeyCode.World50] +struct = "EnumItem" + +[Enum.KeyCode.World51] +struct = "EnumItem" + +[Enum.KeyCode.World52] +struct = "EnumItem" + +[Enum.KeyCode.World53] +struct = "EnumItem" + +[Enum.KeyCode.World54] +struct = "EnumItem" + +[Enum.KeyCode.World55] +struct = "EnumItem" + +[Enum.KeyCode.World56] +struct = "EnumItem" + +[Enum.KeyCode.World57] +struct = "EnumItem" + +[Enum.KeyCode.World58] +struct = "EnumItem" + +[Enum.KeyCode.World59] +struct = "EnumItem" + +[Enum.KeyCode.World6] +struct = "EnumItem" + +[Enum.KeyCode.World60] +struct = "EnumItem" + +[Enum.KeyCode.World61] +struct = "EnumItem" + +[Enum.KeyCode.World62] +struct = "EnumItem" + +[Enum.KeyCode.World63] +struct = "EnumItem" + +[Enum.KeyCode.World64] +struct = "EnumItem" + +[Enum.KeyCode.World65] +struct = "EnumItem" + +[Enum.KeyCode.World66] +struct = "EnumItem" + +[Enum.KeyCode.World67] +struct = "EnumItem" + +[Enum.KeyCode.World68] +struct = "EnumItem" + +[Enum.KeyCode.World69] +struct = "EnumItem" + +[Enum.KeyCode.World7] +struct = "EnumItem" + +[Enum.KeyCode.World70] +struct = "EnumItem" + +[Enum.KeyCode.World71] +struct = "EnumItem" + +[Enum.KeyCode.World72] +struct = "EnumItem" + +[Enum.KeyCode.World73] +struct = "EnumItem" + +[Enum.KeyCode.World74] +struct = "EnumItem" + +[Enum.KeyCode.World75] +struct = "EnumItem" + +[Enum.KeyCode.World76] +struct = "EnumItem" + +[Enum.KeyCode.World77] +struct = "EnumItem" + +[Enum.KeyCode.World78] +struct = "EnumItem" + +[Enum.KeyCode.World79] +struct = "EnumItem" + +[Enum.KeyCode.World8] +struct = "EnumItem" + +[Enum.KeyCode.World80] +struct = "EnumItem" + +[Enum.KeyCode.World81] +struct = "EnumItem" + +[Enum.KeyCode.World82] +struct = "EnumItem" + +[Enum.KeyCode.World83] +struct = "EnumItem" + +[Enum.KeyCode.World84] +struct = "EnumItem" + +[Enum.KeyCode.World85] +struct = "EnumItem" + +[Enum.KeyCode.World86] +struct = "EnumItem" + +[Enum.KeyCode.World87] +struct = "EnumItem" + +[Enum.KeyCode.World88] +struct = "EnumItem" + +[Enum.KeyCode.World89] +struct = "EnumItem" + +[Enum.KeyCode.World9] +struct = "EnumItem" + +[Enum.KeyCode.World90] +struct = "EnumItem" + +[Enum.KeyCode.World91] +struct = "EnumItem" + +[Enum.KeyCode.World92] +struct = "EnumItem" + +[Enum.KeyCode.World93] +struct = "EnumItem" + +[Enum.KeyCode.World94] +struct = "EnumItem" + +[Enum.KeyCode.World95] +struct = "EnumItem" + +[Enum.KeyCode.X] +struct = "EnumItem" + +[Enum.KeyCode.Y] +struct = "EnumItem" + +[Enum.KeyCode.Z] +struct = "EnumItem" + +[Enum.KeyCode.Zero] +struct = "EnumItem" +[Enum.KeywordFilterType.Exclude] +struct = "EnumItem" + +[Enum.KeywordFilterType.GetEnumItems] +args = [] +method = true + +[Enum.KeywordFilterType.Include] +struct = "EnumItem" +[Enum.Language.Default] +struct = "EnumItem" + +[Enum.Language.GetEnumItems] +args = [] +method = true +[Enum.LanguagePreference.English] +struct = "EnumItem" + +[Enum.LanguagePreference.GetEnumItems] +args = [] +method = true + +[Enum.LanguagePreference.Korean] +struct = "EnumItem" + +[Enum.LanguagePreference.SimplifiedChinese] +struct = "EnumItem" + +[Enum.LanguagePreference.SystemDefault] +struct = "EnumItem" +[Enum.LeftRight.Center] +struct = "EnumItem" + +[Enum.LeftRight.GetEnumItems] +args = [] +method = true + +[Enum.LeftRight.Left] +struct = "EnumItem" + +[Enum.LeftRight.Right] +struct = "EnumItem" +[Enum.LevelOfDetailSetting.GetEnumItems] +args = [] +method = true + +[Enum.LevelOfDetailSetting.High] +struct = "EnumItem" + +[Enum.LevelOfDetailSetting.Low] +struct = "EnumItem" + +[Enum.LevelOfDetailSetting.Medium] +struct = "EnumItem" +[Enum.Limb.GetEnumItems] +args = [] +method = true + +[Enum.Limb.Head] +struct = "EnumItem" + +[Enum.Limb.LeftArm] +struct = "EnumItem" + +[Enum.Limb.LeftLeg] +struct = "EnumItem" + +[Enum.Limb.RightArm] +struct = "EnumItem" + +[Enum.Limb.RightLeg] +struct = "EnumItem" + +[Enum.Limb.Torso] +struct = "EnumItem" + +[Enum.Limb.Unknown] +struct = "EnumItem" +[Enum.ListDisplayMode.GetEnumItems] +args = [] +method = true + +[Enum.ListDisplayMode.Horizontal] +struct = "EnumItem" + +[Enum.ListDisplayMode.Vertical] +struct = "EnumItem" +[Enum.ListenerType.CFrame] +struct = "EnumItem" + +[Enum.ListenerType.Camera] +struct = "EnumItem" + +[Enum.ListenerType.GetEnumItems] +args = [] +method = true + +[Enum.ListenerType.ObjectCFrame] +struct = "EnumItem" + +[Enum.ListenerType.ObjectPosition] +struct = "EnumItem" +[Enum.Material.Air] +struct = "EnumItem" + +[Enum.Material.Asphalt] +struct = "EnumItem" + +[Enum.Material.Basalt] +struct = "EnumItem" + +[Enum.Material.Brick] +struct = "EnumItem" + +[Enum.Material.Cobblestone] +struct = "EnumItem" + +[Enum.Material.Concrete] +struct = "EnumItem" + +[Enum.Material.CorrodedMetal] +struct = "EnumItem" + +[Enum.Material.CrackedLava] +struct = "EnumItem" + +[Enum.Material.DiamondPlate] +struct = "EnumItem" + +[Enum.Material.Fabric] +struct = "EnumItem" + +[Enum.Material.Foil] +struct = "EnumItem" + +[Enum.Material.ForceField] +struct = "EnumItem" + +[Enum.Material.GetEnumItems] +args = [] +method = true + +[Enum.Material.Glacier] +struct = "EnumItem" + +[Enum.Material.Glass] +struct = "EnumItem" + +[Enum.Material.Granite] +struct = "EnumItem" + +[Enum.Material.Grass] +struct = "EnumItem" + +[Enum.Material.Ground] +struct = "EnumItem" + +[Enum.Material.Ice] +struct = "EnumItem" + +[Enum.Material.LeafyGrass] +struct = "EnumItem" + +[Enum.Material.Limestone] +struct = "EnumItem" + +[Enum.Material.Marble] +struct = "EnumItem" + +[Enum.Material.Metal] +struct = "EnumItem" + +[Enum.Material.Mud] +struct = "EnumItem" + +[Enum.Material.Neon] +struct = "EnumItem" + +[Enum.Material.Pavement] +struct = "EnumItem" + +[Enum.Material.Pebble] +struct = "EnumItem" + +[Enum.Material.Plastic] +struct = "EnumItem" + +[Enum.Material.Rock] +struct = "EnumItem" + +[Enum.Material.Salt] +struct = "EnumItem" + +[Enum.Material.Sand] +struct = "EnumItem" + +[Enum.Material.Sandstone] +struct = "EnumItem" + +[Enum.Material.Slate] +struct = "EnumItem" + +[Enum.Material.SmoothPlastic] +struct = "EnumItem" + +[Enum.Material.Snow] +struct = "EnumItem" + +[Enum.Material.Water] +struct = "EnumItem" + +[Enum.Material.Wood] +struct = "EnumItem" + +[Enum.Material.WoodPlanks] +struct = "EnumItem" +[Enum.MembershipType.BuildersClub] +struct = "EnumItem" + +[Enum.MembershipType.GetEnumItems] +args = [] +method = true + +[Enum.MembershipType.None] +struct = "EnumItem" + +[Enum.MembershipType.OutrageousBuildersClub] +struct = "EnumItem" + +[Enum.MembershipType.Premium] +struct = "EnumItem" + +[Enum.MembershipType.TurboBuildersClub] +struct = "EnumItem" +[Enum.MeshPartDetailLevel.DistanceBased] +struct = "EnumItem" + +[Enum.MeshPartDetailLevel.GetEnumItems] +args = [] +method = true + +[Enum.MeshPartDetailLevel.Level01] +struct = "EnumItem" + +[Enum.MeshPartDetailLevel.Level02] +struct = "EnumItem" + +[Enum.MeshPartDetailLevel.Level03] +struct = "EnumItem" + +[Enum.MeshPartDetailLevel.Level04] +struct = "EnumItem" +[Enum.MeshPartHeads.Default] +struct = "EnumItem" + +[Enum.MeshPartHeads.Disabled] +struct = "EnumItem" + +[Enum.MeshPartHeads.Enabled] +struct = "EnumItem" + +[Enum.MeshPartHeads.GetEnumItems] +args = [] +method = true +[Enum.MeshType.Brick] +struct = "EnumItem" + +[Enum.MeshType.CornerWedge] +struct = "EnumItem" + +[Enum.MeshType.Cylinder] +struct = "EnumItem" + +[Enum.MeshType.FileMesh] +struct = "EnumItem" + +[Enum.MeshType.GetEnumItems] +args = [] +method = true + +[Enum.MeshType.Head] +struct = "EnumItem" + +[Enum.MeshType.ParallelRamp] +struct = "EnumItem" + +[Enum.MeshType.Prism] +struct = "EnumItem" + +[Enum.MeshType.Pyramid] +struct = "EnumItem" + +[Enum.MeshType.RightAngleRamp] +struct = "EnumItem" + +[Enum.MeshType.Sphere] +struct = "EnumItem" + +[Enum.MeshType.Torso] +struct = "EnumItem" + +[Enum.MeshType.Wedge] +struct = "EnumItem" +[Enum.MessageType.GetEnumItems] +args = [] +method = true + +[Enum.MessageType.MessageError] +struct = "EnumItem" + +[Enum.MessageType.MessageInfo] +struct = "EnumItem" + +[Enum.MessageType.MessageOutput] +struct = "EnumItem" + +[Enum.MessageType.MessageWarning] +struct = "EnumItem" +[Enum.ModelLevelOfDetail.Automatic] +struct = "EnumItem" + +[Enum.ModelLevelOfDetail.Disabled] +struct = "EnumItem" + +[Enum.ModelLevelOfDetail.GetEnumItems] +args = [] +method = true + +[Enum.ModelLevelOfDetail.StreamingMesh] +struct = "EnumItem" +[Enum.ModifierKey.Alt] +struct = "EnumItem" + +[Enum.ModifierKey.Ctrl] +struct = "EnumItem" + +[Enum.ModifierKey.GetEnumItems] +args = [] +method = true + +[Enum.ModifierKey.Meta] +struct = "EnumItem" + +[Enum.ModifierKey.Shift] +struct = "EnumItem" +[Enum.MouseBehavior.Default] +struct = "EnumItem" + +[Enum.MouseBehavior.GetEnumItems] +args = [] +method = true + +[Enum.MouseBehavior.LockCenter] +struct = "EnumItem" + +[Enum.MouseBehavior.LockCurrentPosition] +struct = "EnumItem" +[Enum.MoveState.AirFree] +struct = "EnumItem" + +[Enum.MoveState.Coasting] +struct = "EnumItem" + +[Enum.MoveState.GetEnumItems] +args = [] +method = true + +[Enum.MoveState.Pushing] +struct = "EnumItem" + +[Enum.MoveState.Stopped] +struct = "EnumItem" + +[Enum.MoveState.Stopping] +struct = "EnumItem" +[Enum.NameOcclusion.EnemyOcclusion] +struct = "EnumItem" + +[Enum.NameOcclusion.GetEnumItems] +args = [] +method = true + +[Enum.NameOcclusion.NoOcclusion] +struct = "EnumItem" + +[Enum.NameOcclusion.OccludeAll] +struct = "EnumItem" +[Enum.NetworkOwnership.Automatic] +struct = "EnumItem" + +[Enum.NetworkOwnership.GetEnumItems] +args = [] +method = true + +[Enum.NetworkOwnership.Manual] +struct = "EnumItem" + +[Enum.NetworkOwnership.OnContact] +struct = "EnumItem" +[Enum.NormalId.Back] +struct = "EnumItem" + +[Enum.NormalId.Bottom] +struct = "EnumItem" + +[Enum.NormalId.Front] +struct = "EnumItem" + +[Enum.NormalId.GetEnumItems] +args = [] +method = true + +[Enum.NormalId.Left] +struct = "EnumItem" + +[Enum.NormalId.Right] +struct = "EnumItem" + +[Enum.NormalId.Top] +struct = "EnumItem" +[Enum.OutputLayoutMode.GetEnumItems] +args = [] +method = true + +[Enum.OutputLayoutMode.Horizontal] +struct = "EnumItem" + +[Enum.OutputLayoutMode.Vertical] +struct = "EnumItem" +[Enum.OverrideMouseIconBehavior.ForceHide] +struct = "EnumItem" + +[Enum.OverrideMouseIconBehavior.ForceShow] +struct = "EnumItem" + +[Enum.OverrideMouseIconBehavior.GetEnumItems] +args = [] +method = true + +[Enum.OverrideMouseIconBehavior.None] +struct = "EnumItem" +[Enum.PacketPriority.GetEnumItems] +args = [] +method = true + +[Enum.PacketPriority.HIGH_PRIORITY] +struct = "EnumItem" + +[Enum.PacketPriority.IMMEDIATE_PRIORITY] +struct = "EnumItem" + +[Enum.PacketPriority.LOW_PRIORITY] +struct = "EnumItem" + +[Enum.PacketPriority.MEDIUM_PRIORITY] +struct = "EnumItem" +[Enum.PartType.Ball] +struct = "EnumItem" + +[Enum.PartType.Block] +struct = "EnumItem" + +[Enum.PartType.Cylinder] +struct = "EnumItem" + +[Enum.PartType.GetEnumItems] +args = [] +method = true +[Enum.PathStatus.ClosestNoPath] +struct = "EnumItem" + +[Enum.PathStatus.ClosestOutOfRange] +struct = "EnumItem" + +[Enum.PathStatus.FailFinishNotEmpty] +struct = "EnumItem" + +[Enum.PathStatus.FailStartNotEmpty] +struct = "EnumItem" + +[Enum.PathStatus.GetEnumItems] +args = [] +method = true + +[Enum.PathStatus.NoPath] +struct = "EnumItem" + +[Enum.PathStatus.Success] +struct = "EnumItem" +[Enum.PathWaypointAction.GetEnumItems] +args = [] +method = true + +[Enum.PathWaypointAction.Jump] +struct = "EnumItem" + +[Enum.PathWaypointAction.Walk] +struct = "EnumItem" +[Enum.PermissionLevelShown.Game] +struct = "EnumItem" + +[Enum.PermissionLevelShown.GetEnumItems] +args = [] +method = true + +[Enum.PermissionLevelShown.Roblox] +struct = "EnumItem" + +[Enum.PermissionLevelShown.RobloxGame] +struct = "EnumItem" + +[Enum.PermissionLevelShown.RobloxScript] +struct = "EnumItem" + +[Enum.PermissionLevelShown.Studio] +struct = "EnumItem" +[Enum.PhysicsSimulationRate.Fixed120Hz] +struct = "EnumItem" + +[Enum.PhysicsSimulationRate.Fixed240Hz] +struct = "EnumItem" + +[Enum.PhysicsSimulationRate.Fixed60Hz] +struct = "EnumItem" + +[Enum.PhysicsSimulationRate.GetEnumItems] +args = [] +method = true +[Enum.Platform.Android] +struct = "EnumItem" + +[Enum.Platform.AndroidTV] +struct = "EnumItem" + +[Enum.Platform.BeOS] +struct = "EnumItem" + +[Enum.Platform.Chromecast] +struct = "EnumItem" + +[Enum.Platform.DOS] +struct = "EnumItem" + +[Enum.Platform.GetEnumItems] +args = [] +method = true + +[Enum.Platform.IOS] +struct = "EnumItem" + +[Enum.Platform.Linux] +struct = "EnumItem" + +[Enum.Platform.NX] +struct = "EnumItem" + +[Enum.Platform.None] +struct = "EnumItem" + +[Enum.Platform.OSX] +struct = "EnumItem" + +[Enum.Platform.Ouya] +struct = "EnumItem" + +[Enum.Platform.PS3] +struct = "EnumItem" + +[Enum.Platform.PS4] +struct = "EnumItem" + +[Enum.Platform.SteamOS] +struct = "EnumItem" + +[Enum.Platform.UWP] +struct = "EnumItem" + +[Enum.Platform.WebOS] +struct = "EnumItem" + +[Enum.Platform.WiiU] +struct = "EnumItem" + +[Enum.Platform.Windows] +struct = "EnumItem" + +[Enum.Platform.XBox360] +struct = "EnumItem" + +[Enum.Platform.XBoxOne] +struct = "EnumItem" +[Enum.PlaybackState.Begin] +struct = "EnumItem" + +[Enum.PlaybackState.Cancelled] +struct = "EnumItem" + +[Enum.PlaybackState.Completed] +struct = "EnumItem" + +[Enum.PlaybackState.Delayed] +struct = "EnumItem" + +[Enum.PlaybackState.GetEnumItems] +args = [] +method = true + +[Enum.PlaybackState.Paused] +struct = "EnumItem" + +[Enum.PlaybackState.Playing] +struct = "EnumItem" +[Enum.PlayerActions.CharacterBackward] +struct = "EnumItem" + +[Enum.PlayerActions.CharacterForward] +struct = "EnumItem" + +[Enum.PlayerActions.CharacterJump] +struct = "EnumItem" + +[Enum.PlayerActions.CharacterLeft] +struct = "EnumItem" + +[Enum.PlayerActions.CharacterRight] +struct = "EnumItem" + +[Enum.PlayerActions.GetEnumItems] +args = [] +method = true +[Enum.PlayerChatType.All] +struct = "EnumItem" + +[Enum.PlayerChatType.GetEnumItems] +args = [] +method = true + +[Enum.PlayerChatType.Team] +struct = "EnumItem" + +[Enum.PlayerChatType.Whisper] +struct = "EnumItem" +[Enum.PoseEasingDirection.GetEnumItems] +args = [] +method = true + +[Enum.PoseEasingDirection.In] +struct = "EnumItem" + +[Enum.PoseEasingDirection.InOut] +struct = "EnumItem" + +[Enum.PoseEasingDirection.Out] +struct = "EnumItem" +[Enum.PoseEasingStyle.Bounce] +struct = "EnumItem" + +[Enum.PoseEasingStyle.Constant] +struct = "EnumItem" + +[Enum.PoseEasingStyle.Cubic] +struct = "EnumItem" + +[Enum.PoseEasingStyle.Elastic] +struct = "EnumItem" + +[Enum.PoseEasingStyle.GetEnumItems] +args = [] +method = true + +[Enum.PoseEasingStyle.Linear] +struct = "EnumItem" +[Enum.PrivilegeType.Admin] +struct = "EnumItem" + +[Enum.PrivilegeType.Banned] +struct = "EnumItem" + +[Enum.PrivilegeType.GetEnumItems] +args = [] +method = true + +[Enum.PrivilegeType.Member] +struct = "EnumItem" + +[Enum.PrivilegeType.Owner] +struct = "EnumItem" + +[Enum.PrivilegeType.Visitor] +struct = "EnumItem" +[Enum.ProductPurchaseDecision.GetEnumItems] +args = [] +method = true + +[Enum.ProductPurchaseDecision.NotProcessedYet] +struct = "EnumItem" + +[Enum.ProductPurchaseDecision.PurchaseGranted] +struct = "EnumItem" +[Enum.ProximityPromptExclusivity.AlwaysShow] +struct = "EnumItem" + +[Enum.ProximityPromptExclusivity.GetEnumItems] +args = [] +method = true + +[Enum.ProximityPromptExclusivity.OneGlobally] +struct = "EnumItem" + +[Enum.ProximityPromptExclusivity.OnePerButton] +struct = "EnumItem" +[Enum.ProximityPromptInputType.Gamepad] +struct = "EnumItem" + +[Enum.ProximityPromptInputType.GetEnumItems] +args = [] +method = true + +[Enum.ProximityPromptInputType.Keyboard] +struct = "EnumItem" + +[Enum.ProximityPromptInputType.Touch] +struct = "EnumItem" +[Enum.ProximityPromptStyle.Custom] +struct = "EnumItem" + +[Enum.ProximityPromptStyle.Default] +struct = "EnumItem" + +[Enum.ProximityPromptStyle.GetEnumItems] +args = [] +method = true +[Enum.QualityLevel.Automatic] +struct = "EnumItem" + +[Enum.QualityLevel.GetEnumItems] +args = [] +method = true + +[Enum.QualityLevel.Level01] +struct = "EnumItem" + +[Enum.QualityLevel.Level02] +struct = "EnumItem" + +[Enum.QualityLevel.Level03] +struct = "EnumItem" + +[Enum.QualityLevel.Level04] +struct = "EnumItem" + +[Enum.QualityLevel.Level05] +struct = "EnumItem" + +[Enum.QualityLevel.Level06] +struct = "EnumItem" + +[Enum.QualityLevel.Level07] +struct = "EnumItem" + +[Enum.QualityLevel.Level08] +struct = "EnumItem" + +[Enum.QualityLevel.Level09] +struct = "EnumItem" + +[Enum.QualityLevel.Level10] +struct = "EnumItem" + +[Enum.QualityLevel.Level11] +struct = "EnumItem" + +[Enum.QualityLevel.Level12] +struct = "EnumItem" + +[Enum.QualityLevel.Level13] +struct = "EnumItem" + +[Enum.QualityLevel.Level14] +struct = "EnumItem" + +[Enum.QualityLevel.Level15] +struct = "EnumItem" + +[Enum.QualityLevel.Level16] +struct = "EnumItem" + +[Enum.QualityLevel.Level17] +struct = "EnumItem" + +[Enum.QualityLevel.Level18] +struct = "EnumItem" + +[Enum.QualityLevel.Level19] +struct = "EnumItem" + +[Enum.QualityLevel.Level20] +struct = "EnumItem" + +[Enum.QualityLevel.Level21] +struct = "EnumItem" +[Enum.R15CollisionType.GetEnumItems] +args = [] +method = true + +[Enum.R15CollisionType.InnerBox] +struct = "EnumItem" + +[Enum.R15CollisionType.OuterBox] +struct = "EnumItem" +[Enum.RaycastFilterType.Blacklist] +struct = "EnumItem" + +[Enum.RaycastFilterType.GetEnumItems] +args = [] +method = true + +[Enum.RaycastFilterType.Whitelist] +struct = "EnumItem" +[Enum.RenderFidelity.Automatic] +struct = "EnumItem" + +[Enum.RenderFidelity.GetEnumItems] +args = [] +method = true + +[Enum.RenderFidelity.Performance] +struct = "EnumItem" + +[Enum.RenderFidelity.Precise] +struct = "EnumItem" +[Enum.RenderPriority.Camera] +struct = "EnumItem" + +[Enum.RenderPriority.Character] +struct = "EnumItem" + +[Enum.RenderPriority.First] +struct = "EnumItem" + +[Enum.RenderPriority.GetEnumItems] +args = [] +method = true + +[Enum.RenderPriority.Input] +struct = "EnumItem" + +[Enum.RenderPriority.Last] +struct = "EnumItem" +[Enum.RenderingTestComparisonMethod.GetEnumItems] +args = [] +method = true + +[Enum.RenderingTestComparisonMethod.diff] +struct = "EnumItem" + +[Enum.RenderingTestComparisonMethod.psnr] +struct = "EnumItem" +[Enum.ReturnKeyType.Default] +struct = "EnumItem" + +[Enum.ReturnKeyType.Done] +struct = "EnumItem" + +[Enum.ReturnKeyType.GetEnumItems] +args = [] +method = true + +[Enum.ReturnKeyType.Go] +struct = "EnumItem" + +[Enum.ReturnKeyType.Next] +struct = "EnumItem" + +[Enum.ReturnKeyType.Search] +struct = "EnumItem" + +[Enum.ReturnKeyType.Send] +struct = "EnumItem" +[Enum.ReverbType.Alley] +struct = "EnumItem" + +[Enum.ReverbType.Arena] +struct = "EnumItem" + +[Enum.ReverbType.Auditorium] +struct = "EnumItem" + +[Enum.ReverbType.Bathroom] +struct = "EnumItem" + +[Enum.ReverbType.CarpettedHallway] +struct = "EnumItem" + +[Enum.ReverbType.Cave] +struct = "EnumItem" + +[Enum.ReverbType.City] +struct = "EnumItem" + +[Enum.ReverbType.ConcertHall] +struct = "EnumItem" + +[Enum.ReverbType.Forest] +struct = "EnumItem" + +[Enum.ReverbType.GenericReverb] +struct = "EnumItem" + +[Enum.ReverbType.GetEnumItems] +args = [] +method = true + +[Enum.ReverbType.Hallway] +struct = "EnumItem" + +[Enum.ReverbType.Hangar] +struct = "EnumItem" + +[Enum.ReverbType.LivingRoom] +struct = "EnumItem" + +[Enum.ReverbType.Mountains] +struct = "EnumItem" + +[Enum.ReverbType.NoReverb] +struct = "EnumItem" + +[Enum.ReverbType.PaddedCell] +struct = "EnumItem" + +[Enum.ReverbType.ParkingLot] +struct = "EnumItem" + +[Enum.ReverbType.Plain] +struct = "EnumItem" + +[Enum.ReverbType.Quarry] +struct = "EnumItem" + +[Enum.ReverbType.Room] +struct = "EnumItem" + +[Enum.ReverbType.SewerPipe] +struct = "EnumItem" + +[Enum.ReverbType.StoneCorridor] +struct = "EnumItem" + +[Enum.ReverbType.StoneRoom] +struct = "EnumItem" + +[Enum.ReverbType.UnderWater] +struct = "EnumItem" +[Enum.RibbonTool.ColorPicker] +struct = "EnumItem" + +[Enum.RibbonTool.GetEnumItems] +args = [] +method = true + +[Enum.RibbonTool.Group] +struct = "EnumItem" + +[Enum.RibbonTool.MaterialPicker] +struct = "EnumItem" + +[Enum.RibbonTool.Move] +struct = "EnumItem" + +[Enum.RibbonTool.None] +struct = "EnumItem" + +[Enum.RibbonTool.Rotate] +struct = "EnumItem" + +[Enum.RibbonTool.Scale] +struct = "EnumItem" + +[Enum.RibbonTool.Select] +struct = "EnumItem" + +[Enum.RibbonTool.Transform] +struct = "EnumItem" + +[Enum.RibbonTool.Ungroup] +struct = "EnumItem" +[Enum.RollOffMode.GetEnumItems] +args = [] +method = true + +[Enum.RollOffMode.Inverse] +struct = "EnumItem" + +[Enum.RollOffMode.InverseTapered] +struct = "EnumItem" + +[Enum.RollOffMode.Linear] +struct = "EnumItem" + +[Enum.RollOffMode.LinearSquare] +struct = "EnumItem" +[Enum.RotationType.CameraRelative] +struct = "EnumItem" + +[Enum.RotationType.GetEnumItems] +args = [] +method = true + +[Enum.RotationType.MovementRelative] +struct = "EnumItem" +[Enum.RuntimeUndoBehavior.Aggregate] +struct = "EnumItem" + +[Enum.RuntimeUndoBehavior.GetEnumItems] +args = [] +method = true + +[Enum.RuntimeUndoBehavior.Hybrid] +struct = "EnumItem" + +[Enum.RuntimeUndoBehavior.Snapshot] +struct = "EnumItem" +[Enum.SaveFilter.GetEnumItems] +args = [] +method = true + +[Enum.SaveFilter.SaveAll] +struct = "EnumItem" + +[Enum.SaveFilter.SaveGame] +struct = "EnumItem" + +[Enum.SaveFilter.SaveWorld] +struct = "EnumItem" +[Enum.SavedQualitySetting.Automatic] +struct = "EnumItem" + +[Enum.SavedQualitySetting.GetEnumItems] +args = [] +method = true + +[Enum.SavedQualitySetting.QualityLevel1] +struct = "EnumItem" + +[Enum.SavedQualitySetting.QualityLevel10] +struct = "EnumItem" + +[Enum.SavedQualitySetting.QualityLevel2] +struct = "EnumItem" + +[Enum.SavedQualitySetting.QualityLevel3] +struct = "EnumItem" + +[Enum.SavedQualitySetting.QualityLevel4] +struct = "EnumItem" + +[Enum.SavedQualitySetting.QualityLevel5] +struct = "EnumItem" + +[Enum.SavedQualitySetting.QualityLevel6] +struct = "EnumItem" + +[Enum.SavedQualitySetting.QualityLevel7] +struct = "EnumItem" + +[Enum.SavedQualitySetting.QualityLevel8] +struct = "EnumItem" + +[Enum.SavedQualitySetting.QualityLevel9] +struct = "EnumItem" +[Enum.ScaleType.Crop] +struct = "EnumItem" + +[Enum.ScaleType.Fit] +struct = "EnumItem" + +[Enum.ScaleType.GetEnumItems] +args = [] +method = true + +[Enum.ScaleType.Slice] +struct = "EnumItem" + +[Enum.ScaleType.Stretch] +struct = "EnumItem" + +[Enum.ScaleType.Tile] +struct = "EnumItem" +[Enum.ScreenOrientation.GetEnumItems] +args = [] +method = true + +[Enum.ScreenOrientation.LandscapeLeft] +struct = "EnumItem" + +[Enum.ScreenOrientation.LandscapeRight] +struct = "EnumItem" + +[Enum.ScreenOrientation.LandscapeSensor] +struct = "EnumItem" + +[Enum.ScreenOrientation.Portrait] +struct = "EnumItem" + +[Enum.ScreenOrientation.Sensor] +struct = "EnumItem" +[Enum.ScrollBarInset.Always] +struct = "EnumItem" + +[Enum.ScrollBarInset.GetEnumItems] +args = [] +method = true + +[Enum.ScrollBarInset.None] +struct = "EnumItem" + +[Enum.ScrollBarInset.ScrollBar] +struct = "EnumItem" +[Enum.ScrollingDirection.GetEnumItems] +args = [] +method = true + +[Enum.ScrollingDirection.X] +struct = "EnumItem" + +[Enum.ScrollingDirection.XY] +struct = "EnumItem" + +[Enum.ScrollingDirection.Y] +struct = "EnumItem" +[Enum.ServerAudioBehavior.Enabled] +struct = "EnumItem" + +[Enum.ServerAudioBehavior.GetEnumItems] +args = [] +method = true + +[Enum.ServerAudioBehavior.Muted] +struct = "EnumItem" + +[Enum.ServerAudioBehavior.OnlineGame] +struct = "EnumItem" +[Enum.SizeConstraint.GetEnumItems] +args = [] +method = true + +[Enum.SizeConstraint.RelativeXX] +struct = "EnumItem" + +[Enum.SizeConstraint.RelativeXY] +struct = "EnumItem" + +[Enum.SizeConstraint.RelativeYY] +struct = "EnumItem" +[Enum.SortOrder.Custom] +struct = "EnumItem" + +[Enum.SortOrder.GetEnumItems] +args = [] +method = true + +[Enum.SortOrder.LayoutOrder] +struct = "EnumItem" + +[Enum.SortOrder.Name] +struct = "EnumItem" +[Enum.SoundType.Boing] +struct = "EnumItem" + +[Enum.SoundType.Bomb] +struct = "EnumItem" + +[Enum.SoundType.Break] +struct = "EnumItem" + +[Enum.SoundType.Click] +struct = "EnumItem" + +[Enum.SoundType.Clock] +struct = "EnumItem" + +[Enum.SoundType.GetEnumItems] +args = [] +method = true + +[Enum.SoundType.NoSound] +struct = "EnumItem" + +[Enum.SoundType.Page] +struct = "EnumItem" + +[Enum.SoundType.Ping] +struct = "EnumItem" + +[Enum.SoundType.Slingshot] +struct = "EnumItem" + +[Enum.SoundType.Snap] +struct = "EnumItem" + +[Enum.SoundType.Splat] +struct = "EnumItem" + +[Enum.SoundType.Step] +struct = "EnumItem" + +[Enum.SoundType.StepOn] +struct = "EnumItem" + +[Enum.SoundType.Swoosh] +struct = "EnumItem" + +[Enum.SoundType.Victory] +struct = "EnumItem" +[Enum.SpecialKey.ChatHotkey] +struct = "EnumItem" + +[Enum.SpecialKey.End] +struct = "EnumItem" + +[Enum.SpecialKey.GetEnumItems] +args = [] +method = true + +[Enum.SpecialKey.Home] +struct = "EnumItem" + +[Enum.SpecialKey.Insert] +struct = "EnumItem" + +[Enum.SpecialKey.PageDown] +struct = "EnumItem" + +[Enum.SpecialKey.PageUp] +struct = "EnumItem" +[Enum.StartCorner.BottomLeft] +struct = "EnumItem" + +[Enum.StartCorner.BottomRight] +struct = "EnumItem" + +[Enum.StartCorner.GetEnumItems] +args = [] +method = true + +[Enum.StartCorner.TopLeft] +struct = "EnumItem" + +[Enum.StartCorner.TopRight] +struct = "EnumItem" +[Enum.Status.Confusion] +struct = "EnumItem" + +[Enum.Status.GetEnumItems] +args = [] +method = true + +[Enum.Status.Poison] +struct = "EnumItem" +[Enum.StreamingPauseMode.ClientPhysicsPause] +struct = "EnumItem" + +[Enum.StreamingPauseMode.Default] +struct = "EnumItem" + +[Enum.StreamingPauseMode.Disabled] +struct = "EnumItem" + +[Enum.StreamingPauseMode.GetEnumItems] +args = [] +method = true +[Enum.StudioDataModelType.Edit] +struct = "EnumItem" + +[Enum.StudioDataModelType.GetEnumItems] +args = [] +method = true + +[Enum.StudioDataModelType.None] +struct = "EnumItem" + +[Enum.StudioDataModelType.PlayClient] +struct = "EnumItem" + +[Enum.StudioDataModelType.PlayServer] +struct = "EnumItem" + +[Enum.StudioDataModelType.RobloxPlugin] +struct = "EnumItem" + +[Enum.StudioDataModelType.UserPlugin] +struct = "EnumItem" +[Enum.StudioScriptEditorColorCategories.ActiveLine] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Background] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Bool] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Bracket] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Builtin] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Comment] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.DebuggerCurrentLine] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.DebuggerErrorLine] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Default] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Error] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.FindSelectionBackground] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Function] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.FunctionName] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.GetEnumItems] +args = [] +method = true + +[Enum.StudioScriptEditorColorCategories.Keyword] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Local] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.LuauKeyword] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.MatchingWordBackground] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Method] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Nil] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Number] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Operator] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Property] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Ruler] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.SelectionBackground] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.SelectionText] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Self] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.String] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.TODO] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Warning] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorCategories.Whitespace] +struct = "EnumItem" +[Enum.StudioScriptEditorColorPresets.Custom] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorPresets.Extra1] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorPresets.Extra2] +struct = "EnumItem" + +[Enum.StudioScriptEditorColorPresets.GetEnumItems] +args = [] +method = true + +[Enum.StudioScriptEditorColorPresets.RobloxDefault] +struct = "EnumItem" +[Enum.StudioStyleGuideColor.AttributeCog] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Border] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.BrightText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Button] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ButtonBorder] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ButtonText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.CategoryItem] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ChatIncomingBgColor] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ChatIncomingTextColor] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ChatModeratedMessageColor] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ChatOutgoingBgColor] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ChatOutgoingTextColor] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.CheckedFieldBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.CheckedFieldBorder] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.CheckedFieldIndicator] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ColorPickerFrame] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.CurrentMarker] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Dark] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DebuggerCurrentLine] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DebuggerErrorLine] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DialogButton] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DialogButtonBorder] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DialogButtonText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DialogMainButton] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DialogMainButtonText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffFilePathBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffFilePathBorder] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffFilePathText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffLineNum] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffLineNumAdditionBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffLineNumDeletionBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffLineNumNoChangeBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffLineNumSeparatorBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffTextAddition] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffTextAdditionBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffTextDeletion] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffTextDeletionBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffTextHunkInfo] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffTextNoChange] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffTextNoChangeBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DiffTextSeparatorBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.DimmedText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Dropdown] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.EmulatorBar] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.EmulatorDropDown] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ErrorText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.GameSettingsTableItem] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.GameSettingsTooltip] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.GetEnumItems] +args = [] +method = true + +[Enum.StudioStyleGuideColor.HeaderSection] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.InfoBarWarningBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.InfoBarWarningText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.InfoText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.InputFieldBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.InputFieldBorder] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Item] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Light] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.LinkText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.MainBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.MainButton] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.MainText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Mid] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Midlight] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Notification] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.RibbonButton] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.RibbonTab] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.RibbonTabTopBar] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptBool] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptBracket] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptBuiltInFunction] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptComment] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptEditorCurrentLine] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptError] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptFindSelectionBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptFunction] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptFunctionName] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptKeyword] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptLocal] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptLuauKeyword] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptMatchingWordSelectionBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptMethod] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptNil] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptNumber] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptOperator] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptProperty] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptRuler] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptSelectionBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptSelectionText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptSelf] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptSideWidget] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptString] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptTodo] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptWarning] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScriptWhitespace] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScrollBar] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ScrollBarBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.SensitiveText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Separator] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Shadow] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.StatusBar] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.SubText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Tab] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.TabBar] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.TableItem] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Titlebar] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.TitlebarText] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.Tooltip] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.ViewPortBackground] +struct = "EnumItem" + +[Enum.StudioStyleGuideColor.WarningText] +struct = "EnumItem" +[Enum.StudioStyleGuideModifier.Default] +struct = "EnumItem" + +[Enum.StudioStyleGuideModifier.Disabled] +struct = "EnumItem" + +[Enum.StudioStyleGuideModifier.GetEnumItems] +args = [] +method = true + +[Enum.StudioStyleGuideModifier.Hover] +struct = "EnumItem" + +[Enum.StudioStyleGuideModifier.Pressed] +struct = "EnumItem" + +[Enum.StudioStyleGuideModifier.Selected] +struct = "EnumItem" +[Enum.Style.AlternatingSupports] +struct = "EnumItem" + +[Enum.Style.BridgeStyleSupports] +struct = "EnumItem" + +[Enum.Style.GetEnumItems] +args = [] +method = true + +[Enum.Style.NoSupports] +struct = "EnumItem" +[Enum.SurfaceConstraint.GetEnumItems] +args = [] +method = true + +[Enum.SurfaceConstraint.Hinge] +struct = "EnumItem" + +[Enum.SurfaceConstraint.Motor] +struct = "EnumItem" + +[Enum.SurfaceConstraint.None] +struct = "EnumItem" + +[Enum.SurfaceConstraint.SteppingMotor] +struct = "EnumItem" +[Enum.SurfaceGuiSizingMode.FixedSize] +struct = "EnumItem" + +[Enum.SurfaceGuiSizingMode.GetEnumItems] +args = [] +method = true + +[Enum.SurfaceGuiSizingMode.PixelsPerStud] +struct = "EnumItem" +[Enum.SurfaceType.GetEnumItems] +args = [] +method = true + +[Enum.SurfaceType.Glue] +struct = "EnumItem" + +[Enum.SurfaceType.Hinge] +struct = "EnumItem" + +[Enum.SurfaceType.Inlet] +struct = "EnumItem" + +[Enum.SurfaceType.Motor] +struct = "EnumItem" + +[Enum.SurfaceType.Smooth] +struct = "EnumItem" + +[Enum.SurfaceType.SmoothNoOutlines] +struct = "EnumItem" + +[Enum.SurfaceType.SteppingMotor] +struct = "EnumItem" + +[Enum.SurfaceType.Studs] +struct = "EnumItem" + +[Enum.SurfaceType.Universal] +struct = "EnumItem" + +[Enum.SurfaceType.Weld] +struct = "EnumItem" +[Enum.SwipeDirection.Down] +struct = "EnumItem" + +[Enum.SwipeDirection.GetEnumItems] +args = [] +method = true + +[Enum.SwipeDirection.Left] +struct = "EnumItem" + +[Enum.SwipeDirection.None] +struct = "EnumItem" + +[Enum.SwipeDirection.Right] +struct = "EnumItem" + +[Enum.SwipeDirection.Up] +struct = "EnumItem" +[Enum.TableMajorAxis.ColumnMajor] +struct = "EnumItem" + +[Enum.TableMajorAxis.GetEnumItems] +args = [] +method = true + +[Enum.TableMajorAxis.RowMajor] +struct = "EnumItem" +[Enum.Technology.Compatibility] +struct = "EnumItem" + +[Enum.Technology.Future] +struct = "EnumItem" + +[Enum.Technology.GetEnumItems] +args = [] +method = true + +[Enum.Technology.Legacy] +struct = "EnumItem" + +[Enum.Technology.ShadowMap] +struct = "EnumItem" + +[Enum.Technology.Voxel] +struct = "EnumItem" +[Enum.TeleportMethod.GetEnumItems] +args = [] +method = true + +[Enum.TeleportMethod.TeleportPartyAsync] +struct = "EnumItem" + +[Enum.TeleportMethod.TeleportToPlaceInstance] +struct = "EnumItem" + +[Enum.TeleportMethod.TeleportToPrivateServer] +struct = "EnumItem" + +[Enum.TeleportMethod.TeleportToSpawnByName] +struct = "EnumItem" + +[Enum.TeleportMethod.TeleportUnknown] +struct = "EnumItem" +[Enum.TeleportResult.Failure] +struct = "EnumItem" + +[Enum.TeleportResult.Flooded] +struct = "EnumItem" + +[Enum.TeleportResult.GameEnded] +struct = "EnumItem" + +[Enum.TeleportResult.GameFull] +struct = "EnumItem" + +[Enum.TeleportResult.GameNotFound] +struct = "EnumItem" + +[Enum.TeleportResult.GetEnumItems] +args = [] +method = true + +[Enum.TeleportResult.IsTeleporting] +struct = "EnumItem" + +[Enum.TeleportResult.Success] +struct = "EnumItem" + +[Enum.TeleportResult.Unauthorized] +struct = "EnumItem" +[Enum.TeleportState.Failed] +struct = "EnumItem" + +[Enum.TeleportState.GetEnumItems] +args = [] +method = true + +[Enum.TeleportState.InProgress] +struct = "EnumItem" + +[Enum.TeleportState.RequestedFromServer] +struct = "EnumItem" + +[Enum.TeleportState.Started] +struct = "EnumItem" + +[Enum.TeleportState.WaitingForServer] +struct = "EnumItem" +[Enum.TeleportType.GetEnumItems] +args = [] +method = true + +[Enum.TeleportType.ToInstance] +struct = "EnumItem" + +[Enum.TeleportType.ToPlace] +struct = "EnumItem" + +[Enum.TeleportType.ToReservedServer] +struct = "EnumItem" +[Enum.TextFilterContext.GetEnumItems] +args = [] +method = true + +[Enum.TextFilterContext.PrivateChat] +struct = "EnumItem" + +[Enum.TextFilterContext.PublicChat] +struct = "EnumItem" +[Enum.TextInputType.Default] +struct = "EnumItem" + +[Enum.TextInputType.Email] +struct = "EnumItem" + +[Enum.TextInputType.GetEnumItems] +args = [] +method = true + +[Enum.TextInputType.NoSuggestions] +struct = "EnumItem" + +[Enum.TextInputType.Number] +struct = "EnumItem" + +[Enum.TextInputType.Password] +struct = "EnumItem" + +[Enum.TextInputType.PasswordShown] +struct = "EnumItem" + +[Enum.TextInputType.Phone] +struct = "EnumItem" + +[Enum.TextInputType.Username] +struct = "EnumItem" +[Enum.TextTruncate.AtEnd] +struct = "EnumItem" + +[Enum.TextTruncate.GetEnumItems] +args = [] +method = true + +[Enum.TextTruncate.None] +struct = "EnumItem" +[Enum.TextXAlignment.Center] +struct = "EnumItem" + +[Enum.TextXAlignment.GetEnumItems] +args = [] +method = true + +[Enum.TextXAlignment.Left] +struct = "EnumItem" + +[Enum.TextXAlignment.Right] +struct = "EnumItem" +[Enum.TextYAlignment.Bottom] +struct = "EnumItem" + +[Enum.TextYAlignment.Center] +struct = "EnumItem" + +[Enum.TextYAlignment.GetEnumItems] +args = [] +method = true + +[Enum.TextYAlignment.Top] +struct = "EnumItem" +[Enum.TextureMode.GetEnumItems] +args = [] +method = true + +[Enum.TextureMode.Static] +struct = "EnumItem" + +[Enum.TextureMode.Stretch] +struct = "EnumItem" + +[Enum.TextureMode.Wrap] +struct = "EnumItem" +[Enum.TextureQueryType.GetEnumItems] +args = [] +method = true + +[Enum.TextureQueryType.Humanoid] +struct = "EnumItem" + +[Enum.TextureQueryType.HumanoidOrphaned] +struct = "EnumItem" + +[Enum.TextureQueryType.NonHumanoid] +struct = "EnumItem" + +[Enum.TextureQueryType.NonHumanoidOrphaned] +struct = "EnumItem" +[Enum.ThreadPoolConfig.Auto] +struct = "EnumItem" + +[Enum.ThreadPoolConfig.GetEnumItems] +args = [] +method = true + +[Enum.ThreadPoolConfig.PerCore1] +struct = "EnumItem" + +[Enum.ThreadPoolConfig.PerCore2] +struct = "EnumItem" + +[Enum.ThreadPoolConfig.PerCore3] +struct = "EnumItem" + +[Enum.ThreadPoolConfig.PerCore4] +struct = "EnumItem" + +[Enum.ThreadPoolConfig.Threads1] +struct = "EnumItem" + +[Enum.ThreadPoolConfig.Threads16] +struct = "EnumItem" + +[Enum.ThreadPoolConfig.Threads2] +struct = "EnumItem" + +[Enum.ThreadPoolConfig.Threads3] +struct = "EnumItem" + +[Enum.ThreadPoolConfig.Threads4] +struct = "EnumItem" + +[Enum.ThreadPoolConfig.Threads8] +struct = "EnumItem" +[Enum.ThrottlingPriority.Default] +struct = "EnumItem" + +[Enum.ThrottlingPriority.ElevatedOnServer] +struct = "EnumItem" + +[Enum.ThrottlingPriority.Extreme] +struct = "EnumItem" + +[Enum.ThrottlingPriority.GetEnumItems] +args = [] +method = true +[Enum.ThumbnailSize.GetEnumItems] +args = [] +method = true + +[Enum.ThumbnailSize.Size100x100] +struct = "EnumItem" + +[Enum.ThumbnailSize.Size150x150] +struct = "EnumItem" + +[Enum.ThumbnailSize.Size180x180] +struct = "EnumItem" + +[Enum.ThumbnailSize.Size352x352] +struct = "EnumItem" + +[Enum.ThumbnailSize.Size420x420] +struct = "EnumItem" + +[Enum.ThumbnailSize.Size48x48] +struct = "EnumItem" + +[Enum.ThumbnailSize.Size60x60] +struct = "EnumItem" +[Enum.ThumbnailType.AvatarBust] +struct = "EnumItem" + +[Enum.ThumbnailType.AvatarThumbnail] +struct = "EnumItem" + +[Enum.ThumbnailType.GetEnumItems] +args = [] +method = true + +[Enum.ThumbnailType.HeadShot] +struct = "EnumItem" +[Enum.TickCountSampleMethod.Benchmark] +struct = "EnumItem" + +[Enum.TickCountSampleMethod.Fast] +struct = "EnumItem" + +[Enum.TickCountSampleMethod.GetEnumItems] +args = [] +method = true + +[Enum.TickCountSampleMethod.Precise] +struct = "EnumItem" +[Enum.TopBottom.Bottom] +struct = "EnumItem" + +[Enum.TopBottom.Center] +struct = "EnumItem" + +[Enum.TopBottom.GetEnumItems] +args = [] +method = true + +[Enum.TopBottom.Top] +struct = "EnumItem" +[Enum.TouchCameraMovementMode.Classic] +struct = "EnumItem" + +[Enum.TouchCameraMovementMode.Default] +struct = "EnumItem" + +[Enum.TouchCameraMovementMode.Follow] +struct = "EnumItem" + +[Enum.TouchCameraMovementMode.GetEnumItems] +args = [] +method = true + +[Enum.TouchCameraMovementMode.Orbital] +struct = "EnumItem" +[Enum.TouchMovementMode.ClickToMove] +struct = "EnumItem" + +[Enum.TouchMovementMode.DPad] +struct = "EnumItem" + +[Enum.TouchMovementMode.Default] +struct = "EnumItem" + +[Enum.TouchMovementMode.DynamicThumbstick] +struct = "EnumItem" + +[Enum.TouchMovementMode.GetEnumItems] +args = [] +method = true + +[Enum.TouchMovementMode.Thumbpad] +struct = "EnumItem" + +[Enum.TouchMovementMode.Thumbstick] +struct = "EnumItem" +[Enum.TriStateBoolean.False] +struct = "EnumItem" + +[Enum.TriStateBoolean.GetEnumItems] +args = [] +method = true + +[Enum.TriStateBoolean.True] +struct = "EnumItem" + +[Enum.TriStateBoolean.Unknown] +struct = "EnumItem" +[Enum.TweenStatus.Canceled] +struct = "EnumItem" + +[Enum.TweenStatus.Completed] +struct = "EnumItem" + +[Enum.TweenStatus.GetEnumItems] +args = [] +method = true +[Enum.UITheme.Dark] +struct = "EnumItem" + +[Enum.UITheme.GetEnumItems] +args = [] +method = true + +[Enum.UITheme.Light] +struct = "EnumItem" +[Enum.UiMessageType.GetEnumItems] +args = [] +method = true + +[Enum.UiMessageType.UiMessageError] +struct = "EnumItem" + +[Enum.UiMessageType.UiMessageInfo] +struct = "EnumItem" +[Enum.UserCFrame.GetEnumItems] +args = [] +method = true + +[Enum.UserCFrame.Head] +struct = "EnumItem" + +[Enum.UserCFrame.LeftHand] +struct = "EnumItem" + +[Enum.UserCFrame.RightHand] +struct = "EnumItem" +[Enum.UserInputState.Begin] +struct = "EnumItem" + +[Enum.UserInputState.Cancel] +struct = "EnumItem" + +[Enum.UserInputState.Change] +struct = "EnumItem" + +[Enum.UserInputState.End] +struct = "EnumItem" + +[Enum.UserInputState.GetEnumItems] +args = [] +method = true + +[Enum.UserInputState.None] +struct = "EnumItem" +[Enum.UserInputType.Accelerometer] +struct = "EnumItem" + +[Enum.UserInputType.Focus] +struct = "EnumItem" + +[Enum.UserInputType.Gamepad1] +struct = "EnumItem" + +[Enum.UserInputType.Gamepad2] +struct = "EnumItem" + +[Enum.UserInputType.Gamepad3] +struct = "EnumItem" + +[Enum.UserInputType.Gamepad4] +struct = "EnumItem" + +[Enum.UserInputType.Gamepad5] +struct = "EnumItem" + +[Enum.UserInputType.Gamepad6] +struct = "EnumItem" + +[Enum.UserInputType.Gamepad7] +struct = "EnumItem" + +[Enum.UserInputType.Gamepad8] +struct = "EnumItem" + +[Enum.UserInputType.GetEnumItems] +args = [] +method = true + +[Enum.UserInputType.Gyro] +struct = "EnumItem" + +[Enum.UserInputType.InputMethod] +struct = "EnumItem" + +[Enum.UserInputType.Keyboard] +struct = "EnumItem" + +[Enum.UserInputType.MouseButton1] +struct = "EnumItem" + +[Enum.UserInputType.MouseButton2] +struct = "EnumItem" + +[Enum.UserInputType.MouseButton3] +struct = "EnumItem" + +[Enum.UserInputType.MouseMovement] +struct = "EnumItem" + +[Enum.UserInputType.MouseWheel] +struct = "EnumItem" + +[Enum.UserInputType.None] +struct = "EnumItem" + +[Enum.UserInputType.TextInput] +struct = "EnumItem" + +[Enum.UserInputType.Touch] +struct = "EnumItem" +[Enum.VRTouchpad.GetEnumItems] +args = [] +method = true + +[Enum.VRTouchpad.Left] +struct = "EnumItem" + +[Enum.VRTouchpad.Right] +struct = "EnumItem" +[Enum.VRTouchpadMode.ABXY] +struct = "EnumItem" + +[Enum.VRTouchpadMode.GetEnumItems] +args = [] +method = true + +[Enum.VRTouchpadMode.Touch] +struct = "EnumItem" + +[Enum.VRTouchpadMode.VirtualThumbstick] +struct = "EnumItem" +[Enum.VerticalAlignment.Bottom] +struct = "EnumItem" + +[Enum.VerticalAlignment.Center] +struct = "EnumItem" + +[Enum.VerticalAlignment.GetEnumItems] +args = [] +method = true + +[Enum.VerticalAlignment.Top] +struct = "EnumItem" +[Enum.VerticalScrollBarPosition.GetEnumItems] +args = [] +method = true + +[Enum.VerticalScrollBarPosition.Left] +struct = "EnumItem" + +[Enum.VerticalScrollBarPosition.Right] +struct = "EnumItem" +[Enum.VibrationMotor.GetEnumItems] +args = [] +method = true + +[Enum.VibrationMotor.Large] +struct = "EnumItem" + +[Enum.VibrationMotor.LeftHand] +struct = "EnumItem" + +[Enum.VibrationMotor.LeftTrigger] +struct = "EnumItem" + +[Enum.VibrationMotor.RightHand] +struct = "EnumItem" + +[Enum.VibrationMotor.RightTrigger] +struct = "EnumItem" + +[Enum.VibrationMotor.Small] +struct = "EnumItem" +[Enum.VirtualInputMode.GetEnumItems] +args = [] +method = true + +[Enum.VirtualInputMode.None] +struct = "EnumItem" + +[Enum.VirtualInputMode.Playing] +struct = "EnumItem" + +[Enum.VirtualInputMode.Recording] +struct = "EnumItem" +[Enum.WaterDirection.GetEnumItems] +args = [] +method = true + +[Enum.WaterDirection.NegX] +struct = "EnumItem" + +[Enum.WaterDirection.NegY] +struct = "EnumItem" + +[Enum.WaterDirection.NegZ] +struct = "EnumItem" + +[Enum.WaterDirection.X] +struct = "EnumItem" + +[Enum.WaterDirection.Y] +struct = "EnumItem" + +[Enum.WaterDirection.Z] +struct = "EnumItem" +[Enum.WaterForce.GetEnumItems] +args = [] +method = true + +[Enum.WaterForce.Max] +struct = "EnumItem" + +[Enum.WaterForce.Medium] +struct = "EnumItem" + +[Enum.WaterForce.None] +struct = "EnumItem" + +[Enum.WaterForce.Small] +struct = "EnumItem" + +[Enum.WaterForce.Strong] +struct = "EnumItem" +[Enum.WrapLayerDebugMode.BoundCage] +struct = "EnumItem" + +[Enum.WrapLayerDebugMode.BoundCageAndLinks] +struct = "EnumItem" + +[Enum.WrapLayerDebugMode.GetEnumItems] +args = [] +method = true + +[Enum.WrapLayerDebugMode.LayerCage] +struct = "EnumItem" + +[Enum.WrapLayerDebugMode.None] +struct = "EnumItem" + +[Enum.WrapLayerDebugMode.Reference] +struct = "EnumItem" +[Enum.WrapTargetDebugMode.GetEnumItems] +args = [] +method = true + +[Enum.WrapTargetDebugMode.None] +struct = "EnumItem" + +[Enum.WrapTargetDebugMode.TargetCage] +struct = "EnumItem" +[Enum.ZIndexBehavior.GetEnumItems] +args = [] +method = true + +[Enum.ZIndexBehavior.Global] +struct = "EnumItem" + +[Enum.ZIndexBehavior.Sibling] +struct = "EnumItem" +[[Faces.new.args]] +type = "..." +[[Instance.new.args]] +type = ["Accoutrement", "Accessory", "Hat", "AdvancedDragger", "AnalyticsService", "Animation", "AnimationController", "Animator", "Atmosphere", "Attachment", "Bone", "Backpack", "HopperBin", "Tool", "Flag", "WrapLayer", "WrapTarget", "Beam", "BindableEvent", "BindableFunction", "BodyAngularVelocity", "BodyForce", "BodyGyro", "BodyPosition", "BodyThrust", "BodyVelocity", "RocketPropulsion", "Camera", "BodyColors", "CharacterMesh", "Pants", "Shirt", "ShirtGraphic", "Skin", "ClickDetector", "Clouds", "Configuration", "AlignOrientation", "AlignPosition", "AngularVelocity", "BallSocketConstraint", "HingeConstraint", "LineForce", "RodConstraint", "RopeConstraint", "CylindricalConstraint", "PrismaticConstraint", "SpringConstraint", "Torque", "UniversalConstraint", "VectorForce", "HumanoidController", "SkateboardController", "VehicleController", "CustomEvent", "CustomEventReceiver", "BlockMesh", "CylinderMesh", "FileMesh", "SpecialMesh", "DebuggerWatch", "Dialog", "DialogChoice", "Dragger", "Explosion", "Decal", "Texture", "Hole", "MotorFeature", "Fire", "FlyweightService", "CSGDictionaryService", "NonReplicatedCSGDictionaryService", "Folder", "ForceField", "FunctionalTest", "Frame", "ImageButton", "TextButton", "ImageLabel", "TextLabel", "ScrollingFrame", "TextBox", "VideoFrame", "ViewportFrame", "BillboardGui", "ScreenGui", "GuiMain", "SurfaceGui", "FloorWire", "SelectionBox", "BoxHandleAdornment", "ConeHandleAdornment", "CylinderHandleAdornment", "ImageHandleAdornment", "LineHandleAdornment", "SphereHandleAdornment", "ParabolaAdornment", "SelectionSphere", "ArcHandles", "Handles", "SurfaceSelection", "SelectionPartLasso", "SelectionPointLasso", "HeightmapImporterService", "Humanoid", "HumanoidDescription", "RotateP", "RotateV", "Glue", "ManualGlue", "ManualWeld", "Motor", "Motor6D", "Rotate", "Snap", "VelocityMotor", "Weld", "Keyframe", "KeyframeMarker", "KeyframeSequence", "PointLight", "SpotLight", "SurfaceLight", "LocalizationTable", "Script", "LocalScript", "ModuleScript", "Message", "Hint", "NoCollisionConstraint", "CornerWedgePart", "Part", "FlagStand", "Seat", "SkateboardPlatform", "SpawnLocation", "WedgePart", "MeshPart", "PartOperation", "NegateOperation", "UnionOperation", "TrussPart", "VehicleSeat", "Model", "Actor", "WorldModel", "PartOperationAsset", "ParticleEmitter", "Player", "PluginAction", "NumberPose", "Pose", "BloomEffect", "BlurEffect", "ColorCorrectionEffect", "DepthOfFieldEffect", "SunRaysEffect", "ProximityPrompt", "ProximityPromptService", "ReflectionMetadata", "ReflectionMetadataCallbacks", "ReflectionMetadataClasses", "ReflectionMetadataEnums", "ReflectionMetadataEvents", "ReflectionMetadataFunctions", "ReflectionMetadataClass", "ReflectionMetadataEnum", "ReflectionMetadataEnumItem", "ReflectionMetadataMember", "ReflectionMetadataProperties", "ReflectionMetadataYieldFunctions", "RemoteEvent", "RemoteFunction", "RenderingTest", "Sky", "Smoke", "Sound", "ChorusSoundEffect", "CompressorSoundEffect", "DistortionSoundEffect", "EchoSoundEffect", "EqualizerSoundEffect", "FlangeSoundEffect", "PitchShiftSoundEffect", "ReverbSoundEffect", "TremoloSoundEffect", "SoundGroup", "Sparkles", "StandalonePluginScripts", "StarterGear", "SurfaceAppearance", "Team", "TeleportOptions", "TerrainRegion", "TestService", "Trail", "Tween", "UIAspectRatioConstraint", "UISizeConstraint", "UITextSizeConstraint", "UICorner", "UIGradient", "UIGridLayout", "UIListLayout", "UIPageLayout", "UITableLayout", "UIPadding", "UIScale", "BinaryStringValue", "BoolValue", "BrickColorValue", "CFrameValue", "Color3Value", "DoubleConstrainedValue", "IntConstrainedValue", "IntValue", "NumberValue", "ObjectValue", "RayValue", "StringValue", "Vector3Value", "VirtualInputManager", "WeldConstraint"] +[[NumberRange.new.args]] +type = "number" + +[[NumberRange.new.args]] +required = false +type = "number" +[[NumberSequence.new.args]] +type = "any" + +[[NumberSequence.new.args]] +required = false +type = "number" +[[NumberSequenceKeypoint.new.args]] +type = "number" + +[[NumberSequenceKeypoint.new.args]] +type = "number" + +[[NumberSequenceKeypoint.new.args]] +required = false +type = "number" +[[PathWaypoint.new.args]] +required = false + +[PathWaypoint.new.args.type] +display = "Vector3" + +[[PathWaypoint.new.args]] +required = false + +[PathWaypoint.new.args.type] +display = "PathWaypointAction" +[[PhysicalProperties.new.args]] +type = "any" + +[[PhysicalProperties.new.args]] +required = false +type = "number" + +[[PhysicalProperties.new.args]] +required = false +type = "number" + +[[PhysicalProperties.new.args]] +required = false +type = "number" + +[[PhysicalProperties.new.args]] +required = false +type = "number" +[[Random.new.args]] +required = false +type = "number" +[[Ray.new.args]] +[Ray.new.args.type] +display = "Vector3" + +[[Ray.new.args]] +[Ray.new.args.type] +display = "Vector3" +[RaycastParams.new] +args = [] +[[Rect.new.args]] +type = "any" + +[[Rect.new.args]] +type = "any" + +[[Rect.new.args]] +required = false +type = "number" + +[[Rect.new.args]] +required = false +type = "number" +[[Region3.new.args]] +[Region3.new.args.type] +display = "Vector3" + +[[Region3.new.args]] +[Region3.new.args.type] +display = "Vector3" +[[Region3int16.new.args]] +required = false + +[Region3int16.new.args.type] +display = "Vector3" + +[[Region3int16.new.args]] +required = false + +[Region3int16.new.args.type] +display = "Vector3" +[[TweenInfo.new.args]] +required = false +type = "number" + +[[TweenInfo.new.args]] +required = false + +[TweenInfo.new.args.type] +display = "EasingStyle" + +[[TweenInfo.new.args]] +required = false + +[TweenInfo.new.args.type] +display = "EasingDirection" + +[[TweenInfo.new.args]] +required = false +type = "number" + +[[TweenInfo.new.args]] +required = false +type = "bool" + +[[TweenInfo.new.args]] +required = false +type = "number" +[[UDim.new.args]] +required = false +type = "number" + +[[UDim.new.args]] +required = false +type = "number" +[[UDim2.fromOffset.args]] +required = "use UDim2.new() if you want an empty UDim2" +type = "number" + +[[UDim2.fromOffset.args]] +required = false +type = "number" +[[UDim2.fromScale.args]] +required = "use UDim2.new() if you want an empty UDim2" +type = "number" + +[[UDim2.fromScale.args]] +required = false +type = "number" +[[UDim2.new.args]] +required = false +type = "any" + +[[UDim2.new.args]] +required = false +type = "any" + +[[UDim2.new.args]] +required = false +type = "number" + +[[UDim2.new.args]] +required = false +type = "number" + +[UserSettings] +args = [] +[[Vector2.new.args]] +required = false +type = "number" + +[[Vector2.new.args]] +required = false +type = "number" +[[Vector2int16.new.args]] +required = false +type = "number" + +[[Vector2int16.new.args]] +required = false +type = "number" +[[Vector3.FromAxis.args]] +[Vector3.FromAxis.args.type] +display = "Axis" +[[Vector3.FromNormalId.args]] +[Vector3.FromNormalId.args.type] +display = "NormalId" +[[Vector3.new.args]] +required = false +type = "number" + +[[Vector3.new.args]] +required = false +type = "number" + +[[Vector3.new.args]] +required = false +type = "number" +[[Vector3int16.new.args]] +required = false +type = "number" + +[[Vector3int16.new.args]] +required = false +type = "number" + +[[Vector3int16.new.args]] +required = false +type = "number" +[[bit32.arshift.args]] +type = "number" + +[[bit32.arshift.args]] +type = "number" +[[bit32.band.args]] +type = "..." +[[bit32.bnot.args]] +type = "number" +[[bit32.bor.args]] +type = "..." +[[bit32.btest.args]] +type = "..." +[[bit32.bxor.args]] +type = "..." +[[bit32.extract.args]] +type = "number" + +[[bit32.extract.args]] +type = "number" + +[[bit32.extract.args]] +required = false +type = "number" +[[bit32.lrotate.args]] +type = "number" + +[[bit32.lrotate.args]] +type = "number" +[[bit32.lshift.args]] +type = "number" + +[[bit32.lshift.args]] +type = "number" +[[bit32.replace.args]] +type = "number" + +[[bit32.replace.args]] +type = "number" + +[[bit32.replace.args]] +required = false +type = "number" +[[bit32.rrotate.args]] +type = "number" + +[[bit32.rrotate.args]] +type = "number" +[[bit32.rshift.args]] +type = "number" + +[[bit32.rshift.args]] +type = "number" +[[collectgarbage.args]] +type = ["count"] +[coroutine.isyieldable] +args = [] +[debug.debug] +removed = true + +[debug.getfenv] +removed = true + +[debug.gethook] +removed = true + +[debug.getinfo] +removed = true + +[debug.getlocal] +removed = true + +[debug.getmetatable] +removed = true + +[debug.getregistry] +removed = true + +[debug.getupvalue] +removed = true +[[debug.profilebegin.args]] +type = "string" + +[debug.profileend] +args = [] + +[debug.setfenv] +removed = true + +[debug.sethook] +removed = true + +[debug.setlocal] +removed = true + +[debug.setmetatable] +removed = true + +[debug.setupvalue] +removed = true +[[delay.args]] +type = "number" + +[[delay.args]] +type = "function" + +[dofile] +removed = true + +[elapsedTime] +args = [] +[[error.args]] +required = "Erroring without an explanation is unhelpful to users." +type = "any" + +[[error.args]] +required = false +type = "number" + +[game] +struct = "DataModel" + +[io] +removed = true + +[load] +removed = true + +[loadfile] +removed = true +[[math.clamp.args]] +type = "number" + +[[math.clamp.args]] +type = "number" + +[[math.clamp.args]] +type = "number" +[[math.log.args]] +type = "number" + +[[math.log.args]] +required = false +type = "number" +[[math.noise.args]] +type = "number" + +[[math.noise.args]] +required = false +type = "number" + +[[math.noise.args]] +required = false +type = "number" +[[math.round.args]] +type = "number" +[[math.sign.args]] +type = "number" + +[module] +removed = true +[os.execute] +removed = true + +[os.exit] +removed = true + +[os.getenv] +removed = true + +[os.remove] +removed = true + +[os.rename] +removed = true + +[os.setlocale] +removed = true + +[os.tmpname] +removed = true + +[package] +removed = true + +[plugin] +struct = "Plugin" +[[require.args]] +type = "number" + +[script] +struct = "Script" + +[settings] +args = [] + +[shared] +property = true +writable = "new-fields" +[[spawn.args]] +type = "function" +[string.dump] +removed = true +[[string.pack.args]] +type = "string" + +[[string.pack.args]] +type = "..." +[[string.packsize.args]] +type = "string" +[[string.split.args]] +type = "string" + +[[string.split.args]] +required = false +type = "string" +[[string.unpack.args]] +type = "string" + +[[string.unpack.args]] +type = "string" + +[[string.unpack.args]] +required = false +type = "number" +[[table.clear.args]] +type = "table" +[[table.create.args]] +type = "number" + +[[table.create.args]] +required = false +type = "any" +[[table.find.args]] +type = "table" + +[[table.find.args]] +type = "any" + +[[table.find.args]] +required = false +type = "number" +[[table.move.args]] +type = "table" + +[[table.move.args]] +type = "number" + +[[table.move.args]] +type = "number" + +[[table.move.args]] +type = "number" + +[[table.move.args]] +required = false +type = "table" +[[table.pack.args]] +type = "..." +[[table.unpack.args]] +type = "table" + +[[table.unpack.args]] +required = false +type = "number" + +[[table.unpack.args]] +required = false +type = "number" + +[tick] +args = [] + +[time] +args = [] +[[typeof.args]] +type = "any" +[[utf8.char.args]] +required = "utf8.char should be used with an argument despite it not throwing" +type = "number" + +[[utf8.char.args]] +required = false +type = "..." + +[utf8.charpattern] +property = true +[[utf8.codepoint.args]] +type = "string" + +[[utf8.codepoint.args]] +required = false +type = "number" + +[[utf8.codepoint.args]] +required = false +type = "number" +[[utf8.codes.args]] +type = "string" +[[utf8.graphemes.args]] +type = "string" + +[[utf8.graphemes.args]] +required = false +type = "number" + +[[utf8.graphemes.args]] +required = false +type = "number" +[[utf8.len.args]] +type = "string" + +[[utf8.len.args]] +required = false +type = "number" + +[[utf8.len.args]] +required = false +type = "number" +[[utf8.nfcnormalize.args]] +type = "string" +[[utf8.nfdnormalize.args]] +type = "string" +[[utf8.offset.args]] +type = "string" + +[[utf8.offset.args]] +required = false +type = "number" + +[[utf8.offset.args]] +required = false +type = "number" +[[wait.args]] +required = false +type = "number" +[[warn.args]] +type = "string" + +[[warn.args]] +required = false +type = "..." + +[workspace] +struct = "Workspace" diff --git a/selene.toml b/selene.toml new file mode 100644 index 0000000..ce33831 --- /dev/null +++ b/selene.toml @@ -0,0 +1,4 @@ +std = "roblox" + +[rules] +parenthese_conditions = "allow" diff --git a/src/ReplicatedStorage/LundstrongOrders/Events.model.json b/src/ReplicatedStorage/LundstrongOrders/Events.model.json new file mode 100644 index 0000000..497003f --- /dev/null +++ b/src/ReplicatedStorage/LundstrongOrders/Events.model.json @@ -0,0 +1,29 @@ +{ + "ClassName": "Folder", + "Children": [ + { + "Name": "claimOrder", + "ClassName": "RemoteEvent" + }, + { + "Name": "completeOrder", + "ClassName": "RemoteEvent" + }, + { + "Name": "createOrder", + "ClassName": "RemoteFunction" + }, + { + "Name": "orderList", + "ClassName": "RemoteEvent" + }, + { + "Name": "enableGui", + "ClassName": "RemoteEvent" + }, + { + "Name": "sendNotification", + "ClassName": "RemoteEvent" + } + ] +} \ No newline at end of file diff --git a/src/ReplicatedStorage/LundstrongOrders/init.meta.json b/src/ReplicatedStorage/LundstrongOrders/init.meta.json new file mode 100644 index 0000000..1025b06 --- /dev/null +++ b/src/ReplicatedStorage/LundstrongOrders/init.meta.json @@ -0,0 +1,3 @@ +{ + "ignoreUnknownInstances": true +} \ No newline at end of file diff --git a/src/ReplicatedStorage/LundstrongOrders/notifHandler.lua b/src/ReplicatedStorage/LundstrongOrders/notifHandler.lua new file mode 100644 index 0000000..ca4d64b --- /dev/null +++ b/src/ReplicatedStorage/LundstrongOrders/notifHandler.lua @@ -0,0 +1,38 @@ +local tweenService = game:GetService("TweenService") +local module = {} +local path = { + ["Container"] = game.Players.LocalPlayer.PlayerGui.LundstrongOrders.notification.notification.Container +} + +function module:CreateNotification(notificationText: string, notificationTime: number?) + local clone = path.Container.Demo:Clone() + clone.Parent = path.Container + clone.Name = "Notification" + clone.Frame.textFrame.TextLabel.Text = notificationText + + local tween1 = tweenService:Create(clone.Frame, TweenInfo.new(1), { + Position = UDim2.new(0.1, 0, 0.1, 0) + }) + local tween2 = tweenService:Create(clone.Frame.Frame, TweenInfo.new(notificationTime or 5, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), { + BackgroundColor3 = Color3.fromRGB(90, 137, 149), + Size = UDim2.new(0, 0, 0.05, 0) + }) + local tween3 = tweenService:Create(clone.Frame, TweenInfo.new(1), { + Position = UDim2.new(0.1, 0, 1.1, 0) + }) + + tween1:Play() + game.Players.LocalPlayer.PlayerGui.LundstrongOrders.notification.Sound:Play() + tween1.Completed:Connect(function() + tween2:Play() + end) + tween2.Completed:Connect(function() + tween3:Play() + end) + tween3.Completed:Connect(function() + clone:Destroy() + end) +end + + +return module diff --git a/src/ReplicatedStorage/LundstrongOrders/tween.lua b/src/ReplicatedStorage/LundstrongOrders/tween.lua new file mode 100644 index 0000000..33ab4ca --- /dev/null +++ b/src/ReplicatedStorage/LundstrongOrders/tween.lua @@ -0,0 +1,58 @@ +local tween = game:GetService("TweenService") +local tweeninfo = TweenInfo.new(.75) +local module = {} + +function module:Create(currentFrame: Frame, newFrame: Frame) + local tween1 = tween:Create(currentFrame.animFrame, tweeninfo, {Transparency = 0}) + local tween2 = tween:Create(currentFrame.bgGreenAnim, tweeninfo, {ImageTransparency = 0}) + local tween3 = tween:Create(currentFrame.exitButton, tweeninfo, {BackgroundTransparency = 1}) + local tween4 = tween:Create(currentFrame.exitButton.TextButton, tweeninfo, {TextTransparency = 1}) + local tween5 = tween:Create(newFrame.animFrame, tweeninfo, {Transparency = 1}) + local tween6 = tween:Create(newFrame.bgGreenAnim, tweeninfo, {ImageTransparency = 1}) + local tween7 = tween:Create(newFrame.exitButton, tweeninfo, {BackgroundTransparency = 0}) + local tween8 = tween:Create(newFrame.exitButton.TextButton, tweeninfo, {TextTransparency = 0}) + newFrame.animFrame.Transparency = 0 + newFrame.bgGreenAnim.ImageTransparency = 0 + newFrame.exitButton.BackgroundTransparency = 1 + newFrame.exitButton.TextButton.TextTransparency = 1 + tween1:Play() + tween2:Play() + tween3:Play() + tween4:Play() + tween4.Completed:Connect(function() + currentFrame.Visible = false + newFrame.Visible = true + wait(0.1) + tween5:Play() + tween6:Play() + tween7:Play() + tween8:Play() + end) + tween8.Completed:Connect(function() + print("Animation Complete") + currentFrame.animFrame.Transparency = 1 + currentFrame.bgGreenAnim.ImageTransparency = 1 + currentFrame.exitButton.BackgroundTransparency = 0 + currentFrame.exitButton.TextButton.TextTransparency = 0 + end) +end + +function module:CreateExitTween(currentFrame: Frame) + local tween1 = tween:Create(currentFrame.animFrame, tweeninfo, {Transparency = 0}) + local tween2 = tween:Create(currentFrame.bgGreenAnim, tweeninfo, {ImageTransparency = 0}) + local tween3 = tween:Create(currentFrame.exitButton, tweeninfo, {BackgroundTransparency = 1}) + local tween4 = tween:Create(currentFrame.exitButton.TextButton, tweeninfo, {TextTransparency = 1}) + tween1:Play() + tween2:Play() + tween3:Play() + tween4:Play() + tween4.Completed:Connect(function() + currentFrame.Visible = false + currentFrame.animFrame.Transparency = 1 + currentFrame.bgGreenAnim.ImageTransparency = 1 + currentFrame.exitButton.BackgroundTransparency = 0 + currentFrame.exitButton.TextButton.TextTransparency = 0 + end) +end + +return module \ No newline at end of file diff --git a/src/Server/LundstrongOrders/DataStore2/Constants.lua b/src/Server/LundstrongOrders/DataStore2/Constants.lua new file mode 100644 index 0000000..4be6b10 --- /dev/null +++ b/src/Server/LundstrongOrders/DataStore2/Constants.lua @@ -0,0 +1,13 @@ +local function symbol(text) + local symbol = newproxy(true) + getmetatable(symbol).__tostring = function() return text end + return symbol +end + +return { + SaveFailure = { + BeforeSaveError = symbol("BeforeSaveError"), + DataStoreFailure = symbol("DataStoreFailure"), + InvalidData = symbol("InvalidData"), + } +} diff --git a/src/Server/LundstrongOrders/DataStore2/Promise.lua b/src/Server/LundstrongOrders/DataStore2/Promise.lua new file mode 100644 index 0000000..25b994d --- /dev/null +++ b/src/Server/LundstrongOrders/DataStore2/Promise.lua @@ -0,0 +1,672 @@ +--[[ + An implementation of Promises similar to Promise/A+. + Implemented by evaera/roblox-lua-promise + Licensed under the MIT license +]] + +local RunService = game:GetService("RunService") +local PROMISE_DEBUG = false + +--[[ + Packs a number of arguments into a table and returns its length. + + Used to cajole varargs without dropping sparse values. +]] +local function pack(...) + local len = select("#", ...) + + return len, { ... } +end + +--[[ + wpcallPacked is a version of xpcall that: + * Returns the length of the result first + * Returns the result packed into a table + * Passes extra arguments through to the passed function; xpcall doesn't + * Issues a warning if PROMISE_DEBUG is enabled +]] +local function wpcallPacked(f, ...) + local argsLength, args = pack(...) + + local body = function() + return f(unpack(args, 1, argsLength)) + end + + local resultLength, result = pack(xpcall(body, debug.traceback)) + + -- If promise debugging is on, warn whenever a pcall fails. + -- This is useful for debugging issues within the Promise implementation + -- itself. + if PROMISE_DEBUG and not result[1] then + warn(result[2]) + end + + return resultLength, result +end + +--[[ + Creates a function that invokes a callback with correct error handling and + resolution mechanisms. +]] +local function createAdvancer(callback, resolve, reject) + return function(...) + local resultLength, result = wpcallPacked(callback, ...) + local ok = result[1] + + if ok then + resolve(unpack(result, 2, resultLength)) + else + reject(unpack(result, 2, resultLength)) + end + end +end + +local function isEmpty(t) + return next(t) == nil +end + +local function createSymbol(name) + assert(type(name) == "string", "createSymbol requires `name` to be a string.") + + local symbol = newproxy(true) + + getmetatable(symbol).__tostring = function() + return ("Symbol(%s)"):format(name) + end + + return symbol +end + +local PromiseMarker = createSymbol("PromiseMarker") + +local Promise = {} +Promise.prototype = {} +Promise.__index = Promise.prototype + +Promise.Status = { + Started = createSymbol("Started"), + Resolved = createSymbol("Resolved"), + Rejected = createSymbol("Rejected"), + Cancelled = createSymbol("Cancelled"), +} + +--[[ + Constructs a new Promise with the given initializing callback. + + This is generally only called when directly wrapping a non-promise API into + a promise-based version. + + The callback will receive 'resolve' and 'reject' methods, used to start + invoking the promise chain. + + For example: + + local function get(url) + return Promise.new(function(resolve, reject) + spawn(function() + resolve(HttpService:GetAsync(url)) + end) + end) + end + + get("https://google.com") + :andThen(function(stuff) + print("Got some stuff!", stuff) + end) + + Second parameter, parent, is used internally for tracking the "parent" in a + promise chain. External code shouldn't need to worry about this. +]] +function Promise.new(callback, parent) + if parent ~= nil and not Promise.is(parent) then + error("Argument #2 to Promise.new must be a promise or nil", 2) + end + + local self = { + -- Used to locate where a promise was created + _source = debug.traceback(), + + -- A tag to identify us as a promise + [PromiseMarker] = true, + + _status = Promise.Status.Started, + + -- A table containing a list of all results, whether success or failure. + -- Only valid if _status is set to something besides Started + _values = nil, + + -- Lua doesn't like sparse arrays very much, so we explicitly store the + -- length of _values to handle middle nils. + _valuesLength = -1, + + -- Tracks if this Promise has no error observers.. + _unhandledRejection = true, + + -- Queues representing functions we should invoke when we update! + _queuedResolve = {}, + _queuedReject = {}, + _queuedFinally = {}, + + -- The function to run when/if this promise is cancelled. + _cancellationHook = nil, + + -- The "parent" of this promise in a promise chain. Required for + -- cancellation propagation. + _parent = parent, + + _consumers = setmetatable({}, { + __mode = "k"; + }), + } + + if parent and parent._status == Promise.Status.Started then + parent._consumers[self] = true + end + + setmetatable(self, Promise) + + local function resolve(...) + self:_resolve(...) + end + + local function reject(...) + self:_reject(...) + end + + local function onCancel(cancellationHook) + if cancellationHook then + if self._status == Promise.Status.Cancelled then + cancellationHook() + else + self._cancellationHook = cancellationHook + end + end + + return self._status == Promise.Status.Cancelled + end + + local _, result = wpcallPacked(callback, resolve, reject, onCancel) + local ok = result[1] + local err = result[2] + + if not ok and self._status == Promise.Status.Started then + reject(err) + end + + return self +end + +--[[ + Promise.new, except Promise.spawn is implicit. +]] +function Promise.async(callback) + return Promise.new(function(...) + return Promise.spawn(callback, ...) + end) +end + +--[[ + Spawns a thread with predictable timing. +]] +function Promise.spawn(callback, ...) + local args = { ... } + local length = select("#", ...) + + local connection + connection = RunService.Heartbeat:Connect(function() + connection:Disconnect() + callback(unpack(args, 1, length)) + end) +end + +--[[ + Create a promise that represents the immediately resolved value. +]] +function Promise.resolve(value) + return Promise.new(function(resolve) + resolve(value) + end) +end + +--[[ + Create a promise that represents the immediately rejected value. +]] +function Promise.reject(value) + return Promise.new(function(_, reject) + reject(value) + end) +end + +--[[ + Returns a new promise that: + * is resolved when all input promises resolve + * is rejected if ANY input promises reject +]] +function Promise.all(promises) + if type(promises) ~= "table" then + error("Please pass a list of promises to Promise.all", 2) + end + + -- If there are no values then return an already resolved promise. + if #promises == 0 then + return Promise.resolve({}) + end + + -- We need to check that each value is a promise here so that we can produce + -- a proper error rather than a rejected promise with our error. + for i = 1, #promises do + if not Promise.is(promises[i]) then + error(("Non-promise value passed into Promise.all at index #%d"):format(i), 2) + end + end + + return Promise.new(function(resolve, reject) + -- An array to contain our resolved values from the given promises. + local resolvedValues = {} + + -- Keep a count of resolved promises because just checking the resolved + -- values length wouldn't account for promises that resolve with nil. + local resolvedCount = 0 + + -- Called when a single value is resolved and resolves if all are done. + local function resolveOne(i, ...) + resolvedValues[i] = ... + resolvedCount = resolvedCount + 1 + + if resolvedCount == #promises then + resolve(resolvedValues) + end + end + + -- We can assume the values inside `promises` are all promises since we + -- checked above. + for i = 1, #promises do + promises[i]:andThen( + function(...) + resolveOne(i, ...) + end, + function(...) + reject(...) + end + ) + end + end) +end + +--[[ + Races a set of Promises and returns the first one that resolves, + cancelling the others. +]] +function Promise.race(promises) + assert(type(promises) == "table", "Please pass a list of promises to Promise.race") + + for i, promise in ipairs(promises) do + assert(Promise.is(promise), ("Non-promise value passed into Promise.race at index #%d"):format(i)) + end + + return Promise.new(function(resolve, reject, onCancel) + local function finalize(callback) + return function (...) + for _, promise in ipairs(promises) do + promise:cancel() + end + + return callback(...) + end + end + + onCancel(finalize(reject)) + + for _, promise in ipairs(promises) do + promise:andThen(finalize(resolve), finalize(reject)) + end + end) +end + +--[[ + Is the given object a Promise instance? +]] +function Promise.is(object) + if type(object) ~= "table" then + return false + end + + return object[PromiseMarker] == true +end + +--[[ + Converts a yielding function into a Promise-returning one. +]] +function Promise.promisify(callback, selfValue) + return function(...) + local length, values = pack(...) + return Promise.async(function(resolve) + if selfValue == nil then + resolve(callback(unpack(values, 1, length))) + else + resolve(callback(selfValue, unpack(values, 1, length))) + end + end) + end +end + +function Promise.prototype:getStatus() + return self._status +end + +--[[ + Creates a new promise that receives the result of this promise. + + The given callbacks are invoked depending on that result. +]] +function Promise.prototype:andThen(successHandler, failureHandler) + self._unhandledRejection = false + + -- Create a new promise to follow this part of the chain + return Promise.new(function(resolve, reject) + -- Our default callbacks just pass values onto the next promise. + -- This lets success and failure cascade correctly! + + local successCallback = resolve + if successHandler then + successCallback = createAdvancer(successHandler, resolve, reject) + end + + local failureCallback = reject + if failureHandler then + failureCallback = createAdvancer(failureHandler, resolve, reject) + end + + if self._status == Promise.Status.Started then + -- If we haven't resolved yet, put ourselves into the queue + table.insert(self._queuedResolve, successCallback) + table.insert(self._queuedReject, failureCallback) + elseif self._status == Promise.Status.Resolved then + -- This promise has already resolved! Trigger success immediately. + successCallback(unpack(self._values, 1, self._valuesLength)) + elseif self._status == Promise.Status.Rejected then + -- This promise died a terrible death! Trigger failure immediately. + failureCallback(unpack(self._values, 1, self._valuesLength)) + elseif self._status == Promise.Status.Cancelled then + -- We don't want to call the success handler or the failure handler, + -- we just reject this promise outright. + reject("Promise is cancelled") + end + end, self) +end + +--[[ + Used to catch any errors that may have occurred in the promise. +]] +function Promise.prototype:catch(failureCallback) + return self:andThen(nil, failureCallback) +end + +--[[ + Calls a callback on `andThen` with specific arguments. +]] +function Promise.prototype:andThenCall(callback, ...) + local length, values = pack(...) + return self:andThen(function() + return callback(unpack(values, 1, length)) + end) +end + +--[[ + Cancels the promise, disallowing it from rejecting or resolving, and calls + the cancellation hook if provided. +]] +function Promise.prototype:cancel() + if self._status ~= Promise.Status.Started then + return + end + + self._status = Promise.Status.Cancelled + + if self._cancellationHook then + self._cancellationHook() + end + + if self._parent then + self._parent:_consumerCancelled(self) + end + + for child in pairs(self._consumers) do + child:cancel() + end + + self:_finalize() +end + +--[[ + Used to decrease the number of consumers by 1, and if there are no more, + cancel this promise. +]] +function Promise.prototype:_consumerCancelled(consumer) + if self._status ~= Promise.Status.Started then + return + end + + self._consumers[consumer] = nil + + if next(self._consumers) == nil then + self:cancel() + end +end + +--[[ + Used to set a handler for when the promise resolves, rejects, or is + cancelled. Returns a new promise chained from this promise. +]] +function Promise.prototype:finally(finallyHandler) + self._unhandledRejection = false + + -- Return a promise chained off of this promise + return Promise.new(function(resolve, reject) + local finallyCallback = resolve + if finallyHandler then + finallyCallback = createAdvancer(finallyHandler, resolve, reject) + end + + if self._status == Promise.Status.Started then + -- The promise is not settled, so queue this. + table.insert(self._queuedFinally, finallyCallback) + else + -- The promise already settled or was cancelled, run the callback now. + finallyCallback(self._status) + end + end, self) +end + +--[[ + Calls a callback on `finally` with specific arguments. +]] +function Promise.prototype:finallyCall(callback, ...) + local length, values = pack(...) + return self:finally(function() + return callback(unpack(values, 1, length)) + end) +end + +--[[ + Yield until the promise is completed. + + This matches the execution model of normal Roblox functions. +]] +function Promise.prototype:awaitStatus() + self._unhandledRejection = false + + if self._status == Promise.Status.Started then + local bindable = Instance.new("BindableEvent") + + self:finally(function() + bindable:Fire() + end) + + bindable.Event:Wait() + bindable:Destroy() + end + + if self._status == Promise.Status.Resolved then + return self._status, unpack(self._values, 1, self._valuesLength) + elseif self._status == Promise.Status.Rejected then + return self._status, unpack(self._values, 1, self._valuesLength) + end + + return self._status +end + +--[[ + Calls awaitStatus internally, returns (isResolved, values...) +]] +function Promise.prototype:await(...) + local length, result = pack(self:awaitStatus(...)) + local status = table.remove(result, 1) + + return status == Promise.Status.Resolved, unpack(result, 1, length - 1) +end + +--[[ + Calls await and only returns if the Promise resolves. + Throws if the Promise rejects or gets cancelled. +]] +function Promise.prototype:awaitValue(...) + local length, result = pack(self:awaitStatus(...)) + local status = table.remove(result, 1) + + assert( + status == Promise.Status.Resolved, + tostring(result[1] == nil and "" or result[1]) + ) + + return unpack(result, 1, length - 1) +end + +--[[ + Intended for use in tests. + + Similar to await(), but instead of yielding if the promise is unresolved, + _unwrap will throw. This indicates an assumption that a promise has + resolved. +]] +function Promise.prototype:_unwrap() + if self._status == Promise.Status.Started then + error("Promise has not resolved or rejected.", 2) + end + + local success = self._status == Promise.Status.Resolved + + return success, unpack(self._values, 1, self._valuesLength) +end + +function Promise.prototype:_resolve(...) + if self._status ~= Promise.Status.Started then + if Promise.is((...)) then + (...):_consumerCancelled(self) + end + return + end + + -- If the resolved value was a Promise, we chain onto it! + if Promise.is((...)) then + -- Without this warning, arguments sometimes mysteriously disappear + if select("#", ...) > 1 then + local message = ( + "When returning a Promise from andThen, extra arguments are " .. + "discarded! See:\n\n%s" + ):format( + self._source + ) + warn(message) + end + + local promise = (...):andThen( + function(...) + self:_resolve(...) + end, + function(...) + self:_reject(...) + end + ) + + if promise._status == Promise.Status.Cancelled then + self:cancel() + elseif promise._status == Promise.Status.Started then + -- Adopt ourselves into promise for cancellation propagation. + self._parent = promise + promise._consumers[self] = true + end + + return + end + + self._status = Promise.Status.Resolved + self._valuesLength, self._values = pack(...) + + -- We assume that these callbacks will not throw errors. + for _, callback in ipairs(self._queuedResolve) do + callback(...) + end + + self:_finalize() +end + +function Promise.prototype:_reject(...) + if self._status ~= Promise.Status.Started then + return + end + + self._status = Promise.Status.Rejected + self._valuesLength, self._values = pack(...) + + -- If there are any rejection handlers, call those! + if not isEmpty(self._queuedReject) then + -- We assume that these callbacks will not throw errors. + for _, callback in ipairs(self._queuedReject) do + callback(...) + end + else + -- At this point, no one was able to observe the error. + -- An error handler might still be attached if the error occurred + -- synchronously. We'll wait one tick, and if there are still no + -- observers, then we should put a message in the console. + + local err = tostring((...)) + + spawn(function() + -- Someone observed the error, hooray! + if not self._unhandledRejection then + return + end + + -- Build a reasonable message + local message = ("Unhandled promise rejection:\n\n%s\n\n%s"):format( + err, + self._source + ) + warn(message) + end) + end + + self:_finalize() +end + +--[[ + Calls any :finally handlers. We need this to be a separate method and + queue because we must call all of the finally callbacks upon a success, + failure, *and* cancellation. +]] +function Promise.prototype:_finalize() + for _, callback in ipairs(self._queuedFinally) do + -- Purposefully not passing values to callbacks here, as it could be the + -- resolved values, or rejected errors. If the developer needs the values, + -- they should use :andThen or :catch explicitly. + callback(self._status) + end + + -- Allow family to be buried + self._parent = nil + self._consumers = nil +end + +return Promise \ No newline at end of file diff --git a/src/Server/LundstrongOrders/DataStore2/SavingMethods/OrderedBackups.lua b/src/Server/LundstrongOrders/DataStore2/SavingMethods/OrderedBackups.lua new file mode 100644 index 0000000..47d05a8 --- /dev/null +++ b/src/Server/LundstrongOrders/DataStore2/SavingMethods/OrderedBackups.lua @@ -0,0 +1,72 @@ +--[[ + berezaa's method of saving data (from the dev forum): + + What I do and this might seem a little over-the-top but it's fine as long as you're not using datastores + excessively elsewhere is have a datastore and an ordereddatastore for each player. When you perform a save, + add a key (can be anything) with the value of os.time() to the ordereddatastore and save a key with the os.time() + and the value of the player's data to the regular datastore. Then, when loading data, get the highest number from + the ordered data store (most recent save) and load the data with that as a key. + + Ever since I implemented this, pretty much no one has ever lost data. There's no caches to worry about either + because you're never overriding any keys. Plus, it has the added benefit of allowing you to restore lost data, + since every save doubles as a backup which can be easily found with the ordereddatastore + + edit: while there's no official comment on this, many developers including myself have noticed really bad cache + times and issues with using the same datastore keys to save data across multiple places in the same game. With + this method, data is almost always instantly accessible immediately after a player teleports, making it useful + for multi-place games. +--]] + +local DataStoreService = game:GetService("DataStoreService") +local Promise = require(script.Parent.Parent.Promise) + +local OrderedBackups = {} +OrderedBackups.__index = OrderedBackups + +function OrderedBackups:Get() + return Promise.async(function(resolve) + resolve(self.orderedDataStore:GetSortedAsync(false, 1):GetCurrentPage()[1]) + end):andThen(function(mostRecentKeyPage) + if mostRecentKeyPage then + local recentKey = mostRecentKeyPage.value + self.dataStore2:Debug("most recent key", mostRecentKeyPage) + self.mostRecentKey = recentKey + + return Promise.async(function(resolve) + resolve(self.dataStore:GetAsync(recentKey)) + end) + else + self.dataStore2:Debug("no recent key") + return nil + end + end) +end + +function OrderedBackups:Set(value) + local key = (self.mostRecentKey or 0) + 1 + + return Promise.async(function(resolve) + self.dataStore:SetAsync(key, value) + resolve() + end):andThen(function() + return Promise.promisify(function() + self.orderedDataStore:SetAsync(key, key) + end)() + end):andThen(function() + self.mostRecentKey = key + end) +end + +function OrderedBackups.new(dataStore2) + local dataStoreKey = dataStore2.Name .. "/" .. dataStore2.UserId + + local info = { + dataStore2 = dataStore2, + dataStore = DataStoreService:GetDataStore(dataStoreKey), + orderedDataStore = DataStoreService:GetOrderedDataStore(dataStoreKey), + } + + return setmetatable(info, OrderedBackups) +end + +return OrderedBackups diff --git a/src/Server/LundstrongOrders/DataStore2/SavingMethods/Standard.lua b/src/Server/LundstrongOrders/DataStore2/SavingMethods/Standard.lua new file mode 100644 index 0000000..8427fe3 --- /dev/null +++ b/src/Server/LundstrongOrders/DataStore2/SavingMethods/Standard.lua @@ -0,0 +1,33 @@ +-- Standard saving of data stores +-- The key you provide to DataStore2 is the name of the store with GetDataStore +-- GetAsync/UpdateAsync are then called based on the user ID +local DataStoreService = game:GetService("DataStoreService") +local Promise = require(script.Parent.Parent.Promise) + +local Standard = {} +Standard.__index = Standard + +function Standard:Get() + return Promise.async(function(resolve) + resolve(self.dataStore:GetAsync(self.userId)) + end) +end + +function Standard:Set(value) + return Promise.async(function(resolve) + self.dataStore:UpdateAsync(self.userId, function() + return value + end) + + resolve() + end) +end + +function Standard.new(dataStore2) + return setmetatable({ + dataStore = DataStoreService:GetDataStore(dataStore2.Name), + userId = dataStore2.UserId, + }, Standard) +end + +return Standard diff --git a/src/Server/LundstrongOrders/DataStore2/SavingMethods/init.lua b/src/Server/LundstrongOrders/DataStore2/SavingMethods/init.lua new file mode 100644 index 0000000..b10cfb0 --- /dev/null +++ b/src/Server/LundstrongOrders/DataStore2/SavingMethods/init.lua @@ -0,0 +1,4 @@ +return { + Standard = require(script.Standard), + OrderedBackups = require(script.OrderedBackups), +} diff --git a/src/Server/LundstrongOrders/DataStore2/Settings.lua b/src/Server/LundstrongOrders/DataStore2/Settings.lua new file mode 100644 index 0000000..b94bddb --- /dev/null +++ b/src/Server/LundstrongOrders/DataStore2/Settings.lua @@ -0,0 +1,7 @@ +return { + -- What saving method you would like to use + -- Possible options: + -- OrderedBackups: The berezaa method that ensures prevention of data loss + -- Standard: Standard data stores. Equivalent to :GetDataStore(key):GetAsync(UserId) + SavingMethod = "OrderedBackups", +} diff --git a/src/Server/LundstrongOrders/DataStore2/TableUtil.lua b/src/Server/LundstrongOrders/DataStore2/TableUtil.lua new file mode 100644 index 0000000..ddaeb33 --- /dev/null +++ b/src/Server/LundstrongOrders/DataStore2/TableUtil.lua @@ -0,0 +1,17 @@ +local TableUtil = {} + +function TableUtil.clone(tbl) + local clone = {} + + for key, value in pairs(tbl) do + if typeof(value) == "table" then + clone[key] = TableUtil.clone(value) + else + clone[key] = value + end + end + + return clone +end + +return TableUtil diff --git a/src/Server/LundstrongOrders/DataStore2/Verifier.lua b/src/Server/LundstrongOrders/DataStore2/Verifier.lua new file mode 100644 index 0000000..1832a4f --- /dev/null +++ b/src/Server/LundstrongOrders/DataStore2/Verifier.lua @@ -0,0 +1,80 @@ +-- Written by Coercii + +local Verifier = {} + +function Verifier.typeValid(data) + return type(data) ~= "userdata", typeof(data) +end + +function Verifier.scanValidity(tbl, passed, path) + if type(tbl) ~= "table" then + return Verifier.scanValidity({input = tbl}, {}, {}) + end + passed, path = passed or {}, path or {"input"} + passed[tbl] = true + local tblType + do + local key = next(tbl) + if type(key) == "number" then + tblType = "Array" + else + tblType = "Dictionary" + end + end + local last = 0 + for key, value in next, tbl do + path[#path + 1] = tostring(key) + if type(key) == "number" then + if tblType == "Dictionary" then + return false, path, "Mixed Array/Dictionary" + elseif key%1 ~= 0 then -- if not an integer + return false, path, "Non-integer index" + elseif key == math.huge or key == -math.huge then + return false, path, "(-)Infinity index" + end + elseif type(key) ~= "string" then + return false, path, "Non-string key", typeof(key) + elseif tblType == "Array" then + return false, path, "Mixed Array/Dictionary" + end + if tblType == "Array" then + if last ~= key - 1 then + return false, path, "Array with non-sequential indexes" + end + last = key + end + local isTypeValid, valueType = Verifier.typeValid(value) + if not isTypeValid then + return false, path, "Invalid type", valueType + end + if type(value) == "table" then + if passed[value] then + return false, path, "Cyclic" + end + local isValid, keyPath, reason, extra = Verifier.scanValidity(value, passed, path) + if not isValid then + return isValid, keyPath, reason, extra + end + end + path[#path] = nil + end + passed[tbl] = nil + return true +end + +function Verifier.getStringPath(path) + return table.concat(path, ".") +end + +function Verifier.testValidity(input) + local isValid, keyPath, reason, extra = Verifier.scanValidity(input) + if not isValid then + if extra then + return "Invalid at "..Verifier.getStringPath(keyPath).." because: "..reason.." ("..tostring(extra)..")" + else + return "Invalid at "..Verifier.getStringPath(keyPath).." because: "..reason + end + end +end + +return Verifier diff --git a/src/Server/LundstrongOrders/DataStore2/init.lua b/src/Server/LundstrongOrders/DataStore2/init.lua new file mode 100644 index 0000000..0e305fb --- /dev/null +++ b/src/Server/LundstrongOrders/DataStore2/init.lua @@ -0,0 +1,592 @@ +--[[ + DataStore2: A wrapper for data stores that caches, saves player's data, and uses berezaa's method of saving data. + Use require(1936396537) to have an updated version of DataStore2. + + DataStore2(dataStoreName, player) - Returns a DataStore2 DataStore + + DataStore2 DataStore: + - Get([defaultValue]) + - Set(value) + - Update(updateFunc) + - Increment(value, defaultValue) + - BeforeInitialGet(modifier) + - BeforeSave(modifier) + - Save() + - SaveAsync() + - OnUpdate(callback) + - BindToClose(callback) + + local coinStore = DataStore2("Coins", player) + + To give a player coins: + + coinStore:Increment(50) + + To get the current player's coins: + + coinStore:Get() +--]] + +local Players = game:GetService("Players") +local RunService = game:GetService("RunService") +local ServerStorage = game:GetService("ServerStorage") + +local Constants = require(script.Constants) +local Promise = require(script.Promise) +local SavingMethods = require(script.SavingMethods) +local Settings = require(script.Settings) +local TableUtil = require(script.TableUtil) +local Verifier = require(script.Verifier) + +local SaveInStudioObject = ServerStorage:FindFirstChild("SaveInStudio") +local SaveInStudio = SaveInStudioObject and SaveInStudioObject.Value + +local function clone(value) + if typeof(value) == "table" then + return TableUtil.clone(value) + else + return value + end +end + +--DataStore object +local DataStore = {} + +--Internal functions +function DataStore:Debug(...) + if self.debug then + print(...) + end +end + +function DataStore:_GetRaw() + if self.getRawPromise then + return self.getRawPromise + end + + self.getRawPromise = self.savingMethod:Get():andThen(function(value) + self.value = value + self:Debug("value received") + self.haveValue = true + end):finally(function() + self.getting = false + end) + + return self.getRawPromise +end + +function DataStore:_Update(dontCallOnUpdate) + if not dontCallOnUpdate then + for _,callback in pairs(self.callbacks) do + callback(self.value, self) + end + end + + self.haveValue = true + self.valueUpdated = true +end + +--Public functions + +function DataStore:Get(defaultValue, dontAttemptGet) + if dontAttemptGet then + return self.value + end + + local backupCount = 0 + + if not self.haveValue then + while not self.haveValue do + local success, error = self:_GetRaw():await() + + if not success then + if self.backupRetries then + backupCount = backupCount + 1 + + if backupCount >= self.backupRetries then + self.backup = true + self.haveValue = true + self.value = self.backupValue + break + end + end + + self:Debug("Get returned error:", error) + end + end + + if self.value ~= nil then + for _,modifier in pairs(self.beforeInitialGet) do + self.value = modifier(self.value, self) + end + end + end + + local value + + if self.value == nil and defaultValue ~= nil then --not using "not" because false is a possible value + value = defaultValue + else + value = self.value + end + + value = clone(value) + + self.value = value + + return value +end + +function DataStore:GetAsync(...) + local args = { ... } + return Promise.async(function(resolve) + resolve(self:Get(unpack(args))) + end) +end + +function DataStore:GetTable(default, ...) + local success, result = self:GetTableAsync(default, ...):await() + if not success then + error(result) + end + return result +end + +function DataStore:GetTableAsync(default, ...) + assert(default ~= nil, "You must provide a default value.") + + return self:GetAsync(default, ...):andThen(function(result) + return Promise.async(function(resolve) + local changed = false + assert( + typeof(result) == "table", + ":GetTable/:GetTableAsync was used when the value in the data store isn't a table." + ) + + for defaultKey, defaultValue in pairs(default) do + if result[defaultKey] == nil then + result[defaultKey] = defaultValue + changed = true + end + end + + if changed then + self:Set(result) + end + + resolve(result) + end) + end) +end + +function DataStore:Set(value, _dontCallOnUpdate) + self.value = clone(value) + self:_Update(_dontCallOnUpdate) +end + +function DataStore:Update(updateFunc) + self.value = updateFunc(self.value) + self:_Update() +end + +function DataStore:Increment(value, defaultValue) + self:Set(self:Get(defaultValue) + value) +end + +function DataStore:IncrementAsync(add, defaultValue) + self:GetAsync(defaultValue):andThen(function(value) + return Promise.promisify(function() + self:Set(value + add) + end)() + end) +end + +function DataStore:OnUpdate(callback) + table.insert(self.callbacks, callback) +end + +function DataStore:BeforeInitialGet(modifier) + table.insert(self.beforeInitialGet, modifier) +end + +function DataStore:BeforeSave(modifier) + self.beforeSave = modifier +end + +function DataStore:AfterSave(callback) + table.insert(self.afterSave, callback) +end + +--[[** + + Adds a backup to the data store if :Get() fails a specified amount of times. + Will return the value provided (if the value is nil, then the default value of :Get() will be returned) + and mark the data store as a backup store, and attempts to :Save() will not truly save. + + + + Number of retries before the backup will be used. + + + + The value to return to :Get() in the case of a failure. + You can keep this blank and the default value you provided with :Get() will be used instead. + +**--]] +function DataStore:SetBackup(retries, value) + self.backupRetries = retries + self.backupValue = value +end + +--[[** + + Unmark the data store as a backup data store and tell :Get() and reset values to nil. + +**--]] +function DataStore:ClearBackup() + self.backup = nil + self.haveValue = false + self.value = nil +end + +--[[** + + Whether or not the data store is a backup data store and thus won't save during :Save() or call :AfterSave(). + +**--]] +function DataStore:IsBackup() + return self.backup ~= nil --some people haven't learned if x then yet, and will do if x == false then. +end + +--[[** + + Saves the data to the data store. Called when a player leaves. + +**--]] +function DataStore:Save() + local success, result = self:SaveAsync():await() + + if success then + print("saved " .. self.Name) + else + error(result) + end +end + +--[[** + + Asynchronously saves the data to the data store. + +**--]] +function DataStore:SaveAsync() + return Promise.async(function(resolve, reject) + if not self.valueUpdated then + warn(("Data store %s was not saved as it was not updated."):format(self.Name)) + resolve(false) + return + end + + if RunService:IsStudio() and not SaveInStudio then + warn(("Data store %s attempted to save in studio while SaveInStudio is false."):format(self.Name)) + if not SaveInStudioObject then + warn("You can set the value of this by creating a BoolValue named SaveInStudio in ServerStorage.") + end + resolve(false) + return + end + + if self.backup then + warn("This data store is a backup store, and thus will not be saved.") + resolve(false) + return + end + + if self.value ~= nil then + local save = clone(self.value) + + if self.beforeSave then + local success, result = pcall(self.beforeSave, save, self) + + if success then + save = result + else + reject(result, Constants.SaveFailure.BeforeSaveError) + return + end + end + + local problem = Verifier.testValidity(save) + if problem then + reject(problem, Constants.SaveFailure.InvalidData) + return + end + + return self.savingMethod:Set(save):andThen(function() + resolve(true, save) + end) + end + end):andThen(function(saved, save) + if saved then + for _, afterSave in pairs(self.afterSave) do + local success, err = pcall(afterSave, save, self) + + if not success then + warn("Error on AfterSave: "..err) + end + end + + self.valueUpdated = false + end + end) +end + +function DataStore:BindToClose(callback) + table.insert(self.bindToClose, callback) +end + +function DataStore:GetKeyValue(key) + return (self.value or {})[key] +end + +function DataStore:SetKeyValue(key, newValue) + if not self.value then + self.value = self:Get({}) + end + + self.value[key] = newValue +end + +local CombinedDataStore = {} + +do + function CombinedDataStore:BeforeInitialGet(modifier) + self.combinedBeforeInitialGet = modifier + end + + function CombinedDataStore:BeforeSave(modifier) + self.combinedBeforeSave = modifier + end + + function CombinedDataStore:Get(defaultValue, dontAttemptGet) + local tableResult = self.combinedStore:Get({}) + local tableValue = tableResult[self.combinedName] + + if not dontAttemptGet then + if tableValue == nil then + tableValue = defaultValue + else + if self.combinedBeforeInitialGet and not self.combinedInitialGot then + tableValue = self.combinedBeforeInitialGet(tableValue) + end + end + end + + self.combinedInitialGot = true + tableResult[self.combinedName] = clone(tableValue) + self.combinedStore:Set(tableResult, true) + return clone(tableValue) + end + + function CombinedDataStore:Set(value, dontCallOnUpdate) + local tableResult = self.combinedStore:GetTable({}) + tableResult[self.combinedName] = value + self.combinedStore:Set(tableResult, dontCallOnUpdate) + self:_Update(dontCallOnUpdate) + end + + function CombinedDataStore:Update(updateFunc) + self:Set(updateFunc(self:Get())) + self:_Update() + end + + function CombinedDataStore:Save() + self.combinedStore:Save() + end + + function CombinedDataStore:OnUpdate(callback) + if not self.onUpdateCallbacks then + self.onUpdateCallbacks = { callback } + else + self.onUpdateCallbacks[#self.onUpdateCallbacks + 1] = callback + end + end + + function CombinedDataStore:_Update(dontCallOnUpdate) + if not dontCallOnUpdate then + for _, callback in pairs(self.onUpdateCallbacks or {}) do + callback(self:Get(), self) + end + end + + self.combinedStore:_Update(true) + end + + function CombinedDataStore:SetBackup(retries) + self.combinedStore:SetBackup(retries) + end +end + +local DataStoreMetatable = {} + +DataStoreMetatable.__index = DataStore + +--Library +local DataStoreCache = {} + +local DataStore2 = {} +local combinedDataStoreInfo = {} + +--[[** + + Run this once to combine all keys provided into one "main key". + Internally, this means that data will be stored in a table with the key mainKey. + This is used to get around the 2-DataStore2 reliability caveat. + + + + The key that will be used to house the table. + + + + All the keys to combine under one table. + +**--]] +function DataStore2.Combine(mainKey, ...) + for _, name in pairs({...}) do + combinedDataStoreInfo[name] = mainKey + end +end + +function DataStore2.ClearCache() + DataStoreCache = {} +end + +function DataStore2.SaveAll(player) + if DataStoreCache[player] then + for _, dataStore in pairs(DataStoreCache[player]) do + if dataStore.combinedStore == nil then + dataStore:Save() + end + end + end +end + +function DataStore2.PatchGlobalSettings(patch) + for key, value in pairs(patch) do + assert(Settings[key] ~= nil, "No such key exists: " .. key) + -- TODO: Implement type checking with this when osyris' t is in + Settings[key] = value + end +end + +function DataStore2.__call(_, dataStoreName, player) + assert( + typeof(dataStoreName) == "string" and typeof(player) == "Instance", + ("DataStore2() API call expected {string dataStoreName, Instance player}, got {%s, %s}") + :format( + typeof(dataStoreName), + typeof(player) + ) + ) + + if DataStoreCache[player] and DataStoreCache[player][dataStoreName] then + return DataStoreCache[player][dataStoreName] + elseif combinedDataStoreInfo[dataStoreName] then + local dataStore = DataStore2(combinedDataStoreInfo[dataStoreName], player) + + dataStore:BeforeSave(function(combinedData) + for key in pairs(combinedData) do + if combinedDataStoreInfo[key] then + local combinedStore = DataStore2(key, player) + local value = combinedStore:Get(nil, true) + if value ~= nil then + if combinedStore.combinedBeforeSave then + value = combinedStore.combinedBeforeSave(clone(value)) + end + combinedData[key] = value + end + end + end + + return combinedData + end) + + local combinedStore = setmetatable({ + combinedName = dataStoreName, + combinedStore = dataStore, + }, { + __index = function(_, key) + return CombinedDataStore[key] or dataStore[key] + end + }) + + if not DataStoreCache[player] then + DataStoreCache[player] = {} + end + + DataStoreCache[player][dataStoreName] = combinedStore + return combinedStore + end + + local dataStore = {} + + dataStore.Name = dataStoreName + dataStore.UserId = player.UserId + + dataStore.callbacks = {} + dataStore.beforeInitialGet = {} + dataStore.afterSave = {} + dataStore.bindToClose = {} + dataStore.savingMethod = SavingMethods[Settings.SavingMethod].new(dataStore) + + setmetatable(dataStore, DataStoreMetatable) + + local event, fired = Instance.new("BindableEvent"), false + + game:BindToClose(function() + if not fired then + spawn(function() + player.Parent = nil -- Forces AncestryChanged to fire and save the data + end) + + event.Event:wait() + end + + local value = dataStore:Get(nil, true) + + for _, bindToClose in pairs(dataStore.bindToClose) do + bindToClose(player, value) + end + end) + + local playerLeavingConnection + playerLeavingConnection = player.AncestryChanged:Connect(function() + if player:IsDescendantOf(game) then return end + playerLeavingConnection:Disconnect() + dataStore:SaveAsync():andThen(function() + print("player left, saved " .. dataStoreName) + end):catch(function(error) + -- TODO: Something more elegant + warn("error when player left! " .. error) + end):finally(function() + event:Fire() + fired = true + end) + + delay(40, function() --Give a long delay for people who haven't figured out the cache :^( + DataStoreCache[player] = nil + end) + end) + + if not DataStoreCache[player] then + DataStoreCache[player] = {} + end + + DataStoreCache[player][dataStoreName] = dataStore + + return dataStore +end + +DataStore2.Constants = Constants + +return setmetatable(DataStore2, DataStore2) diff --git a/src/Server/LundstrongOrders/creator.server.lua b/src/Server/LundstrongOrders/creator.server.lua new file mode 100644 index 0000000..6075fc6 --- /dev/null +++ b/src/Server/LundstrongOrders/creator.server.lua @@ -0,0 +1,69 @@ +-- * CREATE REP STORAGE ASSETS +local Configuration = require(workspace.LundstrongOrders.Configuration) +local PlayersService = game:GetService("Players") +local MarketplaceService = game:GetService("MarketplaceService") +local eventsFolder = game.ReplicatedStorage:WaitForChild("LundstrongOrders"):WaitForChild("Events") +local enableGui = eventsFolder.enableGui +if (workspace.LundstrongOrders:FindFirstChild("Models")) then + for _,v in pairs(workspace.LundstrongOrders.Models:GetChildren()) do + if (v.Name == "Register") then + v.mainPart.mainGui.Enabled = true + v.mainPart.mainGui.Frame.ImageLabel.Image = Configuration.Branding.ImageId + local clickDetector = Instance.new("ClickDetector") + clickDetector.Parent = v.mainPart + clickDetector.MouseClick:Connect(function(plr) + if (Configuration.CashierSettings.GroupID) then + if (Configuration.CashierSettings.MinimumRankEnabled) then + if (plr:GetRankInGroup(Configuration.CashierSettings.GroupID) >= Configuration.CashierSettings.MinimumRank) then + print("Firing client with cashierGui") + enableGui:FireClient(plr, "cashierGui") + end + else + if (table.find(Configuration.CashierSettings.RankTable, plr:GetRankInGroup(Configuration.CashierSettings.GroupID))) then + print("Firing client with cashierGui") + enableGui:FireClient(plr, "cashierGui") + end + end + else + print("Firing client with cashierGui") + enableGui:FireClient(plr, "cashierGui") + end + end) + elseif (v.Name == "Kiosk") then + v.mainPart.mainGui.Enabled = true + v.mainPart.mainGui.Frame.ImageLabel.Image = Configuration.Branding.ImageId + local clickDetector = Instance.new("ClickDetector") + clickDetector.Parent = v.mainPart + clickDetector.MouseClick:Connect(function(plr) + if (Configuration.KioskSettings.GamepassRequired) then + if (MarketplaceService:UserOwnsGamePassAsync(plr.UserId, Configuration.KioskSettings.GamepassID)) then + print("Firing client with kioskGui") + enableGui:FireClient(plr, "kioskGui") + else + if (Configuration.KioskSettings.PromptPurchase) then + MarketplaceService:PromptGamePassPurchase(plr, Configuration.KioskSettings.GamepassID) + end + end + else + print("Firing client with kioskGui") + enableGui:FireClient(plr, "kioskGui") + end + end) + elseif (v.Name == "PickuPlayersServicecreen") then + -- Not done!! + elseif (v.Name == "OrderDisplay") then + for _,player in pairs(PlayersService:GetPlayers()) do + local clone = player.PlayerGui.LundstrongOrders.chefClaimGui.chefClaimGuiClone:Clone() + clone.Parent = player.PlayerGui.LundstrongOrders.chefClaimGui + clone.Name = "chefClaimGui" + clone.Adornee = v.mainPart + end + local clone = game.StarterGui.LundstrongOrders.chefClaimGui.chefClaimGuiClone:Clone() + clone.Parent = game.StarterGui.LundstrongOrders.chefClaimGui + clone.Name = "chefClaimGui" + clone.Adornee = v.mainPart + end + end +else + error("[Lundstrongorders] Unable to find models. Please make sure they are under the Models folder of Lundstrong Orders") +end diff --git a/src/Server/LundstrongOrders/order.lua b/src/Server/LundstrongOrders/order.lua new file mode 100644 index 0000000..f7a01e3 --- /dev/null +++ b/src/Server/LundstrongOrders/order.lua @@ -0,0 +1,68 @@ +local Order = {} +Order.__index = Order +local orders = {} +local DataStore2 = require(game.ServerScriptService.LundstrongOrders.DataStore2) +local Players = game:GetService("Players") +local config = require(workspace.LundstrongOrders.Configuration) + +-- constructor +function Order.new(creator: Player, receiver: string, items: { [number] : string }) + local newOrder = setmetatable({},Order) + local receiverPlayer + for _,v in pairs(Players:GetPlayers()) do + if (v.Name == receiver) then + receiverPlayer = v + end + end + if (not receiverPlayer) then + error("[LundstrongOrders] Unable to find player "..receiver) + end + -- Properties + newOrder.orderReceiver = receiverPlayer + newOrder.orderCreator = creator + newOrder.orderClaimer = false + newOrder.id = #orders + 1 + -- States + newOrder.isClaimed = false + newOrder.isCompleted = false + + -- Items + newOrder.items = items + + print("Give point to creator?") + + if (creator.Name ~= receiver) then + if (config.PointsSettings.PointsEnabled) then + local pointsStore = DataStore2("points", creator) + pointsStore:Increment(config.PointsSettings.PointsAwarded) + end + end + + print("INSERT?") + table.insert(orders, newOrder) + + return newOrder +end + +-- Methods +function Order:Claim(player: Player) + self.isClaimed = true + self.orderClaimer = player + orders[self.id] = self +end + +function Order:Complete() + self.isCompleted = true + print("Give point to self.orderClaimer") + if (config.PointsSettings.PointsEnabled) then + local pointsStore = DataStore2("points", self.orderClaimer) + pointsStore:Increment(config.PointsSettings.PointsAwarded) + end + orders[self.id] = self +end + +function Order:GetOrders() + return orders +end + +return Order diff --git a/src/Server/LundstrongOrders/remoteHandler.server.lua b/src/Server/LundstrongOrders/remoteHandler.server.lua new file mode 100644 index 0000000..2e219c9 --- /dev/null +++ b/src/Server/LundstrongOrders/remoteHandler.server.lua @@ -0,0 +1,149 @@ +-- Remote event handler +local Order = require(game.ServerScriptService.LundstrongOrders.order) +local DataStore2 = require(game.ServerScriptService.LundstrongOrders.DataStore2) +local config = require(workspace.LundstrongOrders.Configuration) +local Players = game:GetService("Players") +local runService = game:GetService("RunService") +local debounce = {} + +DataStore2.Combine("DATA", "points") + +game.ReplicatedStorage:WaitForChild("LundstrongOrders"):WaitForChild("Events"):WaitForChild("createOrder").OnServerInvoke = function(creator: Player, receiver: string, items: {[number]: string}) + if (not debounce[creator.Name] or debounce[creator.Name] == false) then + debounce[creator.Name] = true + local newOrder = Order.new(creator, receiver, items) + print("NEW ORDER:", newOrder.id) + game.ReplicatedStorage:WaitForChild("LundstrongOrders"):WaitForChild("Events"):WaitForChild("orderList"):FireAllClients(Order:GetOrders()) + if (creator.Name ~= receiver) then -- Cashier GUI order + game.ReplicatedStorage.LundstrongOrders.Events.sendNotification:FireClient(newOrder.orderReceiver, creator.Name.." has created an order for you.", 10) + coroutine.resume(coroutine.create(function() + wait(config.CashierSettings.OrderCooldown) + debounce[creator.Name] = false + end)) + else -- Kiosk Order + coroutine.resume(coroutine.create(function() + wait(config.KioskSettings.OrderCooldown) + debounce[creator.Name] = false + end)) + end + return true + else + return "Slow down! Your order cooldown hasn't expired!" + end +end +game.ReplicatedStorage:WaitForChild("LundstrongOrders"):WaitForChild("Events"):WaitForChild("claimOrder").OnServerEvent:Connect(function(plr, id) + local orderFound = false + for _,v in pairs(Order:GetOrders()) do + if (v.id == id) then + if (not v.isCompleted) then + if (config.OrderBoardSettings.GroupID) then + if (config.OrderBoardSettings.MinimumRankEnabled) then + if (plr:GetRankInGroup(config.OrderBoardSettings.GroupID) >= config.OrderBoardSettings.MinimumRank) then + v:Claim(plr) + orderFound = v + end + else + if (table.find(config.OrderBoardSettings.RankTable, plr:GetRankInGroup(config.OrderBoardSettings.GroupID))) then + v:Claim(plr) + orderFound = v + end + end + else + v:Claim(plr) + orderFound = v + end + game.ReplicatedStorage.LundstrongOrders.Events.sendNotification:FireClient(v.orderReceiver, "Your order has been claimed by "..plr.Name..".", 10) + else + error("[LundstrongOrders] Cannot claim completed order "..id) + end + end + end + print(orderFound) + if (orderFound) then + game.ReplicatedStorage:WaitForChild("LundstrongOrders"):WaitForChild("Events"):WaitForChild("orderList"):FireAllClients(Order:GetOrders()) + game.ReplicatedStorage:WaitForChild("LundstrongOrders"):WaitForChild("Events"):WaitForChild("completeOrder"):FireClient(plr, orderFound) + else + warn("[LundstrongOrders] No order found with ID "..id) + end +end) +game.Players.PlayerAdded:Connect(function(plr) + local pointsStore = DataStore2("points", plr) + + local leaderstats = Instance.new("Folder") + leaderstats.Name = "leaderstats" + + local points = Instance.new("NumberValue") + points.Name = "Points" + points.Value = pointsStore:Get(0) -- The "0" means that by default, they'll have 0 points + points.Parent = leaderstats + + pointsStore:OnUpdate(function(newPoints) + -- This function runs every time the value inside the data store changes. + points.Value = newPoints + end) + + leaderstats.Parent = plr + + if (runService:IsStudio()) then + game.ReplicatedStorage.LundstrongOrders.Events.sendNotification:FireClient(plr, "LundstrongOrders does work in studio, but will not save points.", 45) + end +end) +for _,plr in pairs(Players:GetPlayers()) do + local pointsStore = DataStore2("points", plr) + + local leaderstats = Instance.new("Folder") + leaderstats.Name = "leaderstats" + + local points = Instance.new("NumberValue") + points.Name = "Points" + points.Value = pointsStore:Get(0) -- The "0" means that by default, they'll have 0 points + points.Parent = leaderstats + + pointsStore:OnUpdate(function(newPoints) + -- This function runs every time the value inside the data store changes. + points.Value = newPoints + end) + + leaderstats.Parent = plr + + if (runService:IsStudio()) then + game.ReplicatedStorage.LundstrongOrders.Events.sendNotification:FireClient(plr, "LundstrongOrders does work in studio, but will not save points.", 45) + end +end +game.Players.PlayerRemoving:Connect(function(plr) + local orderFound = false + for _,v in pairs(Order:GetOrders()) do + if (v.orderReceiver == plr) then + if (not v.isClaimed) then + v:Complete() + orderFound = v + end + end + end + print(orderFound) + if (orderFound) then + game.ReplicatedStorage:WaitForChild("LundstrongOrders"):WaitForChild("Events"):WaitForChild("orderList"):FireAllClients(Order:GetOrders()) + else + print("[LundstrongOrders] No orders found for leaving player "..plr.Name) + end +end) +game.ReplicatedStorage:WaitForChild("LundstrongOrders"):WaitForChild("Events"):WaitForChild("completeOrder").OnServerEvent:Connect(function(_, id) + local orderFound = false + for _,v in pairs(Order:GetOrders()) do + if (v.id == id) then + if (v.isClaimed) then + v:Complete() + game.ReplicatedStorage.LundstrongOrders.Events.sendNotification:FireClient(v.orderReceiver, "Your order has completed.", 20) + orderFound = v + else + error("[LundstrongOrders] Cannot complete unclaimed order "..id) + end + end + end + print(orderFound) + if (orderFound) then + game.ReplicatedStorage:WaitForChild("LundstrongOrders"):WaitForChild("Events"):WaitForChild("orderList"):FireAllClients(Order:GetOrders()) + else + warn("[LundstrongOrders] No order found with ID "..id) + end +end) diff --git a/src/StarterGui/LundstrongOrders/cashierGui/buttonHandler.client.lua b/src/StarterGui/LundstrongOrders/cashierGui/buttonHandler.client.lua new file mode 100644 index 0000000..6f36963 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/cashierGui/buttonHandler.client.lua @@ -0,0 +1,199 @@ +local path = require(game.Players.LocalPlayer.PlayerGui.LundstrongOrders.cashierGui.filePaths) +local tween = require(game.ReplicatedStorage.LundstrongOrders.tween) +local Nofications = require(game.ReplicatedStorage.LundstrongOrders.notifHandler) +local tweenService = game:GetService("TweenService") +local tweeninfo = TweenInfo.new(.75) +local openBounce = false + +-- * Button Handlers + -- Home +path.cashierGui.home.buttonFrame.createOrderButton.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.home, path.cashierGui.createOrder) +end) +path.cashierGui.home.buttonFrame.reportBugButton.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.home, path.cashierGui.reportBugs) +end) +path.cashierGui.home.buttonFrame.viewMenuButton.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.home, path.cashierGui.viewMenu) +end) +path.cashierGui.home.settingButton.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.home, path.cashierGui.settings) +end) +path.cashierGui.home.exitButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.cashierGui.home) +end) +path.cashierGui.home.exitButton.TextButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.cashierGui.home) +end) + -- createOrder +path.cashierGui.createOrder.homeIcon.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.createOrder, path.cashierGui.home) +end) +path.cashierGui.createOrder.homeIcon.homeButton.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.createOrder, path.cashierGui.home) +end) + -- Cat. Selector +local function catSelect() + -- Bg + local tween1 = tweenService:Create(path.cashierGui.createOrder.categoryAnim, tweeninfo, { BackgroundTransparency = .2 }) + -- Rotate + local tween2 = tweenService:Create(path.cashierGui.createOrder.Categories.Categories.selectedCategory.dropdownButton, tweeninfo, { Rotation = 0 }) + tween1:Play() + tween1.Completed:Connect(function() + path.cashierGui.createOrder.Categories.Visible = true + wait(0.5) + tween2:Play() + end) +end +path.cashierGui.createOrder.Category.MouseButton1Up:Connect(catSelect) +path.cashierGui.createOrder.Category.usernameText.MouseButton1Up:Connect(catSelect) +path.cashierGui.createOrder.Category.dropdownButton.MouseButton1Up:Connect(catSelect) +path.cashierGui.createOrder.ScrollingFrame.UIGridLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() + local absoluteSize = path.cashierGui.createOrder.ScrollingFrame.UIGridLayout.AbsoluteContentSize + path.cashierGui.createOrder.ScrollingFrame.CanvasSize = UDim2.new(0, absoluteSize.X, 0, absoluteSize.Y) +end) +path.cashierGui.createOrder.summaryFrame.ScrollingFrame.UIGridLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() + local absoluteSize = path.cashierGui.createOrder.summaryFrame.ScrollingFrame.UIGridLayout.AbsoluteContentSize + path.cashierGui.createOrder.summaryFrame.ScrollingFrame.CanvasSize = UDim2.new(0, absoluteSize.X, 0, absoluteSize.Y) +end) +path.cashierGui.createOrder.exitButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.cashierGui.createOrder) +end) +path.cashierGui.createOrder.exitButton.TextButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.cashierGui.createOrder) +end) +path.cashierGui.createOrder.buttonFrame.clearAllItemsButton.MouseButton1Up:Connect(function() + for _,v in pairs(path.cashierGui.createOrder.summaryFrame.ScrollingFrame:GetChildren()) do + if (v:IsA("TextButton")) then + if (v.Name == "itemFrame") then + v:Destroy() + end + end + end +end) +path.cashierGui.createOrder.buttonFrame.submitOrderButton.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.createOrder, path.cashierGui.usernamePrompt) +end) +path.cashierGui.usernamePrompt.buttonFrame.backButton.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.usernamePrompt, path.cashierGui.createOrder) +end) +local createOrderDebounce = false -- OrderCooldown is dealt with on the server to prevent exploiters. This is just to stop the script from breaking. +path.cashierGui.usernamePrompt.buttonFrame.submitOrderButton.MouseButton1Up:Connect(function() + if (createOrderDebounce == false) then + createOrderDebounce = true + local items = {} + for _,v in pairs(path.cashierGui.createOrder.summaryFrame.ScrollingFrame:GetChildren()) do + if v.Name == "itemFrame" and v:IsA("TextButton") then + table.insert(items, v.TextLabel.Text) + end + end + print(items) + local orderSubmitted = game.ReplicatedStorage.LundstrongOrders.Events.createOrder:InvokeServer(path.cashierGui.usernamePrompt.usernameFrame.usernamePrompt.Text, items) + if (orderSubmitted == true) then + for _,v in pairs(path.cashierGui.createOrder.summaryFrame.ScrollingFrame:GetChildren()) do + if (v:IsA("TextButton")) then + if (v.Name == "itemFrame") then + v:Destroy() + end + end + end + path.cashierGui.usernamePrompt.usernameFrame.usernameText.Text = "" + createOrderDebounce = false + Nofications:CreateNotification("The order has been submitted!") + else + createOrderDebounce = false + Nofications:CreateNotification(orderSubmitted) + end + tween:Create(path.cashierGui.usernamePrompt, path.cashierGui.createOrder) + end +end) +path.cashierGui.usernamePrompt.exitButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.cashierGui.reportBugs) +end) +path.cashierGui.usernamePrompt.exitButton.TextButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.cashierGui.reportBugs) +end) + -- reportBugs +path.cashierGui.reportBugs.homeIcon.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.reportBugs, path.cashierGui.home) +end) +path.cashierGui.reportBugs.homeIcon.homeButton.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.reportBugs, path.cashierGui.home) +end) +path.cashierGui.reportBugs.exitButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.cashierGui.reportBugs) +end) +path.cashierGui.reportBugs.exitButton.TextButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.cashierGui.reportBugs) +end) + -- settings +path.cashierGui.settings.homeIcon.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.settings, path.cashierGui.home) +end) +path.cashierGui.settings.homeIcon.homeButton.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.settings, path.cashierGui.home) +end) +path.cashierGui.settings.exitButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.cashierGui.settings) +end) +path.cashierGui.settings.exitButton.TextButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.cashierGui.settings) +end) + -- viewMenu +path.cashierGui.viewMenu.homeIcon.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.viewMenu, path.cashierGui.home) +end) +path.cashierGui.viewMenu.homeIcon.homeButton.MouseButton1Up:Connect(function() + tween:Create(path.cashierGui.viewMenu, path.cashierGui.home) +end) +path.cashierGui.viewMenu.exitButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.cashierGui.viewMenu) +end) +path.cashierGui.viewMenu.exitButton.TextButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.cashierGui.viewMenu) +end) +path.cashierGui.viewMenu.ScrollingFrame.UIListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() + local absoluteSize = path.cashierGui.viewMenu.ScrollingFrame.UIListLayout.AbsoluteContentSize + path.cashierGui.viewMenu.ScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, absoluteSize.Y) +end) +-- * Fade IN +game.ReplicatedStorage:WaitForChild("LundstrongOrders"):WaitForChild("Events"):WaitForChild("enableGui").OnClientEvent:Connect(function(gui) + if (gui == "cashierGui") then + if (openBounce == false) then + openBounce = true + local tween1 = tweenService:Create(path.cashierGui.home.animFrame, tweeninfo, {Transparency = 0}) + local tween2 = tweenService:Create(path.cashierGui.home.bgGreenAnim, tweeninfo, {ImageTransparency = 0}) + local tween5 = tweenService:Create(path.cashierGui.home.animFrame, tweeninfo, {Transparency = 1}) + local tween6 = tweenService:Create(path.cashierGui.home.bgGreenAnim, tweeninfo, {ImageTransparency = 1}) + local tween7 = tweenService:Create(path.cashierGui.home.exitButton, tweeninfo, {BackgroundTransparency = 0}) + local tween8 = tweenService:Create(path.cashierGui.home.exitButton.TextButton, tweeninfo, {TextTransparency = 0}) + path.cashierGui.home.animFrame.Transparency = 0 + path.cashierGui.home.bgGreenAnim.ImageTransparency = 0 + path.cashierGui.home.exitButton.BackgroundTransparency = 1 + path.cashierGui.home.exitButton.TextButton.TextTransparency = 1 + path.cashierGuiFolder.cashierGui.Enabled = true + tween1:Play() + tween2:Play() + tween2.Completed:Connect(function() + path.cashierGui.home.Visible = true + wait(0.2) + tween5:Play() + tween6:Play() + tween7:Play() + tween8:Play() + end) + end + end +end) diff --git a/src/StarterGui/LundstrongOrders/cashierGui/cashierGui.rbxmx b/src/StarterGui/LundstrongOrders/cashierGui/cashierGui.rbxmx new file mode 100644 index 0000000..ad3fa11 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/cashierGui/cashierGui.rbxmx @@ -0,0 +1,10702 @@ + + true + null + nil + + + + true + 0 + false + false + cashierGui + true + null + -1 + + 1 + + + + true + + 0 + 0 + + + true + 0 + + 0.980392158 + 0.937254906 + 0.937254906 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + settings + null + null + null + null + + 0.200000003 + 0 + 0.200000003 + 0 + + null + 0 + false + null + + 0.67234385 + 0 + 0.580814719 + 0 + + 0 + -1 + 0 + + false + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + bgGreen + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 1 + 0 + bgGreenAnim + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 6 + + + + + true + + 0 + 0 + + + false + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 4 + 0 + 1 + -1 + false + exitButton + null + null + null + null + + 0.97955966 + 0 + -0.0339366533 + 0 + + false + null + 0 + true + false + null + + 0.0384759046 + 0 + 0.0723981932 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 0 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0.5 + 0.5 + + + false + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + false + TextButton + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + false + null + 0 + true + false + null + + 0.899999976 + 0 + 0.899999976 + 0 + + 0 + -1 + 0 + + X + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + welcomeLabel + null + null + null + null + + 0.797172666 + 0 + 0.0384615399 + 0 + + false + null + 0 + false + null + + 0.183962926 + 0 + 0.142533958 + 0 + + 0 + -1 + + Settings + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + true + + 0 + 0 + + + true + 2 + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-bottom.png + + 0 + 0 + + + 0 + 0 + 0 + 700 + + true + false + 0 + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-middle.png + content + null + null + null + null + + 0.385961413 + 0 + 0.180995479 + 0 + + null + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + 12 + 4 + true + true + null + + 0.533853173 + 0 + 0.76696831 + 0 + + 0 + -1 + + rbxasset://textures/ui/Scroll/scroll-top.png + 0 + 0 + true + 1 + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + themes + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 0.899999976 + 0 + 0 + 150 + + 0 + -1 + 0 + + false + 2 + + + + false + + 0 + 0 + + + true + 0 + + 0.396078438 + 0.600000024 + 0.65882355 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + light + null + null + null + null + + 0 + 0 + 0.446666658 + 0 + + null + 0 + false + null + + 0.447947979 + 0 + 0.266666681 + 0 + + 0 + -1 + 0 + + true + 2 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + TextButton + null + null + null + null + + 0 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 1 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Light + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.20784314 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + dark + null + null + null + null + + 0.548048079 + 0 + 0.446666658 + 0 + + null + 0 + false + null + + 0.447947979 + 0 + 0.266666681 + 0 + + 0 + -1 + 0 + + true + 2 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + TextButton + null + null + null + null + + 0 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 1 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Dark + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + TextLabel + null + null + null + null + + 0 + 0 + 0 + 0 + + false + null + 0 + false + null + + 0.998498559 + 0 + 0.266666681 + 0 + + 0 + -1 + + Themes + + 0 + 0 + 0 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + languages + null + null + null + null + + 0 + 0 + 0 + 150 + + null + 0 + false + null + + 0.899999976 + 0 + 0 + 150 + + 0 + -1 + 0 + + false + 2 + + + + false + + 0 + 0 + + + true + 0 + + 0.20784314 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Greek + null + null + null + null + + 0 + 0 + 0.446666658 + 0 + + null + 0 + false + null + + 0.447947979 + 0 + 0.266666681 + 0 + + 0 + -1 + 0 + + true + 2 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + TextButton + null + null + null + null + + 0 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 1 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Greek + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.20784314 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Flipino + null + null + null + null + + 0.548048079 + 0 + 0.446666658 + 0 + + null + 0 + false + null + + 0.447947979 + 0 + 0.266666681 + 0 + + 0 + -1 + 0 + + true + 2 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + TextButton + null + null + null + null + + 0 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 1 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Flipino + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + TextLabel + null + null + null + null + + 0 + 0 + 0 + 0 + + false + null + 0 + false + null + + 0.998498559 + 0 + 0.266666681 + 0 + + 0 + -1 + + Languages + + 0 + 0 + 0 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + credits + null + null + null + null + + 0 + 0 + 0 + 300 + + null + 0 + false + null + + 0.899999976 + 0 + 0 + 700 + + 0 + -1 + 0 + + true + 2 + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + TextLabel + null + null + null + null + + 0 + 0 + 0 + 0 + + false + null + 0 + false + null + + 1 + 0 + 0.0670000017 + 0 + + 0 + -1 + + Credits + + 0 + 0 + 0 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + TextLabel + null + null + null + null + + 0 + 0 + 0.100000001 + 0 + + false + null + 0 + false + null + + 1 + 0 + 0.933000028 + 0 + + 0 + -1 + + + + 0 + 0 + 0 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + + 1 + 1 + UIListLayout + + 0 + 0 + + 2 + -1 + + 1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + homeIcon + null + null + null + null + + 0.0240474418 + 0 + 0.861990929 + 0 + + false + null + 0 + false + false + null + + 0.0601976998 + 0 + 0.0951476544 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 3 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0.5 + 0.5 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + + http://www.roblox.com/asset/?id=6034798461 + + 0.980392218 + 0.937254965 + 0.937254965 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + false + homeButton + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + + null + 0 + 0 + false + false + null + + 0.600000024 + 0 + 0.714285731 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + 0 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.270588249 + 0.403921604 + 0.447058856 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + animFrame + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + -1 + 0 + + true + 5 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + + 1.88165009 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6599961695 + + 0.980392158 + 0.937254906 + 0.937254906 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + lundstrongOrdersLogo + null + null + null + null + + 0.0160000008 + 0 + 0.0299999993 + 0 + + null + 0 + 0 + false + null + + 0.119113393 + 0 + 0.0636244863 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + 3.53800011 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + + + true + + 0 + 0 + + + true + 0 + + 0.980392158 + 0.937254906 + 0.937254906 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + reportBugs + null + null + null + null + + 0.200000003 + 0 + 0.200000003 + 0 + + null + 0 + false + null + + 0.67234385 + 0 + 0.580814719 + 0 + + 0 + -1 + 0 + + false + 1 + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + bgGreen + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 1 + 0 + bgGreenAnim + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 6 + + + + + true + + 0 + 0 + + + false + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 4 + 0 + 1 + -1 + false + exitButton + null + null + null + null + + 0.97955966 + 0 + -0.0339366533 + 0 + + false + null + 0 + true + false + null + + 0.0384759046 + 0 + 0.0723981932 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 0 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0.5 + 0.5 + + + false + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + false + TextButton + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + false + null + 0 + true + false + null + + 0.899999976 + 0 + 0.899999976 + 0 + + 0 + -1 + 0 + + X + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + titleLabel + null + null + null + null + + 0.66900003 + 0 + 0.0399999991 + 0 + + false + null + 0 + false + null + + 0.312616736 + 0 + 0.142533958 + 0 + + 0 + -1 + + Report a Bug: + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame + null + null + null + null + + 0.863303125 + 0 + 0.701357484 + 0 + + null + 0 + false + null + + 0.115427718 + 0 + 0.0678733066 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 4 + 0 + 1 + -1 + false + submitBug' + null + null + null + null + + 0.0500000007 + 0 + 0.100000001 + 0 + + false + null + 0 + false + false + null + + 0.899999976 + 0 + 0.800000012 + 0 + + 0 + -1 + 0 + + + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 8 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame + null + null + null + null + + 0.551888764 + 0 + 0.27375567 + 0 + + null + 0 + false + null + + 0.426842064 + 0 + 0.0678733066 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0.5 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + false + 5 + 0 + 1 + -1 + false + usernameText + null + null + null + null + + 0.20784314 + 0.309803933 + 0.34117648 + + + + 0.0500000007 + 0 + 0.5 + 0 + + false + null + 0 + false + null + true + + 0.899999976 + 0 + 0.800000012 + 0 + + 0 + -1 + + + + 0.20784314 + 0.309803933 + 0.34117648 + + true + true + 8 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 1 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame + null + null + null + null + + 0.551888764 + 0 + 0.361990958 + 0 + + null + 0 + false + null + + 0.426842064 + 0 + 0.321266979 + 0 + + 0 + -1 + 0 + + true + 1 + + + + false + + 0 + 0 + + + true + 2 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + false + 5 + 0 + 1 + -1 + true + reportText + null + null + null + null + + 0.20784314 + 0.309803933 + 0.34117648 + + + + 0.0500000007 + 0 + 0.100000001 + 0 + + false + null + 0 + false + null + true + + 0.899999976 + 0 + 0 + 0 + + 0 + -1 + + + + 0.20784314 + 0.309803933 + 0.34117648 + + true + true + 24 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 1 + 1 + true + 1 + + + + + + + 0 + 15 + + UICorner + -1 + + + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + homeIcon + null + null + null + null + + 0.0240474418 + 0 + 0.861990929 + 0 + + false + null + 0 + false + false + null + + 0.0601976998 + 0 + 0.0951476544 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 3 + + + + false + + 0.5 + 0.5 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + + http://www.roblox.com/asset/?id=6034798461 + + 0.980392218 + 0.937254965 + 0.937254965 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + false + homeButton + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + + null + 0 + 0 + false + false + null + + 0.600000024 + 0 + 0.714285731 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + 0 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + + + 0 + 15 + + UICorner + -1 + + + + + + + false + + 0 + 0 + + + true + 0 + + 0.270588249 + 0.403921604 + 0.447058856 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + animFrame + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + -1 + 0 + + true + 5 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + + + + 0 + 15 + + UICorner + -1 + + + + + + 1.88165009 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6599961695 + + 0.980392158 + 0.937254906 + 0.937254906 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + lundstrongOrdersLogo + null + null + null + null + + 0.0160000008 + 0 + 0.0299999993 + 0 + + null + 0 + 0 + false + null + + 0.119113393 + 0 + 0.0636244863 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + 3.53800011 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + + false + + 0 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 0.200000003 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame + null + null + null + null + + 0.543653667 + 0 + 0.24999997 + 0 + + null + 0 + false + null + + 0.439956218 + 0 + 0.605919957 + 0 + + 0 + -1 + 0 + + true + 1 + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + TextLabel + null + null + null + null + + 0.150000006 + 0 + 0.150000006 + 0 + + false + null + 0 + false + null + + 0.699999988 + 0 + 0.699999988 + 0 + + 0 + -1 + + + + 0.207843155 + 0.309803933 + 0.34117648 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + + true + + 0 + 0 + + + true + 0 + + 0.980392158 + 0.937254906 + 0.937254906 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + usernamePrompt + null + null + null + null + + 0.200000003 + 0 + 0.200000003 + 0 + + null + 0 + false + null + + 0.671999991 + 0 + 0.58099997 + 0 + + 0 + -1 + 0 + + false + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + bgGreen + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 1 + 0 + bgGreenAnim + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 6 + + + + + false + + 0.100000001 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + titleLabel + null + null + null + null + + 0.5 + 0 + 0.100000001 + 0 + + false + null + 0 + false + null + + 0.5 + 0 + 0.143000007 + 0 + + 0 + -1 + + Enter Their Username + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + false + + 0.150000006 + 0.5 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + usernameFrame + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + null + 0 + false + null + + 0.5 + 0 + 0.0850000009 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0 + 0.5 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + true + false + 5 + 0 + 1 + -1 + false + usernameText + null + null + null + null + + 0.466666698 + 0.466666698 + 0.466666698 + + Username: + + 0.075000003 + 0 + 0.5 + 0 + + false + null + 0 + true + null + true + + 0.875 + 0 + 0.800000012 + 0 + + 0 + -1 + + + + 0.20784314 + 0.309803933 + 0.34117648 + + true + true + 8 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 0 + 1 + true + 3 + + + + + false + + 0 + 0.5 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + usernamePrompt + null + null + null + null + + 0.075000003 + 0 + 0.5 + 0 + + false + null + 0 + false + null + + 0.875 + 0 + 0.800000012 + 0 + + 0 + -1 + + + + 0.400000036 + 0.400000036 + 0.400000036 + + true + 8 + + 0 + 0 + 0 + + 1 + 0.600000024 + 0 + true + 0 + 1 + true + 1 + + + + + + 1.88165009 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + buttonFrame + null + null + null + null + + 0.200000003 + 0 + 0.876999974 + 0 + + null + 0 + false + null + + 0.400000006 + 0 + 0.0700000003 + 0 + + 0 + -1 + 0 + + true + 2 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + submitOrderButton + null + null + null + null + + 0 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 0.5 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Submit Order + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + backButton + null + null + null + null + + 0.5 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 0.5 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Go Back + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.270588249 + 0.403921604 + 0.447058856 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + animFrame + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + -1 + 0 + + true + 5 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + + true + + 0 + 0 + + + false + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 4 + 0 + 1 + -1 + false + exitButton + null + null + null + null + + 0.97955966 + 0 + -0.0339366533 + 0 + + false + null + 0 + true + false + null + + 0.0384759046 + 0 + 0.0723981932 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 0 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0.5 + 0.5 + + + false + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + false + TextButton + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + false + null + 0 + true + false + null + + 0.899999976 + 0 + 0.899999976 + 0 + + 0 + -1 + 0 + + X + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6599961695 + + 0.980392158 + 0.937254906 + 0.937254906 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + lundstrongOrdersLogo + null + null + null + null + + 0.0160000008 + 0 + 0.0299999993 + 0 + + null + 0 + 0 + false + null + + 0.119113393 + 0 + 0.0636244863 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + 3.53800011 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + + + true + + 0 + 0 + + + true + 0 + + 0.980392158 + 0.937254906 + 0.937254906 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + viewMenu + null + null + null + null + + 0.200000003 + 0 + 0.200000003 + 0 + + null + 0 + false + null + + 0.67234385 + 0 + 0.580814719 + 0 + + 0 + -1 + 0 + + false + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + bgGreen + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 1 + 0 + bgGreenAnim + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 6 + + + + + true + + 0 + 0 + + + false + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 4 + 0 + 1 + -1 + false + exitButton + null + null + null + null + + 0.97955966 + 0 + -0.0339366533 + 0 + + false + null + 0 + true + false + null + + 0.0384759046 + 0 + 0.0723981932 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 0 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0.5 + 0.5 + + + false + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + false + TextButton + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + false + null + 0 + true + false + null + + 0.899999976 + 0 + 0.899999976 + 0 + + 0 + -1 + 0 + + X + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + titleLabel + null + null + null + null + + 0.739458799 + 0 + 0.0384615399 + 0 + + false + null + 0 + false + null + + 0.241676778 + 0 + 0.142533958 + 0 + + 0 + -1 + + View Menu: + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + true + + 0 + 0 + + + true + 0 + 0 + + 0.980392158 + 0.937254906 + 0.937254906 + + 0 + + 0.105882354 + 0.164705887 + 0.20784314 + + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-bottom.png + + 0 + 0 + + + 0 + 0 + 0 + 0 + + true + false + 0 + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-middle.png + ScrollingFrame + null + null + null + null + + 0.394378036 + 0 + 0.219457015 + 0 + + null + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0.600000024 + 12 + 4 + true + true + null + + 0.577138662 + 0 + 0.674208164 + 0 + + 0 + -1 + + rbxasset://textures/ui/Scroll/scroll-top.png + 0 + 0 + true + 1 + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + dividerClone + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 0 + 50 + + 0 + -1 + 0 + + false + 1 + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + TextLabel + null + null + null + null + + 0.100000001 + 0 + 0 + 0 + + false + null + 0 + false + null + + 0.800000012 + 0 + 0 + 30 + + 0 + -1 + + Drinks + + 0 + 0 + 0 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 0.823529482 + 0.811764777 + 0.815686345 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame + null + null + null + null + + 0.100000001 + 0 + 0 + 35 + + null + 0 + false + null + + 0.800000012 + 0 + 0 + 5 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 8 + + UICorner + -1 + + + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + itemGroupClone + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 0 + 50 + + 0 + -1 + 0 + + false + 1 + + + + false + + 0 + 0 + + + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame1 + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 0.200000003 + 0 + 0 + 40 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + TextLabel + null + null + null + null + + 0.100000001 + 0 + 0.100000001 + 0 + + false + null + 0 + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + + Lemonade + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame4 + null + null + null + null + + 0.75 + 0 + 0 + 0 + + null + 0 + false + null + + 0.200000003 + 0 + 0 + 40 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + TextLabel + null + null + null + null + + 0.100000001 + 0 + 0.100000001 + 0 + + false + null + 0 + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + + Lemonade + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame2 + null + null + null + null + + 0.25 + 0 + 0 + 0 + + null + 0 + false + null + + 0.200000003 + 0 + 0 + 40 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + TextLabel + null + null + null + null + + 0.100000001 + 0 + 0.100000001 + 0 + + false + null + 0 + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + + Lemonade + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame3 + null + null + null + null + + 0.5 + 0 + 0 + 0 + + null + 0 + false + null + + 0.200000003 + 0 + 0 + 40 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + TextLabel + null + null + null + null + + 0.100000001 + 0 + 0.100000001 + 0 + + false + null + 0 + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + + Lemonade + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + + + 1 + 1 + UIListLayout + + 0 + 10 + + 2 + -1 + + 1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + homeIcon + null + null + null + null + + 0.0240474418 + 0 + 0.861990929 + 0 + + false + null + 0 + false + false + null + + 0.0601976998 + 0 + 0.0951476544 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 3 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0.5 + 0.5 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + + http://www.roblox.com/asset/?id=6034798461 + + 0.980392218 + 0.937254965 + 0.937254965 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + false + homeButton + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + + null + 0 + 0 + false + false + null + + 0.600000024 + 0 + 0.714285731 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + 0 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.270588249 + 0.403921604 + 0.447058856 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + animFrame + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + -1 + 0 + + true + 5 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + + 1.88165009 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6599961695 + + 0.980392158 + 0.937254906 + 0.937254906 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + lundstrongOrdersLogo + null + null + null + null + + 0.0160000008 + 0 + 0.0299999993 + 0 + + null + 0 + 0 + false + null + + 0.119113393 + 0 + 0.0636244863 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + 3.53800011 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + + + true + + 0 + 0 + + + true + 0 + + 0.980392158 + 0.937254906 + 0.937254906 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + home + null + null + null + null + + 0.200000003 + 0 + 0.200000003 + 0 + + null + 0 + false + null + + 0.67234385 + 0 + 0.580814719 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + bgGreen + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + buttonFrame + null + null + null + null + + 0.25437361 + 0 + 0.852194965 + 0 + + null + 0 + false + null + + 0.67332834 + 0 + 0.0950226262 + 0 + + 0 + -1 + 0 + + true + 2 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + viewMenuButton + null + null + null + null + + 0 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 0.330000013 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + View Menu + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + reportBugButton + null + null + null + null + + 0.660000026 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 0.330000013 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Report a Bug + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + createOrderButton + null + null + null + null + + 0.330000013 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 0.330000013 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Create Order + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + + http://www.roblox.com/asset/?id=6024883843 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + false + settingButton + null + null + null + null + + 0.943862081 + 0 + 0.866515875 + 0 + + + null + 0 + 0 + true + false + null + + 0.034868788 + 0 + 0.0656108633 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + 0 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + welcomeLabel + null + null + null + null + + 0.667316496 + 0 + 0.0384615399 + 0 + + false + null + 0 + false + null + + 0.31381911 + 0 + 0.142533943 + 0 + + 0 + -1 + + Welcome Back, + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + username + null + null + null + null + + 0.5 + 0 + 0.150000006 + 0 + + false + null + 0 + false + null + + 0.473734587 + 0 + 0.123766847 + 0 + + 0 + -1 + + OnlyTwentyCharacters + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 1 + 1 + true + 1 + + + + + true + + 0 + 0 + + + false + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 4 + 0 + 1 + -1 + false + exitButton + null + null + null + null + + 0.97955966 + 0 + -0.0339366533 + 0 + + false + null + 0 + true + false + null + + 0.0384759046 + 0 + 0.0723981932 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 0 + + + + + + 0.612268806 + 0 + + UICorner + -1 + + + + + + true + + 0.5 + 0.5 + + + false + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + false + TextButton + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + false + null + 0 + true + false + null + + 0.899999976 + 0 + 0.899999976 + 0 + + 0 + -1 + 0 + + X + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 1 + 0 + bgGreenAnim + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 6 + + + + + false + + 0 + 0 + + + true + 0 + + 0.270588249 + 0.403921604 + 0.447058856 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + animFrame + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + -1 + 0 + + true + 5 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + + 1.88165009 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6599961695 + + 0.980392158 + 0.937254906 + 0.937254906 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + lundstrongOrdersLogo + null + null + null + null + + 0.0160000008 + 0 + 0.0299999993 + 0 + + null + 0 + 0 + false + null + + 0.119113393 + 0 + 0.0636244863 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + 3.53800011 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + + + true + + 0 + 0 + + + true + 0 + + 0.980392158 + 0.937254906 + 0.937254906 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + createOrder + null + null + null + null + + 0.200000003 + 0 + 0.200000003 + 0 + + null + 0 + false + null + + 0.671999991 + 0 + 0.58099997 + 0 + + 0 + -1 + 0 + + false + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + bgGreen + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 1 + 0 + bgGreenAnim + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 6 + + + + + true + + 0 + 0 + + + false + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 4 + 0 + 1 + -1 + false + exitButton + null + null + null + null + + 0.97955966 + 0 + -0.0339366533 + 0 + + false + null + 0 + true + false + null + + 0.0384759046 + 0 + 0.0723981932 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 0 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0.5 + 0.5 + + + false + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + false + TextButton + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + false + null + 0 + true + false + null + + 0.899999976 + 0 + 0.899999976 + 0 + + 0 + -1 + 0 + + X + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + titleLabel + null + null + null + null + + 0.739458799 + 0 + 0.0384615399 + 0 + + false + null + 0 + false + null + + 0.241676778 + 0 + 0.142533958 + 0 + + 0 + -1 + + New Order: + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + true + + 0 + 0 + + + true + 0 + 0 + + 0.980392158 + 0.937254906 + 0.937254906 + + 0 + + 0.105882354 + 0.164705887 + 0.20784314 + + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-bottom.png + + 0 + 0 + + + 0 + 0 + 0 + 0 + + true + false + 0 + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-middle.png + ScrollingFrame + null + null + null + null + + 0.310212016 + 0 + 0.454751164 + 0 + + null + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0.600000024 + 12 + 4 + true + true + null + + 0.371532947 + 0 + 0.300301045 + 0 + + 0 + -1 + + rbxasset://textures/ui/Scroll/scroll-top.png + 0 + 0 + true + 1 + + + + + + 0 + 10 + 0 + 10 + + + 0.5 + -16 + 0 + 40 + + 0 + 0 + 1 + UIGridLayout + 2 + -1 + 0 + + 1 + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + cloneFrame + null + null + null + null + + 0.647000015 + 0 + 0 + 200 + + false + null + 0 + false + false + null + + 0.291000009 + 0 + 0 + 40 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + false + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + false + TextLabel + null + null + null + null + + 0.100000001 + 0 + 0.100000001 + 0 + + false + null + 0 + false + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + 0 + + Lemonade + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + cloneFrame + null + null + null + null + + 0.647000015 + 0 + 0 + 200 + + false + null + 0 + false + false + null + + 0.291000009 + 0 + 0 + 40 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + false + TextLabel + null + null + null + null + + 0.100000001 + 0 + 0.100000001 + 0 + + false + null + 0 + false + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + 0 + + Lemonade + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + cloneFrame + null + null + null + null + + 0.647000015 + 0 + 0 + 200 + + false + null + 0 + false + false + null + + 0.291000009 + 0 + 0 + 40 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + false + TextLabel + null + null + null + null + + 0.100000001 + 0 + 0.100000001 + 0 + + false + null + 0 + false + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + 0 + + Lemonade + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + cloneFrame + null + null + null + null + + 0.647000015 + 0 + 0 + 200 + + false + null + 0 + false + false + null + + 0.291000009 + 0 + 0 + 40 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + false + TextLabel + null + null + null + null + + 0.100000001 + 0 + 0.100000001 + 0 + + false + null + 0 + false + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + 0 + + Lemonade + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + homeIcon + null + null + null + null + + 0.0240474418 + 0 + 0.861990929 + 0 + + false + null + 0 + false + false + null + + 0.0601976998 + 0 + 0.0951476544 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0.5 + 0.5 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + + http://www.roblox.com/asset/?id=6034798461 + + 0.980392218 + 0.937254965 + 0.937254965 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + false + homeButton + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + + null + 0 + 0 + false + false + null + + 0.600000024 + 0 + 0.714285731 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + 0 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + + 1.88165009 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + summaryFrame + null + null + null + null + + 0.697375774 + 0 + 0.454751134 + 0 + + null + 0 + false + null + + 0.281355053 + 0 + 0.452488691 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + itemDesc + null + null + null + null + + 0.0500000007 + 0 + 0.0500000007 + 0 + + false + null + 0 + false + null + + 0.899999976 + 0 + 0.125 + 0 + + 0 + -1 + + Order Summary + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 8 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + true + + 0.5 + 0 + + + true + 0 + 0 + + 0.980392158 + 0.937254906 + 0.937254906 + + 1 + + 0.105882354 + 0.164705887 + 0.20784314 + + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-bottom.png + + 0 + 0 + + + 0 + 0 + 0 + 0 + + true + false + 0 + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-middle.png + ScrollingFrame + null + null + null + null + + 0.5 + 0 + 0.224999994 + 0 + + null + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0.600000024 + 12 + 4 + true + true + null + + 0.600000024 + 0 + 0.548080325 + 0 + + 0 + -1 + + rbxasset://textures/ui/Scroll/scroll-top.png + 0 + 0 + true + 1 + + + + + + 0 + 10 + 0 + 10 + + + 1 + -20 + 0 + 32 + + 0 + 0 + 1 + UIGridLayout + 2 + -1 + 0 + + 1 + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + cloneFrame + null + null + null + null + + 0.647000015 + 0 + 0 + 200 + + false + null + 0 + false + false + null + + 0.291000009 + 0 + 0 + 40 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + false + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + false + TextLabel + null + null + null + null + + 0.100000001 + 0 + 0.100000001 + 0 + + false + null + 0 + false + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + 0 + + Lemonade + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + + false + + 0 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + itemDesc + null + null + null + null + + 0.200000003 + 0 + 0.824999988 + 0 + + false + null + 0 + false + null + + 0.600000024 + 0 + 0.125 + 0 + + 0 + -1 + + Click an Item to remove it + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 8 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.270588249 + 0.403921604 + 0.447058856 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + animFrame + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + -1 + 0 + + true + 5 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + + false + + 0 + 0 + + + true + 0 + + 0.298039228 + 0.298039228 + 0.298039228 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + categoryAnim + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + -1 + 0 + + true + 2 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + + false + + 0 + 0 + + + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + buttonFrame + null + null + null + null + + 0.200000003 + 0 + 0.876999974 + 0 + + null + 0 + false + null + + 0.400000006 + 0 + 0.0700000003 + 0 + + 0 + -1 + 0 + + true + 2 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + submitOrderButton + null + null + null + null + + 0 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 0.5 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Submit Order + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + clearAllItemsButton + null + null + null + null + + 0.5 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 0.5 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Clear All Items + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Categories + null + null + null + null + + 0.786000013 + 0 + 0.25 + 0 + + null + 0 + false + null + + 0.192000002 + 0 + 0.271850437 + 0 + + 0 + -1 + 0 + + false + 4 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-bottom.png + + 0 + 0 + + + 0 + 0 + 0 + 160 + + true + false + 0 + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-middle.png + Categories + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + 12 + 4 + true + false + null + + 1 + 0 + 1 + 0 + + 0 + -1 + + rbxasset://textures/ui/Scroll/scroll-top.png + 0 + 0 + true + 4 + + + + + 1 + 1 + UIListLayout + + 0 + 0 + + 2 + -1 + + 1 + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 1 + 1 + -1 + false + selectedCategory + null + null + null + null + + 0.786351323 + 0 + 0.339366525 + 0 + + false + null + 0 + false + false + null + + 1 + -12 + 0.25 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 3 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0 + 0.5 + + + true + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + false + usernameText + null + null + null + null + + 0.159836203 + 0 + 0.500000358 + 0 + + false + null + 0 + true + false + null + + 0.712225437 + 0 + 0.800000191 + 0 + + 0 + -1 + 0 + + Drinks + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 8 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 1 + 1 + true + 1 + + + + + false + + 0 + 0.5 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + + http://www.roblox.com/asset/?id=302248702 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + false + dropdownButton + null + null + null + null + + 0.0500000007 + 0 + 0.5 + 0 + + + null + 90 + 0 + false + false + null + + 0.0750986859 + 0 + 0.399779946 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + 0 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + Category + null + null + null + null + + 0.786000013 + 0 + 0.25 + 0 + + false + null + 0 + false + false + null + + 0.192379534 + 0 + 0.0680000037 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 3 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0.5 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + + http://www.roblox.com/asset/?id=302248702 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + false + dropdownButton + null + null + null + null + + 0.0500000007 + 0 + 0.5 + 0 + + + null + 90 + 0 + false + false + null + + 0.0750986859 + 0 + 0.399779946 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + 0 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + true + + 0 + 0.5 + + + true + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + false + usernameText + null + null + null + null + + 0.159836203 + 0 + 0.500000358 + 0 + + false + null + 0 + true + false + null + + 0.712225437 + 0 + 0.800000191 + 0 + + 0 + -1 + 0 + + Drinks + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 8 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 1 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6599961695 + + 0.980392158 + 0.937254906 + 0.937254906 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + lundstrongOrdersLogo + null + null + null + null + + 0.0160000008 + 0 + 0.0299999993 + 0 + + null + 0 + 0 + false + null + + 0.119113393 + 0 + 0.0636244863 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + 3.53800011 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + + \ No newline at end of file diff --git a/src/StarterGui/LundstrongOrders/cashierGui/filePaths.lua b/src/StarterGui/LundstrongOrders/cashierGui/filePaths.lua new file mode 100644 index 0000000..4cb705f --- /dev/null +++ b/src/StarterGui/LundstrongOrders/cashierGui/filePaths.lua @@ -0,0 +1,16 @@ +local run = game:GetService("RunService") + +if (run:IsClient()) then -- ! This script can only run on the client side. + game.Players.LocalPlayer.PlayerGui.LundstrongOrders.cashierGui:WaitForChild("cashierGui") -- ? Is there a better way to do this? + return { + ["cashierGuiFolder"] = game.Players.LocalPlayer.PlayerGui.LundstrongOrders.cashierGui, + ["cashierGui"] = { + ["home"] = game.Players.LocalPlayer.PlayerGui.LundstrongOrders.cashierGui.cashierGui.home, + ["reportBugs"] = game.Players.LocalPlayer.PlayerGui.LundstrongOrders.cashierGui.cashierGui.reportBugs, + ["settings"] = game.Players.LocalPlayer.PlayerGui.LundstrongOrders.cashierGui.cashierGui.settings, + ["createOrder"] = game.Players.LocalPlayer.PlayerGui.LundstrongOrders.cashierGui.cashierGui.createOrder, + ["usernamePrompt"] = game.Players.LocalPlayer.PlayerGui.LundstrongOrders.cashierGui.cashierGui.usernamePrompt, + ["viewMenu"] = game.Players.LocalPlayer.PlayerGui.LundstrongOrders.cashierGui.cashierGui.viewMenu, + } + } +end diff --git a/src/StarterGui/LundstrongOrders/cashierGui/init.meta.json b/src/StarterGui/LundstrongOrders/cashierGui/init.meta.json new file mode 100644 index 0000000..1025b06 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/cashierGui/init.meta.json @@ -0,0 +1,3 @@ +{ + "ignoreUnknownInstances": true +} \ No newline at end of file diff --git a/src/StarterGui/LundstrongOrders/cashierGui/setup.client.lua b/src/StarterGui/LundstrongOrders/cashierGui/setup.client.lua new file mode 100644 index 0000000..75a8fa9 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/cashierGui/setup.client.lua @@ -0,0 +1,188 @@ +local path = require(game.Players.LocalPlayer.PlayerGui.LundstrongOrders.cashierGui.filePaths) +local config = require(workspace.LundstrongOrders.Configuration) +local tweenService = game:GetService("TweenService") +local tweeninfo = TweenInfo.new(1) + +local function getTableKeys(tab) + local keyset = {} + for _,v in ipairs(tab) do + for k,_ in pairs(v) do + keyset[#keyset + 1] = k -- More effective/optimised than table.insert(keyset,k) + end + end + return keyset +end + +local function deepCopy(original) -- See https://developer.roblox.com/en-us/articles/Cloning-tables for more info + local copy = {} + for k, v in pairs(original) do + if type(v) == "table" then + v = deepCopy(v) + end + copy[k] = v + end + return copy +end + +local function createSummaryItem(item) + local clone = path.cashierGui.createOrder.summaryFrame.ScrollingFrame.cloneFrame:Clone() + clone.Parent = path.cashierGui.createOrder.summaryFrame.ScrollingFrame + clone.Visible = true + clone.TextLabel.Text = item.TextLabel.Text + clone.Name = "itemFrame" + clone.MouseButton1Up:Connect(function() + clone:Destroy() + end) + clone.TextLabel.MouseButton1Up:Connect(function() + clone:Destroy() + end) +end + +-- * Cats (Cashier -> Create Order) +for i,v in pairs(getTableKeys(config.MenuItems.MenuItems)) do + if (i == 1) then + path.cashierGui.createOrder.Categories.Categories.selectedCategory.usernameText.Text = v + path.cashierGui.createOrder.Categories.Categories.selectedCategory.LayoutOrder = i + path.cashierGui.createOrder.Category.usernameText.Text = v + -- Add items. + for _,itemText in pairs(config.MenuItems.MenuItems[i][v]) do + local clone = path.cashierGui.createOrder.ScrollingFrame.cloneFrame:Clone() + clone.Parent = path.cashierGui.createOrder.ScrollingFrame + clone.Visible = true + clone.TextLabel.Text = itemText.ItemName + clone.Name = "itemFrame" + clone.MouseButton1Up:Connect(function() + createSummaryItem(clone) + end) + clone.TextLabel.MouseButton1Up:Connect(function() + createSummaryItem(clone) + end) + end + else + local clone = path.cashierGui.createOrder.Categories.Categories.selectedCategory:Clone() + clone.Parent = path.cashierGui.createOrder.Categories.Categories + clone.usernameText.Text = v + clone.Name = "Category" + clone.LayoutOrder = i + end +end +path.cashierGui.createOrder.Categories.Categories.CanvasSize = UDim2.new(0,0,0, ((#path.cashierGui.createOrder.Categories.Categories:GetChildren() - 1 ) * 40)) +if (#path.cashierGui.createOrder.Categories.Categories:GetChildren() < 5) then + path.cashierGui.createOrder.Categories.Size = UDim2.new(0.192, 0, ((#path.cashierGui.createOrder.Categories.Categories:GetChildren() - 1 ) * 0.068), 0) +end +for _,v in pairs(path.cashierGui.createOrder.Categories.Categories:GetChildren()) do + if v:IsA("TextButton") then + if (#path.cashierGui.createOrder.Categories.Categories:GetChildren() < 5) then + v.Size = UDim2.new(1, 0, 1/(#path.cashierGui.createOrder.Categories.Categories:GetChildren() -1), 0) + else + v.Size = UDim2.new(1, -12, 1/(#path.cashierGui.createOrder.Categories.Categories:GetChildren() -1), 0) + end + end +end +local function catSelected(newCat) + -- Bg + local tween2 = tweenService:Create(path.cashierGui.createOrder.categoryAnim, tweeninfo, { BackgroundTransparency = 1 }) + -- Rotate + local tween1 = tweenService:Create(path.cashierGui.createOrder.Categories.Categories.selectedCategory.dropdownButton, tweeninfo, { Rotation = 90 }) + path.cashierGui.createOrder.Category.usernameText.Text = newCat.usernameText.Text + tween1:Play() + tween1.Completed:Connect(function() + path.cashierGui.createOrder.Categories.Visible = false + wait(0.5) + for _,v in pairs(path.cashierGui.createOrder.ScrollingFrame:GetChildren()) do + if v:IsA("TextButton") then + if v.Name == "itemFrame" then + v:Destroy() + end + end + end + for _,itemText in pairs(config.MenuItems.MenuItems[newCat.LayoutOrder][newCat.usernameText.Text]) do + local clone = path.cashierGui.createOrder.ScrollingFrame.cloneFrame:Clone() + clone.Parent = path.cashierGui.createOrder.ScrollingFrame + clone.Visible = true + clone.TextLabel.Text = itemText.ItemName + clone.Name = "itemFrame" + clone.MouseButton1Up:Connect(function() + createSummaryItem(clone) + end) + clone.TextLabel.MouseButton1Up:Connect(function() + createSummaryItem(clone) + end) + end + tween2:Play() + end) +end +for _,v in pairs(path.cashierGui.createOrder.Categories.Categories:GetChildren()) do + if v:IsA("TextButton") then + v.MouseButton1Up:Connect(function() + catSelected(v) + end) + v.dropdownButton.MouseButton1Up:Connect(function() + catSelected(v) + end) + v.usernameText.MouseButton1Up:Connect(function() + catSelected(v) + end) + end +end +-- * Autofill (Taken from BAE Code) +local Players = game:GetService("Players") +path.cashierGui.usernamePrompt.usernameFrame.usernameText:GetPropertyChangedSignal("Text"):Connect(function() + if (path.cashierGui.usernamePrompt.usernameFrame.usernameText.Text ~= "") then + local toReturn = {} + local Segment = path.cashierGui.usernamePrompt.usernameFrame.usernameText.Text + local lowerSegment = string.lower(path.cashierGui.usernamePrompt.usernameFrame.usernameText.Text) + for _,b in next,Players:GetPlayers() do + if string.sub(b.Name:lower(),1,#Segment) == lowerSegment then + table.insert(toReturn,b) + end + end + if type(toReturn[1]) == "userdata" then + path.cashierGui.usernamePrompt.usernameFrame.usernamePrompt.Text = toReturn[1].Name + path.cashierGui.usernamePrompt.usernameFrame.usernameText.Text = string.sub(path.cashierGui.usernamePrompt.usernameFrame.usernamePrompt.Text, 1, string.len(path.cashierGui.usernamePrompt.usernameFrame.usernameText.Text)) + else + path.cashierGui.usernamePrompt.usernameFrame.usernamePrompt.Text = "" -- No Username + end + else + path.cashierGui.usernamePrompt.usernameFrame.usernamePrompt.Text = "" -- No Username + end +end) +-- * Cats (Cashier -> View Menu) +for i,v in pairs(getTableKeys(config.MenuItems.MenuItems)) do + -- Add Div. + local divClone = path.cashierGui.viewMenu.ScrollingFrame.dividerClone:Clone() + divClone.Parent = path.cashierGui.viewMenu.ScrollingFrame + divClone.Name = "divider" + divClone.TextLabel.Text = v + divClone.Visible = true + -- Add items. + local items = deepCopy(config.MenuItems.MenuItems[i][v]) + while (items[1]) do + local clone = path.cashierGui.viewMenu.ScrollingFrame.itemGroupClone:Clone() + clone.Parent = path.cashierGui.viewMenu.ScrollingFrame + clone.Visible = true + clone.Name = "itemFrameGroip" + if (items[4]) then + clone.Frame4.TextLabel.Text = items[4].ItemName + table.remove(items, 4) + else + clone.Frame4:Destroy() + end + if (items[3]) then + clone.Frame3.TextLabel.Text = items[3].ItemName + table.remove(items, 3) + else + clone.Frame3:Destroy() + end + if (items[2]) then + clone.Frame2.TextLabel.Text = items[2].ItemName + table.remove(items, 2) + else + clone.Frame2:Destroy() + end + clone.Frame1.TextLabel.Text = items[1].ItemName + table.remove(items, 1) + end +end +-- Username +path.cashierGui.home.username.Text = game.Players.LocalPlayer.Name diff --git a/src/StarterGui/LundstrongOrders/chefClaimGui/chefClaimGuiClone.rbxmx b/src/StarterGui/LundstrongOrders/chefClaimGui/chefClaimGuiClone.rbxmx new file mode 100644 index 0000000..3350d21 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/chefClaimGui/chefClaimGuiClone.rbxmx @@ -0,0 +1,759 @@ + + true + null + nil + + + true + null + false + + false + + 800 + 600 + + true + true + 0 + 1 + chefClaimGuiClone + 50 + true + null + 1 + -1 + + 0 + 1 + 0 + + + + false + + 0 + 0 + + + true + 0 + + 0.980392218 + 0.937254965 + 0.937254965 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + -1 + 0 + + true + 1 + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + bgGreen + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + true + + 0 + 0 + + + true + 0 + 0 + + 0.980392218 + 0.937254965 + 0.937254965 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-bottom.png + + 0 + 0 + + + 0 + 0 + 0 + 0 + + true + false + 0 + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-middle.png + ScrollingFrame + null + null + null + null + + 0.400000006 + 0 + 0 + 10 + + null + 0 + + 0 + 0 + 0 + + 0 + 12 + 4 + true + true + null + + 0.579999983 + 0 + 1 + -10 + + 0 + -1 + + rbxasset://textures/ui/Scroll/scroll-top.png + 0 + 0 + true + 1 + + + + + + 0 + 0 + 0 + 10 + + + 1 + 0 + 0 + 90 + + 0 + 1 + 0 + UIGridLayout + 2 + -1 + 0 + + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 0.980392218 + 0.937254965 + 0.937254965 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + cloneFrame + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 0 + 100 + 0 + 100 + + 0 + -1 + 0 + + false + 1 + + + + false + + 0 + 0 + + + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame + null + null + null + null + + 0.100000001 + 0 + 0 + 0 + + null + 0 + false + null + + 0.800000012 + -12 + 1 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 7 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + https://www.roblox.com/Thumbs/Avatar.ashx?x=500&y=500&username=sasial + + 1 + 1 + 1 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + ImageLabel + null + null + null + null + + 0.075000003 + 0 + 0.100000001 + 0 + + null + 0 + 0 + false + null + + 0.393219143 + 0 + 0.5 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + TextLabel + null + null + null + null + + 0.400000006 + 0 + 0.100000001 + 0 + + false + null + 0 + false + null + + 0.600000024 + 0 + 0.200000003 + 0 + + 0 + -1 + + Sasial + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + true + + 0 + 0 + + + true + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + false + TextButton + null + null + null + null + + 0.100000001 + 0 + 0.600000024 + 0 + + false + null + 0 + true + false + null + + 0.800000012 + 0 + 0.300000012 + 0 + + 0 + -1 + 0 + + Claim + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 1 + + + + + + 0 + 7 + + UICorner + -1 + + + + + + true + + 0 + 0 + + + true + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + false + TextButton + null + null + null + null + + 0.200000003 + 0 + 0.200000003 + 0 + + false + null + 0 + true + false + null + + 0.600000024 + 0 + 0.600000024 + 0 + + 0 + -1 + 0 + + Claim + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + + + ID + -1 + + -1 + + + + + + + + + 0 + 7 + + UICorner + -1 + + + + + + \ No newline at end of file diff --git a/src/StarterGui/LundstrongOrders/chefClaimGui/init.meta.json b/src/StarterGui/LundstrongOrders/chefClaimGui/init.meta.json new file mode 100644 index 0000000..1025b06 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/chefClaimGui/init.meta.json @@ -0,0 +1,3 @@ +{ + "ignoreUnknownInstances": true +} \ No newline at end of file diff --git a/src/StarterGui/LundstrongOrders/chefClaimGui/remoteHandler.client.lua b/src/StarterGui/LundstrongOrders/chefClaimGui/remoteHandler.client.lua new file mode 100644 index 0000000..2150e5a --- /dev/null +++ b/src/StarterGui/LundstrongOrders/chefClaimGui/remoteHandler.client.lua @@ -0,0 +1,93 @@ +local tweenService = game:GetService("TweenService") +local tweenInfo = TweenInfo.new(1) +local isOrderClaimed = false +local function claimOrder(clone) + if (not isOrderClaimed) then + isOrderClaimed = true + game.ReplicatedStorage.LundstrongOrders.Events.claimOrder:FireServer(clone.ID.Value) + local tween1 = tweenService:Create(clone.Frame.TextButton, tweenInfo, { BackgroundColor3 = Color3.fromRGB(53, 79, 87) }) + tween1:Play() + tween1.Completed:Connect(function() + clone.Frame.TextButton.TextButton.Text = "Claimed" + clone.LayoutOrder = 2 + end) + end +end +local function handleChefUI(chefGui) + if (chefGui.Name == "chefClaimGui") then + print("INITIALISING GUI") + local path = { + ["chefGui"] = { + ["Frame"] = chefGui.Frame, + ["ScrollingFrame"] = chefGui.Frame.ScrollingFrame, + } + } + game.ReplicatedStorage.LundstrongOrders.Events.orderList.OnClientEvent:Connect(function(orders) + print("[LundstrongOrders] [ChefClaimGui] Event Received") + for _,v in pairs(orders) do + local foundOrder + for _,v2 in pairs(path.chefGui.ScrollingFrame:GetChildren()) do + if (v2:IsA("Frame")) then + if (v2.Name == "itemFrame") then + if (v2.ID.Value == v.id) then + foundOrder = true + if (v.isCompleted) then + isOrderClaimed = false + v2:Destroy() + break + end + if (v.isClaimed and v2.LayoutOrder ~= 2) then + local tween1 = tweenService:Create(v2.Frame.TextButton, tweenInfo, { BackgroundColor3 = Color3.fromRGB(53, 79, 87) }) + tween1:Play() + tween1.Completed:Connect(function() + v2.Frame.TextButton.TextButton.Text = "Claimed" + v2.LayoutOrder = 2 + end) + break + end + end + end + end + end + if (foundOrder) then + print("Order Found") + else + print("Order not found") + end + if (v.isClaimed) then + print("Order Claimed") + else + print("Order not Claimed") + end + if (v.isCompleted) then + print("Order Completed") + else + print("Order not Completed") + end + if (not foundOrder and not v.isCompleted) then + local clone = path.chefGui.ScrollingFrame.cloneFrame:Clone() + clone.Parent = path.chefGui.ScrollingFrame + clone:WaitForChild("ID").Value = v.id + clone.Frame:WaitForChild("TextLabel").Text = v.orderReceiver.Name + clone.Frame:WaitForChild("ImageLabel").Image = "https://www.roblox.com/Thumbs/Avatar.ashx?x=500&y=500&username="..v.orderReceiver.Name + clone.Name = "itemFrame" + clone.Visible = true + clone.Frame.TextButton.Activated:Connect(function() + claimOrder(clone) + end) + clone.Frame.TextButton.TextButton.Activated:Connect(function() + claimOrder(clone) + end) + end + end + end) + path.chefGui.ScrollingFrame.UIGridLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() + local absoluteSize = path.chefGui.ScrollingFrame.UIGridLayout.AbsoluteContentSize + path.chefGui.ScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, absoluteSize.Y) + end) + end +end +game.Players.LocalPlayer.PlayerGui.LundstrongOrders.chefClaimGui.DescendantAdded:Connect(handleChefUI) +for _,chefGui in pairs(game.Players.LocalPlayer.PlayerGui.LundstrongOrders.chefClaimGui:GetChildren()) do + handleChefUI(chefGui) +end diff --git a/src/StarterGui/LundstrongOrders/chefGui/chefGui.rbxmx b/src/StarterGui/LundstrongOrders/chefGui/chefGui.rbxmx new file mode 100644 index 0000000..4896cf2 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/chefGui/chefGui.rbxmx @@ -0,0 +1,784 @@ + + true + null + nil + + + + true + 0 + false + true + chefGui + true + null + -1 + + 1 + + + + true + + 0 + 0 + + + true + 0 + + 0.980392158 + 0.937254906 + 0.937254906 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + main + null + null + null + null + + 0.0500000007 + 0 + 0.200000003 + 0 + + null + 0 + false + null + + 0.308560491 + 0 + 0.580814719 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0.5 + 0 + + + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame + null + null + null + null + + 0.5 + 0 + 0.827000022 + 0 + + null + 0 + false + null + + 0.750000656 + 0 + 0.0950226262 + 0 + + 0 + -1 + 0 + + true + 2 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + TextButton + null + null + null + null + + 0 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 1 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Complete Order + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0.5 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + username + null + null + null + null + + 0.5 + 0 + 0.0500000007 + 0 + + false + null + 0 + false + null + + 0.388181746 + 0 + 0.069892846 + 0 + + 0 + -1 + + Order For: Sasial + + 0.207843155 + 0.309803933 + 0.34117648 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 0 + 1 + true + 4 + + + + + 0.779999971 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + true + + 0.5 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + true + false + 0 + Items + null + null + null + null + + 0.5 + 0 + 0.155000001 + 0 + + null + 0 + true + null + + 0.699999988 + 0 + 0.600000024 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 10 + + UICorner + -1 + + + + + + true + + 0 + 0 + + + true + 0 + 0 + + 0.980392218 + 0.937254965 + 0.937254965 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-bottom.png + + 0 + 0 + + + 0 + 0 + 0 + 0 + + true + false + 0 + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-middle.png + ScrollingFrame + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + + 0 + 0 + 0 + + 0 + 12 + 4 + true + true + null + + 1 + 0 + 1 + 0 + + 0 + -1 + + rbxasset://textures/ui/Scroll/scroll-top.png + 0 + 0 + true + 1 + + + + + 1 + 0 + UIListLayout + + 0 + 10 + + 2 + -1 + + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 2 + cloneFrame + null + null + null + null + + 0.100000001 + 0 + 0.940213799 + 0 + + null + 0 + false + null + + 0.851393223 + 0 + 0.150434211 + 0 + + 0 + -1 + 0 + + false + 1 + + + + + + 0 + 10 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + TextLabel + null + null + null + null + + 0.150000006 + 0 + 0.150000006 + 0 + + false + null + 0 + false + null + + 0.699999928 + 0 + 0.699999988 + 0 + + 0 + -1 + + Lemonade + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 1 + topPadding + null + null + null + null + + 0.100000001 + 0 + 0.940213799 + 0 + + null + 0 + false + null + + 0 + 0 + 0 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6599961695 + + 0.270588249 + 0.403921574 + 0.447058827 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + lundstrongOrdersLogo + null + null + null + null + + 0.0299999993 + 0 + 0.0299999993 + 0 + + null + 0 + 0 + false + null + + 0.209656641 + 0 + 0.0493927002 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + 3.53800011 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + + \ No newline at end of file diff --git a/src/StarterGui/LundstrongOrders/chefGui/handler.client.lua b/src/StarterGui/LundstrongOrders/chefGui/handler.client.lua new file mode 100644 index 0000000..571f685 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/chefGui/handler.client.lua @@ -0,0 +1,30 @@ +local chefGui = game.Players.LocalPlayer.PlayerGui.LundstrongOrders.chefGui.chefGui +local currentOrderId = false +game.ReplicatedStorage:WaitForChild("LundstrongOrders"):WaitForChild("Events"):WaitForChild("completeOrder").OnClientEvent:Connect(function(order) + chefGui.Enabled = true + for _,v in pairs(order.items) do + local clone = chefGui.main.Items.ScrollingFrame.cloneFrame:Clone() + clone.Parent = chefGui.main.Items.ScrollingFrame + clone.Name = "itemFrame" + clone.Visible = true + clone.TextLabel.Text = v + end + currentOrderId = order.id + chefGui.main.username.Text = "Order For: "..order.orderReceiver.Name +end) +chefGui.main.Frame.TextButton.MouseButton1Up:Connect(function() + if (currentOrderId) then + chefGui.Enabled = false + for _,v in pairs(chefGui.main.Items.ScrollingFrame:GetChildren()) do + if (v.Name == "itemFrame") then + v:Destroy() + end + end + game.ReplicatedStorage.LundstrongOrders.Events.completeOrder:FireServer(currentOrderId) + currentOrderId = false + end +end) +chefGui.main.Items.ScrollingFrame.UIListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() + local absoluteSize = chefGui.main.Items.ScrollingFrame.UIListLayout.AbsoluteContentSize + chefGui.main.Items.ScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, absoluteSize.Y) +end) diff --git a/src/StarterGui/LundstrongOrders/chefGui/init.meta.json b/src/StarterGui/LundstrongOrders/chefGui/init.meta.json new file mode 100644 index 0000000..1025b06 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/chefGui/init.meta.json @@ -0,0 +1,3 @@ +{ + "ignoreUnknownInstances": true +} \ No newline at end of file diff --git a/src/StarterGui/LundstrongOrders/init.meta.json b/src/StarterGui/LundstrongOrders/init.meta.json new file mode 100644 index 0000000..1025b06 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/init.meta.json @@ -0,0 +1,3 @@ +{ + "ignoreUnknownInstances": true +} \ No newline at end of file diff --git a/src/StarterGui/LundstrongOrders/kioskGui/buttonHandler.client.lua b/src/StarterGui/LundstrongOrders/kioskGui/buttonHandler.client.lua new file mode 100644 index 0000000..42f951b --- /dev/null +++ b/src/StarterGui/LundstrongOrders/kioskGui/buttonHandler.client.lua @@ -0,0 +1,106 @@ +local path = require(game.Players.LocalPlayer.PlayerGui.LundstrongOrders.kioskGui.filePaths) +local Nofications = require(game.ReplicatedStorage.LundstrongOrders.notifHandler) +local tween = require(game.ReplicatedStorage.LundstrongOrders.tween) +local tweenService = game:GetService("TweenService") +local tweeninfo = TweenInfo.new(.75) +local openBounce = false + +-- * Button Handlers + -- Cat. Selector +local function catSelect() + -- Bg + local tween1 = tweenService:Create(path.kioskGui.createOrder.categoryAnim, tweeninfo, { BackgroundTransparency = .2 }) + -- Rotate + local tween2 = tweenService:Create(path.kioskGui.createOrder.Categories.Categories.selectedCategory.dropdownButton, tweeninfo, { Rotation = 0 }) + tween1:Play() + tween1.Completed:Connect(function() + path.kioskGui.createOrder.Categories.Visible = true + wait(0.5) + tween2:Play() + end) +end +path.kioskGui.createOrder.Category.MouseButton1Up:Connect(catSelect) +path.kioskGui.createOrder.Category.usernameText.MouseButton1Up:Connect(catSelect) +path.kioskGui.createOrder.Category.dropdownButton.MouseButton1Up:Connect(catSelect) +path.kioskGui.createOrder.ScrollingFrame.UIGridLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() + local absoluteSize = path.kioskGui.createOrder.ScrollingFrame.UIGridLayout.AbsoluteContentSize + path.kioskGui.createOrder.ScrollingFrame.CanvasSize = UDim2.new(0, absoluteSize.X, 0, absoluteSize.Y) +end) +path.kioskGui.createOrder.summaryFrame.ScrollingFrame.UIGridLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() + local absoluteSize = path.kioskGui.createOrder.summaryFrame.ScrollingFrame.UIGridLayout.AbsoluteContentSize + path.kioskGui.createOrder.summaryFrame.ScrollingFrame.CanvasSize = UDim2.new(0, absoluteSize.X, 0, absoluteSize.Y) +end) +path.kioskGui.createOrder.exitButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.kioskGui.createOrder) +end) +path.kioskGui.createOrder.exitButton.TextButton.MouseButton1Up:Connect(function() + openBounce = false + tween:CreateExitTween(path.kioskGui.createOrder) +end) +path.kioskGui.createOrder.buttonFrame.clearAllItemsButton.MouseButton1Up:Connect(function() + for _,v in pairs(path.kioskGui.createOrder.summaryFrame.ScrollingFrame:GetChildren()) do + if (v:IsA("TextButton")) then + if (v.Name == "itemFrame") then + v:Destroy() + end + end + end +end) +local createOrderDebounce = false -- OrderCooldown is dealt with on the server to prevent exploiters. This is just to stop the script from breaking. +path.kioskGui.createOrder.buttonFrame.submitOrderButton.MouseButton1Up:Connect(function() + if (createOrderDebounce == false) then + createOrderDebounce = true + local items = {} + for _,v in pairs(path.kioskGui.createOrder.summaryFrame.ScrollingFrame:GetChildren()) do + if v.Name == "itemFrame" and v:IsA("TextButton") then + table.insert(items, v.TextLabel.Text) + end + end + print(items) + local orderSubmitted = game.ReplicatedStorage.LundstrongOrders.Events.createOrder:InvokeServer(game.Players.LocalPlayer.Name, items) + if (orderSubmitted == true) then + for _,v in pairs(path.kioskGui.createOrder.summaryFrame.ScrollingFrame:GetChildren()) do + if (v:IsA("TextButton")) then + if (v.Name == "itemFrame") then + v:Destroy() + end + end + end + createOrderDebounce = false + Nofications:CreateNotification("The order has been submitted!") + else + createOrderDebounce = false + Nofications:CreateNotification(orderSubmitted) + end + end +end) +-- * Fade IN +game.ReplicatedStorage:WaitForChild("LundstrongOrders"):WaitForChild("Events"):WaitForChild("enableGui").OnClientEvent:Connect(function(gui) + if (gui == "kioskGui") then + if (openBounce == false) then + openBounce = true + local tween1 = tweenService:Create(path.kioskGui.createOrder.animFrame, tweeninfo, {Transparency = 0}) + local tween2 = tweenService:Create(path.kioskGui.createOrder.bgGreenAnim, tweeninfo, {ImageTransparency = 0}) + local tween5 = tweenService:Create(path.kioskGui.createOrder.animFrame, tweeninfo, {Transparency = 1}) + local tween6 = tweenService:Create(path.kioskGui.createOrder.bgGreenAnim, tweeninfo, {ImageTransparency = 1}) + local tween7 = tweenService:Create(path.kioskGui.createOrder.exitButton, tweeninfo, {BackgroundTransparency = 0}) + local tween8 = tweenService:Create(path.kioskGui.createOrder.exitButton.TextButton, tweeninfo, {TextTransparency = 0}) + path.kioskGui.createOrder.animFrame.Transparency = 0 + path.kioskGui.createOrder.bgGreenAnim.ImageTransparency = 0 + path.kioskGui.createOrder.exitButton.BackgroundTransparency = 1 + path.kioskGui.createOrder.exitButton.TextButton.TextTransparency = 1 + path.kioskGuiFolder.kioskGui.Enabled = true + tween1:Play() + tween2:Play() + tween2.Completed:Connect(function() + path.kioskGui.createOrder.Visible = true + wait(0.2) + tween5:Play() + tween6:Play() + tween7:Play() + tween8:Play() + end) + end + end +end) diff --git a/src/StarterGui/LundstrongOrders/kioskGui/filePaths.lua b/src/StarterGui/LundstrongOrders/kioskGui/filePaths.lua new file mode 100644 index 0000000..2a6be05 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/kioskGui/filePaths.lua @@ -0,0 +1,11 @@ +local run = game:GetService("RunService") + +if (run:IsClient()) then -- ! This script can only run on the client side. + game.Players.LocalPlayer.PlayerGui.LundstrongOrders.kioskGui:WaitForChild("kioskGui") -- ? Is there a better way to do this? + return { + ["kioskGuiFolder"] = game.Players.LocalPlayer.PlayerGui.LundstrongOrders.kioskGui, + ["kioskGui"] = { + ["createOrder"] = game.Players.LocalPlayer.PlayerGui.LundstrongOrders.kioskGui.kioskGui.createOrder + } + } +end diff --git a/src/StarterGui/LundstrongOrders/kioskGui/init.meta.json b/src/StarterGui/LundstrongOrders/kioskGui/init.meta.json new file mode 100644 index 0000000..1025b06 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/kioskGui/init.meta.json @@ -0,0 +1,3 @@ +{ + "ignoreUnknownInstances": true +} \ No newline at end of file diff --git a/src/StarterGui/LundstrongOrders/kioskGui/kioskGui.rbxmx b/src/StarterGui/LundstrongOrders/kioskGui/kioskGui.rbxmx new file mode 100644 index 0000000..8865b20 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/kioskGui/kioskGui.rbxmx @@ -0,0 +1,2465 @@ + + true + null + nil + + + + true + 0 + false + false + kioskGui + true + null + -1 + + 1 + + + + true + + 0 + 0 + + + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + createOrder + null + null + null + null + + 0.200000003 + 0 + 0.200000003 + 0 + + null + 0 + false + null + + 0.67234385 + 0 + 0.580814719 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + + 0.0235575978 + 0 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.980392218 + 0.937254965 + 0.937254965 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + bgGreen + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6024885069 + + 0.980392218 + 0.937254965 + 0.937254965 + + + 0 + 0 + + + 0 + 0 + + 1 + 0 + bgGreenAnim + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 6 + + + + + true + + 0 + 0 + + + false + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 4 + 0 + 1 + -1 + false + exitButton + null + null + null + null + + 0.97955966 + 0 + -0.0339366533 + 0 + + false + null + 0 + true + false + null + + 0.0384759046 + 0 + 0.0723981932 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 4 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0.5 + 0.5 + + + false + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + false + TextButton + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + false + null + 0 + true + false + null + + 0.899999976 + 0 + 0.899999976 + 0 + + 0 + -1 + 0 + + X + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + titleLabel + null + null + null + null + + 0.660915613 + 0 + 0.0384615362 + 0 + + false + null + 0 + false + null + + 0.320219994 + 0 + 0.142533958 + 0 + + 0 + -1 + + Create an Order + + 0.980392218 + 0.937254965 + 0.937254965 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + true + + 0 + 0 + + + true + 0 + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882354 + 0.164705887 + 0.20784314 + + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-bottom.png + + 0 + 0 + + + 0 + 0 + 0 + 0 + + true + false + 0 + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-middle.png + ScrollingFrame + null + null + null + null + + 0.310212016 + 0 + 0.454751164 + 0 + + null + 0 + + 0.980392218 + 0.937254965 + 0.937254965 + + 0.600000024 + 12 + 4 + true + true + null + + 0.371532947 + 0 + 0.300301045 + 0 + + 0 + -1 + + rbxasset://textures/ui/Scroll/scroll-top.png + 0 + 0 + true + 1 + + + + + + 0 + 10 + 0 + 10 + + + 0.5 + -16 + 0 + 40 + + 0 + 0 + 1 + UIGridLayout + 2 + -1 + 0 + + 1 + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.980392218 + 0.937254965 + 0.937254965 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + cloneFrame + null + null + null + null + + 0.647000015 + 0 + 0 + 200 + + false + null + 0 + false + false + null + + 0.291000009 + 0 + 0 + 40 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + false + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + false + TextLabel + null + null + null + null + + 0.100000001 + 0 + 0.100000001 + 0 + + false + null + 0 + false + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + 0 + + Lemonade + + 0.207843155 + 0.309803933 + 0.34117648 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + + false + + 0 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + summaryFrame + null + null + null + null + + 0.697375774 + 0 + 0.358569771 + 0 + + null + 0 + false + null + + 0.281355053 + 0 + 0.548669994 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + itemDesc + null + null + null + null + + 0.0500000007 + 0 + 0.0500000007 + 0 + + false + null + 0 + false + null + + 0.899517119 + 0 + 0.102614097 + 0 + + 0 + -1 + + Order Summary + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 8 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + true + + 0.5 + 0 + + + true + 0 + 0 + + 0.980392158 + 0.937254906 + 0.937254906 + + 1 + + 0.105882354 + 0.164705887 + 0.20784314 + + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-bottom.png + + 0 + 0 + + + 0 + 0 + 0 + 0 + + true + false + 0 + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-middle.png + ScrollingFrame + null + null + null + null + + 0.5 + 0 + 0.224999994 + 0 + + null + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0.600000024 + 12 + 4 + true + true + null + + 0.600000024 + 0 + 0.548080325 + 0 + + 0 + -1 + + rbxasset://textures/ui/Scroll/scroll-top.png + 0 + 0 + true + 1 + + + + + + 0 + 10 + 0 + 10 + + + 1 + -20 + 0 + 32 + + 0 + 0 + 1 + UIGridLayout + 2 + -1 + 0 + + 1 + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + cloneFrame + null + null + null + null + + 0.647000015 + 0 + 0 + 200 + + false + null + 0 + false + false + null + + 0.291000009 + 0 + 0 + 40 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + false + 1 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + false + TextLabel + null + null + null + null + + 0.100000001 + 0 + 0.100000001 + 0 + + false + null + 0 + false + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + 0 + + Lemonade + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + + false + + 0 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + itemDesc + null + null + null + null + + 0.200000003 + 0 + 0.875 + 0 + + false + null + 0 + false + null + + 0.598201036 + 0 + 0.102614097 + 0 + + 0 + -1 + + Click an Item to remove it + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 8 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Categories + null + null + null + null + + 0.786000013 + 0 + 0.25 + 0 + + null + 0 + false + null + + 0.192000002 + 0 + 0.271850437 + 0 + + 0 + -1 + 0 + + false + 4 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0 + + + true + 0 + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-bottom.png + + 0 + 0 + + + 0 + 0 + 0 + 108 + + true + false + 0 + 0 + 0 + rbxasset://textures/ui/Scroll/scroll-middle.png + Categories + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + 12 + 4 + true + false + null + + 1 + 0 + 1 + 0 + + 0 + -1 + + rbxasset://textures/ui/Scroll/scroll-top.png + 0 + 0 + true + 4 + + + + + 1 + 1 + UIListLayout + + 0 + 0 + + 2 + -1 + + 1 + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 1 + 1 + -1 + false + selectedCategory + null + null + null + null + + 0.786351323 + 0 + 0.339366525 + 0 + + false + null + 0 + false + false + null + + 1 + -12 + 0.25 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 3 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0 + 0.5 + + + true + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + false + usernameText + null + null + null + null + + 0.159836203 + 0 + 0.500000358 + 0 + + false + null + 0 + true + false + null + + 0.712225437 + 0 + 0.800000191 + 0 + + 0 + -1 + 0 + + Drinks + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 8 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 1 + 1 + true + 1 + + + + + false + + 0 + 0.5 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + + http://www.roblox.com/asset/?id=302248702 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + false + dropdownButton + null + null + null + null + + 0.0500000007 + 0 + 0.5 + 0 + + + null + 90 + 0 + false + false + null + + 0.0750986859 + 0 + 0.399779946 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + 0 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + + + + false + + 0 + 0 + + + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + animFrame + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + -1 + 0 + + true + 5 + + + + + + 0.0235575978 + 0 + + UICorner + -1 + + + + + + + false + + 0 + 0 + + + true + 0 + + 0.298039228 + 0.298039228 + 0.298039228 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + categoryAnim + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 1 + 0 + + 0 + -1 + 0 + + true + 3 + + + + + + 0.0235575978 + 0 + + UICorner + -1 + + + + + + + false + + 0 + 0 + + + true + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + 0 + 1 + -1 + false + Category + null + null + null + null + + 0.786000013 + 0 + 0.25 + 0 + + false + null + 0 + false + false + null + + 0.192379519 + 0 + 0.0680000037 + 0 + + 0 + -1 + 0 + + Button + + 0.105882362 + 0.164705887 + 0.207843155 + + true + 8 + + 0 + 0 + 0 + + 1 + 1 + 0 + true + 2 + 1 + true + 3 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + false + + 0 + 0.5 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + + http://www.roblox.com/asset/?id=302248702 + + 0.20784314 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + false + dropdownButton + null + null + null + null + + 0.0500000007 + 0 + 0.5 + 0 + + + null + 90 + 0 + false + false + null + + 0.0750986859 + 0 + 0.399779946 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + 0 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + + true + + 0 + 0.5 + + + true + true + 0 + + 0.815686285 + 0.815686285 + 0.815686285 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 5 + 0 + 1 + -1 + false + usernameText + null + null + null + null + + 0.159836203 + 0 + 0.500000358 + 0 + + false + null + 0 + true + false + null + + 0.712000012 + -12 + 0.800000012 + 0 + + 0 + -1 + 0 + + Drinks + + 0.20784314 + 0.309803933 + 0.34117648 + + true + 8 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 1 + 1 + true + 1 + + + + + + false + + 0 + 0 + + + true + 0 + + 0.270588249 + 0.403921574 + 0.447058827 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + buttonFrame + null + null + null + null + + 0.200000003 + 0 + 0.876999974 + 0 + + null + 0 + false + null + + 0.400000006 + 0 + 0.0700000003 + 0 + + 0 + -1 + 0 + + true + 2 + + + + + + 0 + 15 + + UICorner + -1 + + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + submitOrderButton + null + null + null + null + + 0 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 0.5 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Submit Order + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + true + + 0 + 0 + + + true + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 3 + 0 + 1 + -1 + false + clearAllItemsButton + null + null + null + null + + 0.5 + 0 + 0.150000006 + 0 + + false + null + 0 + true + false + null + + 0.5 + 0 + 0.699999988 + 0 + + 0 + -1 + 0 + + Clear All Items + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + 1.88165009 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + http://www.roblox.com/asset/?id=6599961695 + + 0.207843155 + 0.309803933 + 0.34117648 + + + 0 + 0 + + + 0 + 0 + + 0 + 0 + lundstrongOrdersLogo + null + null + null + null + + 0.0160000008 + 0 + 0.0299999993 + 0 + + null + 0 + 0 + false + null + + 0.119113393 + 0 + 0.0636244863 + 0 + + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + -1 + + + 1 + 0 + 1 + 0 + + true + 1 + + + + 3.53800011 + 0 + + 0 + UIAspectRatioConstraint + -1 + + + + + + + \ No newline at end of file diff --git a/src/StarterGui/LundstrongOrders/kioskGui/setup.client.lua b/src/StarterGui/LundstrongOrders/kioskGui/setup.client.lua new file mode 100644 index 0000000..c7e0588 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/kioskGui/setup.client.lua @@ -0,0 +1,117 @@ +local path = require(game.Players.LocalPlayer.PlayerGui.LundstrongOrders.kioskGui.filePaths) +local config = require(workspace.LundstrongOrders.Configuration) +local tweenService = game:GetService("TweenService") +local tweeninfo = TweenInfo.new(1) + +local function getTableKeys(tab) + local keyset = {} + for _,v in ipairs(tab) do + for k,_ in pairs(v) do + keyset[#keyset + 1] = k -- More effective/optimised than table.insert(keyset,k) + end + end + return keyset +end + +local function createSummaryItem(item) + local clone = path.kioskGui.createOrder.summaryFrame.ScrollingFrame.cloneFrame:Clone() + clone.Parent = path.kioskGui.createOrder.summaryFrame.ScrollingFrame + clone.Visible = true + clone.TextLabel.Text = item.TextLabel.Text + clone.Name = "itemFrame" + clone.MouseButton1Up:Connect(function() + clone:Destroy() + end) + clone.TextLabel.MouseButton1Up:Connect(function() + clone:Destroy() + end) +end + +-- * Cats (Create Order) +for i,v in pairs(getTableKeys(config.MenuItems.MenuItems)) do + if (i == 1) then + path.kioskGui.createOrder.Categories.Categories.selectedCategory.usernameText.Text = v + path.kioskGui.createOrder.Categories.Categories.selectedCategory.LayoutOrder = i + path.kioskGui.createOrder.Category.usernameText.Text = v + -- Add items. + for _,itemText in pairs(config.MenuItems.MenuItems[i][v]) do + local clone = path.kioskGui.createOrder.ScrollingFrame.cloneFrame:Clone() + clone.Parent = path.kioskGui.createOrder.ScrollingFrame + clone.Visible = true + clone.TextLabel.Text = itemText.ItemName + clone.Name = "itemFrame" + clone.MouseButton1Up:Connect(function() + createSummaryItem(clone) + end) + clone.TextLabel.MouseButton1Up:Connect(function() + createSummaryItem(clone) + end) + end + else + local clone = path.kioskGui.createOrder.Categories.Categories.selectedCategory:Clone() + clone.Parent = path.kioskGui.createOrder.Categories.Categories + clone.usernameText.Text = v + clone.Name = "Category" + clone.LayoutOrder = i + end +end +path.kioskGui.createOrder.Categories.Categories.CanvasSize = UDim2.new(0,0,0, ((#path.kioskGui.createOrder.Categories.Categories:GetChildren() - 1 ) * path.kioskGui.createOrder.Category.AbsoluteSize.Y)) +if (#path.kioskGui.createOrder.Categories.Categories:GetChildren() < 5) then + path.kioskGui.createOrder.Categories.Size = UDim2.new(0.192, 0, ((#path.kioskGui.createOrder.Categories.Categories:GetChildren() - 1 ) * 0.068), 0) + path.kioskGui.createOrder.Category.usernameText.Size = UDim2.new(0.712, 0, 0.8, 0) +end +for _,v in pairs(path.kioskGui.createOrder.Categories.Categories:GetChildren()) do + if v:IsA("TextButton") then + if (#path.kioskGui.createOrder.Categories.Categories:GetChildren() < 5) then + v.Size = UDim2.new(1, 0, 1/(#path.kioskGui.createOrder.Categories.Categories:GetChildren() -1), 0) + else + v.Size = UDim2.new(1, -12, 1/(#path.kioskGui.createOrder.Categories.Categories:GetChildren() -1), 0) + end + end +end +local function catSelected(newCat) + -- Bg + local tween2 = tweenService:Create(path.kioskGui.createOrder.categoryAnim, tweeninfo, { BackgroundTransparency = 1 }) + -- Rotate + local tween1 = tweenService:Create(path.kioskGui.createOrder.Categories.Categories.selectedCategory.dropdownButton, tweeninfo, { Rotation = 90 }) + path.kioskGui.createOrder.Category.usernameText.Text = newCat.usernameText.Text + tween1:Play() + tween1.Completed:Connect(function() + path.kioskGui.createOrder.Categories.Visible = false + wait(0.5) + for _,v in pairs(path.kioskGui.createOrder.ScrollingFrame:GetChildren()) do + if v:IsA("TextButton") then + if v.Name == "itemFrame" then + v:Destroy() + end + end + end + for _,itemText in pairs(config.MenuItems.MenuItems[newCat.LayoutOrder][newCat.usernameText.Text]) do + local clone = path.kioskGui.createOrder.ScrollingFrame.cloneFrame:Clone() + clone.Parent = path.kioskGui.createOrder.ScrollingFrame + clone.Visible = true + clone.TextLabel.Text = itemText.ItemName + clone.Name = "itemFrame" + clone.MouseButton1Up:Connect(function() + createSummaryItem(clone) + end) + clone.TextLabel.MouseButton1Up:Connect(function() + createSummaryItem(clone) + end) + end + tween2:Play() + end) +end +for _,v in pairs(path.kioskGui.createOrder.Categories.Categories:GetChildren()) do + if v:IsA("TextButton") then + v.MouseButton1Up:Connect(function() + catSelected(v) + end) + v.dropdownButton.MouseButton1Up:Connect(function() + catSelected(v) + end) + v.usernameText.MouseButton1Up:Connect(function() + catSelected(v) + end) + end +end diff --git a/src/StarterGui/LundstrongOrders/notification/Sound.model.json b/src/StarterGui/LundstrongOrders/notification/Sound.model.json new file mode 100644 index 0000000..191ad30 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/notification/Sound.model.json @@ -0,0 +1,7 @@ +{ + "ClassName": "Sound", + "Properties": { + "SoundId": "rbxassetid://255881176", + "Volume": 1 + } +} diff --git a/src/StarterGui/LundstrongOrders/notification/handler.client.lua b/src/StarterGui/LundstrongOrders/notification/handler.client.lua new file mode 100644 index 0000000..e8f4326 --- /dev/null +++ b/src/StarterGui/LundstrongOrders/notification/handler.client.lua @@ -0,0 +1,5 @@ +local Nofications = require(game.ReplicatedStorage.LundstrongOrders.notifHandler) + +game.ReplicatedStorage.LundstrongOrders.Events.sendNotification.OnClientEvent:Connect(function(notification: string, time: number?) + Nofications:CreateNotification(notification, time) +end) diff --git a/src/StarterGui/LundstrongOrders/notification/notification.rbxmx b/src/StarterGui/LundstrongOrders/notification/notification.rbxmx new file mode 100644 index 0000000..757947a --- /dev/null +++ b/src/StarterGui/LundstrongOrders/notification/notification.rbxmx @@ -0,0 +1,400 @@ + + true + null + nil + + + + true + 0 + true + false + notification + true + null + -1 + + 1 + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Container + null + null + null + null + + 1 + -220 + 0 + 0 + + null + 0 + false + null + + 0 + 220 + 1 + 0 + + 0 + -1 + 0 + + true + 1 + + + + false + + 0 + 0 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + true + false + 0 + Demo + null + null + null + null + + 0 + 0 + 0.89937669 + 0 + + null + 0 + false + null + + 1 + 0 + 0 + 100 + + 0 + -1 + 0 + + true + 1 + + + + false + + 0 + 0 + + + true + 0 + + 0.207843155 + 0.309803933 + 0.34117648 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + true + false + 0 + Frame + null + null + null + null + + 0.100000001 + 0 + 1.10000002 + 0 + + null + 0 + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + + 0.100000001 + 0 + + UICorner + -1 + + + + + + false + + 0.5 + 0 + + + true + 0 + + 1 + 1 + 1 + + 0 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + Frame + null + null + null + null + + 0.5 + 0 + 0.949999988 + 0 + + null + 0 + false + null + + 1 + 0 + 0.0500000007 + 0 + + 0 + -1 + 0 + + true + 1 + + + + + false + + 0 + 0 + + + true + 0 + + 0.427451015 + 0.643137276 + 0.70588237 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 0 + textFrame + null + null + null + null + + 0 + 0 + 0 + 0 + + null + 0 + false + null + + 1 + 0 + 0.949999988 + 0 + + 0 + -1 + 0 + + true + 1 + + + + false + + 0.5 + 0.5 + + + true + 0 + + 1 + 1 + 1 + + 1 + + 0.105882362 + 0.164705887 + 0.207843155 + + 0 + 0 + false + false + 16 + 0 + 1 + -1 + TextLabel + null + null + null + null + + 0.5 + 0 + 0.5 + 0 + + false + null + 0 + false + null + + 0.800000012 + 0 + 0.800000012 + 0 + + 0 + -1 + + Your order is now being prepared by sasial. + + 1 + 1 + 1 + + true + 14 + + 0 + 0 + 0 + + 1 + 0 + 0 + true + 2 + 1 + true + 1 + + + + + + + + + 1 + 2 + UIListLayout + + 0 + 0 + + 2 + -1 + + 2 + + + + + \ No newline at end of file diff --git a/src/init.lua b/src/init.lua new file mode 100644 index 0000000..f66a7f8 --- /dev/null +++ b/src/init.lua @@ -0,0 +1,25 @@ +local ps = game:GetService("Players") +return function() + if script:FindFirstChild("Server") then + script:FindFirstChild("Server").LundstrongOrders.Parent = game:GetService("ServerScriptService") + else + error("[LundstrongOrders] Unable to load a main module of the system. Try shutting down this sever to fix the issue. (Module: Server)") + end + if script:FindFirstChild("ReplicatedStorage") then + script:FindFirstChild("ReplicatedStorage").LundstrongOrders.Parent = game:GetService("ReplicatedStorage") + else + error("[LundstrongOrders] Unable to load a main module of the system. Try shutting down this sever to fix the issue. (Module: Shared/RepS)") + end + if (script:FindFirstChild("StarterGui")) then + for _,i in pairs(ps:GetPlayers()) do + for _,v in pairs(script.StarterGui:GetChildren()) do + v:Clone().Parent = i.PlayerGui + end + end + for _,v in pairs(script.StarterGui:GetChildren()) do + v.Parent = game.StarterGui + end + else + error("[LundstrongOrders] Unable to load a main module of the system. Try shutting down this server to fix the issue. (Module: Client)") + end +end