Introduction

This is the documentation for Synapse X V3, the new scripting engine made by the creators of Synapse and Synapse X. This website has installation instructions, internal features, design decisions, and an API reference for all the features Synapse X V3 has to offer.

Installing Synapse X V3.

Introduction to developing for Synapse X

Welcome to Synapse X! This development tutorial will give you an introduction to scripting for Synapse X - including the core concepts of the Synapse X enviornment, supervisor based programming, method interception, defensive programming, the Synapse X security model, and ultimately to get you to develop your own scripts for the platform.

Before we dive in, its important to lay some ground rules and assumptions that this guide takes:

  • This set of guides assumes you are already proficient in Lua scripting (and programming in general). If this is your first time scripting in Lua, we recommend you look at the Lua 5.1 manual and get a feel for the language beforehand. While many people have learned programming via Synapse X, there is advanced concepts covered in this guide that may not make sense without a background in computer science.
  • This guide attempts to avoid easily 'copy-pastable' scripts - instead, we focus on short examples in order to teach concepts. It is far more important for you to know the core concepts behind Synapse X scripting instead of simply copy-pasting example code. Trust us - it will save you a lot of time in the future if you choose to continue scripting for Synapse X.
  • Many concepts covered here will be advanced, as stated earlier. Whenever we cover such concepts, we will attempt to give background for people without prior knowledge of the concept.

That out of the way, lets jump right in with the Synapse X environment!

Introduction to the Synapse X Environment

Before we can go into the new scripting methodology offered by Synapse X, it is first important to know the differences between the Synapse X environment and the game script environment.

Script Identity

Synapse X scripts run at a higher identity than normal game scripts - while the actual identity number(s) are mostly irrelevant to us (if you wish to know, as of writing this documentation, Synapse X scripts run at identity 7 and normal game scripts run at identity 2), it is more important to know what extra privileges this gives Synapse X scripts over normal game scripts.

Unlike game scripts, Synapse X scripts have mostly (see below for exceptions) full access to the full game APIs without limitations. This means you can use certain functions not normally possible to use from either game scripts or even the command bar.

Some examples of extended functionality introduced by higher identity include:

  • Ability to use protected services like VirtualUserService and CoreGui. (abiet there are far better alternatives for both we will introduce later)

  • Ability to modify the 'protected' instance tree and properties.

  • Ability to use protected functions like the UserSettings APIs or game:GetObjects, commonly used to load external instances by Synapse X scripts.

While Synapse X tries to provide the most access as possible to scripts executed by it, some functions are deemed off limits and are not allowed to be called by Synapse X scripts. These functions include:

  • Functions that allow stealing from the Synapse X user who executed the script, or access to private information of the Synapse X user that should not be accessible from scripts.

  • Functions that have known security issues. (Ex: a function that has a known memory corruption vulnerability that could lead to arbitrary code execution on the user executing the script)

  • Functions that provide unrestricted authenticated HTTP request access, which allows the 1st point to occur. Synapse X provides facilities to allow unauthenticated web requests.

Synapse X Additions

Along with script identity, Synapse X also introduces many custom functions that allow for enhanced functionality and access by Synapse X scripts. We will introduce many of these functions to you later in this guide, but we will start with a commonly used (and simple) one for Synapse X scripts: getgenv. Getgenv allows you to get the 'global environment', a shared top-level environment between Synapse X scripts. You can use this to set globals that will be used by all Synapse X scripts. Do note that getgenv is not shared to game scripts - you can instead use getrenv if you wish to do that.

An example is shown below for getgenv:

getgenv().test = 123
print(test) --> 123

Then, from another Synapse X script:

print(test) --> 123

As you can see, the value will stay within the globals table between each Synapse X script. You can add as many of these globals as you like.

Miscellaneous Changes

There are also many miscellaneous changes between Synapse X scripts and game scripts. These changes are listed below:

  • Synapse X scripts are not attached to a script global. While Synapse X still provides a script global for each script, it is only provided for compatibility reasons and is deprecated for all future use. Setting the Disabled property on the Synapse X script global will do nothing due to the Synapse X script not being connected to it. You should never touch this global in scripts you make.

  • shared and _G, two tables commonly used by game scripts are not connected to Synapse X scripts. Instead, Synapse X scripts have their own shared and _G tables, like getgenv. If you wish to access the game script shared and _G tables, use getrenv()._G and vice versa. Please note the considerations in the Synapse X security model if you wish to do this.

  • Synapse X provides many internal protections against implicit environment leaks to game scripts. Please see the Synapse X security model for more information.

Now that you have a general idea of the Synapse X Environment, we can now move on to the major programming concept behind Synapse X - supervisor-based programming.

Supervisor Based Programming

For new developers to Synapse X, most will be confused on how to fully utilize the power of the Synapse X environment. For you to understand where Synapse X scripts extracts its abilities from, we must first show where most Synapse X scripts insert themselves.

Shown below is a diagram of a normal game instance:

Normal Game Instance Diagram

Now, we will show a diagram after a Synapse X script fully utilizing Synapse X's supervisor programming model:

Synapse X Instance Diagram

As you can see, Synapse X extracts its abilities from being able to intercept API calls and event invocations from both the native game engine, and game scripts. Once an interception function is called, Synapse X scripts have full control over arguments, return values, and can modify calls as needed by that script. This allows Synapse X scripts to act as supervisors of game logic, alas the term 'supervisor-based programming'.

Supervisor based programming allows a powerful programming model much unlike most other forms of systems programming. If the native game engine were the OS kernel and game scripts were user mode programs, Synapse X scripts would act as the 'drivers' for such a system under this analogy.

API Reference

This section contains documentation for every Synapse X 2021 custom function.

Environment APIs

Functions

getgenv

table getgenv()

Returns Synapse's global environment table.

getrenv

table getrenv()

Returns the game's global environment table.

getreg

table getreg()

Returns a read-only copy of the Lua registry.

getgc

table getgc(include_tables?: bool)

Returns a weak table of all Lua objects currently alive according to the garbage collector. By default, tables are not included. Note that some values may immediately be collected after this is called; as such, there will be many gaps in the table.

filtergc

nil | any filtergc(type: string, options: table, return_one?: bool)

Searches for values currently referenced by Lua that match the given criteria. type can either be 'function' or 'table'. Setting return_one indicates that this function should return the first result, or nil if there are no matches. The following options can be used:

Table:

KeyDescriptionDefault
KeysIf not empty, only include tables with keys corresponding to all values in this tablenil
ValuesIf not empty, only include tables with values corresponding to all values in this tablenil
KeyValuePairsIf not empty, only include tables with keys/value pairs corresponding to all values in this tablenil
MetatableIf not empty, only include tables with the metatable passednil

Function:

KeyDescriptionDefault
NameIf not nil, only include functions with this namenil
ConstantsIf not nil, only include functions with constants that match all values in this tablenil
UpvaluesIf not nil, only include functions with upvalues that match all values in this tablenil
IgnoreSynIf false, do not ignore Synapse functions.true
ProtoIf not nil, only include functions with this function prototype.nil
EnvironmentIf not nil, only include functions with this environment.nil
HashIf not nil, only return functions with this hash.nil
StartLineIf not nil, only return functions with this starting line.nil

NOTE; values are compared using bit-for-bit equality checks. This means that NaN == NaN and -0 ~= 0. This allows you to specify NaN or -0 as a value you want to search for.

