📃Examples
local Fluent = loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))()
local SaveManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/SaveManager.lua"))()
local InterfaceManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/InterfaceManager.lua"))()
local Window = Fluent:CreateWindow({
Title = "Fluent " .. Fluent.Version,
SubTitle = "by dawid",
TabWidth = 160,
Size = UDim2.fromOffset(580, 460),
Acrylic = true, -- The blur may be detectable, setting this to false disables blur entirely
Theme = "Dark",
MinimizeKey = Enum.KeyCode.LeftControl -- Used when theres no MinimizeKeybind
})
--Fluent provides Lucide Icons https://lucide.dev/icons/ for the tabs, icons are optional
local Tabs = {
Main = Window:AddTab({ Title = "Main", Icon = "" }),
Settings = Window:AddTab({ Title = "Settings", Icon = "settings" })
}
local Options = Fluent.Options
do
Fluent:Notify({
Title = "Notification",
Content = "This is a notification",
SubContent = "SubContent", -- Optional
Duration = 5 -- Set to nil to make the notification not disappear
})
Tabs.Main:AddParagraph({
Title = "Paragraph",
Content = "This is a paragraph.\nSecond line!"
})
Tabs.Main:AddButton({
Title = "Button",
Description = "Very important button",
Callback = function()
Window:Dialog({
Title = "Title",
Content = "This is a dialog",
Buttons = {
{
Title = "Confirm",
Callback = function()
print("Confirmed the dialog.")
end
},
{
Title = "Cancel",
Callback = function()
print("Cancelled the dialog.")
end
}
}
})
end
})
local Toggle = Tabs.Main:AddToggle("MyToggle", {Title = "Toggle", Default = false })
Toggle:OnChanged(function()
print("Toggle changed:", Options.MyToggle.Value)
end)
Options.MyToggle:SetValue(false)
local Slider = Tabs.Main:AddSlider("Slider", {
Title = "Slider",
Description = "This is a slider",
Default = 2,
Min = 0,
Max = 5,
Rounding = 1,
Callback = function(Value)
print("Slider was changed:", Value)
end
})
Slider:OnChanged(function(Value)
print("Slider changed:", Value)
end)
Slider:SetValue(3)
local Dropdown = Tabs.Main:AddDropdown("Dropdown", {
Title = "Dropdown",
Values = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen"},
Multi = false,
Default = 1,
})
Dropdown:SetValue("four")
Dropdown:OnChanged(function(Value)
print("Dropdown changed:", Value)
end)
local MultiDropdown = Tabs.Main:AddDropdown("MultiDropdown", {
Title = "Dropdown",
Description = "You can select multiple values.",
Values = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen"},
Multi = true,
Default = {"seven", "twelve"},
})
MultiDropdown:SetValue({
three = true,
five = true,
seven = false
})
MultiDropdown:OnChanged(function(Value)
local Values = {}
for Value, State in next, Value do
table.insert(Values, Value)
end
print("Mutlidropdown changed:", table.concat(Values, ", "))
end)
local Colorpicker = Tabs.Main:AddColorpicker("Colorpicker", {
Title = "Colorpicker",
Default = Color3.fromRGB(96, 205, 255)
})
Colorpicker:OnChanged(function()
print("Colorpicker changed:", Colorpicker.Value)
end)
Colorpicker:SetValueRGB(Color3.fromRGB(0, 255, 140))
local TColorpicker = Tabs.Main:AddColorpicker("TransparencyColorpicker", {
Title = "Colorpicker",
Description = "but you can change the transparency.",
Transparency = 0,
Default = Color3.fromRGB(96, 205, 255)
})
TColorpicker:OnChanged(function()
print(
"TColorpicker changed:", TColorpicker.Value,
"Transparency:", TColorpicker.Transparency
)
end)
local Keybind = Tabs.Main:AddKeybind("Keybind", {
Title = "KeyBind",
Mode = "Toggle", -- Always, Toggle, Hold
Default = "LeftControl", -- String as the name of the keybind (MB1, MB2 for mouse buttons)
-- Occurs when the keybind is clicked, Value is `true`/`false`
Callback = function(Value)
print("Keybind clicked!", Value)
end,
-- Occurs when the keybind itself is changed, `New` is a KeyCode Enum OR a UserInputType Enum
ChangedCallback = function(New)
print("Keybind changed!", New)
end
})
-- OnClick is only fired when you press the keybind and the mode is Toggle
-- Otherwise, you will have to use Keybind:GetState()
Keybind:OnClick(function()
print("Keybind clicked:", Keybind:GetState())
end)
Keybind:OnChanged(function()
print("Keybind changed:", Keybind.Value)
end)
task.spawn(function()
while true do
wait(1)
-- example for checking if a keybind is being pressed
local state = Keybind:GetState()
if state then
print("Keybind is being held down")
end
if Fluent.Unloaded then break end
end
end)
Keybind:SetValue("MB2", "Toggle") -- Sets keybind to MB2, mode to Hold
local Input = Tabs.Main:AddInput("Input", {
Title = "Input",
Default = "Default",
Placeholder = "Placeholder",
Numeric = false, -- Only allows numbers
Finished = false, -- Only calls callback when you press enter
Callback = function(Value)
print("Input changed:", Value)
end
})
Input:OnChanged(function()
print("Input updated:", Input.Value)
end)
end
-- Addons:
-- SaveManager (Allows you to have a configuration system)
-- InterfaceManager (Allows you to have a interface managment system)
-- Hand the library over to our managers
SaveManager:SetLibrary(Fluent)
InterfaceManager:SetLibrary(Fluent)
-- Ignore keys that are used by ThemeManager.
-- (we dont want configs to save themes, do we?)
SaveManager:IgnoreThemeSettings()
-- You can add indexes of elements the save manager should ignore
SaveManager:SetIgnoreIndexes({})
-- use case for doing it this way:
-- a script hub could have themes in a global folder
-- and game configs in a separate folder per game
InterfaceManager:SetFolder("FluentScriptHub")
SaveManager:SetFolder("FluentScriptHub/specific-game")
InterfaceManager:BuildInterfaceSection(Tabs.Settings)
SaveManager:BuildConfigSection(Tabs.Settings)
Window:SelectTab(1)
Fluent:Notify({
Title = "Fluent",
Content = "The script has been loaded.",
Duration = 8
})
-- You can use the SaveManager:LoadAutoloadConfig() to load a config
-- which has been marked to be one that auto loads!
SaveManager:LoadAutoloadConfig()
Last updated