├── .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 | ![ActiveVsPassive.png](/resources/ActiveVsPassive.png) 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 | ![KeyPrompt.png](/resources/KeyPrompt.png) 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 | ![ScriptsTab.png](/resources/ScriptsTab.png) 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 --------------------------------------------------------------------------------