Custom Script System
Create and import your own custom macros using Lua scripts.
Introduction
Roblox Hypersuite allows you to create custom macros using Lua scripts (.hss files). These scripts can automate keyboard inputs, mouse movements, control Roblox process state, and even manipulate network conditions.
Scripts are saved and persist across program restarts. You can assign keybinds to trigger them and enable/disable them just like built-in macros.
Creating Scripts
Scripts are plain text files with the
.hss extension. They use standard Lua syntax with
additional Hypersuite-specific functions.
Every script must have an onExecute() function.
This is called when the script's keybind is pressed or when
executed manually.
-- @name: My Custom Macro -- @desc: A simple example script -- @author: YourName -- @version: 1.0 -- @keybind: F5 function onExecute() log("Script executed!") pressKey("Space") sleep(100) end
Script Metadata
Add metadata at the top of your script using special comments. These are displayed in the UI and provide information about your script.
| Tag | Description |
|---|---|
-- @name: |
Display name shown in the macro list |
-- @desc: or -- @description:
|
Description shown in the right panel |
-- @author: |
Script creator's name |
-- @version: |
Version number |
-- @keybind: |
Default keybind (e.g., "F5" or "LCtrl+K") |
Importing Scripts
Method 1: Import Button
Click the + Import script button at the bottom of the macro list. Select your .hss file from the file browser.
Method 2: Scripts Folder
Place your .hss files in the scripts/ folder in the
same directory as the executable. They will be automatically
loaded on startup.
Managing Scripts
- Right-click a script to enable/disable it
- Left-click to view details and configure keybinds
- Use "Execute Now" to test scripts manually
- Use "Reload Script" to refresh after editing
- Use "Remove" to delete the script
Lua API Reference
Keyboard Functions
| Function | Description |
|---|---|
pressKey(key, delay) |
Press and release a key. Optional delay in milliseconds (default: 50ms) |
holdKey(key) |
Press and hold a key down |
releaseKey(key) |
Release a held key |
isKeyPressed(key) |
Returns true if the key is currently pressed |
typeText(text, delay) |
Type a string of text. Optional delay between chars (default: 30ms) |
waitForKey(timeout) |
Wait for any key press. Returns key name or nil on timeout (ms) |
getKeyName(key) |
Get the display name of a key |
Mouse Functions
| Function | Description |
|---|---|
moveMouse(dx, dy) |
Move mouse relative to current position |
Process Control
| Function | Description |
|---|---|
robloxFreeze(enable) |
Freeze or unfreeze the Roblox process. Pass true to freeze, false to unfreeze |
Network Control (Advanced)
| Function | Description |
|---|---|
lagSwitchMan(enable, packet_loss, ping_lag)
|
Control network lag simulation. Parameters: • enable (boolean) - Enable or disable
lag• packet_loss (number) - Packet loss
percentage (0-100)• ping_lag (number) - Additional ping in
milliseconds
|
Utility Functions
| Function | Description |
|---|---|
sleep(ms) |
Pause script execution for specified milliseconds |
log(message) |
Print a message to the console (prefixed with [HSS]) |
clear() |
Clear the console screen |
Global Variables
| Variable | Description |
|---|---|
HSPlayerName |
Current Roblox username |
HSPlayerDisplayName |
Current Roblox display name |
Supported Key Names
Letters: A-Z | Numbers: 0-9 | Function: F1-F12
Special: Space, Enter, Tab, Escape, Backspace, Delete, Insert
Arrows: Left, Right, Up, Down
Modifiers: LShift, RShift, LCtrl, RCtrl, LAlt, RAlt
Mouse: LMB, RMB, MMB, Mouse4, Mouse5
Navigation: Home, End, PageUp, PageDown
Numpad: Numpad0-Numpad9
Symbols: [, ], /, ;, -, =, \, ', ,, ., `
Examples
Simple Jump Spam
-- @name: Jump Spam -- @desc: Rapidly presses space bar 10 times -- @author: Example -- @version: 1.0 -- @keybind: F6 function onExecute() for i = 1, 10 do pressKey("Space", 50) sleep(50) end log("Jump spam complete!") end
Auto Chat Message
-- @name: Quick Chat -- @desc: Types a predefined message in chat -- @author: Example -- @version: 1.0 -- @keybind: F7 function onExecute() pressKey("Slash") sleep(100) typeText("Hello everyone from " .. HSPlayerDisplayName .. "!") sleep(50) pressKey("Enter") end
Freeze Glitch Helper
-- @name: Quick Freeze -- @desc: Freezes Roblox for 200ms then unfreezes -- @author: Example -- @version: 1.0 -- @keybind: F8 function onExecute() log("Freezing...") robloxFreeze(true) sleep(200) robloxFreeze(false) log("Unfreezed!") end
Lag Switch
-- @name: Lag Toggle -- @desc: Toggle network lag simulation -- @author: Example -- @version: 1.0 -- @keybind: F9 local lagEnabled = false function onExecute() lagEnabled = not lagEnabled if lagEnabled then lagSwitchMan(true, 30, 200) -- 30% packet loss, +200ms ping log("Lag enabled!") else lagSwitchMan(false, 0, 0) log("Lag disabled!") end end
Advanced: Combo Sequence
-- @name: Combat Combo -- @desc: Executes a combat combo with precise timing -- @author: Example -- @version: 1.0 -- @keybind: LCtrl+Q function onExecute() log("Starting combo...") -- Attack 1 pressKey("LMB", 50) sleep(150) -- Jump cancel pressKey("Space", 50) sleep(100) -- Attack 2 pressKey("LMB", 50) sleep(150) -- Special move pressKey("E", 50) log("Combo complete!") end
Interactive Script
-- @name: Key Tester -- @desc: Wait for a key press and display its name -- @author: Example -- @version: 1.0 function onExecute() log("Press any key within 5 seconds...") local key = waitForKey(5000) -- 5 second timeout if key then log("You pressed: " .. key) else log("Timeout - no key pressed") end end
Need help? Join the community or check the GitHub repository for more examples and support.