콘텐츠로 건너뛰기
작동 중

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