Hook → Subscribing

Subscribing

Register handlers for any Roblox signal or custom event. Handlers run in priority order — lower number first. Named handlers can be removed individually with Hook.Off.

Hook()

Hook(event, handler)
Hook(event, priority, handler)
Hook(event, { priority?, id? }, handler)
local Hook = RoExpress.Hook

-- omit priority → defaults to 50 ("normal")
Hook("PlayerAdded", function(player)
    print(player.Name, "joined")
end)

-- number priority
Hook("PlayerRemoving", 1, function(player)
    DataStore:Save(player)   -- runs first
end)

-- named priority alias
Hook("PlayerRemoving", "last", function(player)
    Analytics:LogLeave(player)  -- runs after everything else
end)

-- named handler (removable)
Hook("PlayerRemoving", { priority = 5, id = "inventory-cleanup" }, function(player)
    Inventory:Clear(player)
end)

Hook.Once()

Hook.Once(event, handler)
Hook.Once(event, priority, handler)

Fires exactly once then removes itself automatically.

-- run setup logic the first time any player joins
Hook.Once("PlayerAdded", "first", function(player)
    InitWorld()
end)

Hook.Off()

Hook.Off(event, id)

Remove all handlers registered with a given id on an event. No-op if the id doesn't exist.

Hook("PlayerRemoving", { priority = 5, id = "cleanup" }, function(player)
    Inventory:Clear(player)
end)

-- later, during maintenance mode:
Hook.Off("PlayerRemoving", "cleanup")

Hook.Clear()

Hook.Clear(event)

Remove every handler for an event. The underlying Roblox signal connection stays active — registering new handlers will work immediately.

Hook.Clear("Heartbeat")   -- remove all tick handlers

Hook.Has()

Hook.Has(event) → boolean

Returns true if at least one handler is currently registered for the event.

if Hook.Has("round.start") then
    Hook.Fire("round.start", { map = "Forest" })
end
Per-player eventsCharacterAdded, CharacterRemoving, and CharacterAppearanceLoaded pass (player, ...) as arguments. Hook handles the PlayerAdded → player.CharacterAdded wiring automatically for every current and future player.

See also

← Hook  ·  Priority System | number and named tiers  ·  Signal Catalog | all mapped Roblox events  ·  Custom Events | Hook.Fire