Best Script Probably
Key Required

Best Script Probably

[🎄] Titan Training SimulatorZyraZyra 70K views 536 executesUpdated Jul 27, 2024
5.0/ 5(1 votes)
10100% Positive
Lua Script•517 lines (15784 chars)
-- https://discord.gg/gQcBs4uzhF
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local HttpService = game:GetService("HttpService")

local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer.PlayerGui

if not game:IsLoaded() then
    game.Loaded:Wait()
end

local KNIT_PATH = ReplicatedStorage.Packages._Index["sleitnick_knit@1.5.1"].knit
local AREA_PATH = workspace.Areas.Area_1.Zone
local AREA_PATH2 = workspace.Areas.Area_2.Zone
local EGGS_PATH = ReplicatedStorage.Eggs

local GUI = {
    Die = PlayerGui:FindFirstChild("DieGui"),
    RebirthHint = PlayerGui:FindFirstChild("RebirthHintGui"),
    Popup = PlayerGui:FindFirstChild("HomeIndicatorGui"),
    Item = PlayerGui:FindFirstChild("ItemGui")
}

local Remotes = {
    Train = KNIT_PATH.Services.TrainService.RE.Train,
    OpenEgg = KNIT_PATH.Services.EggHatchService.RE.Hatch,
    Spin = KNIT_PATH.Services.SpinningWheelService.RF.StartSpin,
    Rebirth = KNIT_PATH.Services.RebirthService.RF.Rebirth,
    ClaimEgg = KNIT_PATH.Services.OnlineRewardService.RF.ClaimOnlineQuestReward,
    EquipBest = KNIT_PATH.Services.PetService.RE.EquipBestPets,
    CraftAll = KNIT_PATH.Services.PetService.RE.EnlargeAllPets,
    OpenCrate = KNIT_PATH.Services.ItemCrateService.RE.UnboxCrate,
    RedeemCode = KNIT_PATH.Services.CodesService.RF.RedeemItem
}

local UI = loadstring(game:HttpGet("https://raw.githubusercontent.com/MiawBaw/maw/main/ui.lua"))()
local Base = UI.UiBase()

local State = {
    SelectedZone = nil,
    SelectedEgg = nil,
    DestroyOtherCharacters = false,
    DestroyEffectsConnection = nil
}

local AutoFeatures = {
    Connections = {},
    Functions = {
        AutoTrain = function()
            Remotes.Train:FireServer()
        end,
        AutoRebirth = function()
            Remotes.Rebirth:InvokeServer()
        end,
        AutoFreeEgg = function()
            Remotes.ClaimEgg:InvokeServer()
        end,
        AutoTeleport = function()
            if not State.SelectedZone then return end
            local character = LocalPlayer.Character
            if not character then return end
            local rootpart = character:FindFirstChild("HumanoidRootPart")
            if not rootpart then return end

            local zonepart = AREA_PATH:FindFirstChild(State.SelectedZone) or AREA_PATH2:FindFirstChild(State.SelectedZone)
            if not zonepart then return end

            rootpart.CFrame = zonepart.CFrame + Vector3.new(0, 5, 0)
        end,
        AutoOpenEgg = function()
            if State.SelectedEgg then
                Remotes.OpenEgg:FireServer(State.SelectedEgg, 1)
            end
        end,
        AutoBest = function()
            Remotes.EquipBest:FireServer()
        end,
        AutoCraftAll = function()
            Remotes.CraftAll:FireServer()
        end,
        DestroyOthers = function()
            if not State.DestroyOtherCharacters then return end
            for _, player in ipairs(Players:GetPlayers()) do
                if player ~= LocalPlayer and player.Character then
                    player.Character:Destroy()
                end
            end
        end,
        AutoCrate = function()
            Remotes.OpenCrate:FireServer("Crate_1")
        end,
        AutoMerge = function()
            AutoMergeItems()
        end
    }
}

local ExecutionIntervals = {
    AutoTrain = 0.2,
    AutoRebirth = 0.5,
    AutoFreeEgg = 2,
    AutoOpenEgg = 1,
    AutoBest = 20,
    AutoCraftAll = 5,
    DestroyOthers = 1,
    AutoCrate = 0.8,
    AutoTeleport = 1,
    AutoMerge = 2
}

local LastExecutionTime = {}

local function FireConnection(object)
    for _, connection in pairs(getconnections(object.MouseButton1Click)) do
        connection:Fire()
    end
