World Executor · Roblox VM

The Script Hub

The built-in library of community scripts: how to search it, what a card is telling you, and how to run one safely.

Finding a script

The hub indexes community scripts by the game they target. You can search it three ways, and they combine:

  • By place ID — paste the number from a Roblox URL to get everything written for that place.
  • By player count — sort by who is busy right now, which is a decent proxy for which scripts are actively maintained.
  • By provider — filter to a particular hub or author if you already trust one.

Place ID is the reliable key

Game names collide and get renamed. The number in roblox.com/games/<id>/... does not.

What a card shows

What it does

The description the provider published — usually a feature list.

Visit count

How popular the target game is. A script for a dead game is usually a stale script.

Players now

Live count. Useful for telling an actively maintained script from an abandoned one.

Run

Loads the script into the attached client immediately, without opening it in the editor.

Running one

Run executes the script the same way the editor's Execute button does — same environment, same globals, same console output. If you would rather read it first, open it in a tab instead and run it from there.

Loading a remote script
-- What "Run" is doing, roughly. You can do the same by hand
-- for any script you have a URL for.
local source = game:HttpGet("https://example.com/script.lua")
loadstring(source)()

Community scripts are other people's code

A hub script runs with your identity and full filesystem access. It can read your workspace folder and make HTTP requests. Read anything you did not write, or at least stick to providers you have reason to trust.

Loading your own

Nothing about the hub is required. Most people end up with a personal loader in autoexec/ that pulls their own scripts from disk or a URL, keyed off the place they just joined.

A personal loader
-- autoexec/loader.lua
local BY_PLACE = {
    [1234567890] = "scripts/game-a.lua",
    [9876543210] = "scripts/game-b.lua",
}

local path = BY_PLACE[game.PlaceId]
if path and isfile(path) then
    local chunk, err = loadstring(readfile(path), path)
    if not chunk then
        return warn("failed to compile " .. path .. ": " .. tostring(err))
    end
    local ok, runErr = pcall(chunk)
    if not ok then
        warn("failed to run " .. path .. ": " .. tostring(runErr))
    end
end