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({
    Title = 'Kyirht Hub',
    Center = true,
    AutoShow = true,
    TabPadding = 8,
    MenuFadeTime = 0.2
})

local Tabs = {
    Main = Window:AddTab('Main'),
    ['UI Settings'] = Window:AddTab('UI Settings'),
}

local LeftGroupBox = Tabs.Main:AddLeftGroupbox('Train')
local RightGroupBox = Tabs.Main:AddRightGroupbox('Utility')

local abilityList = game:GetService("Players").LocalPlayer.PlayerGui.AbilityList.AbilityList["1"]

local function containsLetters(inputString)
    return inputString:match("[A-Za-z]") ~= nil
end

local function separateAbilityName(abilityName)
    return abilityName:gsub("([a-z])([A-Z])", "%1 %2")
end

local function startsWithUppercase(inputString)
    return inputString:sub(1, 1):match("[A-Z]") ~= nil
end

local ignoredAbilities = {
    "SaiyanTransform",
    "Hamon",
    "BusoHaki",
    "FourthGate"
}

local uppercaseAbilities = {}

local abilityKeybinds = {}

for _, ability in ipairs(abilityList:GetChildren()) do
    local abilityName = ability.Name
    if containsLetters(abilityName) and startsWithUppercase(abilityName) then
        local separatedName = separateAbilityName(abilityName)
        if not table.find(ignoredAbilities, separatedName) and not table.find(ignoredAbilities, abilityName) then
            table.insert(uppercaseAbilities, separatedName)

            local keybind = ability["activate"].keybind.Text
            if keybind then
                abilityKeybinds[separatedName] = keybind
            end
        end
    end
end

local autoSkillEnabled = false
local VirtualInputManager = game:GetService("VirtualInputManager")

local function sendKeyEvent(keyCode)
    VirtualInputManager:SendKeyEvent(true, keyCode, false, game)
    wait(0.1)
    VirtualInputManager:SendKeyEvent(false, keyCode, false, game)
end

local abilityKeys = {} -- Tabela para armazenar as chaves das habilidades selecionadas

local function activateSelectedSkills()
    while autoSkillEnabled do
        for abilityName, isSelected in pairs(abilityKeys) do
            if isSelected then
                local key = abilityKeybinds[abilityName]
                if key then
                    local keyCode = Enum.KeyCode[key]
                    if keyCode then
                        sendKeyEvent(keyCode)
                    else
                        warn("A chave '" .. key .. "' não é uma enumeração válida de KeyCode.")
                    end
                end
            end
        end
        wait(0.5)
    end
end

-- Callback para atualizar a tabela de abilityKeys sempre que o dropdown é alterado
local function updateSelectedSkills(values)
    abilityKeys = values
    print("Selected abilities:", abilityKeys)
end

RightGroupBox:AddDropdown('SelectedAbilitiesDropdown', {
    Values = uppercaseAbilities,
    Default = 1,
    Multi = true,
    Text = 'Selected Abilities',
    Tooltip = 'Select abilities to activate',
    Callback = updateSelectedSkills -- Usamos o callback para atualizar a tabela de abilityKeys
})

RightGroupBox:AddToggle('MyToggle', {
    Text = 'Auto Skill',
    Default = false,
    Tooltip = 'Enable/Disable auto skill activation',
    Callback = function(Value)
        autoSkillEnabled = Value
        if autoSkillEnabled then
            print("Auto skill enabled!")
            activateSelectedSkills()
        else
            print("Auto skill disabled!")
        end
    end
})

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: