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 events —
CharacterAdded, 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