Examples:

    local empty_table = {
        good = false
    }

    local my_table = {
        good = true,
        one = "two",
        three = "four",
        five = "six",
        v1 = "value one",
    }

    local my_other_table = {
        good = true,
        one = "not two",
        three = "not four",
        five = "six",
        v1 = "value one",
    }

    -- intentionally does not match KeyValuePair, so table should not be found
    local my_bad_table = {
        good = false,
        one = "not two",
        three = "not four",
        v1 = "value one",
        five = "not six",
    }

    for _, v in next, filtergc('table', {
        Keys = { "one", "three" },
        Values = { "value one" },
        KeyValuePairs = {
            five = "six"
        }
    }) do
        assert(v.good)
        warn(v)
    end
    local uv = "bbbbb"
    local function myfunc()
        return "aaaaa" .. uv
    end

    print(filtergc('function', {
        IgnoreSyn = false,
        Name = "myfunc"
    }, true)

    print(filtergc('function', {
        IgnoreSyn = false,
        Constants = { "aaaaa" }
    }, true)

    print(filtergc('function', {
        IgnoreSyn = false,
        Upvalues = { "bbbbb" }
    }, true)

getinstances

table getinstances()

Returns a list of all instances referenced by the current Lua state. Core script references are not included.

getnilinstances

table getnilinstances()

Returns a list of all nil-parented instances referenced by the current Lua state. Core script references are not included.

getscripts

table getscripts()

Returns a list of all loaded scripts in the caller's global state.

getloadedmodules

table getloadedmodules()

Returns a list of all loaded ModuleScripts in the caller's global state.

fireclickdetector

void fireclickdetector(target: Instance)

Emulates clicking a ClickDetector.

fireproximityprompt

void fireproximityprompt(target: Instance)

Emulates triggering a ProximityPrompt. Equivalent to calling replicatesignal on ProximityPrompt.TriggerActionReplicated and ProximityPrompt.TriggerEndedActionReplicated (non-scriptable events).

firetouchinterest

void firetouchinterest(part: Instance, to_touch: Instance, toggle: bool)

Emulates a Touched event on to_touch with part.

Filesystem APIs

NOTE: All filesystem APIs are sandboxed to the workspace folder in your Synapse installation. Attempting to access files outside of this folder will result in an error.

Functions

readfile

string readfile(path: string)

Reads a file from the workspace folder.

readfileasync

string readfileasync(path: string) [yields]

Reads a file from the workspace folder asynchronously.

writefile

void writefile(path: string, contents: string)

Writes to a file in the workspace folder.

writefileasync

void writefileasync(path: string, contents: string) [yields]

Writes to a file in the workspace folder asynchronously.

appendfile

void appendfile(path: string, contents: string)

Appends to a file in the workspace folder.

appendfileasync

void appendfileasync(path: string, contents: string) [yields]

Appends to a file in the workspace folder asynchronously.

loadfile

(function?, string?) loadfile(path: string, contents: string)

Equivalent to loadstring(readfile(path)).

loadfileasync

(function?, string?) loadfileasync(path: string, contents: string) [yields]

Equivalent to loadstring(readfileasync(path)).

listfiles

table listfiles(folder?: string)

Returns an array of file names belonging to folder.

isfile

bool isfile(path: string)

Returns true if path refers to a file.

isfolder

bool isfolder(path: string)

Returns true if path refers to a folder.

makefolder

bool makefolder(path: string)

Recursively creates directories. Returns true on success.

delfolder

void delfolder(path: string)

Deletes a folder.

delfile

void delfile(path: string)

Deletes a file.

getsynasset

string getsynasset(path: string)

Returns a Content string that can be used with GUI elements, sounds, meshes, and etc. to refer to an asset in the workspace folder.

Note: Certain assets only work with certain file types. For example, VideoFrames only work with .webm encoded videos.

saveinstance

bool saveinstance(instance: Instance | table, options?: table) [yields]

Saves an instance in binary (.rbxl or .rbxm) format. The following options can be passed:

OptionDescriptionDefault
FileNameOutput fileVaries
IgnoreArchivableIgnores the Archivable propertyfalse
SavePlayerCharactersIncludes player characters (.rbxl only)false
SavePlayersIncludes Player objects and their descendants (.rbxl only)false
DisableCompressionDisables compression in the binary outputfalse
DecompileStarts a batch decompiler job for all relevant scripts and includes the resultsfalse
DecompileJoblessIncludes already decompiled code in the output. No new scripts are decompiled.false
SaveNonCreatableIncludes non-serializable instances as Folder objectsfalse
NilInstancesIncludes nil instances (.rbxl only)false
CopyToClipboardIf true, copies the result to clipboard instead of writing to diskfalse
IgnoreListA list of instances (and their descendants) to ignore{}
DecompileOptionsSee documentation for decompile{}

If the Decompile option is enabled, saveinstance returns true when the job completes successfully or false if cancelled by the user.

saveplace

bool saveplace(options?: table) [yields]

Equivalent to saveinstance(game, options).

Classes

Hooking APIs

Functions

setstackhidden

void setstackhidden(closure: function, hidden?: bool = True)

Hides or unhides a function from the callstack.

void setstackhidden(level: int, hidden?: bool = True)

Hides or unhides a function (indicated by level) in the callstack.

newcclosure

function newcclosure(closure: function, name?: string)

Creates a C wrapper around closure with function name name if provided.

clonefunction

function clonefunction(to_clone: function)

Clones a function. Note that if the function passed is a C closure, is_synapse_function will return true on the returned closure.

hookfunction

function hookfunction(to_hook: function, hook: function, filter?: Filter = nil)

Hooks a Lua or C function in-place. Returns a copy of the original function. Can optionally specify a filter to use.

hookproto

void hookproto(to_hook: ProtoProxy, hook: function)

Hooks a Lua function prototype. Prototypes can only be hooked once!

hookmetamethod

void hookmetamethod(to_hook: userdata, metamethod: string, hook: function, arg_guard?: bool = True, filter?: Filter = nil)

TODO

restorefunction

void restorefunction(to_restore: closure)

Un-hooks a function hooked with hookfunction.

isfunctionhooked

bool isfunctionhooked(f: function)

Returns true if f is hooked by hookfunction, hookmetamethod, or syn.oth.hook.

restoreproto

void restoreproto(to_restore: ProtoProxy)

Removes a Proto hook created via hookproto.

hooksignal

void hooksignal(signal: ScriptSignal, callback: function)

Enables the interception of signal invocations. When signal is fired, callback is called for every Lua connection in signal with an info table and the invocation arguments. Returning true from this callback fires the original connection. For now, the callback should not yield. hooksignal cannot be used to intercept C (engine) connections or Lua connections belonging to CoreScripts.

Example code:

local part = Instance.new("Part")
part.Changed:Connect(function(prop)
    print(prop .. " changed?")
end)
hooksignal(part.Changed, function(info, prop)
    print(info.Connection) -- the connection object.
    print(info.Function) -- the original function. Not available for waiting connections.
    print(info.Index) -- the position of this connection in part.Changed at the time this callback is executed. Not available for waiting connections.
    print(prop)
    return true, "Hooked"
end)
part.Name = "NewName"

Output:

Connection
function: <etc>
0
Name
Hooked changed?

restoresignal

void restoresignal(signal: ScriptSignal)

Unhooks a signal hooked with hooksignal.

issignalhooked

void issignalhooked(signal: ScriptSignal)

Returns true if signal is hooked.

syn.oth.hook

function syn.oth.hook(target: function, hook: function)

A secure version of hookfunction for C functions that works by running hook code on separate threads. When a hooked function is called, a new or cached hook thread is resumed with the hook and any passed arguments. The returned callback can be used to execute the original function on the original, calling thread.

In the context of a hook thread, the following functions behave as though being called under the original thread:

  • getnamecallmethod
  • setnamecallmethod
  • checkcaller
  • checkcallstack
  • getcallingscript
  • the debug library (debug.*)
  • TODO

syn.oth.unhook

bool syn.oth.unhook(target: function, hook_or_callback?: function)

Un-hooks a function hooked with syn.oth.hook. The second parameter is not required if the function has only been hooked once. Returns true upon success.

syn.oth.get_root_callback

function syn.oth.get_root_callback()

Returns a function that can be used to call the original function in the context of a hook thread. Useful for when a function is hooked multiple times and the callback you receive from syn.oth.hook executes the next hook in the chain, not the original function.

syn.oth.is_hook_thread

bool syn.oth.is_hook_thread()

Returns true if this thread is a hook thread.

syn.oth.get_original_thread

thread syn.oth.get_original_thread()

Return the original thread this hook comes from, or nil if the current thread is not a hook.

Filter APIs

Functions

getfilter

function getfilter(filter: FilterBase, original_function: function, filter_function: function)

Classes

Input APIs

Functions

iswindowactive

bool iswindowactive()

Returns true if the game window is in focus.

lockwindow

void lockwindow()

Focuses and locks the game window. While locked, focus changes and input by the user are not seen by the game. Input can still be sent with the input API.

unlockwindow

void unlockwindow()

Unlocks the game window.

iswindowlocked

bool iswindowlocked()

Returns true if the game window is locked.

keypress

void keypress(key: KeyCode)

Simulates a key press for the specified KeyCode.

void keypress(key: number)

Simulates a key press for the specified virtual key-code.

keyrelease

void keyrelease(key: KeyCode)

Simulates a key press for the specified KeyCode.

void keyrelease(key: number)

Simulates a key release for the specified virtual key-code.

keyclick

void keyclick(key: KeyCode)

Simulates an instant key press + release for the specified KeyCode.

mouse1press

void mouse1press(x: number, y: number)

Simulates a left mouse button press at the specified coordinates.

void mouse1press()

Simulates a left mouse button press at the current mouse position.

mouse1release

void mouse1release(x: number, y: number)

Simulates a left mouse button release at the specified coordinates.

void mouse1release()

Simulates a left mouse button release at the current mouse position.

mouse1click

void mouse1click()

Simulates a left mouse click at the current mouse position.

mouse2press

void mouse2press(x: number, y: number)

Simulates a right mouse button press at the specified coordinates.

void mouse2press()

Simulates a right mouse button press at the current mouse position.

mouse2release

void mouse2release(x: number, y: number)

Simulates a right mouse button release at the specified coordinates.

void mouse2release()

Simulates a right mouse button release at the current mouse position.

mouse2click

void mouse2click()

Simulates a right mouse click at the current mouse position.

mousescroll

void mousescroll(forward: bool, x: number, y: number)

Simulates a scroll forward or backward at the specified coordinates.

void mousescroll(forward: bool)

Simulates a scroll forward or backward at the current mouse position.

mousemoverel

void mousemoverel(x: number, y: number, internal?: bool)

Moves the mouse relative to its current position. If provided, internal specifies whether a mouse movement event is signalled internally or your physical mouse cursor is moved. If not provided, internal is implied to be true if the game window is locked OR not active and false if otherwise. A physical mouse movement cannot occur when the game window is not in focus.

mousemoveabs

void mousemoveabs(x: number, y: number, internal?: bool)

Moves the mouse to the specified coordinates. If provided, internal specifies whether a mouse movement event is signalled internally or your physical mouse cursor is moved. If not provided, internal is implied to be true if the game window is locked OR not active and false if otherwise. A physical mouse movement cannot occur when the game window is not in focus.

iskeydown

bool iskeydown(key: number)

Returns true if the specified virtual-key code is pressed and the game window is in focus and not locked.

iskeytoggled

bool iskeytoggled(key: number)

Returns true if the specified virtual-key code is toggled (e.g. caps lock) and the game window is in focus and not locked.

getmousestate

bool getmousestate()

Returns true if the internal UI cursor is enabled.

setmousestate

void setmousestate(new_state: bool)

Enables or disables the internal UI cursor.

Miscellaneous APIs

Functions

setclipboard

bool setclipboard(data: string | number | Instance | table)

Copies a string or Instance or table of Instances to the clipboard. Returns true on success.

setfflag

bool setfflag(fflag: string, value: string)

Sets FFlag fflag to value. Returns false if the flag doesn't exist or couldn't be set.

identifyexecutor

(string, string) identifyexecutor()

Returns "Synapse X" and version string.

unlockmodulescript

void unlockmodulescript(module: ModuleScript)

"Unlocks" module such that code running at different contexts (e.g. level 2 vs level 7) return the same values when required.

require

any require(module: ModuleScript)

This function replaces the game's require to allow for requiring game modules from higher contexts of script execution, like the one in which Synapse scripts run.

messagebox

int messagebox(text: string, caption?: string, type?: int) [yields]

A wrapper around Microsoft's MessageBoxA.

setwindowtitle

void setwindowtitle(text: string)

Sets the title of the game window. A wrapper around Microsoft's SetWindowTextA.

setwindowicon

void setwindowicon(data: string?)

Sets the icon of the game window.

gethui

Instance gethui()

Returns a protected container where GUIs can be hidden from detection by the game.

createuitab

void createuitab(title: string, contents: string, icon?: string)

Creates a tab in the external UI

newtable

table newtable(narray: number, nhash: number)

Creates a table with the specified array and hash sizes, then fills with random data. Random data for hash part has random vector keys with X, Y, and Z values between 0 and 1 and false as a value. Random data for array part has false as a value. This function is useful for creating tables with memory hidden to scripts. If you would like this feature, make sure narray is >= 33 and nhash is >= 17. NOTE: To prevent table reallocation from exposing this memory, make sure you don't have fewer array/hash values!

cloneref

Instance cloneref(instance: Instance)

Clones a reference to an Instance. The Lua expression clone == instance will be false, but both values will point to the same Instance.

syn.queue_on_teleport

void syn.queue_on_teleport(script: string)

Queues script to be executed after the next teleport.

syn.clear_teleport_queue

void syn.clear_teleport_queue()

Removes all queued scripts from the teleport queue.

syn.get_thread_identity

int syn.get_thread_identity()

Returns the current thread's context level.

syn.set_thread_identity

void syn.set_thread_identity(identity: int)

Sets the current thread's context level.

syn.protect_gui

void syn.protect_gui(target: Instance)

protect_gui is deprecated. For backwards compatability, this function will cause target to be parented the return value of gethui() the next time it is parented.

syn.unprotect_gui

void syn.unprotect_gui(target: Instance)

unprotect_gui is deprecated. For backwards compatability, this function will disable the parent-redirection done by protect_gui.

syn.trampoline_call

(bool, ...any|string) syn.trampoline_call(target: function, call_stack: table, thread_options: table, ...any)

Proxy a call to a Lua function with the given call stack and thread options. call_stack is an array of tables, with each sub-table having fields described below.

The thread parameter allows you to preset the script, identity, and env fields with the values from that thread. This field is optional, and those fields can be overridden after the fact.

Note: These values do not need to correlate with actual information returned by debug.getinfo; they are fully customizable.

Note: The func parameter will override all other data you pass here aside from currentline!

Call Stack EntryDescription
currentlineThe currently executing line of code.
envThe function's environment.
sourceThe 'source' field returned by debug.getinfo.
nameThe function's name.
numparamsThe number of parameters in the function.
is_varargWhether this function takes variadic arguments.
funcA function to copy all information from.
Thread Option EntryDescription
scriptThe script attached to the thread.
identityThe identity of the new state.
envThe global environment of the new thread.
threadA thread used as the parent.

syn.toast_notification

void syn.toast_notification(options: table)

Displays a toast notification in the internal UI. The options table follows the following format:

OptionDescriptionDefault
TypeToastType enumRequired
DurationHow long the notification should last, in seconds5
TitleThe notification's titleRequired
ContentThe notification's contentRequired
IconColorOverrides the icon colorVaries by Type

syn.ipc_send

void syn.ipc_send(data: any)

Sends data to the UI.

Classes

Enums

Network APIs

Functions

isnetworkowner

bool isnetworkowner(part: BasePart)

Returns true if your client is a network owner of part.

Reflection APIs

Functions

setscriptable

bool setscriptable(instance: Instance, property_name: string, scriptable: bool)

Sets a property's scriptable flag. Non-scriptable properties cannot be accessed from Lua. Returns the flag's original state. NOTE: Take care using this function as changes done also affect game scripts, introducing the possibility of creating detection vectors or breaking existing code.

gethiddenproperty

any gethiddenproperty(instance: Instance, property_name: string)

Safely reads a non-scriptable property value, including those of type BinaryString and SharedString.

sethiddenproperty

void sethiddenproperty(instance: Instance, property_name: string, value: any)

Safely sets a non-scriptable property value.

getproperties

table getproperties(instance: Instance)

Returns a dictionary of all property values, including any non-scriptable, for instance.

gethiddenproperties

table gethiddenproperties(instance: Instance)

Returns a dictionary of all non-scriptable property values for instance.

getpcdprop

(string, string) getpcdprop(instance: TriangleMeshPart)

Returns a TriangleMeshPart's PhysicalConfigData property.

getcallbackmember

any getcallbackmember(instance: Instance, property: string, return_raw?: bool = False)

Returns the value of a callback property, such as RemoteFunction.OnClientInvoke. NOTE; Arbitrary values can be passed here. See the documentation for getconnectionfunction for more information about this and what return_raw does.

geteventmember

ScriptSignal geteventmember(instance: Instance, event_name: string)

Creates an unrestricted signal object for any event in instance. Useful for connecting to conventionally non-scriptable signals.

getrendersteppedlist

table getrendersteppedlist()

Returns all callbacks bound with RunService:BindToRenderStep.

Script APIs

Functions

loadstring

function loadstring(source: string, chunk_name?: string)

Equivalent to Lua 5.1's loadstring. This function may access the thread's global environment (getfenv(0)) to resolve/cache imports and builtins.

checkcaller

bool checkcaller()

Returns true if the current thread is owned by Synapse.

checkcallstack

bool checkcallstack(type: string, level?: int = 2)

Returns true if the current thread is owned by Synapse AND all functions at or above level in the call stack are Synapse functions. A level of 1 represents the function calling checkcallstack, 2 represents the function calling the function calling checkcallstack, and so forth.

issynapsefunction

bool issynapsefunction(f: function)

Returns true if f is a Synapse function.

islclosure

bool islclosure(f: function)

Returns true if f is a Lua function (as opposed to a C function).

decompile

string decompile(target: variant<function, LuaSourceContainer>, options?: table) [yields]

Decompiles target asynchronously. target cannot be a Synapse function. The following options can be used:

OptionDescriptionDefault
VerboseFunctionsAdds a comment to functions with their name and optionally other infotrue
FunctionLineAdds the line that a function is definedtrue
FunctionUpvaluesLists the upvalues of functionstrue
FunctionConstantsLists the constants that functions usefalse
RenameLoopVariablesGives for loop variables more specific names if possibletrue
VariableRenamingGives some variables contextual namestrue
ExtraRenamingRenames extra variablestrue
NullableNamingAllows variable renaming to ignore nil assignmentstrue
PrimitiveRenamingRenames variables with trivial primitive typestrue
SemicolonsAdds semicolons to the end of each statementtrue
TableNewlinesAdds a newline after each table entrytrue
UseIfElseExpressionAllows the use of if-else expressionfalse
CallLineInfoAdds a comment next to function calls of their linefalse
LazyFlatteningTry to less aggressively condense expressionstrue
FormatNamecallChainsAdds extra newlines in between chained namecallsfalse
FlattenGuardStatementsTurns guard statements into single linestrue
MaxCustomNameLengthMax length for variable names32
MaxTabsMax number of tabs20
MaxRationalDenominatorMax denominator for rationalization1000
DeduplicationThresholdThreshold for string deduplication10000

getscriptthread

thread getscriptthread(script: Instance)

Returns the main Lua thread associated with script. Note that this may not be the only thread used!

getsenv

table getsenv(script: Instance)

Returns the Lua environment (such as that returned by getfenv) associated with the main function of script. Essentially equivalent to getfenv(getscriptfunction(script)).

WARNING: Scripts may add a metatable to this value and check who's accessing it! If you want to get around this, check for whether the environment has a metatable and use syn.trampoline_call accordingly.

getscriptfunction

function getscriptfunction(script: Instance)

Returns the main function associated with script.

getscripthash

string getscripthash(script: LuaSourceContainer)

Returns a script's bytecode hash.

getfunctionhash

string getfunctionhash(script: function)

Returns a Lua function's bytecode hash.

getscriptname

string getscriptname(script: Instance)

Returns the name of a script when it was first loaded.

dumpbytecode

string dumpbytecode(target: variant<function, LuaSourceContainer>)

Dumps a function or script to the Luau bytecode format. target cannot be a Synapse function.

getcallingscript

variant<Instance, nil> getcallingscript()

Returns the script associated with the current thread or nil.

issynapsethread

bool issynapsethread(thread: thread)

Returns true if thread is owned by Synapse.

setsynapsethread

void setsynapsethread(set_to_synapse: bool, target_thread?: thread = nil)

Changes whether target_thread (or the current thread if target_thread is nil) can pass through checkcaller. If this is not the case, Synapse-specific overrides like game.HttpGet or Connection.Enabled will not work.

Signal APIs

Functions

getconnections

table getconnections(signal: ScriptSignal, context?: integer)

Returns a script signal's connections. NOTE: Some events, such as UserInputService's InputBegan, actually consist of different signals internally for different security contexts. By default, getconnections returns the connections of all signals.

firesignal

void firesignal(signal: ScriptSignal, ...any)

Fires a signal's Lua connections (excluding CoreScript connections). Roughly equivalent to lua for i, v in pairs(getconnections(signal)) do local f = v.Function if f then task.spawn(f, ...) end end

cfiresignal

void cfiresignal(signal: ScriptSignal, ...any)

Fires a signal, including all engine (C) and CoreScript connections. This function cannot be called on "pseudo" signals such as those returned by GetPropertyChangedSignal. Passed values must be of the correct type.

replicatesignal

void replicatesignal(signal: ScriptSignal, ...any)

Fires a signal on the server. Signal must be replicable.

cansignalreplicate

bool cansignalreplicate(signal: ScriptSignal)

Returns true if a signal can be replicated to the server (see replicatesignal).

getsignalarguments

table getsignalarguments(signal: ScriptSignal)

Returns a table of a signal's arguments' types. For example, passing Instance.AncestryChanged would return { "Instance", "Instance "}.

isconnectionenabled

bool isconnectionenabled(connection: ScriptConnection)

Returns true if a connection is enabled.

setconnectionenabled

void setconnectionenabled(connection: ScriptConnection, enable: bool)

Enables or disables a connection. Disabled connections remain connected, but do nothing when fired.

isluaconnection

bool isluaconnection(connection: ScriptConnection)

Returns true if connection represents a Lua connection.

iswaitingconnection

bool iswaitingconnection(connection: ScriptConnection)

Returns true if connection is the result of a :Wait() call.

getconnectionfunction

any getconnectionfunction(connection: ScriptConnection, return_raw?: bool = False)

Returns a connection's associated function. The connection must be a non-waiting Lua connection.

NOTE; Arbitrary values can be passed to .Connect. In order to prevent accidental mishaps, this function will, by default, filter out any connected value that is not a function or a table with a __call metamethod. If .Connect was passed table with a __call metamethod, the returned value will be the value of that metamethod, or nil if that value is not a function.

The optional second parameter will disable this behavior, and will just return whatever was passed to .Connect.

getconnectionthread

thread getconnectionthread(connection: ScriptConnection)

Returns a connection's associated thread. The connection must be a Lua connection.

isgamescriptconnection

bool isgamescriptconnection(connection: ScriptConnection)

Returns true if connection represents a Lua connection created by game scripts (as opposed to core scripts).

Table APIs

Functions

getrawmetatable

table | nil getrawmetatable(object: any)

Returns an object's metatable, ignoring the __metatable metamethod. NOTE: this function will error on protected objects.

setrawmetatable

table | nil setrawmetatable(object: any, target: table)

Sets an object's metatable, ignoring the __metatable metamethod. NOTE: this function will error on protected objects. Returns the old metatable.

setreadonly

void setreadonly(table: table, value: bool)

Sets a table's read-only flag. NOTE: this function will error on protected objects.

setuntouched

void setuntouched(target: function | thread | table, value: bool)

Sets a Lua environment's untouched flag. This flag is relevant to certain Luau optimizations, namely built-ins. If true, "built-in" globals such as game or print are fetched from a cache and cannot be modified. If false, the cache is disabled and built-ins are fetched from the environment table as normal. Functions getfenv and setfenv set this flag to false implicitly.

Example:

local env = getfenv() -- untouched implicity set to false
local old_print = print
env.print = function() old_print("overwritten!") end
print("hello")
setuntouched(env, true)
print("hello")

Output:

overwritten!
hello

isuntouched

bool isuntouched(target: function | thread | table)

Returns a table's untouched flag. If passed a function/thread, returns the untouched flag of their environments.

makewritable

void makewritable(table: table)

Equivalent to setreadonly(table, false).

makereadonly

void makereadonly(table: table)

Equivalent to setreadonly(table, true).

isreadonly

bool isreadonly(table: table)

Returns a table's read-only flag.

isprotected

bool isprotected(table: table, description: Returns whether a table or its metatable is protected. Protected tables cannot be modified.)

Websocket APIs

Classes

Legacy Drawing API

Note: Drawing.new and DrawEntry objects have been deprecated in favor of DrawEntryDynamic and our new Drawing API.

Functions

Drawing.new

any Drawing.new(type_name: string)

Instantiates a new DrawEntry object. Equivalent to <Type>.new(). Valid type names include:

Classes

Drawing API

Namespaces

Functions

setcliprect

void setcliprect(z_index: int, rect?: Rect)

Defines or undefines the draw area (clip rectangle) for the given z-index.

void setcliprect(z_index: int, top_left: Point, bottom_right: Point)

Defines the draw area (clip rectangle) for the given z-index.

setfpscap

void setfpscap(cap: float)

Sets the FPS unlocker cap. The user has to enable the FPS unlocker themselves for this API to work. Note: Minimum FPS is 1, maximum FPS is 16384.

getfpscap

void getfpscap(cap: float)

Returns the current FPS unlocker cap.

getfpsmax

void getfpsmax(cap: float)

Returns currently active monitor's display rate, in hertz. Returns 0 on failure.

Classes

Enums

Console APIs

Functions

rconsoletop

void rconsoletop(should_be_top: bool)

Enables or disables the internal console window being topmost.

rconsoleprint

void rconsoleprint(data: string, async?: bool, escape?: bool)

Writes text to the internal console. If async is true, the function does not block (useful when printing large amounts of text). If escape is false, null terminators will not be escaped. Defaults to true.

rconsoleinfo

void rconsoleinfo(data: string, async?: bool)

Writes info text to the internal console. If async is true, the function does not block (useful when printing large amounts of text).

rconsolewarn

void rconsolewarn(data: string, async?: bool)

Writes warning text to the internal console. If async is true, the function does not block (useful when printing large amounts of text).

rconsoleerr

void rconsoleerr(data: string, async?: bool)

Writes error text to the internal console. If async is true, the function does not block (useful when printing large amounts of text).

rconsoleclear

void rconsoleclear()

Clears the internal console.

rconsolename

void rconsolename()

Sets the title of the internal console's window.

rconsoleinput

string rconsoleinput() [yields]

Waits for a line of user input from the internal console and returns the result. Truncated to 4096 characters.

Keep in mind that if a different thread tries to do other console-related functions while this one is running, the game will stop responding until you give the console an input.

rconsolehide

void rconsolehide()

Hides the console.

rconsoleshow

void rconsoleshow()

Makes the console visible if it wasn't already.

rconsoletoggle

void rconsoletoggle()

Toggles whether the console is hidden or not.

rconsolehidden

bool rconsolehidden()

Returns whether or not the console is currently hidden.

printconsole

void printconsole(data: string, r: int, g: int, b: int) [parallel_safe]

Prints colored text to the Synapse console.

void printconsole(data: string) [parallel_safe]

Prints text to the Synapse console.

void printconsole(data: string, color: Color3) [parallel_safe]

Prints colored text to the Synapse console.

clearconsole

void clearconsole()

Clears the internal and external consoles.

HTTP APIs

Functions

syn.request

table syn.request(params: table) [yields]

Makes a RESTful HTTP request.

Request Options

OptionDescriptionDefault
UrlThe request URLRequired
MethodThe request method"GET"
HeadersA map of header names to header values{}
CookiesA map of cookie names to cookie values{}
BodyThe request body. Cannot be used with GET or HEAD requests. It might be necessary to specify the Content-Type header when sending JSON or other formats.nil

Synapse Headers

In addition to headers provided by the user, Synapse X adds the following:

Note: Syn-Fingerprint and Syn-User-Identifier have been deprecated in favor of the new public key verification system shown below.

HeaderValueCan Override
User-AgentA string in the format "sx/<build_hash>".Yes
Syn-SignaturePublic-key authenticated headers, base64-encoded. See below for use.No
Syn-FingerprintA string value which uniquely identifies the computer running Synapse X.No
Syn-User-IdentifierA string value which uniquely identifies the current Synapse X user.No

Response Table

syn.request returns the following table once the request is complete:

KeyDescription
SuccessWhether the request succeeded
StatusCodeThe HTTP status code of the response
StatusMessageA human-readable version of StatusCode
HeadersThe response headers
CookiesThe response cookies
BodyThe response body

Public Key Verification

Servers can verify a request was made by Synapse X via the public key verification system, along with syn.crypt.user.sign to verify extra data sent to the server.

To verify a Syn-Signature header, you must use libsodium with the crypto_sign_open function. Pass qgq26x4+4FWdLzRpGZytZfEQJlOeusryQC8ppC2BEVA= (Base64 encoded) as the public key. We will always alert developers and users if this key ever changes.

After signature verification succeeds, you will get a JSON encoded payload with the following fields:

FieldDescription
authenticationTimeUNIX timestamp when the user authenticated this instance (UTC).
fingerprintSame as the Syn-Fingerprint legacy header.
ipAddressThe IP address that was used to authenticate this instance. Please note this can change if the user was using a mobile network/similar. Can be IPv4 or IPv6.
userIdentifierSame as the Syn-User-Identifier legacy header.
userPublicKeyThe Base64 encoded public key for this user. You can use this to verify messages that were signed with the syn.crypt.user.sign function. To verify messages, use the libsodium crypto_sign_verify_detached function with this key as the public key.
userPromptPublicKeyThe Base64 encoded prompt public key for this user. Like the above public key, this can be used to verify messages that were signed with the syn.crypt.user.prompt.sign function.

Please note that new fields can be added to this JSON payload at any time, so don't rely on the above for your JSON schemas. We will never remove fields without first alerting developers, though.

todo: add NodeJS, PHP, ASP.NET example code and probably move this whole section (Public Key Verification) to a page in the Developer Guide

Math APIs

Functions

getboundingbox

(CFrame, Vector3) getboundingbox(parts: table, orientation?: CFrame)

Calculates the bounding box of a list of parts and returns its position (as a CFrame, optionally transformed by orientation) and size.

worldtoscreen

table worldtoscreen(points: table, offset?: Vector3)

Performs world to screen calculations on every Vector3 or BasePart in points and returns the result as a table with matching keys. offset can be provided to offset every position.

Regex Classes

Classes

Timer APIs

Classes

Parallel APIs

Functions

getactors

table getactors()

Returns a list of "active" Actor instances (any connected to a Lua state).

getactorstates

table getactorstates()

Returns a list of LuaStateProxy objects representing all Lua states created by the engine for use by Actors.

getluastate

LuaStateProxy getluastate(actor_or_script?: Instance)

Returns a LuaStateProxy for the given Actor or loaded script. If not provided, the current LuaStateProxy is returned.

getgamestate

LuaStateProxy getgamestate()

Returns a LuaStateProxy for the default game state.

checkparallel

bool checkparallel()

Returns whether this code is executing in parallel.

syn.run_on_actor

bool syn.run_on_actor(actor: Instance, source: string, ...any)

Schedules code to be executed on an actor's Lua state.

Classes

Events

syn.on_actor_state_created(actor: Instance)

Fired upon actor Lua state creation, before any scripts are ran.

Namespace Index

Bit Library

All bit library functions take 32-bit unsigned integers and return a signed 32-bit result. Take note of this when implementing. If you want unsigned results, we suggest using the bit32 library.

Functions

badd

int bit.badd(...uint)

Adds 2 or more integers.

bsub

int bit.bsub(...uint)

Subtracts 2 or more integers (from left to right).

bmul

int bit.bmul(...uint)

Multiplies 2 or more integers.

bdiv

int bit.bdiv(...uint)

Divides 2 or more integers (from left to right).

band

int bit.band(...uint)

Performs bitwise AND on 2 or more integers.

bor

int bit.bor(...uint)

Performs bitwise OR on 2 or more integers.

bxor

int bit.bxor(...uint)

Performs bitwise XOR on 2 or more integers.

bnot

int bit.bnot(...uint)

Performs bitwise NOT on an integer.

lshift

int bit.lshift(value: uint, n: uint)

Shifts value left by n bits.

rshift

int bit.rshift(value: uint, n: uint)

Shifts value right by n bits.

arshift

int bit.arshift(value: uint, n: uint)

Performs an arthimetic shift right on value by n bits.

rol

int bit.rol(value: uint, n: uint)

Rotates value left n bits.

ror

int bit.ror(value: uint, n: uint)

Rotates value right n bits.

bpopcount

int bit.bpopcount(value: uint)

Returns the number of set bits in value.

bswap

int bit.bswap(value: uint)

Inverts value's endianness.

tohex

int bit.tohex(value: uint, nibbles?: int = 8)

Converts value to a hex string.

tobit

int bit.tobit(value: uint)

Converts value into proper form for bitwise operations.

Synapse Library

Namespaces

Functions

queue_on_teleport

void syn.queue_on_teleport(script: string)

Queues script to be executed after the next teleport.

clear_teleport_queue

void syn.clear_teleport_queue()

Removes all queued scripts from the teleport queue.

get_thread_identity

int syn.get_thread_identity()

Returns the current thread's context level.

set_thread_identity

void syn.set_thread_identity(identity: int)

Sets the current thread's context level.

protect_gui

void syn.protect_gui(target: Instance)

protect_gui is deprecated. For backwards compatability, this function will cause target to be parented the return value of gethui() the next time it is parented.

unprotect_gui

void syn.unprotect_gui(target: Instance)

unprotect_gui is deprecated. For backwards compatability, this function will disable the parent-redirection done by protect_gui.

trampoline_call

(bool, ...any|string) syn.trampoline_call(target: function, call_stack: table, thread_options: table, ...any)

Proxy a call to a Lua function with the given call stack and thread options. call_stack is an array of tables, with each sub-table having fields described below.

The thread parameter allows you to preset the script, identity, and env fields with the values from that thread. This field is optional, and those fields can be overridden after the fact.

Note: These values do not need to correlate with actual information returned by debug.getinfo; they are fully customizable.

Note: The func parameter will override all other data you pass here aside from currentline!

Call Stack EntryDescription
currentlineThe currently executing line of code.
envThe function's environment.
sourceThe 'source' field returned by debug.getinfo.
nameThe function's name.
numparamsThe number of parameters in the function.
is_varargWhether this function takes variadic arguments.
funcA function to copy all information from.
Thread Option EntryDescription
scriptThe script attached to the thread.
identityThe identity of the new state.
envThe global environment of the new thread.
threadA thread used as the parent.

toast_notification

void syn.toast_notification(options: table)

Displays a toast notification in the internal UI. The options table follows the following format:

OptionDescriptionDefault
TypeToastType enumRequired
DurationHow long the notification should last, in seconds5
TitleThe notification's titleRequired
ContentThe notification's contentRequired
IconColorOverrides the icon colorVaries by Type

ipc_send

void syn.ipc_send(data: any)

Sends data to the UI.

run_on_actor

bool syn.run_on_actor(actor: Instance, source: string, ...any)

Schedules code to be executed on an actor's Lua state.

request

table syn.request(params: table) [yields]

Makes a RESTful HTTP request.

Request Options

OptionDescriptionDefault
UrlThe request URLRequired
MethodThe request method"GET"
HeadersA map of header names to header values{}
CookiesA map of cookie names to cookie values{}
BodyThe request body. Cannot be used with GET or HEAD requests. It might be necessary to specify the Content-Type header when sending JSON or other formats.nil

Synapse Headers

In addition to headers provided by the user, Synapse X adds the following:

Note: Syn-Fingerprint and Syn-User-Identifier have been deprecated in favor of the new public key verification system shown below.

HeaderValueCan Override
User-AgentA string in the format "sx/<build_hash>".Yes
Syn-SignaturePublic-key authenticated headers, base64-encoded. See below for use.No
Syn-FingerprintA string value which uniquely identifies the computer running Synapse X.No
Syn-User-IdentifierA string value which uniquely identifies the current Synapse X user.No

Response Table

syn.request returns the following table once the request is complete:

KeyDescription
SuccessWhether the request succeeded
StatusCodeThe HTTP status code of the response
StatusMessageA human-readable version of StatusCode
HeadersThe response headers
CookiesThe response cookies
BodyThe response body

Public Key Verification

Servers can verify a request was made by Synapse X via the public key verification system, along with syn.crypt.user.sign to verify extra data sent to the server.

To verify a Syn-Signature header, you must use libsodium with the crypto_sign_open function. Pass qgq26x4+4FWdLzRpGZytZfEQJlOeusryQC8ppC2BEVA= (Base64 encoded) as the public key. We will always alert developers and users if this key ever changes.

After signature verification succeeds, you will get a JSON encoded payload with the following fields:

FieldDescription
authenticationTimeUNIX timestamp when the user authenticated this instance (UTC).
fingerprintSame as the Syn-Fingerprint legacy header.
ipAddressThe IP address that was used to authenticate this instance. Please note this can change if the user was using a mobile network/similar. Can be IPv4 or IPv6.
userIdentifierSame as the Syn-User-Identifier legacy header.
userPublicKeyThe Base64 encoded public key for this user. You can use this to verify messages that were signed with the syn.crypt.user.sign function. To verify messages, use the libsodium crypto_sign_verify_detached function with this key as the public key.
userPromptPublicKeyThe Base64 encoded prompt public key for this user. Like the above public key, this can be used to verify messages that were signed with the syn.crypt.user.prompt.sign function.

Please note that new fields can be added to this JSON payload at any time, so don't rely on the above for your JSON schemas. We will never remove fields without first alerting developers, though.

todo: add NodeJS, PHP, ASP.NET example code and probably move this whole section (Public Key Verification) to a page in the Developer Guide

Events

on_actor_state_created

syn.on_actor_state_created(actor: Instance)

Fired upon actor Lua state creation, before any scripts are ran.

Synapse Cryptography Library

Namespaces

Functions

encrypt

string syn.crypt.encrypt(data: string, key: string, additional_data?: string)

Encrypts data with key, and includes additional_data if it is passed.

(Uses libsodium secretbox for when additional_data isn't passed, and the AEAD form of the same algorithm if it is passed. Nonce is generated and appended before the encrypted message.)

decrypt

string syn.crypt.decrypt(ciphertext: string, key: string, additional_data?: string)

Decrypts ciphertext with key. The data (along with additional_data if it is passed) is also authenticated via a MAC before being returned.

(Uses libsodium secretbox or the AEAD form if additional_data is passed, like above.)

hash

string syn.crypt.hash(data: string, key?: string)

Hashes data with Blake2B. Optionally, you can pass key to create a 'keyed' hash, for which the hash will never be the same for different keys.

(Uses libsodium generic hashing.)

hmac

string syn.crypt.hmac(data: string, key: string)

Creates a HMAC signature from data and key. Note this is not the same as passing a key to the above function, and uses a different algorithm.

(Uses libsodium authentication.)

random

string syn.crypt.random(len: uint)

Generates a random string with size (cannot be negative or exceed 1024).

syn.crypt.base64

Functions

encode

string syn.crypt.base64.encode(input: string)

Base64 encodes input.

decode

string syn.crypt.base64.decode(input: string)

Base64 decodes input.

syn.crypt.hex

Functions

encode

string syn.crypt.hex.encode(input: string)

Encodes input in hexadecimal.

decode

string syn.crypt.hex.decode(input: string)

Decodes input in hexadecimal.

syn.crypt.lz4

Functions

compress

string syn.crypt.lz4.compress(data: string)

Compresses data with LZ4.

syn.crypt.derive

Functions

key

string syn.crypt.derive.key(len: uint, key: string, sub_key_id: uint, context: string)

Derives a cryptographic key from another key specified - len specifies the length of the generated key, sub_key_id is the index of the key to generate, and context is a 8-byte string that uniquely identifies the script that is generating this key.

The context string can be any 8 ASCII characters. Some examples are SynapseX, MyScript, and _Script_.

Note: Due to Lua's usage of 64 bit floating point numbers, the maximum safe integer to pass to sub_key_id is 2^52. Passing a larger number will result in undefined behavior.

(Uses libsodium key derivation.)

string syn.crypt.derive.key(len: uint, key: string, id: string)

Alternatively, you can derive a cryptographic key from key with len length from a simple ID passed into id. This can be a message of any length.

(Uses libsodium generic hashing, with the key being used for a keyed hash.)

password

string syn.crypt.derive.password(len: uint, password: string, salt: string, mode: PasswordDerivationMode) [yields]

Derives a cryptographic key from a user-entered password. Due to passwords usually being low-complexity and easy to crack, this function uses a password hashing function to achieve its goals.

In order to use this function, you must pass a 16-byte salt. You can generate this via syn.crypt.random.

Password hashing functions are deliberately slow - this is to make bruteforce attacks harder. The mode (or opslimit/memlimit) parameter allows you to specify how much security you want your derived key to have. You should choose the mode you wish to use based on how acceptable the wait for function completion is for your application, and what the security requirements for your application are.

Warning: Using the higher security PasswordDerivationMode options (or a memlimit parameter higher then 512MiB) with more then one password hash being processed at once can cause crashes due to high-memory requirements for the hash function.

(Uses libsodium password hashing.)

PasswordDerivationMode

ModeNote
InteractiveThe password hash takes ~100 milliseconds to complete on a modern PC.
ModerateThe password hash takes ~1 second to complete on a modern PC.
SensitiveThe password hash takes ~5 seconds to complete on a modern PC. Please note the warning above, as it particularly affects this.
string syn.crypt.derive.password(len: uint, password: string, salt: string, ops_limit: uint, mem_limit: uint) [yields]

syn.crypt.user

Namespaces

Functions

encrypt

string syn.crypt.user.encrypt(data: string, mode: UserEncryptionMode, key?: string)

Encrypts data in a way that only the caller's Synapse X account can decrypt it. You can also pass a key to add a secondary key to the encryption if you wish.

Note: If the user resets their Synapse X password, the output of this function will not be decryptable anymore. The user simply changing their password when they know their current one will not cause this to happen, however.

The mode parameter controls how the encryption works.

UserEncryptionMode

ModeNote
SynAccountTies the encrypted data to the users Synapse X account. The data is decryptable on other machines if the pre-conditions stated above are met.
WindowsAccountTies the encrypted data to both the users Synapse X account and Windows account. The data is only decryptable if both the pre-conditions stated above are met and the user does not reset their Windows password.
WindowsMachineTies the encrypted data to both the users Synapse X account and Windows machine. The data is only decryptable if both the pre-conditions stated above are met and the user does not reset their Windows PC.

decrypt

string syn.crypt.user.decrypt(ciphertext: string, key?: string)

Decrypts ciphertext from the Per-User Encrypt function above. You do not need to pass the UserEncryptionMode you used to encrypt this data, but you need to pass the key you used to encrypt the data if one was specified. The function will error if decryption fails.

sign

string syn.crypt.user.sign(data: string)

Signs data in a way that only the caller's Synapse X account can produce this signature. Equivalent to syn.crypt.sign.detached.create with a user-unique key.

You can verify data was signed with this method from a web request. See the HTTP APIs for more information.

verify

bool syn.crypt.user.verify(data: string, signature: string)

Verifies data was signed by the syn.crypt.user.sign function from the caller's Synapse X account. If you want to verify data signed by another user, get their public key from the HTTP APIs.

crypto.user.prompt

All Per-User APIs also have a prompting equivalent under the syn.crypt.user.prompt table. These functions make a verification box asking the user to authenticate the request made by the script, and only return the data if the user accepts. This is more useful for more 'high security' data that you dont want cryptographic operations performed on by an unauthorized script.

All of these functions yield as well, with the exclusion of syn.crypt.user.prompt.verify which does not need to be authenticated by the user.

Functions

encrypt

string syn.crypt.user.prompt.encrypt(data: string, mode: UserEncryptionMode, key?: string) [yields]

Prompt equivalent to syn.crypt.user.encrypt.

decrypt

string syn.crypt.user.prompt.decrypt(ciphertext: string, key?: string) [yields]

Prompt equivalent to syn.crypt.user.decrypt

sign

string syn.crypt.user.prompt.sign(data: string) [yields]

Prompt equivalent to syn.crypt.user.sign.

verify

bool syn.crypt.user.prompt.verify(data: string, signature: string)

Prompt equivalent to syn.crypt.user.verify.

syn.crypt.seal

Functions

keygen

(string, string) syn.crypt.seal.keygen()

Generates a new public & secret keypair, and returns it in that order.

derive

(string, string) syn.crypt.seal.derive(key: string)

TODO

encrypt

string syn.crypt.seal.encrypt(plaintext: string, public_key: string)

Encrypts data with the public_key. The data can only be later decrypted via the secret key in the keypair.

decrypt

string syn.crypt.seal.decrypt(ciphertext: string, public_key: string, secret_key: string)

Decrypts data with the public_key and secret_key.

syn.crypt.sign

Namespaces

Functions

keygen

(string, string) syn.crypt.sign.keygen()

Generates a new public & secret keypair, and returns it in that order.

NOTE; These keypairs are NOT compatible with the ones used for the encryption library above.

derive

(string, string) syn.crypt.sign.derive(key: string)

TODO

create

string syn.crypt.sign.create(data: string, secret_key: string)

Creates a signature for data with the secret_key, and returns the signature combined with the message.

open

string syn.crypt.sign.open(data: string, public_key: string)

Verifies the data passed in with the public_key, and returns the original message if the verification succeeds. Errors if verification fails.

syn.crypt.sign.detached

Functions

create

string syn.crypt.sign.detached.create(data: string, secret_key: string)

Creates a signature for data with the secret_key, and returns the signature.

verify

bool syn.crypt.sign.detached.verify(data: string, signature: string, public_key: string)

Verifies the data passed in with the public_key and signature, and returns true if the verification succeeds. Returns false if verification fails.

syn.crypt.custom

Functions

encrypt

string syn.crypt.custom.encrypt(cipher: string, data: string, key: string, iv: string)

Encrypts data with key using selected cipher and iv/nonce.

decrypt

string syn.crypt.custom.decrypt(cipher: string, data: string, key: string, iv: string)

Decrypts ciphertext with key using selected cipher and iv/nonce.

hash

string syn.crypt.custom.hash(cipher: string, data: string)

Hashes data with algorithm.

Custom Hashing Algorithms

MD5SHA1SHA2SHA3BLAKE
md5sha1sha224sha3-224blake2b
sha256sha3-256blake2s
sha384sha3-384
sha512sha3-512

hmac

string syn.crypt.custom.hmac(cipher: string, data: string, key: string)

Creates a HMAC signature from data and key with algorithm.

Custom HMAC Algorithms

MD5SHA1SHA2SHA3
md5sha1sha256sha3-224
sha384sha3-256
sha512sha3-384
sha3-512

syn.crypt.url

Functions

encode

string syn.crypt.url.encode(data: string)

decode

string syn.crypt.url.decode(data: string)

syn.oth

Functions

hook

function syn.oth.hook(target: function, hook: function)

A secure version of hookfunction for C functions that works by running hook code on separate threads. When a hooked function is called, a new or cached hook thread is resumed with the hook and any passed arguments. The returned callback can be used to execute the original function on the original, calling thread.

In the context of a hook thread, the following functions behave as though being called under the original thread:

  • getnamecallmethod
  • setnamecallmethod
  • checkcaller
  • checkcallstack
  • getcallingscript
  • the debug library (debug.*)
  • TODO

unhook

bool syn.oth.unhook(target: function, hook_or_callback?: function)

Un-hooks a function hooked with syn.oth.hook. The second parameter is not required if the function has only been hooked once. Returns true upon success.

get_root_callback

function syn.oth.get_root_callback()

Returns a function that can be used to call the original function in the context of a hook thread. Useful for when a function is hooked multiple times and the callback you receive from syn.oth.hook executes the next hook in the chain, not the original function.

is_hook_thread

bool syn.oth.is_hook_thread()

Returns true if this thread is a hook thread.

get_original_thread

thread syn.oth.get_original_thread()

Return the original thread this hook comes from, or nil if the current thread is not a hook.

Debug Library

Functions

validlevel

bool debug.validlevel(level: int, t?: thread)

Checks if level is a valid index level for the current thread or t if passed.

getcallstack

table debug.getcallstack(t?: thread)

Returns a table with each index having fields for the func being executed at that call stack level, and the currentline if it is a Lua closure. Uses t instead of the callers thread if one is passed.

getprotos

table debug.getprotos(f: function | int | ProtoProxy)

Returns a table containing the inner prototypes of function f. Use debug.getproto with activated set to true to get a list of closures.

getproto

table | ProtoProxy debug.getproto(f: function | int | ProtoProxy, index?: int, activated?: bool)

Gets the inner function of f at index.

Note: If activated is true, it instead will return a table of functions. These are the closures of that proto that exist within the GC.

getstack

any debug.getstack(level: int, index?: int)

Gets the method stack at level index. If index is not provided, a table is returned.

setstack

void debug.setstack(level: int, index: int, value: any)

Sets a stack value at index for function at level to value.

getupvalues

table debug.getupvalues(fi: function | int)

Retrieve the upvalues in function fi or at level fi.

getupvalue

any debug.getupvalue(fi: function | int, index: int)

Returns the upvalue with index idx in function or level fi.

setupvalue

void debug.setupvalue(fi: function | int, index: int, value: any)

Sets an upvalue at index idx in function or level fi.

getconstants

table debug.getconstants(f: function | int | ProtoProxy, pseudo_indices?: bool = False)

Retrieve the constants in function fi or at level fi.

getconstant

any debug.getconstant(f: function | int | ProtoProxy, index: int)

Returns the constant at index idx in function fi or level fi.

setconstant

any debug.setconstant(f: function | int | ProtoProxy, index: int, value: any, pseudo_indices?: bool = False)

Set constant idx to tuple value at level or function fi.

getmetatable

table debug.getmetatable(t: table)

Equivalent to getrawmetatable.

setmetatable

void debug.setmetatable(t: table, mt: table)

Equivalent to setrawmetatable.

getregistry

table debug.getregistry()

Equivalent to getreg.

Drawing

Functions

new

any Drawing.new(type_name: string)

Instantiates a new DrawEntry object. Equivalent to <Type>.new(). Valid type names include:

Enums

DrawingImmediate

NOTE: DrawingImmediate APIs can only be called during render steps. See DrawingImmediate.GetPaint for more information.

Functions

Line

void DrawingImmediate.Line(p1: Vector2, p2: Vector2, color: Color3, opacity: number, thickness: number)

Draws a line.

Circle

void DrawingImmediate.Circle(center: Vector2, radius: number, color: Color3, opacity: number, num_sides: int, thickness: number)

Draws a circle.

FilledCircle

void DrawingImmediate.FilledCircle(center: Vector2, radius: number, color: Color3, num_sides: int, opacity: number)

Draws a filled circle.

Triangle

void DrawingImmediate.Triangle(p1: Vector2, p2: Vector2, p3: Vector3, color: Color3, opacity: number, thickness: number)

Draws a triangle.

FilledTriangle

void DrawingImmediate.FilledTriangle(p1: Vector2, p2: Vector2, p3: Vector3, color: Color3, opacity: number)

Draws a filled triangle.

Rectangle

void DrawingImmediate.Rectangle(top_left: Vector2, size: Vector2, color: Color3, opacity: number, rounding: number, thickness: number)

Draws a rectangle.

FilledRectangle

void DrawingImmediate.FilledRectangle(top_left: Vector2, size: Vector2, color: Color3, opacity: number, rounding: number)

Draws a filled rectangle.

Quad

void DrawingImmediate.Quad(p1: Vector2, p2: Vector2, p3: Vector2, p4: Vector2, color: Color3, opacity: number, thickness: number)

Draws a quad.

FilledQuad

void DrawingImmediate.FilledQuad(p1: Vector2, p2: Vector2, p3: Vector2, p4: Vector2, color: Color3, opacity: number)

Draws a filled quad.

Text

void DrawingImmediate.Text(position: Vector2, font: DrawFont, font_size: number, color: Color3, opacity: number, text: string, center: bool)

Draws text.

OutlinedText

void DrawingImmediate.OutlinedText(position: Vector2, font: DrawFont, font_size: number, color: Color3, opacity: number, outline_color: Color3, outline_opacity: number, text: string, center: bool)

Draws outlined text.

GetPaint

SynSignal DrawingImmediate.GetPaint(z_index: int)

Returns an event that is fired every render step for a specific z-index. Lower value z_index events will fire before higher value events. DrawingImmediate.* APIs can only be called under these events.

Class Index

Class: DrawFont

Static Methods


DrawFont DrawFont.RegisterDefault(font_name: string, options: table) [yields]
DrawFont DrawFont.Register(font_data: string, options: table) [yields]
table DrawFont.ListDefault()

Returns a list of the default registered fonts.

Methods


Vector2 DrawFont:GetTextBounds(size: float, text: string)

Calculates the bounds a string of text occupies given a font size.

Class: Drawing

Methods


void Drawing:WaitForRenderer() [yields]

Yields until the game renderer is fully initialized. Returns immediately if the renderer is already enabled.

Class: DrawEntry

Properties


bool Visible

Determines whether a DrawEntry will be rendered.

int ZIndex

Determines the order in which a DrawEntry is rendered relative to other GUIs.

float Transparency

A V2-era misnomer and now alias for 'Opacity'. Deprecated.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntry, where 0 is fully transparent and 1 is fully opaque.

Color3 Color

Determines the color of a DrawEntry.

Vector3 ColorVec3 [writeonly]

Used to set Color via a Vector3. Write-only.

Methods


void DrawEntry:Remove()

Disables a DrawEntry.

void DrawEntry:Destroy()

An alias for Remove.

void DrawEntry:MoveToFront()

Moves a DrawEntry to the front of the current ZIndex's draw list.

void DrawEntry:MoveToBack()

Moves a DrawEntry to the back of the current ZIndex's draw list.

Class: Line

Static Methods


Line Line.new()

Properties


float Thickness

Determines the thickness of a Line in pixels.

Vector2 From

Determines the starting position of a Line.

Vector2 To

Determines the end position of a Line.

Inherited from DrawEntry:
bool Visible

Determines whether a DrawEntry will be rendered.

int ZIndex

Determines the order in which a DrawEntry is rendered relative to other GUIs.

float Transparency

A V2-era misnomer and now alias for 'Opacity'. Deprecated.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntry, where 0 is fully transparent and 1 is fully opaque.

Color3 Color

Determines the color of a DrawEntry.

Vector3 ColorVec3 [writeonly]

Used to set Color via a Vector3. Write-only.

Methods


Inherited from DrawEntry:
void Line:Remove()

Disables a DrawEntry.

void Line:Destroy()

An alias for Remove.

void Line:MoveToFront()

Moves a DrawEntry to the front of the current ZIndex's draw list.

void Line:MoveToBack()

Moves a DrawEntry to the back of the current ZIndex's draw list.

Class: Text

Static Methods


Text Text.new()

Properties


string Text

Determines the text to be displayed.

Vector2 TextBounds [readonly]

Determines the Vector2 space occupied by a Text object.

number Size

Determines the font size of a Text object.

Drawing.Fonts Font

Determines the font of a Text object.

bool Centered

Determines whether the displayed text is centered.

bool Outlined

Determines whether the displayed text is outlined.

Color3 OutlineColor

Determines the outline color of the displayed text.

Vector2 Position

Determines the position of a Text object.

Inherited from DrawEntry:
bool Visible

Determines whether a DrawEntry will be rendered.

int ZIndex

Determines the order in which a DrawEntry is rendered relative to other GUIs.

float Transparency

A V2-era misnomer and now alias for 'Opacity'. Deprecated.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntry, where 0 is fully transparent and 1 is fully opaque.

Color3 Color

Determines the color of a DrawEntry.

Vector3 ColorVec3 [writeonly]

Used to set Color via a Vector3. Write-only.

Methods


Inherited from DrawEntry:
void Text:Remove()

Disables a DrawEntry.

void Text:Destroy()

An alias for Remove.

void Text:MoveToFront()

Moves a DrawEntry to the front of the current ZIndex's draw list.

void Text:MoveToBack()

Moves a DrawEntry to the back of the current ZIndex's draw list.

Class: Image

Static Methods


Image Image.new()

Properties


string Data

Determines the raw image data for an Image.

Vector2 ImageSize [readonly]

Determines the dimensions of the image held by the Data property.

Vector2 Size

Determines the size of an Image.

Vector2 Position

Determines the position of an Image.

number Rounding

Determines the roundness of an Image.

Inherited from DrawEntry:
bool Visible

Determines whether a DrawEntry will be rendered.

int ZIndex

Determines the order in which a DrawEntry is rendered relative to other GUIs.

float Transparency

A V2-era misnomer and now alias for 'Opacity'. Deprecated.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntry, where 0 is fully transparent and 1 is fully opaque.

Color3 Color

Determines the color of a DrawEntry.

Vector3 ColorVec3 [writeonly]

Used to set Color via a Vector3. Write-only.

Methods


Inherited from DrawEntry:
void Image:Remove()

Disables a DrawEntry.

void Image:Destroy()

An alias for Remove.

void Image:MoveToFront()

Moves a DrawEntry to the front of the current ZIndex's draw list.

void Image:MoveToBack()

Moves a DrawEntry to the back of the current ZIndex's draw list.

Class: Circle

Static Methods


Circle Circle.new()

Properties


number Thickness

Determines the thickness of a Circle.

int NumSides

Determines the number of segments that make up a Circle.

number Radius

Determines the radius of a Circle.

bool Filled

Determines whether a Circle is filled.

Vector2 Position

Determines the position of a Circle.

Inherited from DrawEntry:
bool Visible

Determines whether a DrawEntry will be rendered.

int ZIndex

Determines the order in which a DrawEntry is rendered relative to other GUIs.

float Transparency

A V2-era misnomer and now alias for 'Opacity'. Deprecated.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntry, where 0 is fully transparent and 1 is fully opaque.

Color3 Color

Determines the color of a DrawEntry.

Vector3 ColorVec3 [writeonly]

Used to set Color via a Vector3. Write-only.

Methods


Inherited from DrawEntry:
void Circle:Remove()

Disables a DrawEntry.

void Circle:Destroy()

An alias for Remove.

void Circle:MoveToFront()

Moves a DrawEntry to the front of the current ZIndex's draw list.

void Circle:MoveToBack()

Moves a DrawEntry to the back of the current ZIndex's draw list.

Class: Square

Static Methods


Square Square.new()

Properties


number Thickness

Determines the thickness of a Square.

Vector2 Size

Determines the size of a Square.

Vector2 Position

Determines the position of a Square.

bool Filled

Determines whether a Square is filled.

Inherited from DrawEntry:
bool Visible

Determines whether a DrawEntry will be rendered.

int ZIndex

Determines the order in which a DrawEntry is rendered relative to other GUIs.

float Transparency

A V2-era misnomer and now alias for 'Opacity'. Deprecated.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntry, where 0 is fully transparent and 1 is fully opaque.

Color3 Color

Determines the color of a DrawEntry.

Vector3 ColorVec3 [writeonly]

Used to set Color via a Vector3. Write-only.

Methods


Inherited from DrawEntry:
void Square:Remove()

Disables a DrawEntry.

void Square:Destroy()

An alias for Remove.

void Square:MoveToFront()

Moves a DrawEntry to the front of the current ZIndex's draw list.

void Square:MoveToBack()

Moves a DrawEntry to the back of the current ZIndex's draw list.

Class: Triangle

Static Methods


Triangle Triangle.new()

Properties


number Thickness

Determines a Triangle's thickness.

Vector2 PointA

The position of a Triangle's first point.

Vector2 PointB

The position of a Triangle's second point.

Vector2 PointC

The position of a Triangle's third point.

bool Filled

Determines whether a Triangle is filled.

Inherited from DrawEntry:
bool Visible

Determines whether a DrawEntry will be rendered.

int ZIndex

Determines the order in which a DrawEntry is rendered relative to other GUIs.

float Transparency

A V2-era misnomer and now alias for 'Opacity'. Deprecated.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntry, where 0 is fully transparent and 1 is fully opaque.

Color3 Color

Determines the color of a DrawEntry.

Vector3 ColorVec3 [writeonly]

Used to set Color via a Vector3. Write-only.

Methods


Inherited from DrawEntry:
void Triangle:Remove()

Disables a DrawEntry.

void Triangle:Destroy()

An alias for Remove.

void Triangle:MoveToFront()

Moves a DrawEntry to the front of the current ZIndex's draw list.

void Triangle:MoveToBack()

Moves a DrawEntry to the back of the current ZIndex's draw list.

Class: Quad

Static Methods


Quad Quad.new()

Properties


number Thickness

Determines a Quad's thickness.

Vector2 PointA

The position of a Quad's first point.

Vector2 PointB

The position of a Quad's second point.

Vector2 PointC

The position of a Quad's third point.

Vector2 PointD

The position of a Quad's fourth point.

bool Filled

Determines whether a Quad is filled.

Inherited from DrawEntry:
bool Visible

Determines whether a DrawEntry will be rendered.

int ZIndex

Determines the order in which a DrawEntry is rendered relative to other GUIs.

float Transparency

A V2-era misnomer and now alias for 'Opacity'. Deprecated.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntry, where 0 is fully transparent and 1 is fully opaque.

Color3 Color

Determines the color of a DrawEntry.

Vector3 ColorVec3 [writeonly]

Used to set Color via a Vector3. Write-only.

Methods


Inherited from DrawEntry:
void Quad:Remove()

Disables a DrawEntry.

void Quad:Destroy()

An alias for Remove.

void Quad:MoveToFront()

Moves a DrawEntry to the front of the current ZIndex's draw list.

void Quad:MoveToBack()

Moves a DrawEntry to the back of the current ZIndex's draw list.

Class: Point

Properties


Vector2 ScreenPos [readonly]

A Point's screen position.

bool Visible [readonly]

Determines whether a Point is rendered.

bool HasColorOverride

Toggles the overriding of a Point's color. Used when rendering a Point using a triangulated PolylineDynamic.

Color3 ColorOverride

Overrides a Point's color when HasColorOverride is true.

Vector3 ColorOverrideVec3 [writeonly]

Sets ColorOverride using a Vector3. Write-only.

number ColorOverrideOpacity

Determines the opacity of a Point's override color.

Class: Point2D

A point in two-dimensional space.

Static Methods


Point2D Point2D.new()
Point2D Point2D.new(point: UDim2)
Point2D Point2D.new(point: Vector2)
Point2D Point2D.new(x: number, y: number)
Point2D Point2D.new(x_scale: number, x_offset: number, y_scale: number, y_offset: number)

Properties


UDim2 Point

A Point2D's position.

Vector2 PointVec2

Allows you to get/set Point directly as Vector2. Returns only the offset fields of UDim2!

Inherited from Point:
Vector2 ScreenPos [readonly]

A Point's screen position.

bool Visible [readonly]

Determines whether a Point is rendered.

bool HasColorOverride

Toggles the overriding of a Point's color. Used when rendering a Point using a triangulated PolylineDynamic.

Color3 ColorOverride

Overrides a Point's color when HasColorOverride is true.

Vector3 ColorOverrideVec3 [writeonly]

Sets ColorOverride using a Vector3. Write-only.

number ColorOverrideOpacity

Determines the opacity of a Point's override color.

Class: Point3D

A point in three-dimensional space.

Static Methods


Point3D Point3D.new()
Point3D Point3D.new(point: Vector3)
Point3D Point3D.new(x: number, y: number, z: number)

Properties


Vector3 Point

A Point3D's position.

Inherited from Point:
Vector2 ScreenPos [readonly]

A Point's screen position.

bool Visible [readonly]

Determines whether a Point is rendered.

bool HasColorOverride

Toggles the overriding of a Point's color. Used when rendering a Point using a triangulated PolylineDynamic.

Color3 ColorOverride

Overrides a Point's color when HasColorOverride is true.

Vector3 ColorOverrideVec3 [writeonly]

Sets ColorOverride using a Vector3. Write-only.

number ColorOverrideOpacity

Determines the opacity of a Point's override color.

Class: PointInstance

A dynamic point whose position is linked to an instance's 'CFrame' property.

Static Methods


PointInstance PointInstance.new(instance?: Instance, offset?: CFrame)

Properties


Instance Instance

Determines the instance a PointInstance will track.

CFrame Offset

Describes the offset from a PointInstance's instance.

CFrameRotationType RotationType

Describes how the rotation of Offset affects the WorldPos. Defaults to CameraRelative.

Vector3 WorldPos [readonly]

Describes a PointInstance's world position. Read only.

Inherited from Point:
Vector2 ScreenPos [readonly]

A Point's screen position.

bool Visible [readonly]

Determines whether a Point is rendered.

bool HasColorOverride

Toggles the overriding of a Point's color. Used when rendering a Point using a triangulated PolylineDynamic.

Color3 ColorOverride

Overrides a Point's color when HasColorOverride is true.

Vector3 ColorOverrideVec3 [writeonly]

Sets ColorOverride using a Vector3. Write-only.

number ColorOverrideOpacity

Determines the opacity of a Point's override color.

Class: PointMouse

A dynamic point whose position is linked to the user's mouse.

Properties


Inherited from Point:
Vector2 ScreenPos [readonly]

A Point's screen position.

bool Visible [readonly]

Determines whether a Point is rendered.

bool HasColorOverride

Toggles the overriding of a Point's color. Used when rendering a Point using a triangulated PolylineDynamic.

Color3 ColorOverride

Overrides a Point's color when HasColorOverride is true.

Vector3 ColorOverrideVec3 [writeonly]

Sets ColorOverride using a Vector3. Write-only.

number ColorOverrideOpacity

Determines the opacity of a Point's override color.

Class: PointOffset

A dynamic point whose position is offset from another Point.

Static Methods


PointOffset PointOffset.new()
PointOffset PointOffset.new(point: Point)
PointOffset PointOffset.new(point: Point, offset: Vector2)
PointOffset PointOffset.new(point: Point, x_offset: number, y_offset: number)

Properties


Point Point

Holds a reference to a Point.

Vector2 Offset

Describes an offset to the Point.

Inherited from Point:
Vector2 ScreenPos [readonly]

A Point's screen position.

bool Visible [readonly]

Determines whether a Point is rendered.

bool HasColorOverride

Toggles the overriding of a Point's color. Used when rendering a Point using a triangulated PolylineDynamic.

Color3 ColorOverride

Overrides a Point's color when HasColorOverride is true.

Vector3 ColorOverrideVec3 [writeonly]

Sets ColorOverride using a Vector3. Write-only.

number ColorOverrideOpacity

Determines the opacity of a Point's override color.

Class: DrawEntryDynamic

Properties


bool Visible

Determines whether a DrawEntryDynamic will be rendered.

int ZIndex

Determines the order in which a DrawEntryDynamic is rendered relative to other GUIs.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic.

Color3 Color

Determines the color of a DrawEntryDynamic.

bool Outlined

Whether a DrawEntryDynamic is outlined.

number OutlineOpacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic's outline.

number OutlineThickness

The thickness of a DrawEntryDynamic's outline, in pixels.

Color3 OutlineColor

The color of a DrawEntryDynamic's outline.

Methods


void DrawEntryDynamic:MoveToFront()

Moves a DrawEntryDynamic to the front of the current ZIndex's draw list.

void DrawEntryDynamic:MoveToBack()

Moves a DrawEntryDynamic to the back of the current ZIndex's draw list.

Class: LineDynamic

Static Methods


LineDynamic LineDynamic.new()
LineDynamic LineDynamic.new(p1: Point, p2: Point)

Properties


float Thickness

Determines the thickness of a LineDynamic in pixels.

Point From

Determines the starting Point of a LineDynamic.

Point To

Determines the end Point of a LineDynamic.

Inherited from DrawEntryDynamic:
bool Visible

Determines whether a DrawEntryDynamic will be rendered.

int ZIndex

Determines the order in which a DrawEntryDynamic is rendered relative to other GUIs.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic.

Color3 Color

Determines the color of a DrawEntryDynamic.

bool Outlined

Whether a DrawEntryDynamic is outlined.

number OutlineOpacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic's outline.

number OutlineThickness

The thickness of a DrawEntryDynamic's outline, in pixels.

Color3 OutlineColor

The color of a DrawEntryDynamic's outline.

Methods


Inherited from DrawEntryDynamic:
void LineDynamic:MoveToFront()

Moves a DrawEntryDynamic to the front of the current ZIndex's draw list.

void LineDynamic:MoveToBack()

Moves a DrawEntryDynamic to the back of the current ZIndex's draw list.

Class: PolyLineDynamic

Static Methods


PolyLineDynamic PolyLineDynamic.new(points?: table)

Properties


float Thickness

Determines the thickness of a PolyLineDynamic in pixels.

PolyLineFillType FillType

Determines how a PolyLineDynamic is filled.

table Points

The array of points that makeup a PolyLineDynamic.

Inherited from DrawEntryDynamic:
bool Visible

Determines whether a DrawEntryDynamic will be rendered.

int ZIndex

Determines the order in which a DrawEntryDynamic is rendered relative to other GUIs.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic.

Color3 Color

Determines the color of a DrawEntryDynamic.

bool Outlined

Whether a DrawEntryDynamic is outlined.

number OutlineOpacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic's outline.

number OutlineThickness

The thickness of a DrawEntryDynamic's outline, in pixels.

Color3 OutlineColor

The color of a DrawEntryDynamic's outline.

Methods


void PolyLineDynamic:ReTriangulate()

Used to re-triangulate a PolyLineDynamic when 'FillType' is set to PolyLineFillType.Triangulated.

void PolyLineDynamic:SetPoints(points: table)

Sets a PolyLineDynamic's points.

Inherited from DrawEntryDynamic:
void PolyLineDynamic:MoveToFront()

Moves a DrawEntryDynamic to the front of the current ZIndex's draw list.

void PolyLineDynamic:MoveToBack()

Moves a DrawEntryDynamic to the back of the current ZIndex's draw list.

Class: TextDynamic

Static Methods


TextDynamic TextDynamic.new(point?: Point)

Properties


string Text

Determines the text to be displayed.

Vector2 TextBounds [readonly]

Indicates the Vector2 space occupied by a TextDynamic.

number Size

Determines the font size of a TextDynamic's text.

Drawing.Fonts Font

Determines the font of a TextDynamic's text.

Point Position

Determines the Point of a TextDynamic object.

XAlignment XAlignment

Determines the x-axis alignment of a TextDynamic's position.

YAlignment YAlignment

Determines the y-axis alignment of a TextDynamic's position.

XAlignment TextXAlignment

Determines the x-axis alignment of a TextDynamic's text when there are multiple lines.

Inherited from DrawEntryDynamic:
bool Visible

Determines whether a DrawEntryDynamic will be rendered.

int ZIndex

Determines the order in which a DrawEntryDynamic is rendered relative to other GUIs.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic.

Color3 Color

Determines the color of a DrawEntryDynamic.

bool Outlined

Whether a DrawEntryDynamic is outlined.

number OutlineOpacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic's outline.

number OutlineThickness

The thickness of a DrawEntryDynamic's outline, in pixels.

Color3 OutlineColor

The color of a DrawEntryDynamic's outline.

Methods


Inherited from DrawEntryDynamic:
void TextDynamic:MoveToFront()

Moves a DrawEntryDynamic to the front of the current ZIndex's draw list.

void TextDynamic:MoveToBack()

Moves a DrawEntryDynamic to the back of the current ZIndex's draw list.

Class: CircleDynamic

Static Methods


CircleDynamic CircleDynamic.new(point?: Point)

Properties


number Thickness

Determines the thickness of a CircleDynamic.

int NumSides

Determines the number of segments that make up a CircleDynamic.

number Radius

Determines the radius of a CircleDynamic. Only used if Edge is nil.

bool Filled

Determines whether a CircleDynamic is filled.

Point Position

Determines a CircleDynamic's center Point.

Point Edge

Determines a CircleDynamic's edge Point. If this field is set to nil, Radius is used.

XAlignment XAlignment
YAlignment YAlignment
Inherited from DrawEntryDynamic:
bool Visible

Determines whether a DrawEntryDynamic will be rendered.

int ZIndex

Determines the order in which a DrawEntryDynamic is rendered relative to other GUIs.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic.

Color3 Color

Determines the color of a DrawEntryDynamic.

bool Outlined

Whether a DrawEntryDynamic is outlined.

number OutlineOpacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic's outline.

number OutlineThickness

The thickness of a DrawEntryDynamic's outline, in pixels.

Color3 OutlineColor

The color of a DrawEntryDynamic's outline.

Methods


Inherited from DrawEntryDynamic:
void CircleDynamic:MoveToFront()

Moves a DrawEntryDynamic to the front of the current ZIndex's draw list.

void CircleDynamic:MoveToBack()

Moves a DrawEntryDynamic to the back of the current ZIndex's draw list.

Class: RectDynamicBase

Properties


Vector2 Size

A RectDynamicBase's size. Only used if BottomRight is not set.

Point Position

The RectDynamicBase root position.

Point BottomRight

If set, the bottom-right corner of the RectDynamicBase. When used, Position ignores alignment and is used as the top-left corner.

XAlignment XAlignment

How a RectDynamicBase is aligned on the x-axis relative to its Position.

YAlignment YAlignment

How a RectDynamicBase is aligned on the y-axis relative to its Position.

Inherited from DrawEntryDynamic:
bool Visible

Determines whether a DrawEntryDynamic will be rendered.

int ZIndex

Determines the order in which a DrawEntryDynamic is rendered relative to other GUIs.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic.

Color3 Color

Determines the color of a DrawEntryDynamic.

bool Outlined

Whether a DrawEntryDynamic is outlined.

number OutlineOpacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic's outline.

number OutlineThickness

The thickness of a DrawEntryDynamic's outline, in pixels.

Color3 OutlineColor

The color of a DrawEntryDynamic's outline.

Methods


Inherited from DrawEntryDynamic:
void RectDynamicBase:MoveToFront()

Moves a DrawEntryDynamic to the front of the current ZIndex's draw list.

void RectDynamicBase:MoveToBack()

Moves a DrawEntryDynamic to the back of the current ZIndex's draw list.

Class: RectDynamic

Static Methods


RectDynamic RectDynamic.new(point?: Point)

Properties


number Thickness

The thickness of a RectDynamic, in pixels.

bool Filled

Whether or not a RectDynamic is filled.

number Rounding

Describes the roundness of a RectDynamic's corners.

Inherited from RectDynamicBase:
Vector2 Size

A RectDynamicBase's size. Only used if BottomRight is not set.

Point Position

The RectDynamicBase root position.

Point BottomRight

If set, the bottom-right corner of the RectDynamicBase. When used, Position ignores alignment and is used as the top-left corner.

XAlignment XAlignment

How a RectDynamicBase is aligned on the x-axis relative to its Position.

YAlignment YAlignment

How a RectDynamicBase is aligned on the y-axis relative to its Position.

Inherited from DrawEntryDynamic:
bool Visible

Determines whether a DrawEntryDynamic will be rendered.

int ZIndex

Determines the order in which a DrawEntryDynamic is rendered relative to other GUIs.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic.

Color3 Color

Determines the color of a DrawEntryDynamic.

bool Outlined

Whether a DrawEntryDynamic is outlined.

number OutlineOpacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic's outline.

number OutlineThickness

The thickness of a DrawEntryDynamic's outline, in pixels.

Color3 OutlineColor

The color of a DrawEntryDynamic's outline.

Methods


Inherited from DrawEntryDynamic:
void RectDynamic:MoveToFront()

Moves a DrawEntryDynamic to the front of the current ZIndex's draw list.

void RectDynamic:MoveToBack()

Moves a DrawEntryDynamic to the back of the current ZIndex's draw list.

Class: GradientRectDynamic

Static Methods


GradientRectDynamic GradientRectDynamic.new(point?: Point)

Properties


Color3 ColorUpperLeft

Describes a GradientRectDynamic's upper-left color.

Color3 ColorUpperRight

Describes a GradientRectDynamic's upper-right color.

Color3 ColorBottomLeft

Describes a GradientRectDynamic's bottom-left color.

Color3 ColorBottomRight

Describes a GradientRectDynamic's bottom-right color.

number OpacityUpperLeft

Describes a GradientRectDynamic's upper-left opacity.

number OpacityUpperRight

Describes a GradientRectDynamic's upper-right opacity.

number OpacityBottomLeft

Describes a GradientRectDynamic's bottom-left opacity.

number OpacityBottomRight

Describes a GradientRectDynamic's bottom-right opacity.

number Opacity

Affects the overall opacity of a GradientRectDynamic.

Inherited from RectDynamicBase:
Vector2 Size

A RectDynamicBase's size. Only used if BottomRight is not set.

Point Position

The RectDynamicBase root position.

Point BottomRight

If set, the bottom-right corner of the RectDynamicBase. When used, Position ignores alignment and is used as the top-left corner.

XAlignment XAlignment

How a RectDynamicBase is aligned on the x-axis relative to its Position.

YAlignment YAlignment

How a RectDynamicBase is aligned on the y-axis relative to its Position.

Inherited from DrawEntryDynamic:
bool Visible

Determines whether a DrawEntryDynamic will be rendered.

int ZIndex

Determines the order in which a DrawEntryDynamic is rendered relative to other GUIs.

Color3 Color

Determines the color of a DrawEntryDynamic.

bool Outlined

Whether a DrawEntryDynamic is outlined.

number OutlineOpacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic's outline.

number OutlineThickness

The thickness of a DrawEntryDynamic's outline, in pixels.

Color3 OutlineColor

The color of a DrawEntryDynamic's outline.

Methods


Inherited from DrawEntryDynamic:
void GradientRectDynamic:MoveToFront()

Moves a DrawEntryDynamic to the front of the current ZIndex's draw list.

void GradientRectDynamic:MoveToBack()

Moves a DrawEntryDynamic to the back of the current ZIndex's draw list.

Class: ImageDynamic

Static Methods


ImageDynamic ImageDynamic.new(point?: Point)

Properties


string Image [writeonly]

Sets the raw image data for an ImageDynamic. Write-only.

Vector2 ImageSize [readonly]

Returns the dimensions of the image held by the Image property.

number Rounding

Indicates the roundness of an ImageDynamic.

Inherited from RectDynamicBase:
Vector2 Size

A RectDynamicBase's size. Only used if BottomRight is not set.

Point Position

The RectDynamicBase root position.

Point BottomRight

If set, the bottom-right corner of the RectDynamicBase. When used, Position ignores alignment and is used as the top-left corner.

XAlignment XAlignment

How a RectDynamicBase is aligned on the x-axis relative to its Position.

YAlignment YAlignment

How a RectDynamicBase is aligned on the y-axis relative to its Position.

Inherited from DrawEntryDynamic:
bool Visible

Determines whether a DrawEntryDynamic will be rendered.

int ZIndex

Determines the order in which a DrawEntryDynamic is rendered relative to other GUIs.

float Opacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic.

Color3 Color

Determines the color of a DrawEntryDynamic.

bool Outlined

Whether a DrawEntryDynamic is outlined.

number OutlineOpacity

A value between 0 and 1 that indicates the opacity of a DrawEntryDynamic's outline.

number OutlineThickness

The thickness of a DrawEntryDynamic's outline, in pixels.

Color3 OutlineColor

The color of a DrawEntryDynamic's outline.

Methods


Inherited from DrawEntryDynamic:
void ImageDynamic:MoveToFront()

Moves a DrawEntryDynamic to the front of the current ZIndex's draw list.

void ImageDynamic:MoveToBack()

Moves a DrawEntryDynamic to the back of the current ZIndex's draw list.

Class: ImageRef

Static Methods


ImageRef ImageRef.new()

Properties


Vector2 ImageSize [readonly]
number SpeedMultiplier

Class: RenderObject

Properties


bool Visible

Determines whether a RenderObject is displayed.

Class: RenderButton

Properties


string Label

Determines a RenderButton's text label.

Vector2 Size

Determines the size of a RenderButton.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Events


RenderButton.OnUpdated()

Fires on button-press.

Class: RenderColorButton

Properties


string Description

Determines the description RenderColorButton when you hover over it.

Vector2 Size

Determines the size of a RenderColorButton.

Color3 Color

Describes the color of a RenderColorButton.

number Alpha

A RenderColorButton's opacity.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Events


RenderColorButton.OnUpdated()

Fires on button-press.

Class: RenderCheckBox

Properties


string Label

Determines a RenderCheckBox's text label.

bool Value

Whether a RenderCheckBox is checked.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Events


RenderCheckBox.OnUpdated()

Fires on checkbox-toggle.

Class: RenderColorPicker

Properties


string Label

Determines a RenderColorPicker's text label.

Color3 Color

The currently selected color.

number Alpha

The currently selected alpha value.

bool UseAlpha

Toggles a RenderColorPicker's alpha picker.

bool ReturnInt

Affects the arguments passed to the OnUpdated event. Default true.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Events


RenderColorPicker.OnUpdated(r: number, g: number, b: number, a: number)

Fired upon color change. If ReturnInt is true, r, g, b, and a are integer values (0-255).

Class: RenderCombo

Properties


string Label

The RenderCombo's label.

table Items

An array of strings representing a RenderCombo's choices.

int SelectedItem

The index of the currently selected combo item.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Events


RenderCombo.OnUpdated(new_selection: int)

Fired upon a change in selection.

Class: RenderDrag

Properties


string Label

A RenderDrag's label.

number Speed

The drag input's scaling speed.

number Min

The drag input's minimum value.

number Max

The drag input's maximum value.

number Value

The current value of the drag input.

bool Clamped

Determines whether Value should be clamped to [Min, Max] when set manually.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Events


RenderDrag.OnUpdated(new_value: number)

Fired upon a change in value.

Class: RenderIntDrag

Properties


string Label

A RenderIntDrag's label.

number Speed

The drag input's scaling speed.

number Min

The drag input's minimum value.

number Max

The drag input's maximum value.

number Value

The current value of the drag input.

bool Clamped

Determines whether Value should be clamped to [Min, Max] when set manually.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Events


RenderIntDrag.OnUpdated(new_value: number)

Fired upon a change in value.

Class: RenderTextBox

Properties


string Label

The RenderTextBox's label.

int MaxTextLength

The text box's max length, a number between 0 and 16384, inclusive. Defaults to 16384.

string Value

The RenderTextBox's text input.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Events


RenderTextBox.OnUpdated(new_selection: int)

Fired upon a change in text.

Class: RenderSeparator

Properties


Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Class: RenderSlider

Properties


string Label

A RenderSlider's label.

number Min

The slider's minimum value.

number Max

The slider's maximum value.

number Value

The current value of the slider.

bool Clamped

Determines whether Value should be clamped to [Min, Max] when set manually with Ctrl+Click.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Events


RenderSlider.OnUpdated(new_value: number)

Fired upon a change in value.

Class: RenderIntSlider

Properties


string Label

A RenderIntSlider's label.

int Min

The slider's minimum value.

int Max

The slider's maximum value.

int Value

The current value of the slider.

bool Clamped

Determines whether Value should be clamped to [Min, Max] when set manually with Ctrl+Click.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Events


RenderIntSlider.OnUpdated(new_value: int)

Fired upon a change in value.

Class: RenderSelectable

Properties


string Label

A RenderSelectable's label.

Vector2 Size

A RenderSelectable's size.

bool Value

Whether this RenderSelectable is selected.

bool Toggles

Determines whether selecting the RenderSelectable toggles Selected.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Events


RenderSelectable.OnUpdated(new_value: bool)

Fired upon a change in value.

Class: RenderChildBase

Properties


Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Methods


void RenderChildBase:Clear()

Removes all sub-objects from this RenderChildBase.

void RenderChildBase:SetStyle(option: RenderStyleOption, value: float|Vector2)

Sets a style option for this RenderChildBase.

void RenderChildBase:SetColor(option: RenderColorOption, color: Color3, alpha: number)

Sets a color option for this RenderChildBase.

RenderButton RenderChildBase:Button()

Creates a RenderButton child object.

RenderCheckBox RenderChildBase:CheckBox()

Creates a RenderCheckBox child object.

RenderColorPicker RenderChildBase:ColorPicker()

Creates a RenderColorPicker child object.

RenderColorButton RenderChildBase:ColorButton()

Creates a RenderColorButton child object.

RenderCombo RenderChildBase:Combo()

Creates a RenderCombo child object.

RenderTextBox RenderChildBase:TextBox()

Creates a RenderTextBox child object.

RenderLabel RenderChildBase:Label()

Creates a RenderLabel child object.

RenderSlider RenderChildBase:Slider()

Creates a RenderSlider child object.

RenderIntSlider RenderChildBase:IntSlider()

Creates a RenderIntSlider child object.

RenderSelectable RenderChildBase:Selectable()

Creates a RenderSelectable child object.

RenderSeparator RenderChildBase:Separator()

Creates a RenderSeparator child object.

RenderTabMenu RenderChildBase:TabMenu()

Creates a RenderTabMenu child object.

RenderSameLine RenderChildBase:SameLine()

Creates a RenderSameLine child object.

RenderFont RenderChildBase:WithFont()

Creates a RenderFont child object.

RenderIndent RenderChildBase:Indent()

Creates a RenderIndent child object.

RenderCollapsable RenderChildBase:Collapsable()

Creates a RenderCollapsable child object.

RenderChildWindow RenderChildBase:Child()

Creates a RenderChildWindow child object.

RenderDummyWindow RenderChildBase:Dummy()

Creates a RenderDummyWindow child object.

Class: RenderTabMenu

Properties


int SelectedItem

The index of the selected tab, or zero if none are selected.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Methods


void RenderTabMenu:SetTabStyle(option: RenderStyleOption, value: float|Vector2)

Sets a style option for this RenderTabMenu's tabs.

void RenderTabMenu:SetTabColor(option: RenderColorOption, color: Color3, alpha: number)

Sets a color option for this RenderTabMenu's tabs.

RenderDummyWindow RenderTabMenu:Add(label: string)

Creates a new tab.

Inherited from RenderChildBase:
void RenderTabMenu:Clear()

Removes all sub-objects from this RenderChildBase.

void RenderTabMenu:SetStyle(option: RenderStyleOption, value: float|Vector2)

Sets a style option for this RenderChildBase.

void RenderTabMenu:SetColor(option: RenderColorOption, color: Color3, alpha: number)

Sets a color option for this RenderChildBase.

RenderButton RenderTabMenu:Button()

Creates a RenderButton child object.

RenderCheckBox RenderTabMenu:CheckBox()

Creates a RenderCheckBox child object.

RenderColorPicker RenderTabMenu:ColorPicker()

Creates a RenderColorPicker child object.

RenderColorButton RenderTabMenu:ColorButton()

Creates a RenderColorButton child object.

RenderCombo RenderTabMenu:Combo()

Creates a RenderCombo child object.

RenderTextBox RenderTabMenu:TextBox()

Creates a RenderTextBox child object.

RenderLabel RenderTabMenu:Label()

Creates a RenderLabel child object.

RenderSlider RenderTabMenu:Slider()

Creates a RenderSlider child object.

RenderIntSlider RenderTabMenu:IntSlider()

Creates a RenderIntSlider child object.

RenderSelectable RenderTabMenu:Selectable()

Creates a RenderSelectable child object.

RenderSeparator RenderTabMenu:Separator()

Creates a RenderSeparator child object.

RenderTabMenu RenderTabMenu:TabMenu()

Creates a RenderTabMenu child object.

RenderSameLine RenderTabMenu:SameLine()

Creates a RenderSameLine child object.

RenderFont RenderTabMenu:WithFont()

Creates a RenderFont child object.

RenderIndent RenderTabMenu:Indent()

Creates a RenderIndent child object.

RenderCollapsable RenderTabMenu:Collapsable()

Creates a RenderCollapsable child object.

RenderChildWindow RenderTabMenu:Child()

Creates a RenderChildWindow child object.

RenderDummyWindow RenderTabMenu:Dummy()

Creates a RenderDummyWindow child object.

Events


RenderTabMenu.OnUpdated(new_tab_index: int)

Fired upon tab change.

Class: RenderCollapsable

Properties


string HeaderLabel

The header label of the RenderCollapsable.

bool DefaultOpen [readonly]

Whether this RenderCollapsable was set to be open by default.

SynSignal OnUpdated

Fired when the state of the RenderCollapsable changes from open to closed or vice versa.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Methods


Inherited from RenderChildBase:
void RenderCollapsable:Clear()

Removes all sub-objects from this RenderChildBase.

void RenderCollapsable:SetStyle(option: RenderStyleOption, value: float|Vector2)

Sets a style option for this RenderChildBase.

void RenderCollapsable:SetColor(option: RenderColorOption, color: Color3, alpha: number)

Sets a color option for this RenderChildBase.

RenderButton RenderCollapsable:Button()

Creates a RenderButton child object.

RenderCheckBox RenderCollapsable:CheckBox()

Creates a RenderCheckBox child object.

RenderColorPicker RenderCollapsable:ColorPicker()

Creates a RenderColorPicker child object.

RenderColorButton RenderCollapsable:ColorButton()

Creates a RenderColorButton child object.

RenderCombo RenderCollapsable:Combo()

Creates a RenderCombo child object.

RenderTextBox RenderCollapsable:TextBox()

Creates a RenderTextBox child object.

RenderLabel RenderCollapsable:Label()

Creates a RenderLabel child object.

RenderSlider RenderCollapsable:Slider()

Creates a RenderSlider child object.

RenderIntSlider RenderCollapsable:IntSlider()

Creates a RenderIntSlider child object.

RenderSelectable RenderCollapsable:Selectable()

Creates a RenderSelectable child object.

RenderSeparator RenderCollapsable:Separator()

Creates a RenderSeparator child object.

RenderTabMenu RenderCollapsable:TabMenu()

Creates a RenderTabMenu child object.

RenderSameLine RenderCollapsable:SameLine()

Creates a RenderSameLine child object.

RenderFont RenderCollapsable:WithFont()

Creates a RenderFont child object.

RenderIndent RenderCollapsable:Indent()

Creates a RenderIndent child object.

RenderCollapsable RenderCollapsable:Collapsable()

Creates a RenderCollapsable child object.

RenderChildWindow RenderCollapsable:Child()

Creates a RenderChildWindow child object.

RenderDummyWindow RenderCollapsable:Dummy()

Creates a RenderDummyWindow child object.

Class: RenderChildWindow

Properties


Vector2 Size

The size of the child window.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Methods


Inherited from RenderChildBase:
void RenderChildWindow:Clear()

Removes all sub-objects from this RenderChildBase.

void RenderChildWindow:SetStyle(option: RenderStyleOption, value: float|Vector2)

Sets a style option for this RenderChildBase.

void RenderChildWindow:SetColor(option: RenderColorOption, color: Color3, alpha: number)

Sets a color option for this RenderChildBase.

RenderButton RenderChildWindow:Button()

Creates a RenderButton child object.

RenderCheckBox RenderChildWindow:CheckBox()

Creates a RenderCheckBox child object.

RenderColorPicker RenderChildWindow:ColorPicker()

Creates a RenderColorPicker child object.

RenderColorButton RenderChildWindow:ColorButton()

Creates a RenderColorButton child object.

RenderCombo RenderChildWindow:Combo()

Creates a RenderCombo child object.

RenderTextBox RenderChildWindow:TextBox()

Creates a RenderTextBox child object.

RenderLabel RenderChildWindow:Label()

Creates a RenderLabel child object.

RenderSlider RenderChildWindow:Slider()

Creates a RenderSlider child object.

RenderIntSlider RenderChildWindow:IntSlider()

Creates a RenderIntSlider child object.

RenderSelectable RenderChildWindow:Selectable()

Creates a RenderSelectable child object.

RenderSeparator RenderChildWindow:Separator()

Creates a RenderSeparator child object.

RenderTabMenu RenderChildWindow:TabMenu()

Creates a RenderTabMenu child object.

RenderSameLine RenderChildWindow:SameLine()

Creates a RenderSameLine child object.

RenderFont RenderChildWindow:WithFont()

Creates a RenderFont child object.

RenderIndent RenderChildWindow:Indent()

Creates a RenderIndent child object.

RenderCollapsable RenderChildWindow:Collapsable()

Creates a RenderCollapsable child object.

RenderChildWindow RenderChildWindow:Child()

Creates a RenderChildWindow child object.

RenderDummyWindow RenderChildWindow:Dummy()

Creates a RenderDummyWindow child object.

Class: RenderSameLine

Properties


Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Methods


Inherited from RenderChildBase:
void RenderSameLine:Clear()

Removes all sub-objects from this RenderChildBase.

void RenderSameLine:SetStyle(option: RenderStyleOption, value: float|Vector2)

Sets a style option for this RenderChildBase.

void RenderSameLine:SetColor(option: RenderColorOption, color: Color3, alpha: number)

Sets a color option for this RenderChildBase.

RenderButton RenderSameLine:Button()

Creates a RenderButton child object.

RenderCheckBox RenderSameLine:CheckBox()

Creates a RenderCheckBox child object.

RenderColorPicker RenderSameLine:ColorPicker()

Creates a RenderColorPicker child object.

RenderColorButton RenderSameLine:ColorButton()

Creates a RenderColorButton child object.

RenderCombo RenderSameLine:Combo()

Creates a RenderCombo child object.

RenderTextBox RenderSameLine:TextBox()

Creates a RenderTextBox child object.

RenderLabel RenderSameLine:Label()

Creates a RenderLabel child object.

RenderSlider RenderSameLine:Slider()

Creates a RenderSlider child object.

RenderIntSlider RenderSameLine:IntSlider()

Creates a RenderIntSlider child object.

RenderSelectable RenderSameLine:Selectable()

Creates a RenderSelectable child object.

RenderSeparator RenderSameLine:Separator()

Creates a RenderSeparator child object.

RenderTabMenu RenderSameLine:TabMenu()

Creates a RenderTabMenu child object.

RenderSameLine RenderSameLine:SameLine()

Creates a RenderSameLine child object.

RenderFont RenderSameLine:WithFont()

Creates a RenderFont child object.

RenderIndent RenderSameLine:Indent()

Creates a RenderIndent child object.

RenderCollapsable RenderSameLine:Collapsable()

Creates a RenderCollapsable child object.

RenderChildWindow RenderSameLine:Child()

Creates a RenderChildWindow child object.

RenderDummyWindow RenderSameLine:Dummy()

Creates a RenderDummyWindow child object.

Class: RenderIndent

Properties


number Pixels

The amount of pixels to indent. A negative number of pixels outdents; i.e. goes to the left instead of to the right. Indents by the IndentSpacing style if Pixels is zero.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Methods


Inherited from RenderChildBase:
void RenderIndent:Clear()

Removes all sub-objects from this RenderChildBase.

void RenderIndent:SetStyle(option: RenderStyleOption, value: float|Vector2)

Sets a style option for this RenderChildBase.

void RenderIndent:SetColor(option: RenderColorOption, color: Color3, alpha: number)

Sets a color option for this RenderChildBase.

RenderButton RenderIndent:Button()

Creates a RenderButton child object.

RenderCheckBox RenderIndent:CheckBox()

Creates a RenderCheckBox child object.

RenderColorPicker RenderIndent:ColorPicker()

Creates a RenderColorPicker child object.

RenderColorButton RenderIndent:ColorButton()

Creates a RenderColorButton child object.

RenderCombo RenderIndent:Combo()

Creates a RenderCombo child object.

RenderTextBox RenderIndent:TextBox()

Creates a RenderTextBox child object.

RenderLabel RenderIndent:Label()

Creates a RenderLabel child object.

RenderSlider RenderIndent:Slider()

Creates a RenderSlider child object.

RenderIntSlider RenderIndent:IntSlider()

Creates a RenderIntSlider child object.

RenderSelectable RenderIndent:Selectable()

Creates a RenderSelectable child object.

RenderSeparator RenderIndent:Separator()

Creates a RenderSeparator child object.

RenderTabMenu RenderIndent:TabMenu()

Creates a RenderTabMenu child object.

RenderSameLine RenderIndent:SameLine()

Creates a RenderSameLine child object.

RenderFont RenderIndent:WithFont()

Creates a RenderFont child object.

RenderIndent RenderIndent:Indent()

Creates a RenderIndent child object.

RenderCollapsable RenderIndent:Collapsable()

Creates a RenderCollapsable child object.

RenderChildWindow RenderIndent:Child()

Creates a RenderChildWindow child object.

RenderDummyWindow RenderIndent:Dummy()

Creates a RenderDummyWindow child object.

Class: RenderFont

Properties


DrawFont Font
Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Methods


Inherited from RenderChildBase:
void RenderFont:Clear()

Removes all sub-objects from this RenderChildBase.

void RenderFont:SetStyle(option: RenderStyleOption, value: float|Vector2)

Sets a style option for this RenderChildBase.

void RenderFont:SetColor(option: RenderColorOption, color: Color3, alpha: number)

Sets a color option for this RenderChildBase.

RenderButton RenderFont:Button()

Creates a RenderButton child object.

RenderCheckBox RenderFont:CheckBox()

Creates a RenderCheckBox child object.

RenderColorPicker RenderFont:ColorPicker()

Creates a RenderColorPicker child object.

RenderColorButton RenderFont:ColorButton()

Creates a RenderColorButton child object.

RenderCombo RenderFont:Combo()

Creates a RenderCombo child object.

RenderTextBox RenderFont:TextBox()

Creates a RenderTextBox child object.

RenderLabel RenderFont:Label()

Creates a RenderLabel child object.

RenderSlider RenderFont:Slider()

Creates a RenderSlider child object.

RenderIntSlider RenderFont:IntSlider()

Creates a RenderIntSlider child object.

RenderSelectable RenderFont:Selectable()

Creates a RenderSelectable child object.

RenderSeparator RenderFont:Separator()

Creates a RenderSeparator child object.

RenderTabMenu RenderFont:TabMenu()

Creates a RenderTabMenu child object.

RenderSameLine RenderFont:SameLine()

Creates a RenderSameLine child object.

RenderFont RenderFont:WithFont()

Creates a RenderFont child object.

RenderIndent RenderFont:Indent()

Creates a RenderIndent child object.

RenderCollapsable RenderFont:Collapsable()

Creates a RenderCollapsable child object.

RenderChildWindow RenderFont:Child()

Creates a RenderChildWindow child object.

RenderDummyWindow RenderFont:Dummy()

Creates a RenderDummyWindow child object.

Class: RenderPopup

Properties


Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Methods


void RenderPopup:Show()

Shows this popup window.

Inherited from RenderChildBase:
void RenderPopup:Clear()

Removes all sub-objects from this RenderChildBase.

void RenderPopup:SetStyle(option: RenderStyleOption, value: float|Vector2)

Sets a style option for this RenderChildBase.

void RenderPopup:SetColor(option: RenderColorOption, color: Color3, alpha: number)

Sets a color option for this RenderChildBase.

RenderButton RenderPopup:Button()

Creates a RenderButton child object.

RenderCheckBox RenderPopup:CheckBox()

Creates a RenderCheckBox child object.

RenderColorPicker RenderPopup:ColorPicker()

Creates a RenderColorPicker child object.

RenderColorButton RenderPopup:ColorButton()

Creates a RenderColorButton child object.

RenderCombo RenderPopup:Combo()

Creates a RenderCombo child object.

RenderTextBox RenderPopup:TextBox()

Creates a RenderTextBox child object.

RenderLabel RenderPopup:Label()

Creates a RenderLabel child object.

RenderSlider RenderPopup:Slider()

Creates a RenderSlider child object.

RenderIntSlider RenderPopup:IntSlider()

Creates a RenderIntSlider child object.

RenderSelectable RenderPopup:Selectable()

Creates a RenderSelectable child object.

RenderSeparator RenderPopup:Separator()

Creates a RenderSeparator child object.

RenderTabMenu RenderPopup:TabMenu()

Creates a RenderTabMenu child object.

RenderSameLine RenderPopup:SameLine()

Creates a RenderSameLine child object.

RenderFont RenderPopup:WithFont()

Creates a RenderFont child object.

RenderIndent RenderPopup:Indent()

Creates a RenderIndent child object.

RenderCollapsable RenderPopup:Collapsable()

Creates a RenderCollapsable child object.

RenderChildWindow RenderPopup:Child()

Creates a RenderChildWindow child object.

RenderDummyWindow RenderPopup:Dummy()

Creates a RenderDummyWindow child object.

Class: RenderDummyWindow

Properties


Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Methods


Inherited from RenderChildBase:
void RenderDummyWindow:Clear()

Removes all sub-objects from this RenderChildBase.

void RenderDummyWindow:SetStyle(option: RenderStyleOption, value: float|Vector2)

Sets a style option for this RenderChildBase.

void RenderDummyWindow:SetColor(option: RenderColorOption, color: Color3, alpha: number)

Sets a color option for this RenderChildBase.

RenderButton RenderDummyWindow:Button()

Creates a RenderButton child object.

RenderCheckBox RenderDummyWindow:CheckBox()

Creates a RenderCheckBox child object.

RenderColorPicker RenderDummyWindow:ColorPicker()

Creates a RenderColorPicker child object.

RenderColorButton RenderDummyWindow:ColorButton()

Creates a RenderColorButton child object.

RenderCombo RenderDummyWindow:Combo()

Creates a RenderCombo child object.

RenderTextBox RenderDummyWindow:TextBox()

Creates a RenderTextBox child object.

RenderLabel RenderDummyWindow:Label()

Creates a RenderLabel child object.

RenderSlider RenderDummyWindow:Slider()

Creates a RenderSlider child object.

RenderIntSlider RenderDummyWindow:IntSlider()

Creates a RenderIntSlider child object.

RenderSelectable RenderDummyWindow:Selectable()

Creates a RenderSelectable child object.

RenderSeparator RenderDummyWindow:Separator()

Creates a RenderSeparator child object.

RenderTabMenu RenderDummyWindow:TabMenu()

Creates a RenderTabMenu child object.

RenderSameLine RenderDummyWindow:SameLine()

Creates a RenderSameLine child object.

RenderFont RenderDummyWindow:WithFont()

Creates a RenderFont child object.

RenderIndent RenderDummyWindow:Indent()

Creates a RenderIndent child object.

RenderCollapsable RenderDummyWindow:Collapsable()

Creates a RenderCollapsable child object.

RenderChildWindow RenderDummyWindow:Child()

Creates a RenderChildWindow child object.

RenderDummyWindow RenderDummyWindow:Dummy()

Creates a RenderDummyWindow child object.

Class: RenderWindow

Static Methods


RenderWindow RenderWindow.new(window_name: string)

Properties


string WindowName [readonly]

The window's name.

Vector2 MinSize

A RenderWindow's minimum size.

Vector2 MaxSize

A RenderWindow's maximum size.

Vector2 DefaultSize

The initial size of the RenderWindow.

bool CanResize

Determines whether this RenderWindow can be resized.

bool VisibilityOverride

Unties the window's visibility from that of the internal UI, and instead uses the Visible field. Best used with setmousestate.

Inherited from RenderObject:
bool Visible

Determines whether a RenderObject is displayed.

Methods


void RenderWindow:Emplace(new_name?: string)

If the window is not already in the render list, add it. Optionally changes the title window.

Inherited from RenderChildBase:
void RenderWindow:Clear()

Removes all sub-objects from this RenderChildBase.

void RenderWindow:SetStyle(option: RenderStyleOption, value: float|Vector2)

Sets a style option for this RenderChildBase.

void RenderWindow:SetColor(option: RenderColorOption, color: Color3, alpha: number)

Sets a color option for this RenderChildBase.

RenderButton RenderWindow:Button()

Creates a RenderButton child object.

RenderCheckBox RenderWindow:CheckBox()

Creates a RenderCheckBox child object.

RenderColorPicker RenderWindow:ColorPicker()

Creates a RenderColorPicker child object.

RenderColorButton RenderWindow:ColorButton()

Creates a RenderColorButton child object.

RenderCombo RenderWindow:Combo()

Creates a RenderCombo child object.

RenderTextBox RenderWindow:TextBox()

Creates a RenderTextBox child object.

RenderLabel RenderWindow:Label()

Creates a RenderLabel child object.

RenderSlider RenderWindow:Slider()

Creates a RenderSlider child object.

RenderIntSlider RenderWindow:IntSlider()

Creates a RenderIntSlider child object.

RenderSelectable RenderWindow:Selectable()

Creates a RenderSelectable child object.

RenderSeparator RenderWindow:Separator()

Creates a RenderSeparator child object.

RenderTabMenu RenderWindow:TabMenu()

Creates a RenderTabMenu child object.

RenderSameLine RenderWindow:SameLine()

Creates a RenderSameLine child object.

RenderFont RenderWindow:WithFont()

Creates a RenderFont child object.

RenderIndent RenderWindow:Indent()

Creates a RenderIndent child object.

RenderCollapsable RenderWindow:Collapsable()

Creates a RenderCollapsable child object.

RenderChildWindow RenderWindow:Child()

Creates a RenderChildWindow child object.

RenderDummyWindow RenderWindow:Dummy()

Creates a RenderDummyWindow child object.

Class: FilterBase

Class: NotFilter

Static Methods


NotFilter NotFilter.new(target: FilterBase)

Properties


FilterBase Target

Class: AnyFilter

Static Methods


AnyFilter AnyFilter.new(filters?: table)

Properties


table Filters

A list of filters.

Class: AllFilter

Static Methods


AllFilter AllFilter.new(filters?: table)

Properties


table Filters

A list of filters.

Class: TypeFilter

Static Methods


TypeFilter TypeFilter.new(index: int, type: string)

Properties


int ArgumentIndex
string ArgumentType

Class: NamecallFilter

Static Methods


NamecallFilter NamecallFilter.new(method: string)

Properties


string NamecallMethod

Class: InstanceTypeFilter

Static Methods


InstanceTypeFilter InstanceTypeFilter.new(argument_index: int, instance_type: string)

Properties


int ArgumentIndex
string InstanceType

Class: UserdataTypeFilter

Static Methods


UserdataTypeFilter UserdataTypeFilter.new(argument_index: int, userdata_type: userdata)

Properties


int ArgumentIndex
userdata UserdataType [writeonly]

Class: ArgumentFilter

Static Methods


ArgumentFilter ArgumentFilter.new(argument_index: int, argument: any)

Properties


int ArgumentIndex
any Argument
boolean StripNull

Class: ArgCountFilter

Static Methods


ArgCountFilter ArgCountFilter.new(argument_count: int)

Properties


int ArgumentCount

Class: CallerFilter

Static Methods


CallerFilter CallerFilter.new(invert: bool)

Properties


bool Invert

Class: SynSignal

Static Methods


SynSignal SynSignal.new()

Creates a new SynSignal that can be called with :Fire().

Methods


SynConnection SynSignal:Connect(f: function)

Connects a listener to this signal. Errors if called on a Lua state different to the one used to create this signal.

any SynSignal:Wait() [yields]

Yields the current thread until the next time this signal is fired. Returns any invocation parameters. Errors if called on a Lua state different to the one used to create this signal.

void SynSignal:Fire(...any)

Fires this signal. Only usable when this signal is created via SynSignal.new(). Equivalent behavior exists via the __call metamethod; i.e. instead of sig:Fire(1, 2, 3) you can also do sig(1, 2, 3).

Class: SynConnection

Methods


void SynConnection:Disconnect()

Disconnects this connection from its SynSignal.

Class: ProtoProxy

A wrapper around the internal structure that describes a Lua function.

Properties


int CodeHash

A fingerprint of this Proto's bytecode.

Class: ReadonlyTableProxy

Provides recursive read-only access to a table.

Class: LuaStateProxy

Represents a Lua state.

Static Methods


LuaStateProxy LuaStateProxy.new()

Properties


int Id [readonly]

An identifier for this Lua state.

bool IsActorState [readonly]

Whether this state was created for use by Actors.

Methods


table LuaStateProxy:GetActors()

Returns a list of Actor instances associated with this Lua state.

void LuaStateProxy:Execute(source: string, ...any)

Schedules code to be executed on this Lua state.

Events


LuaStateProxy.Event()

A generic event for communication between Lua states.

Class: Match

Properties


table Captures

A list of captures. Each capture table has the substring, the start index, and the length, in that order. The first capture is the entire matched expression.

Class: Regex

Static Methods


Regex Regex.new(pattern: string)

Constructs a new Regex object. Errors if the pattern is invalid.

string Regex.Escape(contents: string)

Escapes a string for use by regex.

Methods


Match | nil Regex:Match(contents: string)

Matches contents against this Regex object and returns the first Match, or nil if no match was found.

table Regex:MatchMany(contents: string)

Matches contents against this Regex object and returns all Matches found.

string Regex:Replace(contents: string, replace_with: string)

Replaces the first match of this Regex object in contents with replace_with.

Class: Duration

A time duration

Static Methods


Duration Duration.TimeSinceEpoch()

Returns the time difference between the Unix epoch and now.

Duration Duration.FromNanoseconds(nanoseconds: int)
Duration Duration.FromMicroseconds(microseconds: int)
Duration Duration.FromMilliseconds(milliseconds: int)
Duration Duration.FromSeconds(seconds: int)
Duration Duration.FromMinutes(minutes: int)
Duration Duration.FromHours(hours: int)
Duration Duration.FromDays(days: int)
Duration Duration.FromMonths(months: int)
Duration Duration.FromYears(years: int)

Properties


number Nanoseconds [readonly]

This Duration in nanoseconds.

number Microseconds [readonly]

This Duration in microseconds.

number Milliseconds [readonly]

This Duration in milliseconds.

number Seconds [readonly]

This Duration in seconds.

number Minutes [readonly]

This Duration in minutes.

number Hours [readonly]

This Duration in hours.

number Days [readonly]

This Duration in days.

number Months [readonly]

This Duration in months.

number Years [readonly]

This Duration in years.

Class: Stopwatch

A stopwatch

Static Methods


Stopwatch Stopwatch.new()

Properties


Duration ElapsedTime [readonly]

The elapsed time between Start() and Stop() calls.

Methods


void Stopwatch:Start()

Starts the stopwatch.

void Stopwatch:Stop()

Stops the stopwatch.

void Stopwatch:Reset()

Resets the stopwatch.

Class: Timer

A timer

Static Methods


Timer Timer.new()

Properties


bool Enabled

Whether this Timer is enabled.

int RepetitionCount

How many times this timer should repeat, or -1 if it should repeat indefinitely.

Duration Interval

The interval between OnElapsed invocations.

Duration TimeLeft [readonly]

The time left before the timer elapses.

Duration LastElapsed [readonly]

A timestamp (time since epoch) of the last elapse.

Events


Timer.OnElapsed(delta: Duration)

Fired every elapse.

Class: Value

Holds a value

Static Methods


Value Value.new(value: any)

Methods


any Value:Get()

Returns the underlying value.

void Value:Set(value: any)

Sets the underlying value.

Class: WebsocketClient

A websocket client

Static Methods


WebsocketClient WebsocketClient.new(url_connection_string: string)

Properties


string Url [readonly]

Methods


void WebsocketClient:Disconnect() [yields]

Disconnects the websocket. Yields until the client is fully disconnected.

void WebsocketClient:Connect(connection_info: table) [yields]

Connects the websocket. connection_info may contain the following:

HeaderDescriptionDefault
HeadersA map of header names to header values.{}
CookiesA map of cookie names to cookie values.{}

In addition to any user-specified headers, Synapse X will add Syn-Signature, Syn-Fingerprint, and Syn-User-Identifier as specified here.

void WebsocketClient:Send(message: string, is_binary?: bool = False)

Sends a payload.

Events


WebsocketClient.DataReceived(payload: string, is_binary: bool)

Fires when data is received.

WebsocketClient.ConnectionClosed()

Fires when the connection is closed. Can be for reasons other than :Disconnect(); i.e. on a sudden loss of connection.

Class: DirectoryWatcher

A filesystem monitor.

Static Methods


DirectoryWatcher DirectoryWatcher.new(Path: string, Recursive?: boolean)

Properties


string Path [readonly]

The path targeted by this DirectoryWatcher.

boolean Recursive

Determines whether the DirectoryWatcher watches directories recursively or not. Defaults to true unless explicitly specified otherwise in the constructor.

Events


DirectoryWatcher.OnChanged()

Fires on file contents being changed.

DirectoryWatcher.OnCreated()

Fires on a file being created.

DirectoryWatcher.OnDeleted()

Fires on a file being deleted.

DirectoryWatcher.OnRenamed()

Fires on a file being renamed.

DirectoryWatcher.OnOverflow()

This event is called when there are too many directory changes at once, and exists due to a fundamental flaw in the Windows API. An internal workaround is possible but would be relatively memory-intensive, so this is the "fix" used for now. It is called for every currently active DirectoryWatcher. Cases where this happens are relatively rare, but may still exist; e.g. in the case of batch depletions of large folders. Users are recommended to treat this as a change to every relevant file.

Enum Index

CFrameRotationType

NameValue
CameraRelative0
TargetRelative1
Ignore2

Drawing.Fonts

NameValue
UI0
System1
Plex2
Monospace3

PasswordDerivationMode

NameValue
Interactive0
Moderate1
Sensitive2

RenderColorOption

NameValue
Text0
TextDisabled1
WindowBg2
ChildBg3
PopupBg4
Border5
BorderShadow6
FrameBg7
FrameBgHovered8
FrameBgActive9
TitleBg10
TitleBgActive11
TitleBgCollapsed12
MenuBarBg13
ScrollbarBg14
ScrollbarGrab15
ScrollbarGrabHovered16
ScrollbarGrabActive17
CheckMark18
SliderGrab19
SliderGrabActive20
Button21
ButtonHovered22
ButtonActive23
Header24
HeaderHovered25
HeaderActive26
Separator27
SeparatorHovered28
SeparatorActive29
ResizeGrip30
ResizeGripHovered31
ResizeGripActive32
Tab33
TabHovered34
TabActive35
TabUnfocused36
TabUnfocusedActive37
DockingPreview38
DockingEmptyBg39
PlotLines40
PlotLinesHovered41
PlotHistogram42
PlotHistogramHovered43
TableHeaderBg44
TableBorderStrong45
TableBorderLight46
TableRowBg47
TableRowBgAlt48
TextSelectedBg49
DragDropTarget50
NavHighlight51
NavWindowingHighlight52
NavWindowingDimBg53
ModalWindowDimBg54

RenderStyleOption

NameValue
Alpha0
WindowPadding2
WindowRounding3
WindowBorderSize4
WindowMinSize5
WindowTitleAlign6
ChildRounding7
ChildBorderSize8
PopupRounding9
PopupBorderSize10
FramePadding11
FrameRounding12
FrameBorderSize13
ItemSpacing14
ItemInnerSpacing15
IndentSpacing16
CellPadding17
ScrollbarSize18
ScrollbarRounding19
GrabMinSize20
GrabRounding21
TabRounding22
ButtonTextAlign23
SelectableTextAlign24

ToastType

NameValue
None0
Success1
Warning2
Error3
Info4

UserEncryptionMode

NameValue
SynAccount0
WindowsAccount1
WindowsMachine2

XAlignment

NameValue
Left0
Right1
Center2

YAlignment

NameValue
Top0
Bottom1
Center2