--Wait until game loads
repeat
wait()
until game:IsLoaded()
--Stops script if on a different game
if game.PlaceId ~= 8737602449 and game.PlaceId ~= 8943844393 then
return
end
if getgenv().loaded then
return
else
getgenv().loaded = true
end
--Anti-AFK
local Players = game:GetService("Players")
local connections = getconnections or get_signal_cons
if connections then
for i,v in pairs(connections(Players.LocalPlayer.Idled)) do
if v["Disable"] then
v["Disable"](v)
elseif v["Disconnect"] then
v["Disconnect"](v)
end
end
else
Players.LocalPlayer.Idled:Connect(function()
local VirtualUser = game:GetService("VirtualUser")
VirtualUser:CaptureController()
VirtualUser:ClickButton2(Vector2.new())
end)
end
--Variables
local unclaimed = {}
local counter = 0
local donation, boothText, spamming, hopTimer, vcEnabled, thanksDropdown, begDropdown, connectStat, hookName
local signPass = false
local notUpdating = true
local errCount = 0
local booths = { ["1"] = "72, 3, 36", ["2"] = "83, 3, 161", ["3"] = "11, 3, 36", ["4"] = "100, 3, 59", ["5"] = "72, 3, 166", ["6"] = "2, 3, 42", ["7"] = "-9, 3, 52", ["8"] = "10, 3, 166", ["9"] = "-17, 3, 60", ["10"] = "35, 3, 173", ["11"] = "24, 3, 170", ["12"] = "48, 3, 29", ["13"] = "24, 3, 33", ["14"] = "101, 3, 142", ["15"] = "-18, 3, 142", ["16"] = "60, 3, 33", ["17"] = "35, 3, 29", ["18"] = "0, 3, 160", ["19"] = "48, 3, 173", ["20"] = "61, 3, 170", ["21"] = "91, 3, 151", ["22"] = "-24, 3, 72", ["23"] = "-28, 3, 88", ["24"] = "92, 3, 51", ["25"] = "-28, 3, 112", ["26"] = "-24, 3, 129", ["27"] = "83, 3, 42", ["28"] = "-8, 3, 151" }
local queueonteleport = (syn and syn.queue_on_teleport) or queue_on_teleport or (fluxus and fluxus.queue_on_teleport)
local httprequest = (syn and syn.request) or http and http.request or http_request or (fluxus and fluxus.request) or request
local httpservice = game:GetService('HttpService')
queueonteleport("loadstring(game:HttpGet('https://raw.githubusercontent.com/v1peer/plsdonatefarmarchive/main/main.lua'))()")
local Flux = loadstring(game:HttpGet"https://raw.githubusercontent.com/bardium/random/main/plsdonateui")()
local win = Flux:Window("PLS DONATE", "discord.gg/WMEqDAdtSa", Color3.fromRGB(0, 128, 0), Enum.KeyCode.RightShift)
local function claimGifts()
pcall(function()
Players.LocalPlayer:WaitForChild("PlayerGui")
local guipath = Players.LocalPlayer.PlayerGui:WaitForChild("ScreenGui")
firesignal(guipath.GiftAlert.Buttons.Close["Activated"])
local count = require(game.ReplicatedStorage.Remotes).Event("UnclaimedDonationCount"):InvokeServer()
while count == nil do
task.wait(5)
count = require(game.ReplicatedStorage.Remotes).Event("UnclaimedDonationCount"):InvokeServer()
end
if count then
local ud = {}
for i = 1, count do
table.insert(ud, i)
end
if #ud > 0 then
firesignal(guipath.Gift.Buttons.Inbox["Activated"])
Players.LocalPlayer.ClaimDonation:InvokeServer(ud)
task.wait(.5)
firesignal(guipath.GiftInbox.Buttons.Close["Activated"])
task.wait(.5)
firesignal(guipath.Gift.Buttons.Close["Activated"])
end
end
end)
end
task.spawn(claimGifts)
local settingFile = "plsdonategui/settings.txt"
getgenv().settings = {}
--Load Settings
if not isfolder("plsdonategui") then
makefolder("plsdonategui")
end
if not isfolder("plsdonategui/userProfiles") then
makefolder("plsdonategui/userProfiles")
end
if isfile("plsdonategui/userProfiles/toggled.txt") then
if readfile("plsdonategui/userProfiles/toggled.txt") == "true" then
settingFile = tostring("plsdonategui/userProfiles/".. Players.LocalPlayer.UserId.. ".txt")
end
else
writefile("plsdonategui/userProfiles/toggled.txt", "false")
end
if isfile(settingFile) then
local sl, er = pcall(function()
getgenv().settings = httpservice:JSONDecode(readfile(settingFile))
end)
if er ~= nil then
task.spawn(function()
Flux:Notification("Settings reset due to error", er, "Okay")
end)
delfile(settingFile)
end
end
-- --remove soon
-- if getgenv().settings.hexBox and getgenv().settings.hexBox ~= nil then
-- getgenv().settings.colorBox = tostring(Color3.fromHex(getgenv().settings.hexBox))
-- getgenv().settings.hexBox = nil
-- end
-- if getgenv().settings.signHexBox and getgenv().settings.signHexBox ~= nil then
-- getgenv().settings.signColorBox = tostring(Color3.fromHex(getgenv().settings.signHexBox))
-- getgenv().settings.signHexBox = nil
-- end
local sNames = {"textUpdateToggle", "textUpdateDelay", "serverHopToggle", "serverHopDelay", "colorBox", "goalBox", "webhookToggle", "webhookBox", "danceChoice", "thanksMessage", "signToggle", "customBoothText", "signUpdateToggle", "signText", "signColorBox", "autoThanks", "autoJumpPerRobux", "autoBeg", "begMessage", "begDelay", "fpsLimit", "render", "thanksDelay", "vcServer", "randomToggle", "rainbowLetters", "webhookshop","webhookErr", "anonymous", "fontFace", "fontSize", "staffHop", "censorHop"}
local sValues = {true, 30, true, 0, "0.196078, 0.803922, 0.196078", 5, false, "", "Disabled", {"Thank you", "Thanks!", "ty :)", "tysm!"}, false, "GOAL: $C / $G", false, "your text here", "1, 1, 1", true, false, {"Please donate", "I'm so close to my goal!", "donate to me", "please"}, 300, 60, false, 3, false, true, false, false, false, false, "GothamBlack", 90, true, false}
if #getgenv().settings ~= sNames then
for i, v in ipairs(sNames) do
if getgenv().settings[v] == nil then
getgenv().settings[v] = sValues[i]
end
end
writefile(settingFile, httpservice:JSONEncode(getgenv().settings))
end
--Save Settings
local settingsLock = true
local function saveSettings()
if settingsLock == false then
print('Settings saved.')
writefile(settingFile, httpservice:JSONEncode(getgenv().settings))
end
end
local function webhook(msg)
httprequest({
Url = getgenv().settings.webhookBox,
Body = httpservice:JSONEncode({["content"] = msg}),
Method = "POST",
Headers = {["content-type"] = "application/json"}
})
end
local function serverHop()
if getgenv().settings.webhookshop then
webhook(tostring("["..Players.LocalPlayer.DisplayName.."] Attempting to server hop"))
end
local gameId = "8737602449"
if vcEnabled and getgenv().settings.vcServer then
gameId = "8943844393"
end
local servers = {}
local req = httprequest({Url = "https://games.roblox.com/v1/games/".. gameId.."/servers/Public?sortOrder=Desc&limit=100"})
local body = httpservice:JSONDecode(req.Body)
if body and body.data then
for i, v in next, body.data do
if type(v) == "table" and tonumber(v.playing) and tonumber(v.maxPlayers) and v.playing < v.maxPlayers and v.playing > 19 then
table.insert(servers, 1, v.id)
end
end
end
if #servers > 0 then
game:GetService("TeleportService"):TeleportToPlaceInstance(gameId, servers[math.random(1, #servers)], Players.LocalPlayer)
end
game:GetService("TeleportService").TeleportInitFailed:Connect(function()
game:GetService("TeleportService"):TeleportToPlaceInstance(gameId, servers[math.random(1, #servers)], Players.LocalPlayer)
end)
end
local function playerJoin(player)
if not getgenv().settings.staffHop then return end
if player:GetRankInGroup(12121240) >= 254 then
serverHop()
end
end
local function waitServerHop()
task.wait(getgenv().settings.serverHopDelay * 60)
serverHop()
end
local function hopSet()
if hopTimer then
task.cancel(hopTimer)
end
if getgenv().settings.serverHopDelay > 0 then
hopTimer = task.spawn(waitServerHop)
end
end
--Booth update function
local function update(ok)
local text, colll
local current = Players.LocalPlayer.leaderstats.Raised.Value
local goal = current + tonumber(getgenv().settings.goalBox)
--Roblox Censorship :)
if goal == 420 or goal == 425 then
goal = goal + 10
end
if current == 420 or current == 425 then
current = current - 10
end
if goal > 999 and goal < 10000 then
if tonumber(getgenv().settings.goalBox) < 10 then
goal = string.format("%.2fk", (current + 10) / 10 ^ 3)
else
goal = string.format("%.2fk", (goal) / 10 ^ 3)
end
elseif goal > 9999 then
if tonumber(getgenv().settings.goalBox) < 10 then
goal = string.format("%.1fk", (current + 10) / 10 ^ 3)
else
goal = string.format("%.1fk", (goal) / 10 ^ 3)
end
end
if current > 999 and current < 10000 then
current = string.format("%.2fk", current / 10 ^ 3)
elseif current > 9999 then
current = string.format("%.1fk", current / 10 ^ 3)
end
if getgenv().settings.textUpdateToggle and getgenv().settings.customBoothText and ok ~= "sign" then
text = string.gsub(getgenv().settings.customBoothText, "$C", current)
text = string.gsub (text, "$G", goal)
if getgenv().settings.randomToggle then
colll = Color3.fromRGB(math.random(1,255), math.random(1,255), math.random(1,255)):ToHex()
else
local boothSplitColor = string.split(getgenv().settings.colorBox, ', ')
colll = Color3.new(tonumber(boothSplitColor[1]), tonumber(boothSplitColor[2]), tonumber(boothSplitColor[3])):ToHex()
end
boothText = tostring(''.. text.. '')
--Updates the booth text
local myBooth = Players.LocalPlayer.PlayerGui.MapUIContainer.MapUI.BoothUI:FindFirstChild(tostring("BoothUI".. unclaimed[1]))
if myBooth.Sign.TextLabel.Text ~= boothText then
if string.find(myBooth.Sign.TextLabel.Text, "# #") or string.find(myBooth.Sign.TextLabel.Text, "##") then
require(game.ReplicatedStorage.Remotes).Event("SetBoothText"):FireServer("your text here", "booth")
task.wait(3)
end
print(boothText)
require(game.ReplicatedStorage.Remotes).Event("SetBoothText"):FireServer(boothText, "booth")
task.wait(3)
if string.find(myBooth.Sign.TextLabel.Text, "# #") or string.find(myBooth.Sign.TextLabel.Text, "##") and getgenv().settings.censorHop and not getgenv().censored then
queueonteleport("getgenv().censored = true")
serverHop()
end
end
end
if getgenv().settings.signToggle and getgenv().settings.signUpdateToggle and getgenv().settings.signText and signPass and ok ~= "booth" then
local currentSign = game.Players.LocalPlayer.Character.DonateSign.TextSign.SurfaceGui.TextLabel.Text
text = string.gsub(getgenv().settings.signText, "$C", current)
text = string.gsub (text, "$G", goal)
local signSplitColor = string.split(getgenv().settings.signColorBox, ', ')
local signColorNew = Color3.new(tonumber(signSplitColor[1]), tonumber(signSplitColor[2]), tonumber(signSplitColor[3])):ToHex()
signText = tostring(''.. text.. '')
if currentSign ~= signText then
if string.find(currentSign, "# #") or string.find(currentSign, "##") then
require(game.ReplicatedStorage.Remotes).Event("SetBoothText"):FireServer("your text here", "sign")
task.wait(3)
end
require(game.ReplicatedStorage.Remotes).Event("SetBoothText"):FireServer(signText, "sign")
task.wait(3)
if string.find(currentSign, "# #") or string.find(currentSign, "##") and getgenv().settings.censorHop and not getgenv().censored then
queueonteleport("getgenv().censored = true")
serverHop()
end
end
end
getgenv().censored = false
end
--Function to fix slider
local sliderInProgress = false;
local function slider(value, whichSlider)
if sliderInProgress then
return
end
sliderInProgress = true
task.wait(1)
if getgenv().settings[whichSlider] == value then
saveSettings()
sliderInProgress = false;
if whichSlider == "serverHopDelay" then
hopSet()
elseif whichSlider == "colorBox" then
update("booth")
elseif whichSlider == "signColorBox" then
update("sign")
end
else
sliderInProgress = false;
return slider(getgenv().settings[whichSlider], whichSlider)
end
end
local function begging()
while getgenv().settings.autoBeg do
if #getgenv().settings.begMessage == 0 then return end
game.ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer(getgenv().settings.begMessage[math.random(#getgenv().settings.begMessage)],"All")
task.wait(getgenv().settings.begDelay)
end
end
local function webhookName()
connectStat.Title.Text = "Disconnected"
local yeppers = httprequest({
Url = getgenv().settings.webhookBox,
Method = "GET",
})
hookName = string.match(yeppers.Body, '"name": "(.*)", "avatar"')
connectStat.Title.Text = "Connected to "..hookName
end
local boothTab = win:Tab("Booth", "http://www.roblox.com/asset/?id=10213989952")
local testDropdown
local textUpdateToggle = boothTab:Toggle("Text Update", "Automatically updates text after donation", getgenv().settings.textUpdateToggle, function(t)
if settingsLock then return end
getgenv().settings.textUpdateToggle = t
saveSettings()
if t then
update("booth")
end
end)
local textUpdateDelay = boothTab:Slider("Update Delay (S)", "How long to wait after donation to update", 0, 120,getgenv().settings.textUpdateDelay, function(t)
if settingsLock then return end
getgenv().settings.textUpdateDelay = t
slider(getgenv().settings.textUpdateDelay, "textUpdateDelay")
end)
local colorsplit = string.split(getgenv().settings.colorBox, ', ')
local colorBox = boothTab:Colorpicker("Text Color", Color3.new(tonumber(colorsplit[1]), tonumber(colorsplit[2]), tonumber(colorsplit[3])), function(t)
if settingsLock then return end
t = tostring(t)
getgenv().settings.colorBox = t
slider(getgenv().settings.colorBox, "colorBox")
end)
local randomToggle = boothTab:Toggle("Random Color", "Uses a random color instead", getgenv().settings.randomToggle, function(t)
if settingsLock then return end
getgenv().settings.randomToggle = t
saveSettings()
update()
end)
local fonts = {
"AmaticSC",
"Antique",
"Arcade",
"Arial",
"ArialBold",
"Bangers",
"Bodoni",
"Cartoon",
"Code",
"Creepster",
"DenkOne",
"Fantasy",
"Fondamento",
"FredokaOne",
"Garamond",
"Gotham",
"GothamBlack",
"GothamBold",
"GothamMedium",
"GrenzeGotisch",
"Highway",
"IndieFlower",
"JosefinSans",
"Jura",
"Kalam",
"Legacy",
"LuckiestGuy",
"Merriweather",
"Michroma",
"Nunito",
"Oswald",
"PatrickHand",
"PermanentMarker",
"Roboto",
"RobotoCondensed",
"RobotoMono",
"Sarpanch",
"SciFi",
"SourceSans",
"SourceSansBold",
"SourceSansItalic",
"SourceSansLight",
"SourceSansSemibold",
"SpecialElite",
"TitilliumWeb",
"Ubuntu"
}
boothTab:Dropdown("Font Face", fonts, true, function(t)
if settingsLock then return end
getgenv().settings.fontFace = t
saveSettings()
update("booth")
end)
boothTab:Textbox("Font Size", "font size", false, getgenv().settings.fontSize, function(t)
if settingsLock then return end
if tonumber(t) then
getgenv().settings.fontSize = tonumber(t)
saveSettings()
update("booth")
end
end)
local goalBox = boothTab:Textbox("Goal Increase", "Amount to increase your goal by", false, getgenv().settings.goalBox, function(t)
if settingsLock then return end
if tonumber(t) then
getgenv().settings.goalBox = tonumber(t)
saveSettings()
update("booth")
end
end)
-- local customBoothText = boothTab:Textbox("Booth Text", "Customize what your booth says\n$C = Current, $G = Goal, \\n = Newline, 185 Character Limit", false, getgenv().settings.customBoothText, function(t)
-- if #t > 185 then
-- Flux:Notification("Text too long!", tostring(#t.. "/185 Characters used"), "Okay")
-- else
-- getgenv().settings.customBoothText = t
-- saveSettings()
-- update()
-- end
-- end)
boothTab:Button("Edit Booth Text", "Customize what your booth says\n$C = Current, $G = Goal, 185 Character Limit", function()
if not game:GetService("CoreGui").FluxLib:FindFirstChild("EditBooth") then
local clonedGui = game:GetService("Players").LocalPlayer.PlayerGui.ScreenGui.EditBooth:Clone()
clonedGui.Parent = game:GetService("CoreGui").FluxLib
clonedGui.Buttons.Settings:Destroy()
clonedGui.Buttons.Refresh:Destroy()
clonedGui.Buttons.Statistics:Destroy()
clonedGui.TextBox.Text = getgenv().settings.customBoothText
clonedGui.Visible = true
clonedGui.Apply.Activated:Connect(function()
if #clonedGui.TextBox.Text > 185 then
task.spawn(function()
game:GetService("SoundService").Fail:Play()
local failText = game:GetService("ReplicatedStorage").Templates.PopupTemplate:Clone();
failText.Text = "exceeded character limit (185)";
failText.TextColor3 = Color3.fromRGB(255, 100, 100);
failText.Parent = clonedGui.Parent;
game:GetService("TweenService"):Create(failText, TweenInfo.new(0.9, Enum.EasingStyle.Quint), {
Position = UDim2.new(0, 0, 0.8, 0)
}):Play();
wait(0.75);
game:GetService("TweenService"):Create(failText, TweenInfo.new(3, Enum.EasingStyle.Quint), {
TextTransparency = 1
}):Play();
wait(2);
failText:Destroy();
end);
else
getgenv().settings.customBoothText = clonedGui.TextBox.Text
clonedGui:Destroy()
saveSettings()
update("booth")
end
end)
clonedGui.Buttons.Close.Activated:Connect(function()
task.spawn(function()
game:GetService("SoundService").Fail:Play()
local failText = game:GetService("ReplicatedStorage").Templates.PopupTemplate:Clone();
failText.Text = "canceled!";
failText.TextColor3 = Color3.fromRGB(255, 100, 100);
failText.Parent = clonedGui.Parent;
game:GetService("TweenService"):Create(failText, TweenInfo.new(0.9, Enum.EasingStyle.Quint), {
Position = UDim2.new(0, 0, 0.8, 0)
}):Play();
wait(0.75);
game:GetService("TweenService"):Create(failText, TweenInfo.new(3, Enum.EasingStyle.Quint), {
TextTransparency = 1
}):Play();
wait(2);
failText:Destroy();
end);
clonedGui:Destroy()
end)
end
end)
pcall(function()
if game:GetService("MarketplaceService"):UserOwnsGamePassAsync(Players.LocalPlayer.UserId, 28460459) then
signPass = true
end
end)
if signPass then
local signTab = win:Tab("Sign", "http://www.roblox.com/asset/?id=10213989952")
local signToggle = signTab:Toggle("Equip Sign", "Equips your sign", getgenv().settings.signToggle, function(t)
if settingsLock then return end
getgenv().settings.signToggle = t
saveSettings()
if t then
Players.LocalPlayer.Character:FindFirstChildOfClass("Humanoid"):EquipTool(Players.LocalPlayer.Backpack:FindFirstChild("DonateSign"))
else
Players.LocalPlayer.Character:FindFirstChildOfClass("Humanoid"):UnequipTools(Players.LocalPlayer.Backpack:FindFirstChild("DonateSign"))
end
end)
local signUpdateToggle = signTab:Toggle("Text Update", "Automatically updates text after donation", getgenv().settings.signUpdateToggle, function(t)
if settingsLock then return end
getgenv().settings.signUpdateToggle = t
saveSettings()
if t then
update("sign")
end
end)
local colorsplitAgain = string.split(getgenv().settings.signColorBox, ', ')
local signColorBox = signTab:Colorpicker("Text Color", Color3.new(tonumber(colorsplitAgain[1]), tonumber(colorsplitAgain[2]), tonumber(colorsplitAgain[3])), function(t)
if settingsLock then return end
t = tostring(t)
getgenv().settings.signColorBox = t
slider(getgenv().settings.signColorBox, "signColorBox")
end)
signTab:Button("Sign Text", "Customize what your sign says\n$C = Current, $G = Goal, \\n = Newline, 185 Character Limit", function()
if not game:GetService("CoreGui").FluxLib:FindFirstChild("EditBooth") then
local clonedGui = game:GetService("Players").LocalPlayer.PlayerGui.ScreenGui.EditBooth:Clone()
clonedGui.Parent = game:GetService("CoreGui").FluxLib
clonedGui.Buttons.Settings:Destroy()
clonedGui.Buttons.Refresh:Destroy()
clonedGui.Buttons.Statistics:Destroy()
clonedGui.TextBox.Text = getgenv().settings.signText
clonedGui.Visible = true
clonedGui.Apply.Activated:Connect(function()
if #clonedGui.TextBox.Text > 185 then
task.spawn(function()
game:GetService("SoundService").Fail:Play()
local failText = game:GetService("ReplicatedStorage").Templates.PopupTemplate:Clone();
failText.Text = "exceeded character limit (185)";
failText.TextColor3 = Color3.fromRGB(255, 100, 100);
failText.Parent = clonedGui.Parent;
game:GetService("TweenService"):Create(failText, TweenInfo.new(0.9, Enum.EasingStyle.Quint), {
Position = UDim2.new(0, 0, 0.8, 0)
}):Play();
wait(0.75);
game:GetService("TweenService"):Create(failText, TweenInfo.new(3, Enum.EasingStyle.Quint), {
TextTransparency = 1
}):Play();
wait(2);
failText:Destroy();
end);
else
getgenv().settings.signText = clonedGui.TextBox.Text
clonedGui:Destroy()
saveSettings()
update("sign")
end
end)
clonedGui.Buttons.Close.Activated:Connect(function()
task.spawn(function()
game:GetService("SoundService").Fail:Play()
local failText = game:GetService("ReplicatedStorage").Templates.PopupTemplate:Clone();
failText.Text = "canceled!";
failText.TextColor3 = Color3.fromRGB(255, 100, 100);
failText.Parent = clonedGui.Parent;
game:GetService("TweenService"):Create(failText, TweenInfo.new(0.9, Enum.EasingStyle.Quint), {
Position = UDim2.new(0, 0, 0.8, 0)
}):Play();
wait(0.75);
game:GetService("TweenService"):Create(failText, TweenInfo.new(3, Enum.EasingStyle.Quint), {
TextTransparency = 1
}):Play();
wait(2);
failText:Destroy();
end);
clonedGui:Destroy()
end)
end
end)
end
local chatTab = win:Tab("Chat", "http://www.roblox.com/asset/?id=10213989952")
local autoThanks = chatTab:Toggle("Auto Thanks", "Automatically sends a thank you message after donation", getgenv().settings.autoThanks, function(t)
if settingsLock then return end
getgenv().settings.autoThanks = t
saveSettings()
end)
local thanksDelay = chatTab:Slider("Thanks Delay (S)", "How long to wait after donation to send message", 0, 120,getgenv().settings.thanksDelay,function(t)
if settingsLock then return end
getgenv().settings.thanksDelay = t
slider(getgenv().settings.thanksDelay, "thanksDelay")
end)
local autoJumpPerRobux = chatTab:Toggle("Auto Jump Per Robux", "Start jumping the amount of times you got donated", getgenv().settings.autoJumpPerRobux, function(t)
if settingsLock then return end
getgenv().settings.autoJumpPerRobux = t
saveSettings()
end)
chatTab:Button("Add thank you message", "Add thank you messages", function()
if not game:GetService("CoreGui").FluxLib:FindFirstChild("ChangeMusic") then
local clonedGui = game:GetService("Players").LocalPlayer.PlayerGui.ScreenGui.ChangeMusic:Clone()
clonedGui.Parent = game:GetService("CoreGui").FluxLib
clonedGui.TextBox.Text = ""
clonedGui.TextBox.PlaceholderText = "Message"
clonedGui.Apply.Text = "ADD MESSAGE"
clonedGui.Visible = true
clonedGui.Apply.Activated:Connect(function()
thanksDropdown:Add(clonedGui.TextBox.Text)
table.insert(getgenv().settings.thanksMessage, clonedGui.TextBox.Text)
clonedGui:Destroy()
saveSettings()
end)
clonedGui.Buttons.Close.Activated:Connect(function()
clonedGui:Destroy()
end)
end
end)
local tymsg = {"CLEAR ALL"}
for i, v in pairs(getgenv().settings.thanksMessage) do table.insert(tymsg, v) end
thanksDropdown = chatTab:Dropdown("Remove thank you message", tymsg, false, function(t)
if t == "CLEAR ALL" then
thanksDropdown:Clear()
thanksDropdown:Add("CLEAR ALL")
getgenv().settings.thanksMessage = {}
else
thanksDropdown:Clear(t)
for i, v in pairs(getgenv().settings.thanksMessage) do
if v == t then
table.remove(getgenv().settings.thanksMessage, i)
end
end
end
saveSettings()
end)
chatTab:Line()
local autoBeg = chatTab:Toggle("Auto Beg", "Automatically begs in chat", getgenv().settings.autoBeg, function(t)
if settingsLock then return end
getgenv().settings.autoBeg = t
saveSettings()
if t then
spamming = task.spawn(begging)
else
task.cancel(spamming)
end
end)
local begDelay = chatTab:Slider("Beg Delay (S)", "How long to wait in between begging messages", 0, 300,getgenv().settings.begDelay,function(t)
if settingsLock then return end
getgenv().settings.begDelay = t
slider(getgenv().settings.begDelay, "begDelay")
end)
-- local beggingBox = chatTab:Textbox("Add begging message", "Adds a begging message\nPress enter to save", true, "", function(t)
-- if settingsLock then return end
-- begDropdown:Add(t)
-- table.insert(getgenv().settings.begMessage, t)
-- saveSettings()
-- if getgenv().settings.autoBeg then
-- task.cancel(spamming)
-- spamming = task.spawn(begging)
-- end
-- end)
chatTab:Button("Add begging message", "Adds a begging message", function()
if not game:GetService("CoreGui").FluxLib:FindFirstChild("ChangeMusic") then
local clonedGui = game:GetService("Players").LocalPlayer.PlayerGui.ScreenGui.ChangeMusic:Clone()
clonedGui.Parent = game:GetService("CoreGui").FluxLib
clonedGui.TextBox.Text = ""
clonedGui.TextBox.PlaceholderText = "Message"
clonedGui.Apply.Text = "ADD MESSAGE"
clonedGui.Visible = true
clonedGui.Apply.Activated:Connect(function()
begDropdown:Add(clonedGui.TextBox.Text)
table.insert(getgenv().settings.begMessage, clonedGui.TextBox.Text)
clonedGui:Destroy()
saveSettings()
end)
clonedGui.Buttons.Close.Activated:Connect(function()
clonedGui:Destroy()
end)
end
end)
local bmsg = {"CLEAR ALL"}
for i, v in pairs(getgenv().settings.begMessage) do table.insert(bmsg, v) end
begDropdown = chatTab:Dropdown("Remove begging message", bmsg, false, function(t)
if t == "CLEAR ALL" then
begDropdown:Clear()
begDropdown:Add("CLEAR ALL")
getgenv().settings.begMessage = {}
else
begDropdown:Clear(t)
for i, v in pairs(getgenv().settings.begMessage) do
if v == t then
table.remove(getgenv().settings.begMessage, i)
end
end
end
saveSettings()
end)
chatTab:Line()
local webhookTab = win:Tab("Webhook", "http://www.roblox.com/asset/?id=10213989952")
local webhookBox = webhookTab:Textbox("Discord Webhook", 'Put your Discord Webhook URL here for notifications', true, "", function(t)
if settingsLock then return end
if string.find(t, "discord.com/api/webhooks/") then
getgenv().settings.webhookBox = t;
webhookName()
saveSettings()
end
end)
connectStat = webhookTab:Label("Disconnected", 15)
-- connectStat.Title.Text = "no"
webhookTab:Line()
local webhookToggle = webhookTab:Toggle("Donation", "Donation Notifications", getgenv().settings.webhookToggle, function(t)
if settingsLock then return end
getgenv().settings.webhookToggle = t
saveSettings()
end)
local webhookshop = webhookTab:Toggle("Server Hop", "Server Hop Notifications", getgenv().settings.webhookshop, function(t)
if settingsLock then return end
getgenv().settings.webhookshop = t
saveSettings()
end)
local webhookErr = webhookTab:Toggle("Errors", "Error Notifications", getgenv().webhookErr, function(t)
if settingsLock then return end
--TODO:
getgenv().settings.webhookErr = t
saveSettings()
end)
webhookTab:Button("Test", "Sends a test message to your webhook to verify it is working", function()
if getgenv().settings.webhookBox then
webhook("Your webhook is working!")
end
end)
pcall(function()
if game:GetService("VoiceChatService"):IsVoiceEnabledForUserIdAsync(Players.LocalPlayer.UserId) or getgenv().vcbp then
vcEnabled = true
end
end)
local serverHopTab = win:Tab("Server", "http://www.roblox.com/asset/?id=10213989952")
local serverHopDelay = serverHopTab:Slider("Server Hop Delay (M)", "How long to wait for donations before server change\n0 = Disabled", 0, 120,getgenv().settings.serverHopDelay,function(t)
if settingsLock then return end
getgenv().settings.serverHopDelay = t
slider(getgenv().settings.serverHopDelay, "serverHopDelay")
end)
if vcEnabled then
local vcToggle = serverHopTab:Toggle("VC Servers", "Toggles voice chat servers", getgenv().settings.vcServer, function(t)
if settingsLock then return end
getgenv().settings.vcServer = t
saveSettings()
end)
end
serverHopTab:Toggle("Staff Join", "Server hops if a staff member joins the game", getgenv().settings.staffHop, function(t)
if settingsLock then return end
getgenv().settings.staffHop = t
saveSettings()
end)
serverHopTab:Toggle("Booth Censor", "Server hops if your booth or sign gets censored", getgenv().settings.censorHop, function(t)
if settingsLock then return end
getgenv().settings.censorHop = t
saveSettings()
end)
serverHopTab:Button("Server Hop", "Changes servers", function()
if settingsLock then return end
Flux:closeUi()
serverHop()
end)
serverHopTab:Line()
serverHopTab:Label("Server hopping has a chance to crash your game\nRecommended to use with Roblox Account Manager auto relaunch", 13)
local otherTab = win:Tab("Other", "http://www.roblox.com/asset/?id=10213989952")
otherTab:Button("Discord Server", "Copies Discord server link", function()
local cboard = setclipboard or toclipboard or set_clipboard or (Clipboard and Clipboard.set)
if cboard then
cboard("https://discord.gg/WMEqDAdtSa")
end
Flux:Notification("Copied to clipboard", "https://discord.gg/WMEqDAdtSa", "Okay")
end)
otherTab:Line()
local danceDropdown = otherTab:Dropdown("Dance", {"Disabled","1","2", "3"}, false, function(t)
if settingsLock then return end
getgenv().settings.danceChoice = t
saveSettings()
if t == "Disabled" then
Players:Chat("/e wave")
elseif t == "1" then
Players:Chat("/e dance")
else
Players:Chat("/e dance".. t)
end
end)
local render = otherTab:Toggle("Disable Rendering", "Disables 3D rendering", getgenv().settings.render, function(t)
getgenv().settings.render = t
saveSettings()
if t then
local blackscreen = Instance.new("Frame")
blackscreen.ZIndex = 0
blackscreen.Parent = game:GetService("CoreGui").FluxLib
blackscreen.BackgroundColor3 = Color3.fromRGB(0,0,0)
blackscreen.Position = UDim2.new(-1, 0, -1, 0)
blackscreen.Size = UDim2.new(2, 0, 2, 0)
game:GetService("RunService"):Set3dRenderingEnabled(false)
else
if game:GetService("CoreGui").FluxLib:FindFirstChild("Frame") then
game:GetService("CoreGui").FluxLib:FindFirstChild("Frame"):Destroy()
end
game:GetService("RunService"):Set3dRenderingEnabled(true)
end
end)
if setfpscap and type(setfpscap) == "function" then
local fpsLimit = otherTab:Slider("FPS Limit", "Limits FPS to decrease resource usage", 1, 60,getgenv().settings.fpsLimit,function(t)
if settingsLock then return end
getgenv().settings.fpsLimit = t
setfpscap(t)
slider(getgenv().settings.fpsLimit, "fpsLimit")
end)
setfpscap(getgenv().settings.fpsLimit)
end
otherTab:Toggle("Anonymous Mode", "Hides your donated amount on the leaderboard", getgenv().settings.anonymous, function(t)
local anToggled = require(game.ReplicatedStorage.Settings):get().Anonymous
if t and not anToggled then
require(game.ReplicatedStorage.Remotes).Event("SetDonatedVisibility"):FireServer(false)
end
if settingsLock then return end
getgenv().settings.anonymous = t
saveSettings()
end)
otherTab:Line()
local userProfiles = otherTab:Toggle("Account Profiles", "Use different settings on every account", settingFile ~= "plsdonategui/settings.txt", function(t)
if settingsLock then return end
writefile("plsdonategui/userProfiles/toggled.txt", tostring(t))
task.wait(1)
Flux:closeUi()
serverHop()
end)
otherTab:Button("Reset Settings", "Resets ALL settings to default", function()
delfile(settingFile)
Flux:closeUi()
serverHop()
end)
settingsLock = false
if string.find(getgenv().settings.webhookBox, "discord.com/api/webhooks/") then
webhookName()
end
Players.PlayerAdded:Connect(playerJoin)
task.spawn(function()
for i,v in pairs(Players:GetPlayers()) do
playerJoin(v)
end
end)
local function findUnclaimed()
for i, v in pairs(Players.LocalPlayer.PlayerGui.MapUIContainer.MapUI.BoothUI:GetChildren()) do
if (v.Details.Owner.Text == "unclaimed") then
table.insert(unclaimed, tonumber(string.match(tostring(v), "%d+")))
end
end
end
if not pcall(findUnclaimed) then
serverHop()
end
local claimCount = #unclaimed
--Claim booth function
local function boothclaim()
require(game.ReplicatedStorage.Remotes).Event("ClaimBooth"):InvokeServer(unclaimed[1])
if not string.find(Players.LocalPlayer.PlayerGui.MapUIContainer.MapUI.BoothUI:FindFirstChild(tostring("BoothUI".. unclaimed[1])).Details.Owner.Text, Players.LocalPlayer.DisplayName) then
task.wait(1)
if not string.find(Players.LocalPlayer.PlayerGui.MapUIContainer.MapUI.BoothUI:FindFirstChild(tostring("BoothUI".. unclaimed[1])).Details.Owner.Text, Players.LocalPlayer.DisplayName) then
error()
end
end
end
--Checks if booth claim fails
while not pcall(boothclaim) do
if errCount >= claimCount then
serverHop()
end
table.remove(unclaimed, 1)
errCount = errCount + 1
end
hopSet()
--Walks to booth
game:GetService('VirtualInputManager'):SendKeyEvent(true, "LeftControl", false, game)
local Controls = require(Players.LocalPlayer.PlayerScripts:WaitForChild("PlayerModule")):GetControls()
Controls:Disable()
Players.LocalPlayer.Character.Humanoid:MoveTo(Vector3.new(booths[tostring(unclaimed[1])]:match("(.+), (.+), (.+)")))
local atBooth = false
local function noclip()
for i,v in pairs(Players.LocalPlayer.Character:GetDescendants()) do
if v:IsA("BasePart") then
v.CanCollide = false
end
end
end
local noclipper = game:GetService("RunService").Stepped:Connect(noclip)
Players.LocalPlayer.Character.Humanoid.MoveToFinished:Connect(function(reached)
atBooth = true
end)
while not atBooth do
task.wait(.1)
if Players.LocalPlayer.Character.Humanoid:GetState() == Enum.HumanoidStateType.Seated then
Players.LocalPlayer.Character.Humanoid.Jump = true
end
end
Controls:Enable()
game:GetService('VirtualInputManager'):SendKeyEvent(false, "LeftControl", false, game)
noclipper:Disconnect()
Players.LocalPlayer.Character:SetPrimaryPartCFrame(CFrame.new(Players.LocalPlayer.Character.HumanoidRootPart.Position, Vector3.new(40, 14, 101)))
require(game.ReplicatedStorage.Remotes).Event("RefreshItems"):InvokeServer()
if getgenv().settings.signToggle and signPass then
Players.LocalPlayer.Character:FindFirstChildOfClass("Humanoid"):EquipTool(Players.LocalPlayer.Backpack:FindFirstChild("DonateSign"))
end
if getgenv().settings.danceChoice == "1" then
task.wait(.25)
Players:Chat("/e dance")
else
task.wait(.25)
Players:Chat("/e dance".. getgenv().settings.danceChoice)
end
if getgenv().settings.autoBeg then
spamming = task.spawn(begging)
end
local RaisedC = Players.LocalPlayer.leaderstats.Raised.value
Players.LocalPlayer.leaderstats.Raised.Changed:Connect(function(newRaised)
if getgenv().settings.webhookToggle and getgenv().settings.webhookBox then
local LogService = Game:GetService("LogService")
local logs = LogService:GetLogHistory()
--Tries to grabs donation message from logs
if string.find(logs[#logs].message, Players.LocalPlayer.DisplayName) then
webhook(tostring(logs[#logs].message.. " (Total: ".. newRaised.. ")"))
else
webhook(tostring("? Somebody tipped ".. newRaised - RaisedC.. " Robux to ".. Players.LocalPlayer.DisplayName.. " (Total: " .. newRaised.. ")"))
end
end
--serverWebhook("Someone using one of the free PLS Donate scripts earned: "..tostring(newRaised - RaisedC).." robux!")
RaisedC = newRaised
hopSet()
if getgenv().settings.autoThanks then
task.spawn(function()
task.wait(getgenv().settings.thanksDelay)
game.ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer(getgenv().settings.thanksMessage[math.random(#getgenv().settings.thanksMessage)],"All")
end)
end
if getgenv().settings.autoJumpPerRobux then
task.spawn(function()
task.wait(1)
for i = 1, tonumber(newRaised - RaisedC), 1 do
Players.LocalPlayer.Character.Humanoid.Jump = true
task.wait(1)
end
task.wait(1)
game.ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer("Did "..tostring(newRaised - RaisedC).. " jumps!".." Current Jumps: "..tostring(newRaised),"All")
end)
end
task.wait(getgenv().settings.textUpdateDelay)
update()
end)
update()
while task.wait(getgenv().settings.serverHopDelay * 60) do
if not hopTimer then
hopSet()
end
end