Open Source
Keyless

Open Source

Anime Racing ClickerProject_CrypticProject_Cryptic 1.3K views 370 executesUpdated Oct 12, 2026
Unrated
00
Lua Script•418 lines (11481 chars)
if getgenv().AnimeRacingClicker then
    pcall(function()
        getgenv().AnimeRacingClicker:Unload()
    end)
    getgenv().AnimeRacingClicker = nil
end

local baseUrl = "https://raw.githubusercontent.com/croksyscript/CrypticLoader/refs/heads/main/Obsidian/Obsidian_UI/"
local ok, Library = pcall(function()
    return loadstring(game:HttpGet(baseUrl .. "Obsidian_UI.lua"))()
end)
if not ok or not Library then
    return
end

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local VirtualUser = game:GetService("VirtualUser")
local player = Players.LocalPlayer

local Knit = getrenv()._G.Knit
for _ = 1, 40 do
    if Knit and Knit.Controllers and Knit.Controllers.RaceController then
        break
    end
    task.wait(0.5)
    Knit = getrenv()._G.Knit
end
if not (Knit and Knit.Controllers and Knit.Controllers.RaceController) then
    Library:Unload()
    return
end

getgenv().AnimeRacingClicker = Library

local raceController = Knit.Controllers.RaceController
local regionController = Knit.Controllers.RegionController
local autoRunController = Knit.Controllers.AutoRunController
local movementController = Knit.Controllers.RaceMovementController

local clickerService = Knit.GetService("ClickerService")
local movementService = Knit.GetService("RaceMovementService")
local raceGenerator = Knit.GetService("RaceGeneratorService")
local settingsService = Knit.GetService("GameSettingsService")
local raceService = Knit.GetService("RaceService")

local regionTable = require(ReplicatedStorage.DataBank.RegionTable)

local active = true
local connections = {}
local overlay
local lastJoin = 0
local speed = 0
local wallsReached = 0
local wallsTotal = 16
local worldKeys = {}
local autoWorld = "Best Money (auto)"

local function notify(text, time)
    task.spawn(function()
        pcall(function()
            Library:Notify(text, time or 3)
        end)
    end)
end

local function formatNumber(value)
    if value >= 1e9 then
        return string.format("%.2e", value)
    end
    if value >= 1e6 then
        return string.format("%.1fM", value / 1e6)
    end
    if value >= 1e3 then
        return string.format("%.1fk", value / 1e3)
    end
    return string.format("%.0f", value)
end

local function secondsLeft()
    return math.max(0, raceController.Timer - os.time())
end

local function rootPart()
    local character = player.Character
    return character and character:FindFirstChild("HumanoidRootPart")
end

local function currentWorld()
    return regionController.playersRegion[player]
end

local function loadWorlds()
    local worlds = {}
    for key, data in pairs(regionTable) do
        if type(data) == "table" and key ~= "World0" and regionController.AllowedRegions[key] then
            table.insert(worlds, {
                key = key,
                money = data.ShurikensMultiplier or 0,
                click = data.ClickMultiplier or 0,
                name = string.format("%s %s | %s | x%s", tostring(data.WorldName), tostring(data.Island), key, formatNumber(data.ShurikensMultiplier or 0)),
            })
        end
    end

    table.sort(worlds, function(a, b)
        if a.money ~= b.money then
            return a.money > b.money
        end
        return a.click > b.click
    end)

    worldKeys = { [autoWorld] = worlds[1] and worlds[1].key }
    local names = { autoWorld }
    for _, world in ipairs(worlds) do
        worldKeys[world.name] = world.key
        table.insert(names, world.name)
    end
    return names
end

local function targetWorld()
    local picked = Library.Options.RaceWorld and Library.Options.RaceWorld.Value
    return worldKeys[picked] or currentWorld()
end

local function joinRace()
    local world = targetWorld()
    if not world or world == "World0" then
        return
    end
    pcall(function()
        movementService.TeleportToRace:Fire(world)
    end)
end

local function click()
    local success, gain = pcall(function()
        return clickerService:PlayerClick()
    end)
    if success and gain and Library.Toggles.ClickEffect.Value then
        pcall(function()
            Knit.Controllers.ClickerController:TriggerClickBounce(gain)
        end)
    end
