local repo = 'https://[Log in to view URL]'
local Library = loadstring(game:HttpGet(repo .. 'Library.lua'))()
local ThemeManager = loadstring(game:HttpGet(repo .. 'addons/ThemeManager.lua'))()
local SaveManager = loadstring(game:HttpGet(repo .. 'addons/SaveManager.lua'))()
local Window = Library:CreateWindow({
-- Set Center to true if you want the menu to appear in the center
-- Set AutoShow to true if you want the menu to appear when it is created
-- Position and Size are also valid options here
-- but you do not need to define them unless you are changing them :)
Title = 'light.cc',
Center = true,
AutoShow = true,
TabPadding = 8
})
-- CALLBACK NOTE:
-- Passing in callback functions via the initial element parameters (i.e. Callback = function(Value)...) works
-- HOWEVER, using Toggles/Options.INDEX:OnChanged(function(Value) ... ) is the RECOMMENDED way to do this.
-- I strongly recommend decoupling UI code from logic code. i.e. Create your UI elements FIRST, and THEN setup :OnChanged functions later.
-- You do not have to set your tabs & groups up this way, just a prefrence.
local Tabs = {
-- Creates a new tab titled Main
Main = Window:AddTab('Combat'),
Visuals = Window:AddTab('Visuals'),
Misc = Window:AddTab('Misc'),
Players = Window:AddTab('Players'),
['UI Settings'] = Window:AddTab('UI Settings'),
}
local TabBox = Tabs.Main:AddLeftTabbox()
local Tab1 = TabBox:AddTab('Legit')
local Tab2 = TabBox:AddTab('Mouse')
local Tab3 = TabBox:AddTab('Silent')
local RightGroupBox = Tabs.Main:AddRightGroupbox('Checks')
RightGroupBox:AddToggle('WallCheckToggle', {
Text = 'Wall check',
Default = false, -- Default value (true / false)
Tooltip = 'Checks if behind wall', -- Information shown when you hover over the toggle
Callback = function(Value)
end
})
RightGroupBox:AddToggle('AliveCheckToggle', {
Text = 'Alive check',
Default = false, -- Default value (true / false)
Tooltip = 'Checks if target is dead/alive', -- Information shown when you hover over the toggle
Callback = function(Value)
end
})
RightGroupBox:AddLabel('Femboys <3333333')
RightGroupBox:AddLabel(' :3')
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera
local PlayersGroupBox = Tabs.Players:AddLeftGroupbox('Players')
local PlayerSettingsGroupBox = Tabs.Players:AddRightGroupbox('Settings')
local selectedPlayer = nil
local spectating = false
PlayersGroupBox:AddDropdown('MyPlayerDropdown', {
SpecialType = 'Player',
Text = 'Players dropdown',
Tooltip = 'Select the player',
Callback = function(Value)
selectedPlayer = Players:FindFirstChild(Value)
end
})
PlayerSettingsGroupBox:AddButton({
Text = 'Teleport',
Func = function()
if selectedPlayer and selectedPlayer.Character and selectedPlayer.Character:FindFirstChild("Head") and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
LocalPlayer.Character.HumanoidRootPart.CFrame = selectedPlayer.Character.Head.CFrame + Vector3.new(0, 10, 0)
end
end,
DoubleClick = false,
Tooltip = 'Teleport to the player'
})
PlayerSettingsGroupBox:AddButton({
Text = 'Spectate',
Func = function()
if not selectedPlayer or not selectedPlayer.Character then return end
spectating = not spectating
if spectating then
Camera.CameraSubject = selectedPlayer.Character:FindFirstChild("Humanoid")
else
if LocalPlayer.Character then
Camera.CameraSubject = LocalPlayer.Character:FindFirstChild("Humanoid")
end
end
end,
DoubleClick = false,
Tooltip = 'Spectate the player'
})
local HealthSlider = PlayerSettingsGroupBox:AddSlider('MySlider', {
Text = 'Health',
Default = 0,
Min = 0,
Max = 100,
Rounding = 1,
Compact = false,
Callback = function(Value)
end
})
-- Real-time health update (old fast Heartbeat style)
RunService.Heartbeat:Connect(function()
if selectedPlayer and selectedPlayer.Character and selectedPlayer.Character:FindFirstChild("Humanoid") then
local health = selectedPlayer.Character.Humanoid.Health
HealthSlider:SetValue(math.clamp(math.floor(health), 0, 100))
else
HealthSlider:SetValue(0)
end
end)
PlayerSettingsGroupBox:AddLabel('I fixed the health view so ur welcome :3 <3')
-- Library functions
-- Sets the watermark visibility
Library:SetWatermarkVisibility(true)
-- Notif
Library:Notify("Hello World!", 5) -- Text, Time
-- Sets the watermark text
Library:SetWatermarkVisibility(true)
Library:SetWatermark('Light.cc | fps: 60 / --') -- initial
task.spawn(function()
local RunService = game:GetService("RunService")
local currentFPS = 60
RunService.RenderStepped:Connect(function(delta)
if delta > 0 then
currentFPS = math.floor(1 / delta)
end
end)
while task.wait(0.1) do
Library:SetWatermark('Light.cc | fps: ' .. currentFPS .. ' / --')
end
end)
Library.KeybindFrame.Visible = false; -- todo: add a function for this
Library:OnUnload(function()
print('Unloaded!')
Library.Unloaded = true
end)
-- UI Settings
local MenuGroup = Tabs['UI Settings']:AddLeftGroupbox('Menu')
-- I set NoUI so it does not show up in the keybinds menu
MenuGroup:AddButton('Unload', function() Library:Unload() end)
MenuGroup:AddLabel('Menu bind'):AddKeyPicker('MenuKeybind', { Default = 'End', NoUI = true, Text = 'Menu keybind' })
Library.ToggleKeybind = Options.MenuKeybind -- Allows you to have a custom keybind for the menu
-- Addons:
-- SaveManager (Allows you to have a configuration system)
-- ThemeManager (Allows you to have a menu theme system)
-- Hand the library over to our managers
ThemeManager:SetLibrary(Library)
SaveManager:SetLibrary(Library)
-- Ignore keys that are used by ThemeManager.
-- (we dont want configs to save themes, do we?)
SaveManager:IgnoreThemeSettings()
-- Adds our MenuKeybind to the ignore list
-- (do you want each config to have a different menu key? probably not.)
SaveManager:SetIgnoreIndexes({ 'MenuKeybind' })
-- 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
ThemeManager:SetFolder('MyScriptHub')
SaveManager:SetFolder('MyScriptHub/specific-game')
-- Builds our config menu on the right side of our tab
SaveManager:BuildConfigSection(Tabs['UI Settings'])
-- Builds our theme menu (with plenty of built in themes) on the left side
-- NOTE: you can also call ThemeManager:ApplyToGroupbox to add it to a specific groupbox
ThemeManager:ApplyToTab(Tabs['UI Settings'])
-- You can use the SaveManager:LoadAutoloadConfig() to load a config
-- which has been marked to be one that auto loads!
SaveManager:LoadAutoloadConfig()
To embed this project on your website, copy the following code and paste it into your website's HTML: