├── .gitignore
├── Developers
├── Debugging API.md
├── Filesystem.md
├── README.md
├── ScriptBlox
│ ├── API.md
│ ├── Priorities.md
│ └── ScriptBlox.md
└── UI
│ ├── Components
│ ├── Base.md
│ ├── Button.md
│ ├── Checkbox.md
│ ├── ExecBox.md
│ ├── Image.md
│ ├── Search.md
│ ├── Spacer.md
│ ├── Text.md
│ └── Textbox.md
│ └── README.md
├── Getting Started
├── Introduction.md
├── Key System.md
├── Running Scripts.md
└── Settings.md
├── README.md
├── Templates
├── Attribute.md
├── Event.md
├── Example Component.md
└── Method.md
└── resources
├── ActiveVsPassive.png
├── KeyPrompt.png
└── ScriptsTab.png
/.gitignore:
--------------------------------------------------------------------------------
1 | .obsidian
--------------------------------------------------------------------------------
/Developers/Debugging API.md:
--------------------------------------------------------------------------------
1 | # Debugging API
2 | > WIP | Things in here may be unimplemented or documentation may be invalid. Proceed with extreme caution.
3 |
4 | The Fluxus Android Debugging API allows developers to more easily troubleshoot errors within scripts running on Fluxus Android.
5 | It is not used by your end-script, but rather by an extension in your IDE.
6 |
7 | This API will be documented once it's implemented. For now, you'll need to wait.
--------------------------------------------------------------------------------
/Developers/Filesystem.md:
--------------------------------------------------------------------------------
1 | # Filesystem
2 | The Filesystem API ([see UNC FS](https://github.com/unified-naming-convention/NamingStandard/blob/main/api/filesystem.md)) functions allow you to read & write data to files in a directory (`Workspace`) on the device.
3 |
4 | ## Location
5 |
6 | This directory is located at `/storage/emulated/0/Android/data/com.roblox.client/files/Fluxus/Workspace` on most devices & can be accessed using a more advanced file management tool like [Total Commander](https://play.google.com/store/apps/details?id=com.ghisler.android.TotalCommander&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1) or [MT Manager](https://apkcombo.com/mt-manager/bin.mt.plus/).
7 |
8 | ## APIs
9 | ---
10 | ### readfile
11 | ```ts
12 | declare function readfile(path: string): string;
13 | ```
14 | Reads the contents of the file at `Workspace/(path)` & returns said content.
15 |
16 | #### Note
17 | In certain edge-cases, attempting to read certain files will cause SecurityExceptions. Use with caution.
18 |
19 | #### Example
20 | ```lua
21 | local filename = 'test.txt'
22 | if (not isfile(filename)) then writefile(filename, 'default content') end
23 | print(readfile(filename)) --> prints 'default content', unless the file is altered on disk.
24 | ```
25 | ---
26 | ### writefile
27 | ```ts
28 | declare function writefile(path: string, data: string): unknown
29 | ```
30 | Writes `data` to the file at `Workspace/(path)` - Errors if `path` is a directory or if `data` is not a string.
31 |
32 | #### Example
33 | ```lua
34 | local filename = 'test.txt'
35 | if (not isfile(filename)) then writefile(filename, 'default content') end
36 | print(readfile(filename)) --> prints 'default content', unless the file is altered on disk.
37 | ```
38 | ---
39 | ### isfile
40 | ```ts
41 | declare function isfile(path: string): boolean
42 | ```
43 | Returns `true` if `path` exists, otherwise returns `false`
44 |
45 | #### Example
46 | ```lua
47 | local filename = 'test.txt'
48 | if (not isfile(filename)) then writefile(filename, 'default content') end
49 | print(readfile(filename)) --> prints 'default content', unless the file is altered on disk.
50 | ```
51 | ---
52 | ### delfile
53 | ```ts
54 | declare function delfile(path: string): unknown
55 | ```
56 | Deletes the file located at `path`. Errors if no file was found.
57 | #### Example
58 | ```lua
59 | local file = 'example'
60 | writefile(file)
61 | print(isfile(file)) --> true
62 | delfile(file)
63 | print(isfile(file)) --> false
64 | ```
65 | ---
66 | ### listfiles
67 | ```ts
68 | declare function listfiles(path: string): string[]
69 | ```
70 | Returns a list of files & directories in the directory located at `path` - The paths are relative to the `Workspace` directory.
71 |
72 | #### Note
73 | Certain Internal Fluxus files will be skipped by this function.
74 |
75 | #### Example
76 | ```lua
77 | if not isfolder('test') then makefolder('test') end
78 | writefile('test/test.txt', 'example')
79 | for idx, file in pairs(listfiles('test/')) do
80 | print(string.format('File: %s\nContent: %s')) --> File: test/test.txt\nContent: example
81 | end
82 | ```
83 | ---
84 | ### makefolder
85 | ```ts
86 | declare function makefolder(path: string): unknown
87 | ```
88 | Creates a folder at `path`, unless it already exists.
89 | #### Example
90 | ```lua
91 | if not isfolder('test') then makefolder('test') end
92 | writefile('test/test.txt', 'example') -- without the first line, this would've errored because the directory `test/` does not exist
93 | for idx, file in pairs(listfiles('test/')) do
94 | print(string.format('File: %s\nContent: %s')) --> File: test/test.txt\nContent: example
95 | end
96 | ```
97 | ---
98 | ### isfolder
99 | ```ts
100 | declare function isfolder(path: string): boolean
101 | ```
102 | Returns `true` if the directory exists, otherwise returns `false`.
103 | #### Example
104 | ```lua
105 | if not isfolder('test') then makefolder('test') end
106 | writefile('test/test.txt', 'example') -- without the first line, this would've errored because the directory `test/` does not exist
107 | for idx, file in pairs(listfiles('test/')) do
108 | print(string.format('File: %s\nContent: %s')) --> File: test/test.txt\nContent: example
109 | end
110 | ```
111 | ---
112 | ### delfolder
113 | ```ts
114 | declare function delfolder(path: string): unknown
115 | ```
116 | Deletes the folder located at `path`. Errors if no folder was found.
117 | #### Example
118 | ```lua
119 | local folder = 'example'
120 | makefolder(folder)
121 | print(isfolder(folder)) --> true
122 | delfolder(folder)
123 | print(isfolder(folder)) --> false
124 | ```
125 |
--------------------------------------------------------------------------------
/Developers/README.md:
--------------------------------------------------------------------------------
1 | # Fluxus Android Developer Documentation
2 | Non-complete list of Fluxus Android Developer Documentation:
3 | - [UI](/Developers/UI/README.md) | A UI Library baked into Fluxus Android
4 | - [Mobile Debugging API](/Developers/Debugging%20API.md) | An API for better debugging Mobile Devices
5 | - [Filesystem API](/Developers/Filesystem.md) | The [UNC Filesystem APIs](https://github.com/unified-naming-convention/NamingStandard/blob/main/api/filesystem.md), aswell as where the workspace directory is found on Fluxus Android
6 | - [ScriptBlox](/Developers/ScriptBlox/ScriptBlox.md) | Information on how we sort scripts within our ScriptBlox UI & documentation for integrating ScriptBlox into your own codebase
7 | - [UNC](https://scriptunc.org) | The Unified Naming Convention - Fluxus Android supports a giant chunk of it's methods, and it documents them well. Although we do re-document some methods in UNC, we assume you look at the UNC docs for most of them.
8 |
--------------------------------------------------------------------------------
/Developers/ScriptBlox/API.md:
--------------------------------------------------------------------------------
1 | # API
2 | > TODO: Document the ScriptBlox API Global
--------------------------------------------------------------------------------
/Developers/ScriptBlox/Priorities.md:
--------------------------------------------------------------------------------
1 | # Priorities
2 | The Fluxus Android ScriptBlox Search Integration adds some additional priorities ontop of the ones in ScriptBlox's built in search.
3 | This prioritization is done using points; the more points, the higher up the script, the more users will find it.
4 |
5 | The priority system uses the following factors to prioritize a script:
6 |
7 | 1. Developer marks as supporting a Mobile UI
8 | We check if the script has any of the following in either the title, or the source code (we do NOT check loadstringed assets for this; if you use a loadstring, put it above/below the loadstring line), and mark it as "compatible" if it has them (case-insensitive):
9 | - `mobile`
10 | - `android`
11 | - `fluxus android`
12 | - `flux android`
13 | - `fluxusandroid`
14 | - `-- @supports-fluxus-android`
15 | - `-- @supports-mobile-ui`
16 | Only put these in your scripts **if you have tested them with a mobile UI on a phone**. Your UI may not be user-friendly on a small device.
17 |
18 | This prioritizes the script by 5 points
19 | 2. Game ID Matches
20 | We check if the Game ID matches the current Game ID. Simple.
21 | This prioritizes the script by 2 points
22 | 3. Universal Script
23 | We check if the script is marked as a universal script or not.
24 | This prioritizes the script by 1 point
25 | 4. Verified Script
26 | We check if the script is marked as "verified" (by the scriptblox team, not us!)
27 | This prioritizes the script by 1 point
28 | 5. Patched Script
29 | We check if the script is marked as "Pached" (by the scriptblox team, not us!)
30 | This **de**-prioritizes the script by 50 points; guaranteeing it will be at the very bottom of the search rankings.
--------------------------------------------------------------------------------
/Developers/ScriptBlox/ScriptBlox.md:
--------------------------------------------------------------------------------
1 | # ScriptBlox
2 | This directory documents ScriptBlox-related features.
3 |
4 | - [API](/Developers/ScriptBlox/API.md) | Documentation for the Scriptblox API global
5 | - [Priorities](/Developers/ScriptBlox/Priorities.md) | Documentation on how the built-in UI prioritizes scripts returned from ScriptBlox Search Results
6 |
--------------------------------------------------------------------------------
/Developers/UI/Components/Base.md:
--------------------------------------------------------------------------------
1 | # Base
2 | This is the "base" component. It cannot be directly created, however it's bethods can be called on any component.
3 |
4 | ## Methods
5 | ### SetVisible
6 | ```lua
7 | export function SetVisible(visible: boolean): Component;
8 | ```
9 | Sets the component as visible/hidden
10 | #### Example
11 | ```lua
12 | local text = tab:Create('Text', 'Hello World'):SetVisible(false); --> Creates a hidden component
13 | task.wait(2);
14 | text:SetVisible(true); --> Shows it after 2 seconds
15 | ```
16 |
--------------------------------------------------------------------------------
/Developers/UI/Components/Button.md:
--------------------------------------------------------------------------------
1 | # Button
2 | A [Button](https://en.wikipedia.org/wiki/Button_(computing)) is the simplest type of input, triggered by a user tapping/clicking the button.
3 | ### Active vs Passive Buttons
4 | Activie buttons are meant as a more "primary" type of button, where passive ones are more "secondary".
5 | Below, there's an image comparing the two:
6 | 
7 | ## Constructor
8 | ```ts
9 | export function(state: 'active'|'passive', buttonText: string, sidebarText: string, callback?: ()=>any): ButtonComponent;
10 | export function(state: 'active'|'passive', buttonText: string, callback?: ()=>any): ButtonComponent;
11 | ```
12 | Creates a Button & binds `callback` to it's clicks.
13 | If `sidebarText` is specified, the button will be smaller and on the right of the component, next to `sidebarText`.
14 | #### Example
15 | ```lua
16 | local button = tab:Create('Button', 'active', 'Hello there! Click/Tap me!', function()
17 | print('Clicked');
18 | end);
19 | ```
20 | ---
21 | ## Methods
22 | ### SetText
23 | ```ts
24 | export function SetText(text: string): ButtonComponent;
25 | ```
26 | Sets the button's text. Note that this only affects the text on the button, not the sidebarText - the only way to change that is by using [Update()](#update).
27 | #### Example
28 | ```lua
29 | local button = tab:Create('Button', 'active', 'Hello there!');
30 | button:SetText('Oh hello there.')
31 | ```
32 | ---
33 | ### Update
34 | ```ts
35 | export function Update(...args: ButtonComponentConstructorArgs): ButtonComponent;
36 | ```
37 | See [Constructor](#constructor). This effectively replaces a button with one equivalent to if it was created using `...args` as the input.
38 | #### Example
39 | ```lua
40 | local button = tab:Create('Button', 'active', 'Some button');
41 | button:Update('passive','Click me','This is now a button with sidebarText')
42 | ```
43 | ---
44 | ### \_SetScaleY
45 | ```ts
46 | export function _SetScaleY(scaleY: number): ButtonComponent;
47 | ```
48 | Sets the component's Y size to `scaleY` times the original.
49 | > **⚠ THIS IS VERY BROKEN ⚠**
50 | > This is a very unstable method that I will likely never fix. If this causes funky UI behaviour, don't say I didn't warn you.
51 | > **⚠ UNSTABLE NAME ⚠**
52 | > If I ever fix this, the name will change from `_SetScaleY` to `SetScaleY` or `SetYScale`. Your code __will__ break if this ever happens.
53 | #### Example
54 | ```lua
55 | local button = tab:Create('Button', 'active', 'Some button');
56 | button:_SetScaleY(5) -- makes the button 5x bigger than default, don't do this plz
57 | ```
58 | ---
59 | ## Events
60 | ### Clicked
61 | ```ts
62 | export type Changed = Event;
63 | ```
64 | Fired when the user clicks the button.
65 | #### Example
66 | ```lua
67 | button.Clicked:Connect(function()print('user clicked btn');end);
68 | ```
--------------------------------------------------------------------------------
/Developers/UI/Components/Checkbox.md:
--------------------------------------------------------------------------------
1 | # Checkbox
2 | ## Constructor
3 | ```ts
4 | export function(text: string, checked?: boolean = false): TextComponent;
5 | ```
6 | Creates a checkbox labelled with `text`.
7 | ##### Example
8 | ```lua
9 | local checkbox = tab:Create('Checkbox', 'Example On', true);
10 | local checkbox2 = tab:Create('Checkbox', 'Example Off', true);
11 | checkbox.Changed:Connect(function(status)print('Checkbox set to:',status);end);
12 | checkbox2.Changed:Connect(function(status)print('Checkbox2 set to:',status);end);
13 | ```
14 | ---
15 | ## Methods
16 | ### Set
17 | ```ts
18 | export function Set(checked: boolean): TextComponent;
19 | ```
20 | Sets the Checkbox's Status to `checked`. Fires [`Changed`](#changed) if the state doesn't match the previous one.
21 | #### Example
22 | ```lua
23 | local checkbox = tab:Create('Checkbox', 'Example');
24 | checkbox:Set(true);
25 | print(checkbox.Status); --> true
26 | checkbox:Set(false);
27 | print(checkbox.Status); --> false
28 | ```
29 | ---
30 | ### Toggle
31 | ```ts
32 | export function Toggle(): TextComponent;
33 | ```
34 | Sets the Checkbox's Status to the inverse of `checkbox.Status`. Fires [`Changed`](#changed).
35 | #### Example
36 | ```lua
37 | local checkbox = tab:Create('Checkbox', 'Example');
38 | checkbox:Set(true);
39 | print(checkbox.Status); --> true
40 | checkbox:Toggle();
41 | print(checkbox.Status); --> false
42 | ```
43 | ---
44 | ### Get
45 | ```ts
46 | export function Get(): boolean;
47 | ```
48 | Returns `checkbox.Status`.
49 | #### Example
50 | ```lua
51 | local checkbox = tab:Create('Checkbox', 'Example');
52 | checkbox:Set(true);
53 | print(checkbox:Get()); --> true
54 | ```
55 | ---
56 | ### SetText
57 | ```ts
58 | export function SetText(text: string): TextComponent;
59 | ```
60 | Sets the checkbox's label to `text`.
61 | #### Example
62 | ```lua
63 | local checkbox = tab:Create('Checkbox', 'Example');
64 | checkbox:SetText('Another Example');
65 | ```
66 | ---
67 | ## Events
68 | ### Changed
69 | ```ts
70 | export type Changed = Event;
71 | ```
72 | Fired on Status Change
73 | ##### Example
74 | ```lua
75 | local checkbox = tab:Create('Checkbox', 'Example On', true);
76 | checkbox.Changed:Connect(function(status)print('Checkbox set to:',status);end);
77 | checkbox:Set(false); --> 'Checkbox set to: false'
78 | ```
79 | ---
80 |
--------------------------------------------------------------------------------
/Developers/UI/Components/ExecBox.md:
--------------------------------------------------------------------------------
1 | # ExecBox
2 | ## Constructor
3 | ```ts
4 | export function(): ExecBoxComponent;
5 | ```
6 | A component used on the main page, to allow the user to execute scripts from a textbox or their clipboard.
7 | You likely have no use for this.
8 | #### Example
9 | ```lua
10 | tab:Create('ExecBox');
11 | ```
12 | ---
13 | ## Methods
14 | None
15 | ## Events
16 | None
17 | ## Attributes
18 | None
19 |
--------------------------------------------------------------------------------
/Developers/UI/Components/Image.md:
--------------------------------------------------------------------------------
1 | # Image
2 | ## Constructor
3 | ```ts
4 | export function(assetid?: string): ImageComponent;
5 | ```
6 | A component describing an image
7 | #### Example
8 | ```lua
9 | local Image = tab:Create('Image', 'rbxassetid://11441046007');
10 | ```
11 | ---
12 | ## Methods
13 | ### SetImage
14 | ```ts
15 | export function SetImage(assetid?: string): ImageComponent;
16 | ```
17 | Sets the Image to `assetid`
18 | ##### Example
19 | ```lua
20 | Image:SetImage('rbxassetid://11441046007');
21 | ```
22 | ---
23 | ### SetHeight
24 | ```ts
25 | export function SetHeight(height: number): ImageComponent;
26 | ```
27 | Sets the height of the image to `height` pixels.
28 | > Note: You will need to change the aspect ratio using [SetAspectRatio](#SetAspectRatio)
29 | ##### Example
30 | ```lua
31 | Image:SetHeight(512);
32 | ```
33 | ---
34 | ### SetAspectRatio
35 | ```ts
36 | export function SetAspectRatio(aspectratio: number): ImageComponent;
37 | ```
38 | Sets the image's [AspectRatioConstraint.AspectRatio](https://developer.roblox.com/en-us/api-reference/property/UIAspectRatioConstraint/AspectRatio)
39 | ##### Example
40 | ```lua
41 | Image:SetAspectRatio(1); --> Sets the image to a square
42 | ```
43 | ---
44 | ## Events
45 | None
46 | ## Attributes
47 | None
48 |
--------------------------------------------------------------------------------
/Developers/UI/Components/Search.md:
--------------------------------------------------------------------------------
1 | # Search
2 | ## Constructor
3 | ```ts
4 | export function(callback: (text:string)=>any): SearchComponent;
5 | ```
6 | A component mostly for internal use, describing a searchbox and the button next to it.
7 | #### Example
8 | ```lua
9 | local Search = tab:Create('Search', function(text)print('Input:',text)end);
10 | ```
11 | ---
12 | ## Methods
13 | None
14 | ## Events
15 | None
16 | ## Attributes
17 | None
18 |
--------------------------------------------------------------------------------
/Developers/UI/Components/Spacer.md:
--------------------------------------------------------------------------------
1 | # Spacer
2 | ## Constructor
3 | ```ts
4 | export function(height?: number): SpacerComponent;
5 | ```
6 | A component used to add some margin between elements.
7 | #### Example
8 | ```lua
9 | local Spacer = tab:Create('Spacer', 32);
10 | ```
11 | ---
12 | ## Methods
13 | ### SetHeight
14 | ```ts
15 | export function SetHeight(height: number): SpacerComponent;
16 | ```
17 | Sets the spacer's height
18 | ##### Example
19 | ```lua
20 | Spacer:SetHeight(32);
21 | ```
22 | ---
23 | ## Events
24 | None
25 | ## Attributes
26 | None
27 |
--------------------------------------------------------------------------------
/Developers/UI/Components/Text.md:
--------------------------------------------------------------------------------
1 | # Text
2 | ## Constructor
3 | ```ts
4 | export function(text: string): TextComponent;
5 | ```
6 | Creates a new Text [Component](/Developers/UI/README.md#components) with the contents of `text`. This supports [Rich Text](https://create.roblox.com/docs/building-and-visuals/ui/rich-text)[\*](#setrichtextenabled) & newlines.
7 | ### Example
8 | ```lua
9 | local text = tab:Create('Text', 'Hello World');
10 | ```
11 | ---
12 | ## Methods
13 | ### SetRichTextEnabled
14 | ```ts
15 | export function SetRichTextEnabled(state: boolean): TextComponent;
16 | ```
17 | Determines whether Rich Text is enabled or not (enabled by default).
18 | > **Why does this exist?**
19 | > Sometimes, Roblox's Rich Text Implementation can be *very* buggy, so it might be easier to disable rich text on some elements.
20 | > Additionally, if you're rendering user input, you may not need rich text & you may want the text to display as-is with no weirdness.
21 | ##### Example
22 | ```lua
23 | text:SetRichTextEnabled(false); --> Disables Rich Text on the element text
24 | ```
25 | ---
26 | ### UpdateText
27 | ```ts
28 | export function UpdateText(text: string): TextComponent;
29 | ```
30 | Updates the text of said component to `text`.
31 | ##### Example
32 | ```lua
33 | text:UpdateText('Goodbye World');
34 | ```
35 |
--------------------------------------------------------------------------------
/Developers/UI/Components/Textbox.md:
--------------------------------------------------------------------------------
1 | # Textbox
2 | ## Constructor
3 | ```ts
4 | export function(): TextboxComponent;
5 | ```
6 | Creates a Textbox. Use `'TextBoxMultiLine'` as the component name (identical API) for a multi-line one
7 | #### Example
8 | ```lua
9 | local Textbox = tab:Create('Textbox');
10 | ```
11 | ---
12 | ## Methods
13 | ### SetPlaceholder
14 | ```ts
15 | export function SetPlaceholder(placeholder: string): TextboxComponent;
16 | ```
17 | Sets the textfield's placeholder
18 | ##### Example
19 | ```lua
20 | Textbox:SetPlaceholder('Some Placeholder');
21 | ```
22 | ---
23 | ### GetValue
24 | ```ts
25 | export function GetValue(): string;
26 | ```
27 | Gets & Returns the currently inputted value of the textbox; `''` if empty
28 | ##### Example
29 | ```lua
30 | print(Textbox:GetValue());
31 | ```
32 | ---
33 | ### SetValue
34 | ```ts
35 | export function SetValue(value: string): TextboxComponent;
36 | ```
37 | Sets the value of the textbox, useful for ensuring valid input
38 | ##### Example
39 | ```lua
40 | Textbox:SetValue('example value');
41 | ```
42 | ---
43 | ## Events
44 | ### Changed
45 | ```ts
46 | export type Changed = Event;
47 | ```
48 | Describes when the textbox's content is changed
49 | ##### Example
50 | ```lua
51 | Textbox.Changed:Connect(function()
52 | print(Textbox:GetValue());
53 | end);
54 | ```
55 | ---
56 | ## Attributes
57 | None
58 |
--------------------------------------------------------------------------------
/Developers/UI/README.md:
--------------------------------------------------------------------------------
1 | # UI Library
2 | Fluxus' UI Library is pretty straightforward; it's structured into [Tabs](#createtab), each tab has it's own icon (what's shown on the left) & it's own components.
3 |
4 | > Note: You cannot directly manipulate the UI's Instance Structure on Fluxus Android.
5 | > This might be possible with [the Desktop Polyfill](#polyfill) in the future
6 |
7 | ## Accessing the API
8 | Internally, the UI Library is exposed using 3 variables;
9 | ```lua
10 | getgenv().fluxusandroidui = API -- branded ui variable w/ platform
11 | getgenv().androidui = API -- unbranded ui variable w/ platform
12 | getgenv().execui = API -- unbranded ui variable w/o platform
13 | ```
14 |
15 | Although you can use any of those 3, we'd strongly suggest using `execui`.
16 |
17 | ## Root Level API
18 | Root-Level APIs can be accessed directly on the `execui` object.
19 |
20 | ---
21 | ### CreateTab
22 | ```ts
23 | export function CreateTab(assetid: string): Tab;
24 | ```
25 | Creates a [Tab](#tab), accessible with the specified icon.
26 |
27 | > Note: Tabs cannot, as of writing, be destroyed, and are always created right above the settings tab.
28 |
29 | #### Example
30 | ```lua
31 | local tab = execui:CreateTab('rbxassetid://');
32 | ```
33 | ---
34 | ### SetSmallUIEnabled
35 | ```ts
36 | export function SetSmallUIEnabled(UseSmallUI: boolean): null;
37 | ```
38 | Toggles whether we use the [Small UI](/Getting%20Started/Settings#SmallUI) or not. This does not save, unlike if you use the option in the settings menu.
39 |
40 | #### Example
41 | ```lua
42 | execui:SetSmallUIEnabled(true); --> enables the small ui
43 | ```
44 | ---
45 | ### Minimize
46 | ```ts
47 | export function Minimize(): null;
48 | ```
49 | Minimizes the UI.
50 |
51 | #### Example
52 | ```lua
53 | execui:Minimize();
54 | ```
55 | ---
56 | ### Unminimize
57 | ```ts
58 | export function Unminimize(): null;
59 | ```
60 | Unminimizes the UI.
61 |
62 | #### Example
63 | ```lua
64 | execui:Unminimize();
65 | ```
66 | ---
67 | ## Tab
68 | ### Create
69 | ```ts
70 | export function Create(componentType: string, ...componentArgs: any[]): Component;
71 | ```
72 | Returns a [Component](#components) as specified by `componentType`, passes `...componentArgs` to the component
73 |
74 | #### Example
75 | ```lua
76 | tab:Create('Text', 'Hello World');
77 | ```
78 | ---
79 | ### Focus
80 | ```ts
81 | export function Focus(): null;
82 | ```
83 | Focuses the tab
84 |
85 | #### Example
86 | ```lua
87 | tab:Focus();
88 | ```
89 | ---
90 | ## Components
91 | - [Base](/Developers/UI/Components/Base.md)
92 | - [Text](/Developers/UI/Components/Text.md)
93 | - [Button](/Developers/UI/Components/Button.md)
94 | - [Checkbox](/Developers/UI/Components/Checkbox.md)
95 | - [Textbox + TextBoxMultiLine](/Developers/UI/Components/Textbox.md)
96 | - [Image](/Developers/UI/Components/Image.md)
97 | - [Spacer](/Developers/UI/Components/Spacer.md)
98 | - [Search](/Developers/UI/Components/Search.md)
99 | - [ExecBox](/Developers/UI/Components/ExecBox.md) _Internal, you likely don't have a use for this._
100 | ---
101 | ## Polyfill
102 | > Currently not implemented. This "polyfill" will let you use the exact same code you're using to integrate with the Android UI, as a standalone UI Library for Desktop.
--------------------------------------------------------------------------------
/Getting Started/Introduction.md:
--------------------------------------------------------------------------------
1 | # Introduction
2 | Welcome to the Fuuuuuuuuuuuuuuuuuuux 🤯 Android Documentation
3 |
4 | This contains both instructions on how to use Fluxus, aswell as how developers can use it's APIs.
5 |
6 | This is by no means a complete list of all APIs Fluxus Andrid has to offer, however it should outline a lot of the unique ones.
7 |
8 | ## Getting Started
9 |
10 | First off, you will need an android device (preferrably a phone, the UI is inconsistent on tablets) running Android API 23 (Android 6.0) or higher.
11 |
12 | First off, you're gonna want to download Fluxus Android & Install it onto your phone - The instructions will be provided on the download page.
13 | *You can find Fluxus Android at [https://fluxteam.net/android](https://fluxteam.net/android/) | An installation video can be found [here](https://cdn.discordapp.com/attachments/1037510861369118841/1037515767429726268/2022-11-02_19-55-01.mp4)*
14 |
15 | Once you have Roblox w/ Fluxus open, join a game & continue to [Using the Key System](Key%20System.md)
16 |
17 | ## Developers
18 |
19 | If you're a developer, read the [Developer Documentation](README.md)
20 |
--------------------------------------------------------------------------------
/Getting Started/Key System.md:
--------------------------------------------------------------------------------
1 | # Key System
2 | Once you have fluxus up and running, you will be prompted with a key system similar to the one below
3 | 
4 |
5 | Simply follow the below instructions:
6 | 1. Click `Get Key`
7 | 2. [Complete the Linkvertise](#how-to-complete-a-linkvertise)
8 | 3. Paste the key in the `Paste your key here` box
9 | 4. Click `Check Key`
10 | 5. Done! You can now move on to [Running Scripts](/Getting%20Started/Running%20Scripts)
11 |
12 | ## How to complete a Linkvertise
13 | Completing a linkvertise is extremely simple; here's how to do it:
14 |
15 | > It appears we have not written this part of the documentation yet. Our bad.
16 |
17 | *If you need help with this step, join our [Support Server](https://fluxteam.net/external-files/download.php) & open a ticket!*
--------------------------------------------------------------------------------
/Getting Started/Running Scripts.md:
--------------------------------------------------------------------------------
1 | # Running Scripts
2 | On Fluxus Android, there are a variety of ways to execute your scripts:
3 | ## Using Scriptblox (recommended)
4 | 1. Copy your script to your clipboard
5 | 2. Open Fluxus Android
6 | 3. Join a game, complete the [Key System](/Getting%20Started/Key%20System)
7 | 4. Click the `Games` tab (see image)
8 | 
9 | 5. Type for the name of the game you want to find a script for in the searchbox, then click `Submit`
10 | > If you know your script's name, you can also look for that
11 | > Some games will automatically show scripts Fluxus thinks might be relevant to that game. You can skip this step if you want to try one of those
12 | 6. Click `Execute` below the script's name
13 | 7. Done!
14 | ## Using your Clipboard
15 | 1. Copy your script to your clipboard
16 | 2. Open Fluxus Android
17 | 3. Join a game, complete the [Key System](/Getting%20Started/Key%20System)
18 | 4. Click `Execute from Clipboard` in the main menu.
19 | 5. Done!
20 | ## Using the Textbox
21 | 1. Open Fluxus Android
22 | 2. Join a game, complete the [Key System](/Getting%20Started/Key%20System)
23 | 3. Type your script in the Textbox in the main menu.
24 | 4. Click `Execute from Textbox` in the main menu.
25 | 5. Done!
26 |
27 | ## What's Next?
28 | If you're a developer, take a look at [Developer Documentation](README.md)
29 | If you want to change your settings, you should look at [Settings](/Getting%20Started/Settings)
--------------------------------------------------------------------------------
/Getting Started/Settings.md:
--------------------------------------------------------------------------------
1 | # Settings
2 | > To be documented.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Welcome to Fluxus Android Documentation
2 |
3 | Are you a new user? See [Getting Started](/Getting%20Started/Introduction.md)
--------------------------------------------------------------------------------
/Templates/Attribute.md:
--------------------------------------------------------------------------------
1 | ### <% tp.file.cursor(1) %>
2 | ```ts
3 | export type <% tp.file.cursor(1) %> = <% tp.file.cursor(2) %>;
4 | ```
5 | <% tp.file.cursor(3) %>
6 | ##### Example
7 | ```lua
8 | <%tp.file.cursor(4)%>
9 | print(<% tp.file.title %>.<% tp.file.cursor(1) %>);
10 | ```
11 | ---
12 |
--------------------------------------------------------------------------------
/Templates/Event.md:
--------------------------------------------------------------------------------
1 | ### <% tp.file.cursor(1) %>
2 | ```ts
3 | export type <% tp.file.cursor(1) %> = Event<<% tp.file.cursor(2) %>>;
4 | ```
5 | <% tp.file.cursor(3) %>
6 | ##### Example
7 | ```lua
8 | <% tp.file.title %>.<% tp.file.cursor(1) %>:Connect(function(<% tp.file.cursor(4) %>)
9 | <% tp.file.cursor(5) %>
10 | end);
11 | ```
12 | ---
--------------------------------------------------------------------------------
/Templates/Example Component.md:
--------------------------------------------------------------------------------
1 | ## Constructor
2 | ```ts
3 | export function(<%tp.file.cursor(2)%>): <%tp.file.title%>Component;
4 | ```
5 | <%tp.file.cursor(1)%>
6 | #### Example
7 | ```lua
8 | local <%tp.file.title%> = tab:Create('<%tp.file.title%>', <%tp.file.cursor(3)%>);
9 | ```
10 | ---
11 | ## Methods
12 | <%tp.file.cursor(10)%>
13 | ## Events
14 | <%tp.file.cursor(11)%>
15 | ## Attributes
16 | <%tp.file.cursor(12)%>
17 |
--------------------------------------------------------------------------------
/Templates/Method.md:
--------------------------------------------------------------------------------
1 | ### <% tp.file.cursor(1) %>
2 | ```ts
3 | export function <% tp.file.cursor(1) %>(<% tp.file.cursor(3) %>): <% tp.file.title %>Component;
4 | ```
5 | <% tp.file.cursor(2) %>
6 | ##### Example
7 | ```lua
8 | <% tp.file.title %>:<% tp.file.cursor(1) %>(<% tp.file.cursor(4) %>);
9 | ```
10 | ---
--------------------------------------------------------------------------------
/resources/ActiveVsPassive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YieldingFluxus/android-documentation/bfa2a9f3234629700ec0c6c72a75afd21579fc0c/resources/ActiveVsPassive.png
--------------------------------------------------------------------------------
/resources/KeyPrompt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YieldingFluxus/android-documentation/bfa2a9f3234629700ec0c6c72a75afd21579fc0c/resources/KeyPrompt.png
--------------------------------------------------------------------------------
/resources/ScriptsTab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YieldingFluxus/android-documentation/bfa2a9f3234629700ec0c6c72a75afd21579fc0c/resources/ScriptsTab.png
--------------------------------------------------------------------------------