end

local function setAutoRun(state)
    pcall(function()
        if state then
            autoRunController:StartAutoRun()
        else
            autoRunController:StopAutoRun()
        end
        settingsService:SaveSetting("AutoRun", state)
    end)
end

local Window = Library:CreateWindow({
    Title = "Cryptic Hub | Anime Racing Clicker",
    Footer = ".gg/XDpsSW7Ybs",
    Icon = 120217226033572,
    NotifySide = "Right",
    Center = true,
    AutoShow = true,
    ToggleKeybind = Enum.KeyCode.RightControl,
    Folder = "CrypticHub/AnimeRacingClicker",
})

local Tabs = {
    Main = Window:AddTab("Main", "zap"),
    Clicker = Window:AddTab("Clicker", "mouse-pointer-click"),
    Race = Window:AddTab("Race", "flag"),
}

local Toggles = Library.Toggles
local Options = Library.Options

local stateLabel, worldLabel, speedLabel, wallLabel

local function buildMain(tab)
    local auto = tab:AddGroupbox({ Side = "Left", Name = "Automation", IconName = "bot" })

    auto:AddToggle("AutoClick", {
        Text = "Auto Click",
        Tooltip = "Clicks during the click phase to gain speed",
    }):AddKeyPicker("AutoClickKey", {
        Text = "Auto Click",
        Default = "C",
        Mode = "Toggle",
        SyncToggleState = true,
    })

    auto:AddToggle("AutoJoin", {
        Text = "Auto Join Race",
        Tooltip = "Joins the selected world when the race starts",
    }):AddKeyPicker("AutoJoinKey", {
        Text = "Auto Join Race",
        Default = "J",
        Mode = "Toggle",
        SyncToggleState = true,
    })

    auto:AddToggle("AutoRun", {
        Text = "Auto Run",
        Callback = setAutoRun,
    })

    auto:AddToggle("ForceForward", {
        Text = "Force Forward Input",
    })

    auto:AddToggle("AntiAfk", {
        Text = "Anti AFK",
        Default = true,
    })

    auto:AddButton({
        Text = "Join Race Now",
        Func = joinRace,
    })

    local info = tab:AddGroupbox({ Side = "Right", Name = "Live Info", IconName = "activity" })
    stateLabel = info:AddLabel("State: -")
    worldLabel = info:AddLabel("World: -")
    speedLabel = info:AddLabel("Speed: -")
    wallLabel = info:AddLabel("Walls: -")
end

local function buildClicker(tab)
    local box = tab:AddGroupbox({ Side = "Left", Name = "Click Settings", IconName = "mouse-pointer-click" })

    box:AddSlider("ClicksPerSecond", {
        Text = "Clicks per second",
        Default = 15,
        Min = 1,
        Max = 40,
        Rounding = 0,
        Tooltip = "The server accepts about 15 clicks per second",
    })

    box:AddSlider("ClickWindow", {
        Text = "Only click in last (s)",
        Default = 60,
        Min = 1,
        Max = 60,
        Rounding = 0,
        Suffix = "s",
    })

    box:AddToggle("ClickEffect", {
        Text = "Show Click Effect",
    })
end

local function buildRace(tab)
    local world = tab:AddGroupbox({ Side = "Left", Name = "World", IconName = "globe" })

    world:AddDropdown("RaceWorld", {
        Text = "Race World",
        Values = loadWorlds(),
        Default = 1,
        Searchable = true,
        MaxVisibleDropdownItems = 10,
        Tooltip = "Unlocked worlds, sorted by money multiplier",
    })

    world:AddButton({
        Text = "Refresh Worlds",
        Func = function()
            Options.RaceWorld:SetValues(loadWorlds())
            Options.RaceWorld:SetValue(autoWorld)
        end,
    })

    world:AddSlider("JoinRetry", {
        Text = "Retry every",
        Default = 2,
        Min = 1,
        Max = 10,
        Rounding = 0,
        Suffix = "s",
    })

    local extras = tab:AddGroupbox({ Side = "Right", Name = "Notifications", IconName = "bell" })

    extras:AddToggle("WallNotify", {
        Text = "Notify on wall",
        Default = true,
    })

    extras:AddToggle("PhaseNotify", {
        Text = "Notify on phase change",
    })

    extras:AddToggle("Overlay", {
        Text = "Status Overlay",
        Callback = function(value)
            if value and not overlay then
                overlay = Library:AddDraggableLabel("Starting...")
            elseif not value and overlay then
                overlay:Destroy()
                overlay = nil
            end
        end,
    })