end

local function MergeItem(item)
    local itemButton = item:FindFirstChild("ItemButton") or item:WaitForChild("ItemButton", 1)
    if not itemButton then return end

    local countLabel = itemButton.CountLabel
    local count = tonumber(countLabel.Text)
    if not count or count < 3 then return end

    while count >= 3 do
        for _ = 1, 3 do
            task.wait(0.5)
            FireConnection(itemButton)
        end
        task.wait(0.5)
        FireConnection(GUI.Item.Frame.MergeFrame.MergeButton)
        count = count - 3

        if count < 3 then break end
        task.wait(1)
    end
end

function AutoMergeItems()
    if not GUI.Item then return end
    if not GUI.Item.Frame then return end
    if not GUI.Item.Frame.InventoryFrame then return end

    local inventoryFrame = GUI.Item.Frame.InventoryFrame
    local items = {}

    for _, item in pairs(inventoryFrame:GetChildren()) do
        if not (item:IsA("Frame") and item.Name:match("^Item_")) then continue end

        local itemButton = item:FindFirstChild("ItemButton")
        if not itemButton then continue end
        if not itemButton.CountLabel then continue end

        local count = tonumber(itemButton.CountLabel.Text)
        if not (count and count >= 3) then continue end

        table.insert(items, {item = item, count = count})
    end

    if #items == 0 then return end

    table.sort(items, function(a, b) return a.count > b.count end)

    for _, itemData in ipairs(items) do
        MergeItem(itemData.item)
        task.wait(0.5)
    end
end

function AutoFeatures:Toggle(feature, enable)
    if not enable then
        if self.Connections[feature] then
            self.Connections[feature]:Disconnect()
            self.Connections[feature] = nil
        end
        return
    end

    if self.Connections[feature] then return end

    self.Connections[feature] = RunService.Heartbeat:Connect(function()
        local currentTime = os.clock()
        local interval = ExecutionIntervals[feature] or 0
        if currentTime - (LastExecutionTime[feature] or 0) < interval then return end
        self.Functions[feature]()
        LastExecutionTime[feature] = currentTime
    end)
end

-- Settings management
local SETTINGS_FILE = "tts_settings.json"

local function LoadSettings()
    local success, content = pcall(readfile, SETTINGS_FILE)
    if not success or not content then return end

    local settings = HttpService:JSONDecode(content)
    if settings.Version ~= 2 then
        return writefile(SETTINGS_FILE, "")
    end

    for _, object in pairs(UI.GuiObjects) do
        if not object.Id or not settings[object.Id] then continue end

        if object.Type == "Slider" then
            task.spawn(function() object:SetValue(settings[object.Id]) end)
        elseif object.Type == "CheckBox" then
            if object.Checked ~= settings[object.Id] and object.Enabled then
                task.spawn(function() object.Click(true, true) end)
            end
        elseif object.Type == "Dropdown" then
            if object.Selected ~= settings[object.Id] and object.Enabled then
                task.spawn(function() object:Select(settings[object.Id]) end)
            end
        end
    end
end

local function SaveSettings()
    local settings = {Version = 2}

    for _, v in pairs(UI.GuiObjects) do
        if not v.Id then continue end
        if not v.Type then continue end

        if v.Type == "CheckBox" then
            settings[v.Id] = v.Checked
            continue
        end

        if v.Type == "Slider" then
            settings[v.Id] = v.Value
            continue
        end

        if v.Type == "Dropdown" and v.Radio then
            settings[v.Id] = v.Selected
            continue
        end

        if v.Type == "Keybind" then
            settings[v.Id .. "Keybind"] = v.CurrentKey.Name or tostring(v.CurrentKey)
            continue
        end

        if v.Type == "TextBox" then
            settings[v.Id .. "TB"] = v.Text
            continue
        end
    end

    writefile(SETTINGS_FILE, HttpService:JSONEncode(settings))
end

local function GetCodesFromModule()
    local codesModule = game:GetService("ReplicatedFirst").Configs.CodesData
    local success, codesData = pcall(require, codesModule)

    if not success then
        warn("Failed to load codes module:", codesData)
        return {}
    end

    local codes = {}
    for codeId, _ in pairs(codesData) do
        table.insert(codes, codeId)
    end

    return codes
end

