Getting Started
MoriUI is a ultra-fast, zero-dependency Roblox script UI library designed for high performance, automatic config saving, and full mobile optimization. (totally not skdded)
Quick Load
Load the library directly into your execution environment using loadstring:
local MoriUI = loadstring(game:HttpGet("https://horomoris-skidding-archives.pages.dev/totallynotskiddedlib.lua"))()
Basic Usage Example
Create a window, add a tab, and populate it with interactive UI components:
local Window = MoriUI:CreateWindow({
Name = "My Script Hub",
WindowID = "MyScriptConfig"
})
local MainTab = Window:CreateTab("Main")
MainTab:CreateButton({
Name = "Print Hello",
Callback = function()
print("Hello from MoriUI!")
end
})
Key Features
Learn about the built-in behaviors that make MoriUI convenient for both developers and users.
💾 Zero-Setup Config Saving
Pass a WindowID when creating a window, and every toggle, slider, or keybind will automatically save its state under its element name into CustomUISaves/YourWindowID.json. No need to define flags manually.
📱 Mobile Keybind GUI
Mobile users can enable the Mobile Keybinds toggle inside the settings page. It creates a draggable, resizable floating action window containing physical buttons for every keybind registered in your script.
📐 Freeform Resizing
Users can drag the bottom-right corner grip icon (◢) to freely scale the main interface or mobile keybind bar to fit their display resolution.
⚙ Settings Page & Header Controls
Access the built-in Settings Page at any time by clicking the top gear icon (⚙). Features auto-save toggles, mobile overlay switches, and an unloader with confirmation safety.
Window & Tab API
Methods to construct the main GUI shell and sidebar navigation.
MoriUI:CreateWindow(options)
Initializes a new UI window.
| Option Property | Type | Description |
|---|---|---|
Name |
string | The title heading rendered at the top bar of the interface. |
WindowID |
string | Unique string identifier used to store the .json save file. |
FolderName |
string | (Optional) Custom folder name inside workspace. Defaults to CustomUISaves. |
Window:CreateTab(tabName)
Creates a new clickable category tab inside the scrollable sidebar.
local CombatTab = Window:CreateTab("Combat")
UI Elements API
Methods available on any created Tab object.
Tab:CreateButton(options)
Tab:CreateButton({
Name = "Click Me",
Callback = function()
print("Button executed!")
end
})
Tab:CreateToggle(options)
Tab:CreateToggle({
Name = "Auto Farm",
CurrentValue = false, -- Default state
Callback = function(state)
print("Toggle state is:", state)
end
})
Tab:CreateSlider(options)
Tab:CreateSlider({
Name = "WalkSpeed",
Range = {16, 100},
Increment = 1,
CurrentValue = 16,
Callback = function(value)
game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = value
end
})
Tab:CreateKeybind(options)
Tab:CreateKeybind({
Name = "Teleport Key",
Default = Enum.KeyCode.E,
Callback = function()
print("Keybind activated!")
end
})
Tab:CreateInput(options)
Tab:CreateInput({
Name = "Target Player",
PlaceholderText = "Username...",
Callback = function(text)
print("Input submitted:", text)
end
})
Tab:CreateSection(text)
Tab:CreateSection("--- Combat Settings ---")
Built-in Settings
Every MoriUI window contains a built-in settings tab object accessible via Window.SettingsTab.
Customizing the Settings Tab
You can add your own custom script settings directly into the built-in settings page alongside default MoriUI settings:
local SettingsPage = Window.SettingsTab
SettingsPage:CreateToggle({
Name = "Auto Safe-Reset",
CurrentValue = false,
Callback = function(state)
print("Safe reset set to:", state)
end
})
Full Example Script
Here is a complete, ready-to-run script demonstrating how to load MoriUI and create a multi-tab interface using all available elements.
--// Load MoriUI Library
local MoriUI = loadstring(game:HttpGet("https://horomoris-skidding-archives.pages.dev/totallynotskiddedlib.lua"))()
-- Create UI Window (Saves to CustomUISaves/MyScriptHub.json)
local Window = MoriUI:CreateWindow({
Name = "MoriUI Demonstration Hub",
WindowID = "MyScriptHub"
})
--// TAB 1: Player Modifications
local PlayerTab = Window:CreateTab("Player")
PlayerTab:CreateSection("Movement & Physics")
PlayerTab:CreateToggle({
Name = "Super Speed",
CurrentValue = false,
Callback = function(state)
local hum = game.Players.LocalPlayer.Character and game.Players.LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
if hum then hum.WalkSpeed = state and 50 or 16 end
end
})
PlayerTab:CreateSlider({
Name = "Jump Power",
Range = {50, 200},
Increment = 5,
CurrentValue = 50,
Callback = function(value)
local hum = game.Players.LocalPlayer.Character and game.Players.LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
if hum then hum.JumpPower = value end
end
})
PlayerTab:CreateKeybind({
Name = "Teleport Up",
Default = Enum.KeyCode.E,
Callback = function()
local hrp = game.Players.LocalPlayer.Character and game.Players.LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if hrp then hrp.CFrame = hrp.CFrame + Vector3.new(0, 10, 0) end
end
})
--// TAB 2: Utilities
local UtilityTab = Window:CreateTab("Utility")
UtilityTab:CreateInput({
Name = "Teleport to Player",
PlaceholderText = "Enter Username...",
Callback = function(text)
for _, target in ipairs(game.Players:GetPlayers()) do
if target.Name:lower():find(text:lower()) and target.Character then
local myHRP = game.Players.LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
local targetHRP = target.Character:FindFirstChild("HumanoidRootPart")
if myHRP and targetHRP then
myHRP.CFrame = targetHRP.CFrame
end
break
end
end
end
})
UtilityTab:CreateButton({
Name = "Rejoin Game",
Callback = function()
game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId, game.JobId, game.Players.LocalPlayer)
end
})
--// Custom Options added into built-in Settings Page
local SettingsPage = Window.SettingsTab
SettingsPage:CreateSlider({
Name = "Camera FOV",
Range = {70, 120},
Increment = 1,
CurrentValue = 70,
Callback = function(fov)
workspace.CurrentCamera.FieldOfView = fov
end
})