end

buildMain(Tabs.Main)
buildClicker(Tabs.Clicker)
buildRace(Tabs.Race)

local function loop(interval, body)
    task.spawn(function()
        while active and not Library.Unloaded do
            body()
            task.wait(interval)
        end
    end)
end

loop(0.05, function()
    if not Toggles.AutoClick.Value or raceController.State ~= "Click" then
        return
    end
    if secondsLeft() > Options.ClickWindow.Value then
        return
    end
    task.spawn(click)
    task.wait(1 / Options.ClicksPerSecond.Value - 0.05)
end)

loop(0.25, function()
    if not Toggles.AutoJoin.Value or raceController.State ~= "Running" then
        return
    end
    local root = rootPart()
    local atStart = not root or root.Position.Z < 65
    local wrongWorld = currentWorld() ~= targetWorld()
    local needsJoin = wrongWorld or (atStart and not movementController.IsActive)
    if needsJoin and os.clock() - lastJoin >= Options.JoinRetry.Value then
        lastJoin = os.clock()
        joinRace()
    end
end)

loop(0.5, function()
    if Toggles.AutoRun.Value and not autoRunController.Activated then
        setAutoRun(true)
    end
end)

loop(0.05, function()
    if Toggles.ForceForward.Value and movementController.IsActive then
        movementService.SendMoveDirection:Fire(Vector3.new(0, 0, 1))
    end
end)

loop(0.25, function()
    local state = raceController.State
    local left = secondsLeft()

    stateLabel:SetText(string.format("State: %s (%ds)", state ~= "" and state or "-", left))
    worldLabel:SetText("World: " .. tostring(currentWorld()))
    speedLabel:SetText("Speed: " .. formatNumber(speed) .. " studs/s")
    wallLabel:SetText(string.format("Walls: %d/%d", wallsReached, wallsTotal))

    if overlay then
        overlay:SetText(string.format("%s %ds | Walls %d/%d", state, left, wallsReached, wallsTotal))
    end
end)

local function listen(signal, callback)
    table.insert(connections, signal:Connect(callback))
end

listen(raceGenerator.CheckpointReached, function(number, total)
    wallsReached = number or wallsReached
    wallsTotal = total or wallsTotal
    if Toggles.WallNotify.Value then
        notify(string.format("Wall %s/%s reached", tostring(number), tostring(total)), 2)
    end
end)

listen(movementService.SyncSpeed, function(value)
    if type(value) == "number" then
        speed = value
    end
end)

listen(raceService.TriggerState, function(state)
    if state == "Running" then
        wallsReached = 0
    end
    if Toggles.PhaseNotify.Value then
        notify("Phase: " .. tostring(state), 2)
    end
end)

listen(player.Idled, function()
    if Toggles.AntiAfk.Value then
        VirtualUser:CaptureController()
        VirtualUser:ClickButton2(Vector2.new())
    end
end)

Library:OnUnload(function()
    active = false
    for _, connection in ipairs(connections) do
        connection:Disconnect()
    end
    if overlay then
        overlay:Destroy()
    end
    if getgenv().AnimeRacingClicker == Library then
        getgenv().AnimeRacingClicker = nil
    end
end)

Features & Information

This script is open source, use it to learn and maybe create a better script :D ---------------------------- Auto Click Auto Join Race Race World - beste Welt automatisch Auto Run Force Forward Input Anti AFK Live Info Status Overlay
#anime#clicker#keyless#open source#Anime Racing Clicker

Community Comments (0)

No comments yet for this script.

More Scripts for Anime Racing Clicker