跳至內容
可用

Funky Claude (Funky Friday Autoplayer)

CLclarkdevlinorg1 次瀏覽Universal2026年7月26日
分享
Funky Claude (Funky Friday Autoplayer)

腳本程式碼

Lua
--[[ ============================================================
     FUNKY BOT — auto-player for "Funky Friday" (Lyte Interactive)

     Why the naive approach fails: the gameplay engine runs in a
     PARALLEL Actor VM. VirtualInputManager fires the InputAction and
     lights the receptor, but the Actor's scoring IGNORES synthetic
     input (anti-cheat). Reading note GUI geometry + pressing keys = 0 score.

     The fix (proven): run code INSIDE the Actor via run_on_actor, resolve
     the LIVE player field (ctx.VSRG.GameHandler.Field), and call the game's
     own judge  lane:Hit(true, os.clock())  at each note's Time. That is the
     exact path a real key press takes, so it scores. Verified: 149 combo.

     ACCURACY SLIDER: 100% = hit dead-on every note (Sick / blatant full combo).
     Lower % = random timing error (up to ~160ms) + a rising miss chance, so
     it looks like a human/bad player. Judge windows: +/-50ms => Sick, +/-200ms => hit.
     ============================================================ ]]

local Players       = game:GetService("Players")
local RunService    = game:GetService("RunService")
local TweenService  = game:GetService("TweenService")
local UserInputS    = game:GetService("UserInputService")
local LocalPlayer   = Players.LocalPlayer

if _G.FunkyBotUI then pcall(function() _G.FunkyBotUI.destroy() end) end
local Hub = {}
_G.FunkyBotUI = Hub

-- ===================== ACTOR-SIDE AUTOPLAYER LOOP =====================
-- runs inside ClientActor's VM; reads LocalPlayer attributes for control.
local ACTOR_SRC = [=[
local RunService = game:GetService("RunService")
local LP = game:GetService("Players").LocalPlayer
_G.FB = _G.FB or {}
if _G.FB.conn then pcall(function() _G.FB.conn:Disconnect() end) end
_G.FB.hits, _G.FB.frames = 0, 0

local function findCtx()
    for _, v in ipairs(getgc(true)) do
        if type(v) == "table" then
            local ok, has = pcall(function()
                return rawget(v, "VSRG") ~= nil and rawget(v, "Configs") ~= nil and rawget(v, "SettingsHandler") ~= nil
            end)
            if ok and has and v.VSRG and v.VSRG.GameHandler then return v end
        end
    end
end
local ctx = findCtx()
local seen = setmetatable({}, {__mode = "k"})   -- notes already handled
local emap = setmetatable({}, {__mode = "k"})   -- per-note assigned error/miss

_G.FB.conn = RunService.Heartbeat:Connect(function()
    _G.FB.frames = _G.FB.frames + 1
    LP:SetAttribute("FB_Frames", _G.FB.frames)
    local ok, err = pcall(function()
        if not LP:GetAttribute("FB_Enabled") then return end
        if not (ctx and ctx.VSRG and ctx.VSRG.GameHandler) then ctx = findCtx() end
        local gh = ctx and ctx.VSRG and ctx.VSRG.GameHandler
        local pf = gh and gh.Field                       -- the LIVE player field
        if not pf or not pf.Game or not pf.Lanes then return end
        local a  = LP:GetAttribute("FB_Accuracy") or 1
        local now = pf.Game.TimePosition
        for _, lane in pairs(pf.Lanes) do
            local notes = lane.Notes
            if notes then
                for _, note in pairs(notes) do
                    if type(note) == "table" and note.Time and not seen[note] then
                        local e = emap[note]
                        if not e then
                            if a >= 1 then
                                e = { err = 0, miss = false }
                            else
                                e = { err = (math.random()*2 - 1) * 0.16 * (1 - a),   -- +/- up to 160ms at a=0
                                      miss = (math.random() < 0.4 * (1 - a)) }        -- up to 40% miss at a=0
                            end
                            emap[note] = e
                        end
                        if now >= note.Time + e.err then
                            seen[note] = true
                            if not e.miss then
                                pcall(function() lane:Hit(true, os.clock()) end)
                                local len = note.Length or 0
                                task.delay(len > 0 and len or 0.03, function()
                                    pcall(function() lane:Hit(false, os.clock()) end)
                                end)
                                _G.FB.hits = _G.FB.hits + 1
                                LP:SetAttribute("FB_Hits", _G.FB.hits)
                            end
                        end
                    end
                end
            end
        end
    end)
    if not ok then LP:SetAttribute("FB_Err", tostring(err)) end
end)
print("[FUNKY BOT] actor loop installed (ctx=" .. tostring(ctx ~= nil) .. ")")
]=]

