Scripting: Difference between revisions
m Text replacement - "</code>" to "</SyntaxHighlight>" |
m Text replacement - "<code lua>" to "<SyntaxHighlight code="lua">" |
||
Line 137: | Line 137: | ||
Roblox defines the following global variables (and <strong>many</strong> others): | Roblox defines the following global variables (and <strong>many</strong> others): | ||
* <code lua>game</SyntaxHighlight> is a reference to the [[DataModel]] instance that is the root of the object hierarchy. | * <SyntaxHighlight code="lua">game</SyntaxHighlight> is a reference to the [[DataModel]] instance that is the root of the object hierarchy. | ||
* <code lua>Workspace</SyntaxHighlight> is a shortcut for the Workspace instance that is a child of the DataModel. | * <SyntaxHighlight code="lua">Workspace</SyntaxHighlight> is a shortcut for the Workspace instance that is a child of the DataModel. | ||
* <code lua>script</SyntaxHighlight> is a reference to the Script instance that is the owner of the referencing code. (not applicable for the Command toolbar) | * <SyntaxHighlight code="lua">script</SyntaxHighlight> is a reference to the Script instance that is the owner of the referencing code. (not applicable for the Command toolbar) | ||
* <code lua>print(...)</SyntaxHighlight> echoes each argument to the output panel. | * <SyntaxHighlight code="lua">print(...)</SyntaxHighlight> echoes each argument to the output panel. | ||
* <code lua>error(e,level)</SyntaxHighlight> the Roblox implementation of error is much the same as print, echoing the first argument (in red text) to the output panel, only raising an error as well. | * <SyntaxHighlight code="lua">error(e,level)</SyntaxHighlight> the Roblox implementation of error is much the same as print, echoing the first argument (in red text) to the output panel, only raising an error as well. | ||
* <code lua>time()</SyntaxHighlight> returns the current game time in seconds. Is simply an accessor for the game's internal time count, such that the statement <code lua>time() == time()</SyntaxHighlight> is true. | * <SyntaxHighlight code="lua">time()</SyntaxHighlight> returns the current game time in seconds. Is simply an accessor for the game's internal time count, such that the statement <SyntaxHighlight code="lua">time() == time()</SyntaxHighlight> is true. | ||
* <code lua>tick()</SyntaxHighlight> returns the OS time in seconds, queries the OS every time it is called, such that the statement <code lua>tick() == tick()</SyntaxHighlight> is false. | * <SyntaxHighlight code="lua">tick()</SyntaxHighlight> returns the OS time in seconds, queries the OS every time it is called, such that the statement <SyntaxHighlight code="lua">tick() == tick()</SyntaxHighlight> is false. | ||
* <code lua>wait(t)</SyntaxHighlight> yields the current thread and resumes it after "t" seconds have elapsed. If t is not specified, then it yields for one frame (approx. 1/30 sec). The function returns 2 values: The elapsed time and the current game time. | * <SyntaxHighlight code="lua">wait(t)</SyntaxHighlight> yields the current thread and resumes it after "t" seconds have elapsed. If t is not specified, then it yields for one frame (approx. 1/30 sec). The function returns 2 values: The elapsed time and the current game time. | ||
* <code lua>delay(t, f)</SyntaxHighlight> Asynchronously executes function "f" after "t" seconds have elapsed. The function "f" is called with 2 arguments: The elapsed time and the current game time. | * <SyntaxHighlight code="lua">delay(t, f)</SyntaxHighlight> Asynchronously executes function "f" after "t" seconds have elapsed. The function "f" is called with 2 arguments: The elapsed time and the current game time. | ||
* <code lua>Spawn(f)</SyntaxHighlight> This function ''spawns'' a new thread. Argument "f" is a function that will execute in a new [[Thread]]. | * <SyntaxHighlight code="lua">Spawn(f)</SyntaxHighlight> This function ''spawns'' a new thread. Argument "f" is a function that will execute in a new [[Thread]]. | ||
* <code lua>LoadLibrary(library)</SyntaxHighlight> Loads the library "library." The argument to this function is a string. The most commonly loaded library is [[RbxGui]]. | * <SyntaxHighlight code="lua">LoadLibrary(library)</SyntaxHighlight> Loads the library "library." The argument to this function is a string. The most commonly loaded library is [[RbxGui]]. | ||
==Roblox Objects== | ==Roblox Objects== |
Revision as of 04:03, 27 April 2023
This article is a portal for Roblox scripting and related articles.
Lua Programming Language
ROBLOX uses Lua 5.1, a simple scripting language that can be embedded into games or programs (parent applications). ROBLOX developers have added in functionality to Lua so that users can create interactive content, like tools, buttons, leaderboards, and more.
Tutorials
The Roblox Wiki offers many tutorials for learning Lua.
Environments and Libraries
An environment can be described as a place where variables live. Each script has its own environment.
A library is a group of functions that can be used to make scripting easier. For security purposes, some functions have been removed from Roblox to prevent access to system resources.
ROBLOX loads the coroutine, string, table, math, and basic function libraries.
Math
One important feature that all programming languages use is math. For more information, and usage, read the following articles:
- Basic math
- Variables
- Conditional statements
- Random numbers
- How To Increase and Decrease Vector3 Values
Types
All values in Lua have their own type. These values can be stored in variables, passed as arguments to other functions, and returned as results.
Basic Types
Every value in Lua will be one of these types:
Roblox-Defined Types
These are special types created by and available only in Roblox.
- Vector3 -- Represents 3-dimensional coordinates. These are used for things like a brick's size or position.
- Vector2 -- Represents 2-dimensional coordinates.
- CFrame -- Holds a position and a rotation. These define the rotation of bricks.
- Color3 -- Makes colors using an RGB format.
- BrickColor -- Defines a specific color for bricks.
- UDim2 -- Holds a Scale and Offset position for Guis.
Global Functions
Roblox defines the following global variables (and many others):
- is a reference to the DataModel instance that is the root of the object hierarchy.
game
- is a shortcut for the Workspace instance that is a child of the DataModel.
Workspace
- is a reference to the Script instance that is the owner of the referencing code. (not applicable for the Command toolbar)
script
- echoes each argument to the output panel.
print(...)
- the Roblox implementation of error is much the same as print, echoing the first argument (in red text) to the output panel, only raising an error as well.
error(e,level)
- returns the current game time in seconds. Is simply an accessor for the game's internal time count, such that the statement
time()
is true.time() == time()
- returns the OS time in seconds, queries the OS every time it is called, such that the statement
tick()
is false.tick() == tick()
- yields the current thread and resumes it after "t" seconds have elapsed. If t is not specified, then it yields for one frame (approx. 1/30 sec). The function returns 2 values: The elapsed time and the current game time.
wait(t)
- Asynchronously executes function "f" after "t" seconds have elapsed. The function "f" is called with 2 arguments: The elapsed time and the current game time.
delay(t, f)
- This function spawns a new thread. Argument "f" is a function that will execute in a new Thread.
Spawn(f)
- Loads the library "library." The argument to this function is a string. The most commonly loaded library is RbxGui.
LoadLibrary(library)
Roblox Objects
Objects are what make Roblox work. Everything seen in-game is an object, as well as everything visible in the Explorer panel. All Objects have Properties, Functions and Events.
Common Mistakes
The slightest misspelling, or even incorrect capitalization will result in your script failing to work. REMEMBER: Look at the Output to check for errors. If this doesn't help, back-track and make sure everything is perfect. If you think there is a problem, or you need help in general, request help on the Forum.
See Common Scripting Mistakes and Debugging. For more help, see the 'See Also' section at the bottom of the page.
See Also
In the beginning:...
- Your First Script
- Basic Scripting
- Loops
- How To Increase and Decrease Vector3 Values
- In-Depth Scripting Guide
Scripting Tutorials and Articles:
General Information:
- Random numbers
- Conditional statements
- Variables
- Flowcharts
- Generic for
- Bool
- String
- Linked lists
- Functions
- Tables
Support: