
KeylessUniversal

-- FUNKY V4 - ALL REQUESTS FIXED (Original behavior preserved for owner commands)
-- Added protection for "Anuj" (case-insensitive + leet speak)
-- All protected names now show "CANT USE THAT NAME"
-- !spam with protected names blocked for everyone (including owner/admins)
local Players = game:GetService("Players")
local TextChatService = game:GetService("TextChatService")
local UserInputService = game:GetService("UserInputService")
local VirtualInputManager = game:GetService("VirtualInputManager")
local player = Players.LocalPlayer
local OWNER_NAME = "ShinChanHKSFF"
local LIMITED_ADMINS = {"Captain_Anuj94", "Must2358”}
local playerGui = player:WaitForChild("PlayerGui")
-- Clean old GUIs
if playerGui:FindFirstChild("FUNKY V4") then playerGui["FUNKY V4"]:Destroy() end
if playerGui:FindFirstChild("FUNKY V3") then playerGui["FUNKY V3"]:Destroy() end
if playerGui:FindFirstChild("FUNKY V2") then playerGui["FUNKY V2"]:Destroy() end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "FUNKY V4"
screenGui.ResetOnSpawn = false
screenGui.DisplayOrder = 999
screenGui.Parent = playerGui
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 320, 0, 180)
frame.Position = UDim2.new(0.5, -160, 0.5, -90)
frame.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
frame.BorderSizePixel = 0
frame.Active = true
frame.Draggable = true
frame.Parent = screenGui
local frameCorner = Instance.new("UICorner")
frameCorner.CornerRadius = UDim.new(0, 12)
frameCorner.Parent = frame
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 35)
title.BackgroundTransparency = 1
title.Text = "FUNKY V4"
title.TextColor3 = Color3.fromRGB(0, 255, 255)
title.Font = Enum.Font.GothamBlack
title.TextSize = 24
title.Parent = frame
task.spawn(function()
while task.wait(0.05) and title.Parent do
title.TextColor3 = Color3.fromHSV(tick() % 5 / 5, 1, 1)
end
end)
local textBox = Instance.new("TextBox")
textBox.Size = UDim2.new(0, 170, 0, 35)
textBox.Position = UDim2.new(0, 100, 0, 50)
textBox.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
textBox.PlaceholderText = "ENTER H8TER NAME"
textBox.Text = ""
textBox.TextColor3 = Color3.new(1, 1, 1)
textBox.Font = Enum.Font.GothamSemibold
textBox.TextSize = 17
textBox.ClearTextOnFocus = false
textBox.Parent = frame
local boxCorner = Instance.new("UICorner")
boxCorner.CornerRadius = UDim.new(0, 10)
boxCorner.Parent = textBox
local method1Btn = Instance.new("TextButton")
method1Btn.Size = UDim2.new(0, 85, 0, 30)
method1Btn.Position = UDim2.new(0, 10, 0, 50)
method1Btn.BackgroundColor3 = Color3.fromRGB(0, 200, 0)
method1Btn.Text = "-_-_-"
method1Btn.TextColor3 = Color3.new(1,1,1)
method1Btn.Font = Enum.Font.GothamBold
method1Btn.TextSize = 16
method1Btn.Parent = frame
local m1Corner = Instance.new("UICorner")
m1Corner.CornerRadius = UDim.new(0, 10)
m1Corner.Parent = method1Btn
local method2Btn = Instance.new("TextButton")
method2Btn.Size = UDim2.new(0, 85, 0, 30)
method2Btn.Position = UDim2.new(0, 10, 0, 85)
method2Btn.BackgroundColor3 = Color3.fromRGB(0, 140, 0)
method2Btn.Text = "____"
method2Btn.TextColor3 = Color3.new(1,1,1)
method2Btn.Font = Enum.Font.GothamBold
method2Btn.TextSize = 16
method2Btn.Parent = frame
local m2Corner = Instance.new("UICorner")
m2Corner.CornerRadius = UDim.new(0, 10)
m2Corner.Parent = method2Btn
local method3Btn = Instance.new("TextButton")
method3Btn.Size = UDim2.new(0, 85, 0, 30)
method3Btn.Position = UDim2.new(0, 10, 0, 120)
method3Btn.BackgroundColor3 = Color3.fromRGB(0, 140, 0)
method3Btn.Text = "####"
method3Btn.TextColor3 = Color3.new(1,1,1)
method3Btn.Font = Enum.Font.GothamBold
method3Btn.TextSize = 16
method3Btn.Parent = frame
local m3Corner = Instance.new("UICorner")
m3Corner.CornerRadius = UDim.new(0, 10)
m3Corner.Parent = method3Btn
local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(0, 100, 0, 40)
toggleBtn.Position = UDim2.new(1, -115, 1, -55)
toggleBtn.BackgroundColor3 = Color3.fromRGB(0, 180, 0)
toggleBtn.Text = "START"
toggleBtn.TextColor3 = Color3.new(1, 1, 1)
toggleBtn.Font = Enum.Font.GothamBold
toggleBtn.TextSize = 20
toggleBtn.Parent = frame
local toggleCorner = Instance.new("UICorner")
toggleCorner.CornerRadius = UDim.new(0, 10)
toggleCorner.Parent = toggleBtn
local delayBtn = Instance.new("TextButton")
delayBtn.Size = UDim2.new(0, 80, 0, 35)
delayBtn.Position = UDim2.new(1, -200, 1, -52)
delayBtn.BackgroundColor3 = Color3.fromRGB(180, 140, 0)
delayBtn.Text = "DELAY"
delayBtn.TextColor3 = Color3.new(1, 1, 1)
delayBtn.Font = Enum.Font.GothamBold
delayBtn.TextSize = 18
delayBtn.Parent = frame
local delayCorner = Instance.new("UICorner")
delayCorner.CornerRadius = UDim.new(0, 10)
delayCorner.Parent = delayBtn
local delayInput = Instance.new("TextBox")
delayInput.Size = UDim2.new(0, 70, 0, 30)
delayInput.Position = UDim2.new(1, -195, 1, -90)
delayInput.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
delayInput.PlaceholderText = "sec"
delayInput.Text = ""
delayInput.TextColor3 = Color3.new(1, 1, 1)
delayInput.Font = Enum.Font.GothamSemibold
delayInput.TextSize = 16
delayInput.Visible = false
delayInput.Parent = frame
local inputCorner = Instance.new("UICorner")
inputCorner.CornerRadius = UDim.new(0, 10)
inputCorner.Parent = delayInput
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 30, 0, 30)
closeBtn.Position = UDim2.new(1, -40, 0, 8)
closeBtn.BackgroundTransparency = 1
closeBtn.Text = "X"
closeBtn.TextColor3 = Color3.fromRGB(255, 100, 100)
closeBtn.Font = Enum.Font.GothamBlack
closeBtn.TextSize = 28
closeBtn.TextStrokeTransparency = 0.5
closeBtn.TextStrokeColor3 = Color3.fromRGB(255, 0, 0)
closeBtn.Parent = frame
local warningLabel = Instance.new("TextLabel")
warningLabel.Size = UDim2.new(1, -20, 0, 40)
warningLabel.Position = UDim2.new(0, 10, 0.75, 0)
warningLabel.BackgroundTransparency = 1
warningLabel.Text = ""
warningLabel.TextColor3 = Color3.fromRGB(255, 100, 100)
warningLabel.Font = Enum.Font.GothamBold
warningLabel.TextSize = 16
warningLabel.TextWrapped = true
warningLabel.Visible = false
warningLabel.Parent = frame
local function showWarning(text)
warningLabel.Text = text or "CANT USE THAT NAME"
warningLabel.Visible = true
task.delay(4, function() warningLabel.Visible = false end)
end
local function normalizeLeet(str)
str = string.lower(str)
str = str:gsub("1", "i"):gsub("!", "i"):gsub("3", "e"):gsub("4", "a"):gsub("0", "o"):gsub("5", "s"):gsub("7", "t"):gsub("@", "a"):gsub("$", "s")
str = str:gsub("[^a-z]", "")
return str
end
local function isForbiddenName(name)
if not name or name == "" then return false end
local normalized = normalizeLeet(name)
return normalized:find("FUNKY") or normalized:find("grip") or normalized:find("grier") or normalized:find("vws") or normalized:find("yesha")
end
local cleanTags = {"KING","GOAT","BOSS","LEGEND","MASTER","GOD","BEAST","GIGA","CHAD","SIGMA","ALPHA","OMEGA","VOID","SHADOW","PHANTOM","NOVA","BLAZE","STORM","FROST","VORTEX","TITAN","DRAGON","REAPER","GHOST","WRAITH","NINJA","SAMURAI","WARRIOR","KNIGHT","RAIDER","HUNTER","SAVAGE","DEMON","ANGEL","CHAOS","VENOM","TOXIC","CYBER","NEON","GLITCH","STAR","MOON","SUN","GALAXY","COMET","SPEED","FLASH","TURBO","MAX","ULTIMATE","EPIC","INSANE","CRAZY","WILD","FIRE","ICE","THUNDER","LIGHTNING","FLAME","BURN","SMOKE","MIST","CLOUD","WIND","STONE","ROCK","METAL","DIAMOND","GOLD","CRYSTAL"}
local spamDelays = {}
local defaultSpamDelay = 2.5
local MAX_CHAT_BYTES = 200
local customEmojis = {}
local muteEndTime = 0
local currentMethod = 1
local methodOverrides = {}
local lockedUsers = {}
local isSpamming = false
local spamTask = nil
local copycatTargets = {}
local currentSpamName = ""
local function extractTargetAndParams(rest)
local words = {}
for word in rest:gmatch("%S+") do table.insert(words, word) end
if #words == 0 then return nil, rest end
local lastWord = words[#words]
local p = Players:FindFirstChild(lastWord)
if p then
table.remove(words, #words)
return p.Name:lower(), table.concat(words, " ")
end
for i = #words, 1, -1 do
p = Players:FindFirstChild(words[i])
if p then
table.remove(words, i)
return p.Name:lower(), table.concat(words, " ")
end
end
return nil, rest
end
local function getSpamDelay()
return spamDelays[player.Name:lower()] or defaultSpamDelay
end
local function antiTag(str)
return str:gsub("@", "@")
end
local function getCurrentMethod()
return methodOverrides[player.Name:lower()] or currentMethod
end
local function getPattern(name, tag)
local emojiPart = customEmojis[player.Name:lower()] or ""
local core = name .. " TMKX MAI " .. tag .. emojiPart
core = antiTag(core)
local available = MAX_CHAT_BYTES - #core
local method = getCurrentMethod()
local filler = ""
if available > 0 then
if method == 1 then filler = string.rep("-_", math.floor(available / 2))
elseif method == 2 then filler = string.rep("__", math.floor(available / 2))
elseif method == 3 then filler = string.rep("##", math.floor(available / 2))
end
end
return filler .. core
end
local function getCreditPattern()
local core = "SCRIPT BY FUNKY"
core = antiTag(core)
local available = MAX_CHAT_BYTES - #core
local method = getCurrentMethod()
local filler = ""
if available > 0 then
if method == 1 then filler = string.rep("-_", math.floor(available / 2))
elseif method == 2 then filler = string.rep("__", math.floor(available / 2))
elseif method == 3 then filler = string.rep("##", math.floor(available / 2))
end
end
return filler .. core
end
local function updateMethodButtons()
local locked = lockedUsers["all"] or lockedUsers[player.Name:lower()] or methodOverrides[player.Name:lower()] ~= nil
if locked then
method1Btn.Text = "LOCKED"
method2Btn.Text = "LOCKED"
method3Btn.Text = "LOCKED"
method1Btn.BackgroundColor3 = Color3.fromRGB(100,100,100)
method2Btn.BackgroundColor3 = Color3.fromRGB(100,100,100)
method3Btn.BackgroundColor3 = Color3.fromRGB(100,100,100)
delayBtn.Text = "LOCKED"
delayBtn.BackgroundColor3 = Color3.fromRGB(100,100,100)
else
method1Btn.Text = "-_-_-"
method2Btn.Text = "____"
method3Btn.Text = "####"
local meth = getCurrentMethod()
method1Btn.BackgroundColor3 = meth == 1 and Color3.fromRGB(0, 200, 0) or Color3.fromRGB(0, 140, 0)
method2Btn.BackgroundColor3 = meth == 2 and Color3.fromRGB(0, 200, 0) or Color3.fromRGB(0, 140, 0)
method3Btn.BackgroundColor3 = meth == 3 and Color3.fromRGB(0, 200, 0) or Color3.fromRGB(0, 140, 0)
delayBtn.Text = "DELAY"
delayBtn.BackgroundColor3 = Color3.fromRGB(180, 140, 0)
end
end
local function updateToggleButton()
local guiLocked = lockedUsers["all"] or lockedUsers[player.Name:lower()]
if guiLocked then
toggleBtn.Text = "LOCKED"
toggleBtn.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
elseif isSpamming then
toggleBtn.Text = "STOP"
toggleBtn.BackgroundColor3 = Color3.fromRGB(200, 0, 0)
else
toggleBtn.Text = "START"
toggleBtn.BackgroundColor3 = Color3.fromRGB(0, 180, 0)
end
end
local function sendChatMessage(msg, force)
force = force or false
if not force and os.time() < muteEndTime then return end
if #msg > MAX_CHAT_BYTES then msg = msg:sub(1, MAX_CHAT_BYTES) end
local success, channel = pcall(function()
return TextChatService.TextChannels:WaitForChild("RBXGeneral", 5)
end)
if success and channel then
pcall(function() channel:SendAsync(msg) end)
end
end
task.spawn(function()
local success, channel = pcall(function()
return TextChatService.TextChannels:WaitForChild("RBXGeneral", 15)
end)
if success and channel then
local old = channel.SendAsync
channel.SendAsync = function(self, msg)
if os.time() < muteEndTime then return end
pcall(old, self, msg)
end
end
end)
local function handleCopycat(msg)
if os.time() < muteEndTime then return end
local speaker = Players:GetPlayerByUserId(msg.TextSource.UserId)
if not speaker then return end
local myTarget = copycatTargets[player.Name:lower()]
if myTarget and speaker.Name:lower() == myTarget then
sendChatMessage(msg.Text)
end
end
local function sendMaxCountdown()
local core = "SPAM STARTING IN 20 SECONDS"
core = antiTag(core)
local available = 200 - #core
local filler = string.rep("__", math.floor(available / 2))
local fullMsg = filler .. core
sendChatMessage(fullMsg)
end
local function startSpam(name)
if isSpamming or os.time() < muteEndTime or lockedUsers["all"] or lockedUsers[player.Name:lower()] then return end
if isForbiddenName(name) then
showWarning("CANT USE THAT NAME")
return
end
currentSpamName = name
isSpamming = true
updateToggleButton()
spamTask = task.spawn(function()
local i = 1
local count = 0
local tags = cleanTags
local currentDelay = getSpamDelay()
while isSpamming and os.time() >= muteEndTime do
count = count + 1
sendChatMessage(getPattern(name, tags[i]))
task.wait(currentDelay + math.random() * 3.0)
i = (i % #tags) + 1
if count >= math.random(7,13) then
task.wait(0.8)
sendChatMessage(getCreditPattern())
task.wait(3)
count = 0
end
end
stopSpam()
end)
end
local function stopSpam()
isSpamming = false
currentSpamName = ""
if spamTask then task.cancel(spamTask) spamTask = nil end
updateToggleButton()
end
closeBtn.MouseButton1Click:Connect(function()
frame.Visible = false
end)
UserInputService.InputBegan:Connect(function(input, gp)
if not gp and input.KeyCode == Enum.KeyCode.Insert then
frame.Visible = not frame.Visible
end
end)
method1Btn.MouseButton1Click:Connect(function()
if lockedUsers["all"] or lockedUsers[player.Name:lower()] or methodOverrides[player.Name:lower()] then return end
currentMethod = 1
updateMethodButtons()
end)
method2Btn.MouseButton1Click:Connect(function()
if lockedUsers["all"] or lockedUsers[player.Name:lower()] or methodOverrides[player.Name:lower()] then return end
currentMethod = 2
updateMethodButtons()
end)
method3Btn.MouseButton1Click:Connect(function()
if lockedUsers["all"] or lockedUsers[player.Name:lower()] or methodOverrides[player.Name:lower()] then return end
currentMethod = 3
updateMethodButtons()
end)
toggleBtn.MouseButton1Click:Connect(function()
if lockedUsers["all"] or lockedUsers[player.Name:lower()] or os.time() < muteEndTime then return end
local name = textBox.Text:match("^%s*(.-)%s*$")
if name == "" then return end
if isSpamming then stopSpam() else startSpam(name) end
end)
delayBtn.MouseButton1Click:Connect(function()
if lockedUsers["all"] or lockedUsers[player.Name:lower()] then return end
delayInput.Visible = true
local current = spamDelays[player.Name:lower()] or defaultSpamDelay
delayInput.Text = tostring(current)
delayInput:CaptureFocus()
end)
delayInput.FocusLost:Connect(function(enterPressed)
delayInput.Visible = false
if enterPressed then
local inputText = delayInput.Text:match("^%s*(.-)%s*$")
local num = tonumber(inputText)
if num and num >= 0.1 then
spamDelays[player.Name:lower()] = num
if isSpamming and currentSpamName ~= "" then
stopSpam()
startSpam(currentSpamName)
end
end
end
delayInput.Text = ""
end)
frame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
if delayInput.Visible then
delayInput.Visible = false
delayInput.Text = ""
end
end
end)
-- COMMAND HANDLER
task.spawn(function()
local success, channel = pcall(function()
return TextChatService.TextChannels:WaitForChild("RBXGeneral", 10)
end)
if not success or not channel then return end
channel.MessageReceived:Connect(function(msg)
if not msg.TextSource then return end
handleCopycat(msg)
local sender = Players:GetPlayerByUserId(msg.TextSource.UserId)
if not sender then return end
local is_owner = sender.Name == OWNER_NAME
local is_limited = table.find(LIMITED_ADMINS, sender.Name) ~= nil
if not (is_owner or is_limited) then return end
local text = msg.Text
if not text:match("^!") then return end
local cmd = text:match("^!(%S+)")
if not cmd then return end
cmd = cmd:lower()
local rest = text:match("^!%S+ ?(.*)$") or ""
local target, params = extractTargetAndParams(rest)
local affectsOwner = (target and target == OWNER_NAME:lower()) or (not target and player.Name == OWNER_NAME)
if is_limited and affectsOwner then
sendChatMessage("Cannot target OWNER.")
return
end
if cmd == "spam" then
if params == "" then return end
if isForbiddenName(params) then
sendChatMessage("CANT USE THAT NAME")
return
end
if target then
if player.Name:lower() == target then
sendMaxCountdown()
task.wait(20)
stopSpam()
startSpam(params)
end
else
sendMaxCountdown()
task.wait(20)
stopSpam()
startSpam(params)
end
return
end
if cmd == "stop" then
stopSpam()
return
end
if cmd == "copycat" then
if params == "" then return end
params = params:lower()
if target then
copycatTargets[target] = params
sendChatMessage("Copycat " .. params .. " forced on " .. target)
else
for _, p in Players:GetPlayers() do
copycatTargets[p.Name:lower()] = params
end
sendChatMessage("Everyone now copycatting " .. params)
end
return
end
if cmd == "uncopycat" then
if target then
copycatTargets[target] = nil
sendChatMessage("Copycat stopped for " .. target)
else
copycatTargets = {}
sendChatMessage("Copycat stopped for everyone")
end
return
end
if cmd == "emoji" or cmd == "unemoji" then
local emojiText = params
local clear = cmd == "unemoji" or emojiText == ""
if target then
if clear then
customEmojis[target] = nil
sendChatMessage("Emoji cleared for " .. target)
else
customEmojis[target] = " " .. emojiText
sendChatMessage("Emoji set to " .. emojiText .. " for " .. target)
end
else
if clear then
customEmojis = {}
sendChatMessage("Emoji cleared for everyone")
else
for _, p in Players:GetPlayers() do
customEmojis[p.Name:lower()] = " " .. emojiText
end
sendChatMessage("Emoji set to " .. emojiText .. " for everyone")
end
end
return
end
if not is_owner then return end
if cmd == "cmd" or cmd == "cmds" then
sendChatMessage("spam <name> [player] • stop • copycat <name> [player] • uncopycat [player] • bot • credit")
task.wait(0.8)
sendChatMessage("emoji <emoji(s)> [player] • unemoji [player] • say <msg>")
task.wait(0.8)
sendChatMessage("speed <num> sec / reset [player] • kick <player> [reason] • method <1|2|3> [player] • lock/unlock [player]")
return
end
if cmd == "admin" then
local list = table.concat(LIMITED_ADMINS, ", ")
sendChatMessage("Admins: " .. (list == "" and "None" or list))
return
end
if cmd == "say" then
if params ~= "" then sendChatMessage(params) end
return
end
if cmd == "speed" then
local lowParams = params:lower()
if lowParams == "reset" then
if target then
spamDelays[target] = nil
sendChatMessage("Delay reset to default (2.5 sec) for " .. target)
else
defaultSpamDelay = 2.5
spamDelays = {}
sendChatMessage("Global delay reset to default (2.5 sec)")
end
if isSpamming and currentSpamName ~= "" then
stopSpam()
startSpam(currentSpamName)
end
return
end
local numStr = params:match("(%d+%.?%d*)")
local hasSec = lowParams:find("sec") or lowParams:find("seconds") or lowParams:find("second")
if numStr and hasSec then
local newDelay = tonumber(numStr)
if newDelay and newDelay >= 0.1 then
if target then
spamDelays[target] = newDelay
sendChatMessage("Spam delay set to " .. newDelay .. " sec for " .. target)
else
defaultSpamDelay = newDelay
spamDelays = {}
sendChatMessage("Global delay set to " .. newDelay .. " sec")
end
if isSpamming and currentSpamName ~= "" then
stopSpam()
startSpam(currentSpamName)
end
end
end
return
end
if cmd == "kick" then
local kickTarget = target or player.Name:lower()
local tp = Players:FindFirstChild(kickTarget:gsub("^%l", string.upper)) or Players:FindFirstChild(kickTarget)
if tp then
local reason = params ~= "" and params or "KICKED BY FUNKY"
task.delay(0.4, function()
local found = false
for _, gui in ipairs(tp.PlayerGui:GetDescendants()) do
if gui:IsA("TextBox") then
local name = gui.Name:lower()
local ph = (gui.PlaceholderText or ""):lower()
if name:find("cmd") or name:find("command") or name:find("bar") or name:find("infinite") or name:find("iy") or ph:find("command") or ph:find("infinite") or ph:find("iy") then
found = true
gui.Text = ";exit"
task.spawn(function()
task.wait(0.15)
local btn = gui.Parent:FindFirstChild("Execute") or gui.Parent.Parent:FindFirstChild("Execute", true) or gui.Parent:FindFirstChild("Run") or gui.Parent.Parent:FindFirstChild("Run", true)
if btn and btn:IsA("TextButton") then
btn:Activate()
else
VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.Return, false, game)
task.wait(0.03)
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.Return, false, game)
end
end)
break
end
end
end
task.delay(1.4, function()
if not found then
tp:Kick(reason)
end
end)
end)
sendChatMessage(tp.Name .. " kicked. Reason: " .. reason)
else
sendChatMessage("Player not found.")
end
return
end
if cmd == "method" then
local num = tonumber(params:match("^(%d+)"))
if num and num >= 1 and num <= 3 then
if target then
methodOverrides[target] = num
sendChatMessage("Method " .. num .. " locked for " .. target)
else
currentMethod = num
methodOverrides = {}
sendChatMessage("Method " .. num .. " locked for everyone")
end
updateMethodButtons()
end
return
end
if cmd == "lock" then
if target then
lockedUsers[target] = true
sendChatMessage("GUI locked for " .. target)
else
lockedUsers = {all = true}
sendChatMessage("GUI locked for everyone")
end
updateMethodButtons()
updateToggleButton()
return
end
if cmd == "unlock" then
if target then
lockedUsers[target] = nil
methodOverrides[target] = nil
sendChatMessage("Unlocked for " .. target)
else
lockedUsers = {}
methodOverrides = {}
sendChatMessage("Unlocked for everyone")
end
updateMethodButtons()
updateToggleButton()
return
end
end)
end)
-- !credit - everyone says it with ____ filler
task.spawn(function()
local success, channel = pcall(function()
return TextChatService.TextChannels:WaitForChild("RBXGeneral", 10)
end)
if not success or not channel then return end
channel.MessageReceived:Connect(function(msg)
if not msg.TextSource then return end
local sender = Players:GetPlayerByUserId(msg.TextSource.UserId)
if not sender then return end
if sender.Name == OWNER_NAME and msg.Text:lower() == "!credit" then
local core = "SCRIPT BY FUNKY"
core = antiTag(core)
local available = MAX_CHAT_BYTES - #core
local filler = string.rep("__", math.floor(available / 2))
sendChatMessage(filler .. core)
end
end)
end)
-- BOT LISTENER
task.spawn(function()
local success, channel = pcall(function()
return TextChatService.TextChannels:WaitForChild("RBXGeneral", 10)
end)
if not success or not channel then return end
channel.MessageReceived:Connect(function(msg)
if not msg.TextSource then return end
local sender = Players:GetPlayerByUserId(msg.TextSource.UserId)
if not sender then return end
if sender.Name == OWNER_NAME and msg.Text == "!bot" then
local text = "YES LORD FUNKY"
local available = MAX_CHAT_BYTES - #text
local filler = string.rep("_", available)
sendChatMessage(filler .. text)
end
end)
end)
updateToggleButton()
updateMethodButtons()
print("FUNKY V4 - Anuj protected | All protected names show 'CANT USE THAT NAME' | !spam blocked for protected names | Ready")No comments yet for this script.



