v1.0.0 Lightweight

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:

lua
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:

lua
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.

lua
local CombatTab = Window:CreateTab("Combat")

UI Elements API

Methods available on any created Tab object.

Tab:CreateButton(options)

lua
Tab:CreateButton({
    Name = "Click Me",
    Callback = function()
        print("Button executed!")
    end
})

Tab:CreateToggle(options)

lua
Tab:CreateToggle({
    Name = "Auto Farm",
    CurrentValue = false, -- Default state
    Callback = function(state)
        print("Toggle state is:", state)
    end
})

Tab:CreateSlider(options)

lua
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)

lua
Tab:CreateKeybind({
    Name = "Teleport Key",
    Default = Enum.KeyCode.E,
    Callback = function()
        print("Keybind activated!")
    end
})

Tab:CreateInput(options)

lua
Tab:CreateInput({
    Name = "Target Player",
    PlaceholderText = "Username...",
    Callback = function(text)
        print("Input submitted:", text)
    end
})

Tab:CreateSection(text)

lua
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:

lua
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.

lua - MainScript.lua
--// 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
})