Basics
local name: string = "Noob"
local coins = 10
coins += 5
print(`{name} has {coins}`, type(coins), #name)
print(10 // 3, 10 % 3, 2 ^ 4, math.clamp(150, 0, 100))
Decisions and loops
if a then ... elseif b then ... else ... end
local label = if hp > 50 then "ok" else "hurt"
for i = 10, 1, -1 do ... end
for key, value in someTable do ... end
while cond do ... end repeat ... until cond
break continue
Functions and tables
local function add(a: number, b: number): number return a + b end
local list = {"a"} table.insert(list, "b") table.remove(list, 1)
table.sort(list, function(x, y) return x > y end)
table.concat(list, ", ") table.find(list, "b") table.clone(t)
("a,b"):split(",") s:upper() s:sub(1, 3) s:match("%d+")
string.format("%02d:%02d", m, s) pcall(fn) error("msg", 0)
Classes
local Pet = {}
Pet.__index = Pet
function Pet.new(name) return setmetatable({Name = name}, Pet) end
function Pet:Speak() return self.Name .. " says hi" end
Instances
local p = Instance.new("Part")
p.Size = Vector3.new(4, 1, 2)
p.Position = Vector3.new(0, 5, 0)
p.Color = Color3.fromRGB(255, 0, 0)
p.Anchored = true
p.Material = Enum.Material.Neon
p:SetAttribute("Points", 10)
p:AddTag("Coin")
p.Parent = workspace
print(workspace:FindFirstChild("Part"), #workspace:GetChildren())
Events and time
part.Touched:Connect(function(hit) end)
clickDetector.MouseClick:Connect(function(player) end)
prompt.Triggered:Connect(function(player) end)
Players.PlayerAdded:Connect(function(player) end)
value.Changed:Connect(function(new) end) conn:Disconnect()
task.wait(1) task.spawn(fn) task.delay(2, fn)
RunService.Heartbeat:Connect(function(dt) end)
TweenService:Create(part, TweenInfo.new(2), {Position = v}):Play()
Client and server
-- LocalScript -- Script
remote:FireServer(data) remote.OnServerEvent:Connect(function(player, data) end)
remote.OnClientEvent:Connect(f) remote:FireClient(player, data) / :FireAllClients(data)
fn:InvokeServer(x) fn.OnServerInvoke = function(player, x) return y end
local M = require(game.ReplicatedStorage.Module)
local store = DataStoreService:GetDataStore("Data")
pcall(function() return store:GetAsync(key) end)
GUI
local gui = Instance.new("ScreenGui")
label.Size = UDim2.fromOffset(200, 50) UDim2.fromScale(0.5, 1)
frame.AnchorPoint = Vector2.new(0.5, 0.5)
button.MouseButton1Click:Connect(fn) box.FocusLost:Connect(function(enter) end)
gui.Parent = player:WaitForChild("PlayerGui")