-- ===================== INJECT INTO ACTOR =====================
LocalPlayer:SetAttribute("FB_Enabled", false)
LocalPlayer:SetAttribute("FB_Accuracy", 1.0)
LocalPlayer:SetAttribute("FB_Hits", 0)

local injected = false
do
    local ok, actors = pcall(getactors)
    if ok and actors and run_on_actor then
        local actor
        for _, a in ipairs(actors) do if a.Name == "ClientActor" then actor = a end end
        actor = actor or actors[1]
        if actor then
            local ok2 = pcall(function() run_on_actor(actor, ACTOR_SRC) end)
            injected = ok2
        end
    end
end

-- ===================== UI =====================
local function descAccuracy(a)
    if a >= 1.0  then return "PERFECT / BLATANT", Color3.fromRGB(255,60,120) end
    if a >= 0.85 then return "Cracked", Color3.fromRGB(120,220,120) end
    if a >= 0.55 then return "Decent",  Color3.fromRGB(220,220,120) end
    if a >= 0.30 then return "Human",   Color3.fromRGB(230,170,90) end
    return "Sloppy", Color3.fromRGB(230,110,90)
end

local gui = Instance.new("ScreenGui")
gui.Name = "FunkyBotUI"; gui.ResetOnSpawn = false; gui.IgnoreGuiInset = true
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
pcall(function() gui.Parent = game:GetService("CoreGui") end)
if not gui.Parent then gui.Parent = LocalPlayer:WaitForChild("PlayerGui") end
Hub.gui = gui

local main = Instance.new("Frame")
main.Size = UDim2.fromOffset(272, 210); main.Position = UDim2.fromOffset(30, 120)
main.BackgroundColor3 = Color3.fromRGB(20,18,28); main.BorderSizePixel = 0
main.Active = true; main.Draggable = true; main.Parent = gui
Instance.new("UICorner", main).CornerRadius = UDim.new(0,10)
local stroke = Instance.new("UIStroke", main); stroke.Color = Color3.fromRGB(255,60,120); stroke.Thickness = 1.5; stroke.Transparency = 0.2

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1,0,0,38); title.BackgroundColor3 = Color3.fromRGB(255,60,120); title.BorderSizePixel=0
title.Text = "  FUNKY CLAUDE"; title.TextColor3 = Color3.new(1,1,1); title.Font = Enum.Font.GothamBlack
title.TextSize = 17; title.TextXAlignment = Enum.TextXAlignment.Left; title.Parent = main
Instance.new("UICorner", title).CornerRadius = UDim.new(0,10)

local toggle = Instance.new("TextButton")
toggle.Size = UDim2.new(1,-20,0,34); toggle.Position = UDim2.fromOffset(10,48)
toggle.BackgroundColor3 = Color3.fromRGB(70,45,55); toggle.BorderSizePixel=0
toggle.Text = "ENABLED: OFF"; toggle.TextColor3 = Color3.new(1,1,1); toggle.Font = Enum.Font.GothamBold; toggle.TextSize=15
toggle.AutoButtonColor = false; toggle.Parent = main
Instance.new("UICorner", toggle).CornerRadius = UDim.new(0,7)
local function refreshToggle()
    local on = LocalPlayer:GetAttribute("FB_Enabled")
    toggle.Text = "ENABLED: " .. (on and "ON" or "OFF")
    toggle.BackgroundColor3 = on and Color3.fromRGB(50,190,90) or Color3.fromRGB(70,45,55)
end
toggle.MouseButton1Click:Connect(function()
    LocalPlayer:SetAttribute("FB_Enabled", not LocalPlayer:GetAttribute("FB_Enabled"))
    refreshToggle()
end)
refreshToggle()

local accLbl = Instance.new("TextLabel")
accLbl.Size = UDim2.new(1,-20,0,20); accLbl.Position = UDim2.fromOffset(10,92)
accLbl.BackgroundTransparency = 1; accLbl.TextXAlignment = Enum.TextXAlignment.Left
accLbl.Font = Enum.Font.GothamMedium; accLbl.TextSize = 14; accLbl.Parent = main