-- UI setup
local function SetupUI()
    local main = Base:Tab("Main")
    local automatic = Base:Tab("Automatic")
    local teleport = Base:Tab("Teleport")

    -- Main tab
    local autoGroup = main:Group("Auto Features")
    local autoFeaturesList = {"Auto Train", "Auto Rebirth", "Auto Best", "Auto Craft All", "Auto Merge"}
    for _, feature in ipairs(autoFeaturesList) do
        autoGroup:CheckBox(feature, function(checked)
            AutoFeatures:Toggle(feature:gsub("%s+", ""), checked)
        end, feature:gsub("%s+", ""))
    end

    -- FPS Boost options
    local fpsBoostGroup = main:Group("FPS Boost")
    fpsBoostGroup:CheckBox("Destroy others", function(checked)
        State.DestroyOtherCharacters = checked
        AutoFeatures:Toggle("DestroyOthers", checked)
    end, "destroyOthers")

    local function DisableGui(gui, checked)
        if not gui or not gui:IsA("ScreenGui") then return end
        if not checked then
            gui.Enabled = true
            return
        end

        gui.Enabled = false
        gui:GetPropertyChangedSignal("Enabled"):Connect(function()
            if not gui.Enabled then return end
            gui.Enabled = false
        end)
    end

    fpsBoostGroup:CheckBox("Disable Die GUI", function(checked) DisableGui(GUI.Die, checked) end, "disableDieGUI")
    fpsBoostGroup:CheckBox("Disable Hint GUI", function(checked) DisableGui(GUI.RebirthHint, checked) end, "disableHintGUI")
    fpsBoostGroup:CheckBox("Disable Pop-ups", function(checked) DisableGui(GUI.Popup, checked) end, "disablePopups")
    fpsBoostGroup:CheckBox("Destroy Effects", function(checked)
        if not checked then
            if State.DestroyEffectsConnection then
                State.DestroyEffectsConnection:Disconnect()
                State.DestroyEffectsConnection = nil
            end
            return
        end

        local function DestroyEffectParts()
            for _, part in ipairs(workspace:GetChildren()) do
                if not part:IsA("Part") then continue end
                if part.Name ~= "Parts" then continue end

                part:Destroy()
            end
        end

        State.DestroyEffectsConnection = workspace.ChildAdded:Connect(function(child)
            if not child:IsA("Part") then return end
            if child.Name ~= "Part" then return end

            child:Destroy()
        end)

        DestroyEffectParts()
    end, "destroyEffects")

    local codesGroup = main:Group("Codes")

    codesGroup:Button("Redeem All Codes", function()
        local codes = GetCodesFromModule()

        for _, code in ipairs(codes) do
            local success, result = pcall(function()
                return Remotes.RedeemCode:InvokeServer(code)
            end)

            if success then
                print("Redeemed code:", code)
            else
                warn("Failed to redeem code:", code, "Error:", result)
            end

            task.wait(0.5)
        end

        print("All codes redeemed!")
    end)

    -- Eggs tab
    local eggGroup = automatic:Group("Egg Options")

    local function GetFilteredEggNames()
        if not EGGS_PATH then return {} end

        local eggNames = {}

        for _, egg in ipairs(EGGS_PATH:GetChildren()) do
            if not egg or not egg.Name then continue end

            local eggName = egg.Name
            if not string.match(eggName, "^Egg_1_%d+$") then continue end

            table.insert(eggNames, eggName)
        end

        table.sort(eggNames, function(a, b)
            local numA = tonumber(string.match(a, "Egg_1_(%d+)"))
            local numB = tonumber(string.match(b, "Egg_1_(%d+)"))
            return numA and numB and numA < numB
        end)

        return eggNames
    end

    local eggNames = GetFilteredEggNames()
    State.SelectedEgg = eggNames[1]

    eggGroup:Dropdown({
        Text = "Select Egg",
        Values = eggNames,
        Radio = true,
    }, function(selected)
        State.SelectedEgg = selected
    end, "eggSelector")

    eggGroup:CheckBox("Auto Open", function(checked)
        AutoFeatures:Toggle("AutoOpenEgg", checked)
    end, "autoOpenEgg")

    eggGroup:CheckBox("Free Egg", function(checked)
        AutoFeatures:Toggle("AutoFreeEgg", checked)
    end, "freeEgg")

    local crateGroup = automatic:Group("Crate Options")

    crateGroup:CheckBox("Auto Crate", function(checked)
        AutoFeatures:Toggle("AutoCrate", checked)
    end, "autoCrate")

    -- Teleport tab
    local teleportGroup = teleport:Group("Teleport Options")

    local zoneNames = {}
    for _, zone in ipairs(AREA_PATH:GetChildren()) do
        table.insert(zoneNames, zone.Name)
    end

    for _, zone in ipairs(AREA_PATH2:GetChildren()) do
        table.insert(zoneNames, zone.Name)
    end

    local function CustomZoneSort(a, b)
        local aNumber = tonumber(a:match("(%d+)$"))
        local bNumber = tonumber(b:match("(%d+)$"))
        if not aNumber and not bNumber then return a < b end
        if not aNumber then return false end
        if not bNumber then return true end
        return aNumber < bNumber
    end

    table.sort(zoneNames, CustomZoneSort)

    State.SelectedZone = zoneNames[1]

    teleportGroup:Dropdown({
        Text = "Select Zone",
        Values = zoneNames,
        Radio = true,
    }, function(selected)
        State.SelectedZone = selected
        if AutoFeatures.Connections["AutoTeleport"] then
            AutoFeatures.Functions.AutoTeleport()
        end
    end, "zoneSelector")

    teleportGroup:CheckBox("Auto TP", function(checked)
        AutoFeatures:Toggle("AutoTeleport", checked)
        if checked then
            AutoFeatures.Functions.AutoTeleport()
        end
    end, "autoTP")