local track = Instance.new("Frame")
track.Size = UDim2.new(1,-20,0,14); track.Position = UDim2.fromOffset(10,118)
track.BackgroundColor3 = Color3.fromRGB(45,42,55); track.BorderSizePixel=0; track.Parent = main
Instance.new("UICorner", track).CornerRadius = UDim.new(1,0)
local fill = Instance.new("Frame")
fill.Size = UDim2.new(1,0,1,0); fill.BackgroundColor3 = Color3.fromRGB(255,60,120); fill.BorderSizePixel=0; fill.Parent = track
Instance.new("UICorner", fill).CornerRadius = UDim.new(1,0)
local knob = Instance.new("Frame")
knob.Size = UDim2.fromOffset(20,20); knob.AnchorPoint = Vector2.new(0.5,0.5)
knob.Position = UDim2.new(1,0,0.5,0); knob.BackgroundColor3 = Color3.new(1,1,1); knob.BorderSizePixel=0; knob.Parent = track
Instance.new("UICorner", knob).CornerRadius = UDim.new(1,0)

local function applyAcc(a)
    a = math.clamp(a, 0, 1)
    LocalPlayer:SetAttribute("FB_Accuracy", a)
    fill.Size = UDim2.new(a,0,1,0); knob.Position = UDim2.new(a,0,0.5,0)
    local d, c = descAccuracy(a)
    accLbl.Text = ("Accuracy: %d%%  —  %s"):format(math.floor(a*100+0.5), d)
    accLbl.TextColor3 = c; fill.BackgroundColor3 = c
end
local dragging = false
local function setFromX(px) applyAcc((px - track.AbsolutePosition.X) / track.AbsoluteSize.X) end
track.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then dragging=true; setFromX(i.Position.X) end end)
knob.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then dragging=true end end)
UserInputS.InputChanged:Connect(function(i) if dragging and (i.UserInputType==Enum.UserInputType.MouseMovement or i.UserInputType==Enum.UserInputType.Touch) then setFromX(i.Position.X) end end)
UserInputS.InputEnded:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then dragging=false end end)

local status = Instance.new("TextLabel")
status.Size = UDim2.new(1,-20,0,18); status.Position = UDim2.fromOffset(10,150)
status.BackgroundTransparency = 1; status.TextXAlignment = Enum.TextXAlignment.Left
status.Font = Enum.Font.Code; status.TextSize = 12; status.TextColor3 = Color3.fromRGB(150,255,170); status.Parent = main

local hint = Instance.new("TextLabel")
hint.Size = UDim2.new(1,-20,0,30); hint.Position = UDim2.fromOffset(10,174)
hint.BackgroundTransparency = 1; hint.TextXAlignment = Enum.TextXAlignment.Left; hint.TextYAlignment = Enum.TextYAlignment.Top
hint.TextWrapped = true; hint.Text = injected and "Runs inside the game engine. Slide right = full-combo; left = misses."
    or "WARNING: actor injection failed — executor may not support run_on_actor."
hint.TextColor3 = injected and Color3.fromRGB(150,150,160) or Color3.fromRGB(255,120,120)
hint.Font = Enum.Font.Gotham; hint.TextSize = 11; hint.Parent = main

local statusConn = RunService.Heartbeat:Connect(function()
    if not status.Parent then return end
    status.Text = ("notes hit: %d"):format(LocalPlayer:GetAttribute("FB_Hits") or 0)
    refreshToggle()  -- keep button in sync even if state is set externally
end)

applyAcc(LocalPlayer:GetAttribute("FB_Accuracy") or 1.0)

function Hub.destroy()
    LocalPlayer:SetAttribute("FB_Enabled", false)
    pcall(function() statusConn:Disconnect() end)
    if Hub.gui then pcall(function() Hub.gui:Destroy() end) end
    _G.FunkyBotUI = nil
end

print("[FUNKY BOT] Loaded (actor-injected=" .. tostring(injected) .. "). Enable + slide accuracy. 100% = blatant full-combo.")

描述

open source Claude made funky friday player

評論 (0)

登入以參與討論

  • 成為第一個評論的人。

常見問題

如何使用 Funky Claude (Funky Friday Autoplayer) 腳本?
複製上方的腳本程式碼,開啟你的 Roblox 執行器,貼上程式碼,然後在遊戲中點擊執行。腳本執行後功能會立即啟用。
Funky Claude (Funky Friday Autoplayer) 腳本免費嗎?
是的。此腳本免費複製和使用。如果使用金鑰系統,請透過「獲取金鑰」連結免費解鎖。
使用 Funky Claude (Funky Friday Autoplayer) 腳本安全嗎?
完整原始碼顯示在此頁面上,讓你在執行前準確了解其功能。請始終使用可信的執行器,並記住使用腳本違反 Roblox 服務條款,風險自負。
哪個執行器相容 Funky Claude (Funky Friday Autoplayer)?
此腳本相容大多數熱門 Roblox 執行器。查看我們的執行器頁面,為你的裝置找到可信的免費或付費執行器。
Funky Claude (Funky Friday Autoplayer) | BloxScripter