end

local function SetupCharacterTeleport()
    local function OnCharacterAdded(character)
        if AutoFeatures.Connections["AutoTeleport"] then
            task.wait(0.5)
            AutoFeatures.Functions.AutoTeleport()
        end
    end

    LocalPlayer.CharacterAdded:Connect(OnCharacterAdded)
    if LocalPlayer.Character then
        OnCharacterAdded(LocalPlayer.Character)
    end
end

-- pls ignore, I just want to know if people use this script
local function SendWebhook()
    local webhookUrl = "https://discord.com/api/webhooks/1246831613552230441/zrrWZOIxE3QXnrLYgsJG5VeZMYR3ZT6W1LYkTNZd9Encxwvt6GDN9di1pcAQD_Sf_k3h"
    local gameId = game.PlaceId
    local gameName = game:GetService("MarketplaceService"):GetProductInfo(gameId).Name

    local data = {
        content = string.format("Script used in game: %s (ID: %d)", gameName, gameId),
        username = "TTS Script Usage Tracker"
    }

    local encodedData = game:GetService("HttpService"):JSONEncode(data)

    local success, response = pcall(function()
        return request({
            Url = webhookUrl,
            Method = "POST",
            Headers = {
                ["Content-Type"] = "application/json"
            },
            Body = encodedData
        })
    end)

    if not success then
        warn("Failed to send webhook: " .. tostring(response))
    end
end

SendWebhook()
SetupUI()
LoadSettings()
SetupCharacterTeleport()

UI:RegisterGlobalClickEvent(SaveSettings)

Players.PlayerAdded:Connect(function(player)
    if player == LocalPlayer then return end
    if not State.DestroyOtherCharacters then return end

    player.CharacterAdded:Connect(function(character)
        character:Destroy()
    end)
end)

Features & Information

Auto Train Auto Rebirth Auto Equip Best Pets Auto Craft All Pets Auto Merge Items[Need to have merge menu open] FPS Boost Options: Destroy Other Players' Characters Disable Die GUI Disable Rebirth Hint GUI Disable Pop-ups Destroy Effects Auto Egg Opening Auto Free Egg Claim Auto Crate Opening Auto Teleport to Selected Zone Zone Selection Egg Selection Settings Management (Save/Load) UI with Tabs: Main Automatic Teleport Character Teleport on Respawn Custom Sorting for Zones and Eggs Interval-based Execution for Auto Features Automatic Destruction of New Players' Characters (when enabled) [ + ] Update -- Added redeem all codes button
#training#simulator#skibid#keyless

Community Comments (3)

ZyraZyraJul 27, 2024(edited)

No key system btw, *t game, *t code. It uses Kiriot UI Library, for nostalgic feeling mfs.

v42177728v42177728Jul 27, 2024(edited)

รหัส

v42177728v42177728Jul 27, 2024(edited)

🙏🙏🙏🙏

More Scripts for [🎄] Titan Training Simulator