1031 lines
37 KiB
Lua
1031 lines
37 KiB
Lua
---------- [ Library ] ----------
|
|
local Library = loadstring(game:HttpGet("https://pastebin.com/raw/b5QLVFiM"))()
|
|
|
|
---------- [ Window ] ----------
|
|
local Window = Library:CreateWindow('Satr - Hub')
|
|
|
|
---------- [ Creat Tab ] ----------
|
|
|
|
local Tab = {
|
|
Home = Window:addTab('•Home'),
|
|
Settings = Window:addTab('•Settings'),
|
|
Teleport = Window:addTab('•Teleport'),
|
|
Shop = Window:addTab('•Shop'),
|
|
Misc = Window:addTab('•Misc'),
|
|
}
|
|
|
|
---------- [ Home Left Menu ] ----------
|
|
|
|
local Home_Left = Tab.Home:addSection()
|
|
local Changelog = Home_Left:addMenu("#Changelog")
|
|
Changelog:addChangelog("[Januari, 3 2025]")
|
|
Changelog:addChangelog('- Added Teleport')
|
|
Changelog:addChangelog('- Added Auto Sell Fisch')
|
|
Changelog:addChangelog('- Added Auto Fisching')
|
|
|
|
---------- [ Home Right Menu ] ----------
|
|
|
|
local Home_Right = Tab.Home:addSection()
|
|
local Main_Home = Home_Right:addMenu("#Home")
|
|
|
|
---------- [ Global Config ] ----------
|
|
local config = {
|
|
fpsCap = 9999,
|
|
disableChat = false,
|
|
enableBigButton = false,
|
|
bigButtonScaleFactor = 2,
|
|
shakeSpeed = 0.05,
|
|
FreezeWhileFishing = true,
|
|
autoFishing = false,
|
|
checkFishStatus = false,
|
|
autoSellFish = false,
|
|
}
|
|
|
|
-- Set FPS cap
|
|
setfpscap(config.fpsCap)
|
|
|
|
---------- [ Service ] ----------
|
|
local players = game:GetService("Players")
|
|
local vim = game:GetService("VirtualInputManager")
|
|
local run_service = game:GetService("RunService")
|
|
local replicated_storage = game:GetService("ReplicatedStorage")
|
|
local localplayer = players.LocalPlayer
|
|
local playergui = localplayer.PlayerGui
|
|
local StarterGui = game:GetService("StarterGui")
|
|
local tweenService = game:GetService("TweenService")
|
|
|
|
---------- [ Disable Chat ] ----------
|
|
if config.disableChat then
|
|
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Chat, false)
|
|
end
|
|
|
|
---------- [ Utility Function ] ----------
|
|
local utility = {}; do
|
|
function utility.simulate_click(x, y, mb)
|
|
vim:SendMouseButtonEvent(x, y, (mb - 1), true, game, 1)
|
|
vim:SendMouseButtonEvent(x, y, (mb - 1), false, game, 1)
|
|
end
|
|
|
|
function utility.auto_center_button(button)
|
|
local viewportSize = workspace.CurrentCamera.ViewportSize
|
|
local centerX = (viewportSize.X - button.AbsoluteSize.X) / 2
|
|
local centerY = (viewportSize.Y - button.AbsoluteSize.Y) / 2
|
|
button.Position = UDim2.new(0, centerX, 0, centerY)
|
|
end
|
|
end
|
|
|
|
local farm = {reel_tick = nil, cast_tick = nil, is_shaking = false}; do
|
|
function farm.find_rod()
|
|
local character = localplayer.Character
|
|
if not character then return nil end
|
|
|
|
for _, tool in ipairs(character:GetChildren()) do
|
|
if tool:IsA("Tool") and (tool.Name:find("rod") or tool.Name:find("Rod")) then
|
|
return tool
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
function farm.freeze_character(freeze)
|
|
local character = localplayer.Character
|
|
if character then
|
|
local humanoid = character:FindFirstChildOfClass("Humanoid")
|
|
if humanoid then
|
|
if freeze then
|
|
humanoid.WalkSpeed = 0
|
|
humanoid.JumpPower = 0
|
|
else
|
|
humanoid.WalkSpeed = 16
|
|
humanoid.JumpPower = 50
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function farm.cast()
|
|
local character = localplayer.Character
|
|
if not character then return end
|
|
|
|
local rod = farm.find_rod()
|
|
if not rod then return end
|
|
|
|
local args = { [1] = 100, [2] = 1 }
|
|
rod.events.cast:FireServer(unpack(args))
|
|
farm.cast_tick = 0
|
|
end
|
|
|
|
function farm.shake()
|
|
if farm.is_shaking then return end
|
|
|
|
local shake_ui = playergui:FindFirstChild("shakeui")
|
|
if shake_ui then
|
|
local safezone = shake_ui:FindFirstChild("safezone")
|
|
local button = safezone and safezone:FindFirstChild("button")
|
|
|
|
if button then
|
|
utility.auto_center_button(button)
|
|
|
|
button.Size = UDim2.new(0.5, 0, 0.5, 0)
|
|
|
|
if button.Visible then
|
|
farm.is_shaking = true
|
|
utility.simulate_click(
|
|
button.AbsolutePosition.X + button.AbsoluteSize.X / 2,
|
|
button.AbsolutePosition.Y + button.AbsoluteSize.Y / 2,
|
|
1
|
|
)
|
|
task.wait(0.1)
|
|
farm.is_shaking = false
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function farm.reel()
|
|
local reel_ui = playergui:FindFirstChild("reel")
|
|
if not reel_ui then return end
|
|
|
|
local reel_bar = reel_ui:FindFirstChild("bar")
|
|
if not reel_bar then return end
|
|
|
|
local reel_client = reel_bar:FindFirstChild("reel")
|
|
if not reel_client then return end
|
|
|
|
if reel_client.Disabled == true then
|
|
reel_client.Disabled = false
|
|
end
|
|
|
|
local update_colors = getsenv(reel_client).UpdateColors
|
|
|
|
if update_colors then
|
|
setupvalue(update_colors, 1, 100)
|
|
replicated_storage.events.reelfinished:FireServer(getupvalue(update_colors, 1), true)
|
|
end
|
|
end
|
|
end
|
|
|
|
Main_Home:addToggle("Auto Fishing", config.autoFishing, function(state)
|
|
config.autoFishing = state
|
|
if state then
|
|
StarterGui:SetCore("SendNotification", {
|
|
Title = "Auto Fishing";
|
|
Text = "Auto Fishing activated!";
|
|
Duration = 5;
|
|
})
|
|
|
|
spawn(function()
|
|
while config.autoFishing and task.wait(config.shakeSpeed) do
|
|
local rod = farm.find_rod()
|
|
if rod then
|
|
if config.FreezeWhileFishing then
|
|
farm.freeze_character(true)
|
|
end
|
|
farm.cast()
|
|
task.wait(0.5)
|
|
farm.shake()
|
|
farm.reel()
|
|
else
|
|
farm.freeze_character(false)
|
|
end
|
|
end
|
|
end)
|
|
else
|
|
StarterGui:SetCore("SendNotification", {
|
|
Title = "Auto Fishing";
|
|
Text = "Auto Fishing deactivated!";
|
|
Duration = 5;
|
|
})
|
|
end
|
|
end)
|
|
|
|
Main_Home:addButton("Sell All Fish", function()
|
|
local replicatedStorage = game:GetService("ReplicatedStorage")
|
|
local sellEvent = replicatedStorage:WaitForChild("events"):WaitForChild("selleverything")
|
|
|
|
if sellEvent and sellEvent:IsA("RemoteFunction") then
|
|
sellEvent:InvokeServer()
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Success!";
|
|
Text = "All fish have been sold!";
|
|
Duration = 5;
|
|
})
|
|
else
|
|
warn("Sell event not found or not a RemoteFunction!")
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Error!";
|
|
Text = "Sell event not found!";
|
|
Duration = 5;
|
|
})
|
|
end
|
|
end)
|
|
|
|
Main_Home:addButton("Sell Fish (In Hand)", function()
|
|
local workspaceService = game:GetService("Workspace")
|
|
local npc = workspaceService:WaitForChild("world"):WaitForChild("npcs"):FindFirstChild("Merchant")
|
|
|
|
if npc and npc:FindFirstChild("merchant") and npc.merchant:FindFirstChild("sell") then
|
|
if npc.merchant.sell:IsA("RemoteFunction") then
|
|
npc.merchant.sell:InvokeServer()
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Success!";
|
|
Text = "Fish in hand has been sold!";
|
|
Duration = 5;
|
|
})
|
|
else
|
|
warn("'sell' is not a RemoteFunction!")
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Error!";
|
|
Text = "'sell' is not a valid RemoteFunction!";
|
|
Duration = 5;
|
|
})
|
|
end
|
|
else
|
|
warn("Marc Merchant NPC or its structure is invalid!")
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Error!";
|
|
Text = "Marc Merchant or its structure is invalid!";
|
|
Duration = 5;
|
|
})
|
|
end
|
|
end)
|
|
|
|
Main_Home:addButton("Show UI Buy Boat", function()
|
|
local playerGui = game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui")
|
|
local shipwrightUI = playerGui:WaitForChild("hud"):WaitForChild("safezone"):FindFirstChild("shipwright")
|
|
|
|
if shipwrightUI and shipwrightUI:IsA("GuiObject") then
|
|
shipwrightUI.Visible = not shipwrightUI.Visible
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "UI Status";
|
|
Text = shipwrightUI.Visible and "Buy Boat UI is now visible!" or "Buy Boat UI is now hidden!";
|
|
Duration = 5;
|
|
})
|
|
else
|
|
warn("Shipwright UI not found or is not a valid GuiObject!")
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Error!";
|
|
Text = "Shipwright UI not found!";
|
|
Duration = 5;
|
|
})
|
|
end
|
|
end)
|
|
|
|
---------- [ Settings Menu ] ----------
|
|
|
|
local Settings_Left = Tab.Settings:addSection()
|
|
local Settings = Settings_Left:addMenu("Settings")
|
|
|
|
getgenv().JumpValue = config.JumpValue or 50
|
|
Settings:addTextbox("Jump Hack", getgenv().JumpValue, function(jumpfunc)
|
|
getgenv().JumpValue = tonumber(jumpfunc)
|
|
handleJumpHack()
|
|
end)
|
|
|
|
Settings:addToggle("Infinite Jump", getgenv().InfiniteJumpEnabled, function(Value)
|
|
getgenv().InfiniteJumpEnabled = Value
|
|
if getgenv().InfiniteJumpEnabled then
|
|
game:GetService("UserInputService").JumpRequest:connect(function()
|
|
game:GetService"Players".LocalPlayer.Character:FindFirstChildOfClass'Humanoid':ChangeState("Jumping")
|
|
end)
|
|
end
|
|
end)
|
|
|
|
-- Toggle Water Walking
|
|
local waterWalkingEnabled = false
|
|
Settings:addToggle('Toggle Water Walking', function()
|
|
waterWalkingEnabled = not waterWalkingEnabled
|
|
|
|
-- Mengaktifkan atau menonaktifkan Water Walking
|
|
local player = game.Players.LocalPlayer
|
|
local character = player.Character or player.CharacterAdded:Wait()
|
|
local humanoid = character:WaitForChild("Humanoid")
|
|
|
|
if waterWalkingEnabled then
|
|
humanoid.PlatformStand = true -- Mengatur untuk bisa berjalan di air
|
|
else
|
|
humanoid.PlatformStand = false -- Kembalikan ke pengaturan normal
|
|
end
|
|
end)
|
|
|
|
Settings:addToggle('No Clip', getgenv().NoClip, function(clipf)
|
|
getgenv().NoClip = clipf
|
|
end)
|
|
spawn(function()
|
|
pcall(function()
|
|
game:GetService("RunService").Stepped:Connect(function()
|
|
if getgenv().NoClip then
|
|
for i,v in pairs(game:GetService("Players").LocalPlayer.Character:GetDescendants()) do
|
|
if v:IsA("BasePart") then
|
|
v.CanCollide = false
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
end)
|
|
end)
|
|
|
|
-- Mendapatkan LocalPlayer
|
|
local LocalPlayer = game.Players.LocalPlayer
|
|
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
|
local DayOnlyLoop = nil
|
|
|
|
Settings: addToggle('Infinite Oxygen', function(state)
|
|
local player = game.Players.LocalPlayer
|
|
local character = player and player.Character
|
|
if character then
|
|
local client = character:FindFirstChild("client")
|
|
if client then
|
|
local oxygen = client:FindFirstChild("oxygen")
|
|
if oxygen then
|
|
if state then
|
|
oxygen.Disabled = true -- Menonaktifkan oksigen untuk efek tak terbatas
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Infinite Oxygen Activated";
|
|
Text = "Oxygen has been disabled.";
|
|
Duration = 5;
|
|
})
|
|
else
|
|
oxygen.Disabled = false -- Mengaktifkan kembali oksigen jika toggle dimatikan
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Infinite Oxygen Deactivated";
|
|
Text = "Oxygen is back to normal.";
|
|
Duration = 5;
|
|
})
|
|
end
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Infinite Oxygen Failed";
|
|
Text = "Cannot find 'oxygen' object!";
|
|
Duration = 5;
|
|
})
|
|
warn("Tidak dapat menemukan 'oxygen' di dalam client!")
|
|
end
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Infinite Oxygen Failed";
|
|
Text = "Cannot find 'client' in character!";
|
|
Duration = 5;
|
|
})
|
|
warn("Tidak dapat menemukan 'client' dalam karakter!")
|
|
end
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Infinite Oxygen Failed";
|
|
Text = "Player's character not found!";
|
|
Duration = 5;
|
|
})
|
|
warn("Karakter pemain tidak ditemukan!")
|
|
end
|
|
end)
|
|
|
|
-- Weather Clear
|
|
Settings:addToggle('Weather Clear', function(state)
|
|
local replicatedStorage = game:GetService("ReplicatedStorage")
|
|
local world = replicatedStorage:WaitForChild("world")
|
|
local weather = world:WaitForChild("weather")
|
|
|
|
-- Validasi apakah objek weather ada
|
|
if weather then
|
|
local oldWeather = weather.Value
|
|
if state then
|
|
-- Set cuaca menjadi Clear
|
|
weather.Value = 'Clear'
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Weather Clear Activated";
|
|
Text = "The weather has been successfully set to clear.";
|
|
Duration = 5;
|
|
})
|
|
warn("Cuaca telah diubah menjadi cerah.")
|
|
else
|
|
-- Kembalikan ke cuaca awal
|
|
weather.Value = oldWeather
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Weather Clear Deactivated";
|
|
Text = "The weather has been reset to its original state.";
|
|
Duration = 5;
|
|
})
|
|
warn("Cuaca telah dikembalikan ke kondisi semula.")
|
|
end
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Weather Clear Failed";
|
|
Text = "Cannot find weather object in ReplicatedStorage!";
|
|
Duration = 5;
|
|
})
|
|
warn("Tidak dapat menemukan objek 'weather' di ReplicatedStorage!")
|
|
end
|
|
end)
|
|
|
|
-- Remove Fog
|
|
Settings:addButton('Remove Fog', function()
|
|
local lighting = game:GetService("Lighting")
|
|
local sky = lighting:FindFirstChild("Sky")
|
|
if sky then
|
|
-- Menyembunyikan fog dengan memindahkan Sky ke dalam Bloom jika ada
|
|
sky.Parent = lighting:FindFirstChild("bloom") or lighting
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Fog Removed";
|
|
Text = "Fog has been successfully removed from the environment.";
|
|
Duration = 5;
|
|
})
|
|
warn("Fog telah dihapus dari lingkungan.")
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Remove Fog Failed";
|
|
Text = "Sky object not found in Lighting!";
|
|
Duration = 5;
|
|
})
|
|
warn("Tidak dapat menemukan objek 'Sky' di Lighting!")
|
|
end
|
|
end)
|
|
|
|
-- Day Only
|
|
Settings:addToggle('Day Only', function(state)
|
|
local lighting = game:GetService("Lighting")
|
|
if not lighting then
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Day Only Failed";
|
|
Text = "Lighting service is unavailable!";
|
|
Duration = 5;
|
|
})
|
|
warn("Layanan Lighting tidak tersedia!")
|
|
return
|
|
end
|
|
|
|
-- Menjaga loop agar lebih terorganisir dan terkontrol
|
|
if DayOnlyLoop then
|
|
DayOnlyLoop:Disconnect()
|
|
DayOnlyLoop = nil
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Day Only Deactivated";
|
|
Text = "The game will cycle through day and night again.";
|
|
Duration = 5;
|
|
})
|
|
warn("Mode Day Only telah dinonaktifkan.")
|
|
else
|
|
if state then
|
|
-- Aktivasi mode Day Only (siang saja)
|
|
DayOnlyLoop = game:GetService("RunService").Heartbeat:Connect(function()
|
|
lighting.TimeOfDay = "12:00:00" -- Tetap pada siang hari
|
|
end)
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Day Only Activated";
|
|
Text = "The game will stay in daytime.";
|
|
Duration = 5;
|
|
})
|
|
warn("Mode Day Only telah diaktifkan. Game akan selalu berada di siang hari.")
|
|
end
|
|
end
|
|
end)
|
|
|
|
getgenv().AntiAFK = true
|
|
Settings:addToggle("Anti AFK", getgenv().AntiAFK, function(Value)
|
|
getgenv().AntiAFK = Value
|
|
end)
|
|
|
|
task.spawn(function ()
|
|
while wait(.1) do
|
|
if getgenv().AntiAFK then
|
|
local vu = game:GetService("VirtualUser")
|
|
game:GetService("Players").LocalPlayer.Idled:connect(function()
|
|
vu:Button2Down(Vector2.new(0,0),workspace.CurrentCamera.CFrame)
|
|
wait(1)
|
|
vu:Button2Up(Vector2.new(0,0),workspace.CurrentCamera.CFrame)
|
|
end)
|
|
end
|
|
end
|
|
end)
|
|
|
|
getgenv().AntiKickClient = true
|
|
Settings:addToggle("Anti Kick Client", getgenv().AntiKickClient, function(Value)
|
|
getgenv().AntiKickClient = Value
|
|
end)
|
|
task.spawn(function()
|
|
while wait() do
|
|
if getgenv().AntiKickClient then
|
|
loadstring(game:HttpGet('https://gitlab.com/Sky2836/BT/-/raw/main/antikickclient'))()
|
|
end
|
|
end
|
|
end)
|
|
|
|
Settings:addButton("FPS Boost", function()
|
|
local decalsyeeted = false
|
|
local g = game
|
|
local w = g.Workspace
|
|
local l = g.Lighting
|
|
local t = w.Terrain
|
|
t.WaterWaveSize = 0
|
|
t.WaterWaveSpeed = 0
|
|
t.WaterReflectance = 0
|
|
t.WaterTransparency = 0
|
|
l.GlobalShadows = false
|
|
l.FogEnd = 9e9
|
|
l.Brightness = 0
|
|
settings().Rendering.QualityLevel = "Level01"
|
|
for i, v in pairs(g:GetDescendants()) do
|
|
if v:IsA("Part") or v:IsA("Union") or v:IsA("CornerWedgePart") or v:IsA("TrussPart") then
|
|
v.Material = "Plastic"
|
|
v.Reflectance = 0
|
|
elseif v:IsA("Decal") or v:IsA("Texture") and decalsyeeted then
|
|
v.Transparency = 1
|
|
elseif v:IsA("ParticleEmitter") or v:IsA("Trail") then
|
|
v.Lifetime = NumberRange.new(0)
|
|
elseif v:IsA("Explosion") then
|
|
v.BlastPressure = 1
|
|
v.BlastRadius = 1
|
|
elseif v:IsA("Fire") or v:IsA("SpotLight") or v:IsA("Smoke") or v:IsA("Sparkles") then
|
|
v.Enabled = false
|
|
elseif v:IsA("MeshPart") then
|
|
v.Material = "Plastic"
|
|
v.Reflectance = 0
|
|
v.TextureID = 10385902758728957
|
|
end
|
|
end
|
|
for i, e in pairs(l:GetChildren()) do
|
|
if e:IsA("BlurEffect") or e:IsA("SunRaysEffect") or e:IsA("ColorCorrectionEffect") or e:IsA("BloomEffect") or e:IsA("DepthOfFieldEffect") then
|
|
e.Enabled = false
|
|
end
|
|
end
|
|
end)
|
|
|
|
Settings:addButton("Destroy GUI", function()
|
|
Library:DestroyGui()
|
|
end)
|
|
|
|
---------- [ Server Menu ] ----------
|
|
|
|
local Settings_Right = Tab.Settings:addSection()
|
|
local Settings_1 = Settings_Right:addMenu("Server")
|
|
|
|
Settings_1:addButton("Rejoin Server", function()
|
|
game:GetService("TeleportService"):Teleport(game.PlaceId, game:GetService("Players").LocalPlayer)
|
|
end)
|
|
|
|
Settings_1:addButton("Server Hop", function()
|
|
Hop()
|
|
end)
|
|
function Hop()
|
|
local PlaceID = game.PlaceId
|
|
local AllIDs = {}
|
|
local foundAnything = ""
|
|
local actualHour = os.date("!*t").hour
|
|
local Deleted = false
|
|
function TPReturner()
|
|
local Site;
|
|
if foundAnything == "" then
|
|
Site = game.HttpService:JSONDecode(game:HttpGet('https://games.roblox.com/v1/games/' .. PlaceID .. '/servers/Public?sortOrder=Asc&limit=100'))
|
|
else
|
|
Site = game.HttpService:JSONDecode(game:HttpGet('https://games.roblox.com/v1/games/' .. PlaceID .. '/servers/Public?sortOrder=Asc&limit=100&cursor=' .. foundAnything))
|
|
end
|
|
local ID = ""
|
|
if Site.nextPageCursor and Site.nextPageCursor ~= "null" and Site.nextPageCursor ~= nil then
|
|
foundAnything = Site.nextPageCursor
|
|
end
|
|
local num = 0;
|
|
for i,v in pairs(Site.data) do
|
|
local Possible = true
|
|
ID = tostring(v.id)
|
|
if tonumber(v.maxPlayers) > tonumber(v.playing) then
|
|
for _,Existing in pairs(AllIDs) do
|
|
if num ~= 0 then
|
|
if ID == tostring(Existing) then
|
|
Possible = false
|
|
end
|
|
else
|
|
if tonumber(actualHour) ~= tonumber(Existing) then
|
|
local delFile = pcall(function()
|
|
-- delfile("NotSameServers.json")
|
|
AllIDs = {}
|
|
table.insert(AllIDs, actualHour)
|
|
end)
|
|
end
|
|
end
|
|
num = num + 1
|
|
end
|
|
if Possible == true then
|
|
table.insert(AllIDs, ID)
|
|
wait(.1)
|
|
pcall(function()
|
|
-- writefile("NotSameServers.json", game:GetService('HttpService'):JSONEncode(AllIDs))
|
|
wait()
|
|
game:GetService("TeleportService"):TeleportToPlaceInstance(PlaceID, ID, game.Players.LocalPlayer)
|
|
end)
|
|
wait(.1)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
function Teleport()
|
|
while wait(.1) do
|
|
pcall(function()
|
|
TPReturner()
|
|
if foundAnything ~= "" then
|
|
TPReturner()
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
Teleport()
|
|
end
|
|
|
|
Settings_1:addButton("Teleport To Lower Server", function()
|
|
local maxplayers, gamelink, goodserver, data_table = math.huge, "https://games.roblox.com/v1/games/" .. game.PlaceId .. "/servers/Public?sortOrder=Asc&limit=100"
|
|
if not _G.FailedServerID then _G.FailedServerID = {} end
|
|
|
|
local function serversearch()
|
|
data_table = game:GetService"HttpService":JSONDecode(game:HttpGetAsync(gamelink))
|
|
for _, v in pairs(data_table.data) do
|
|
pcall(function()
|
|
if type(v) == "table" and v.id and v.playing and tonumber(maxplayers) > tonumber(v.playing) and not table.find(_G.FailedServerID, v.id) then
|
|
maxplayers = v.playing
|
|
goodserver = v.id
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
|
|
function getservers()
|
|
pcall(serversearch)
|
|
for i, v in pairs(data_table) do
|
|
if i == "nextPageCursor" then
|
|
if gamelink:find"&cursor=" then
|
|
local a = gamelink:find"&cursor="
|
|
local b = gamelink:sub(a)
|
|
gamelink = gamelink:gsub(b, "")
|
|
end
|
|
gamelink = gamelink .. "&cursor=" .. v
|
|
pcall(getservers)
|
|
end
|
|
end
|
|
end
|
|
|
|
pcall(getservers)
|
|
wait(.1)
|
|
if goodserver == game.JobId or maxplayers == #game:GetService"Players":GetChildren() - 1 then
|
|
end
|
|
table.insert(_G.FailedServerID, goodserver)
|
|
game:GetService"TeleportService":TeleportToPlaceInstance(game.PlaceId, goodserver)
|
|
|
|
while wait(.1) do
|
|
pcall(function()
|
|
if not game:IsLoaded() then
|
|
game.Loaded:Wait()
|
|
end
|
|
game.CoreGui.RobloxPromptGui.promptOverlay.DescendantAdded:Connect(function()
|
|
local GUI = game.CoreGui.RobloxPromptGui.promptOverlay:FindFirstChild("ErrorPrompt")
|
|
if GUI then
|
|
if GUI.TitleFrame.ErrorTitle.Text == "Disconnected" then
|
|
if #game.Players:GetPlayers() <= 1 then
|
|
game.Players.LocalPlayer:Kick("\nRejoining...")
|
|
wait(.1)
|
|
game:GetService("TeleportService"):Teleport(game.PlaceId, game.Players.LocalPlayer)
|
|
else
|
|
game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId, game.JobId, game.Players.LocalPlayer)
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
end)
|
|
end
|
|
end)
|
|
|
|
---------- [ Teleport Menu with Buttons ] ----------
|
|
local Teleport_Left = Tab.Teleport:addSection()
|
|
local Teleport = Teleport_Left:addMenu("Teleport")
|
|
|
|
local teleportLocations = {
|
|
{"Sunstone Island", Vector3.new(-913.63, 137.29, -1129.90)},
|
|
{"Roslit Bay", Vector3.new(-1501.68, 133, 416.21)},
|
|
{"Random Islands", Vector3.new(237.69, 139.35, 43.10)},
|
|
{"Moosewood", Vector3.new(433.80, 147.07, 261.80)},
|
|
{"Executive Headquarters", Vector3.new(-36.46, -246.55, 205.77)},
|
|
{"Enchant Room", Vector3.new(1310.05, -805.29, -162.35)},
|
|
{"Statue Of Sovereignty", Vector3.new(22.10, 159.01, -1039.85)},
|
|
{"Mushgrove Swamp", Vector3.new(2442.81, 130.90, -686.16)},
|
|
{"Snowcap Island", Vector3.new(2589.53, 134.92, 2333.10)},
|
|
{"Terrapin Island", Vector3.new(152.37, 154.91, 2000.92)},
|
|
{"Enchant Relic", Vector3.new(1309.28, -802.43, -83.36)},
|
|
}
|
|
|
|
local function teleportTo(locationName, position)
|
|
local player = game.Players.LocalPlayer
|
|
local character = player.Character or player.CharacterAdded:Wait()
|
|
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
|
|
|
|
if humanoidRootPart then
|
|
humanoidRootPart.CFrame = CFrame.new(position)
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Teleport Successful";
|
|
Text = "Teleported to " .. locationName .. "!";
|
|
Duration = 5;
|
|
})
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Teleport Failed";
|
|
Text = "HumanoidRootPart not found!";
|
|
Duration = 5;
|
|
})
|
|
warn("HumanoidRootPart not found!")
|
|
end
|
|
end
|
|
|
|
-- Tambahkan tombol teleport untuk setiap lokasi
|
|
for _, location in ipairs(teleportLocations) do
|
|
Teleport:addButton(location[1], function()
|
|
teleportTo(location[1], location[2])
|
|
end)
|
|
end
|
|
|
|
Teleport:addButton("Best Spot", function()
|
|
local forceFieldPart = Instance.new("Part")
|
|
forceFieldPart.Size = Vector3.new(10, 1, 10)
|
|
forceFieldPart.Position = Vector3.new(1447.85, 131.50, -7649.65)
|
|
forceFieldPart.Anchored = true
|
|
forceFieldPart.BrickColor = BrickColor.new("White")
|
|
forceFieldPart.Material = Enum.Material.SmoothPlastic
|
|
forceFieldPart.Parent = game.Workspace
|
|
|
|
local forceField = Instance.new("ForceField")
|
|
forceField.Parent = forceFieldPart
|
|
|
|
teleportTo("Best Spot", Vector3.new(1447.85, 133.50, -7649.65))
|
|
end)
|
|
|
|
local Shop_Left = Tab.Shop:addSection()
|
|
local Shopping = Shop_Left:addMenu("Shop")
|
|
|
|
Shopping:addButton("Coming Soon", function()
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Shop",
|
|
Text = "Coming Soon",
|
|
Duration = 5,
|
|
})
|
|
warn("Coming Soon")
|
|
end)
|
|
|
|
local Misc_Left = Tab.Misc:addSection()
|
|
local Misc_Player = Misc_Left:addMenu("Misc Player")
|
|
|
|
BypassGpsLoop = nil
|
|
|
|
-- Bypass Radar
|
|
Misc_Player:addButton('Bypass Radar', function()
|
|
for _, v in pairs(game:GetService("CollectionService"):GetTagged("radarTag")) do
|
|
if v:IsA("BillboardGui") or v:IsA("SurfaceGui") then
|
|
v.Enabled = not v.Enabled -- Toggle the visibility of radar elements
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- Bypass GPS
|
|
Misc_Player:addButton('Bypass GPS', function()
|
|
local XyzClone
|
|
if not BypassGpsLoop then
|
|
XyzClone = game:GetService("ReplicatedStorage").resources.items.items.GPS.GPS.gpsMain.xyz:Clone()
|
|
XyzClone.Parent = game.Players.LocalPlayer.PlayerGui:WaitForChild("hud"):WaitForChild("safezone"):WaitForChild("backpack")
|
|
|
|
BypassGpsLoop = game:GetService("RunService").Heartbeat:Connect(function()
|
|
local Pos = GetPosition()
|
|
local StringInput = string.format("%s,%s,%s", ExportValue(Pos[1]), ExportValue(Pos[2]), ExportValue(Pos[3]))
|
|
XyzClone.Text = "<font color='#ff4949'>X</font><font color='#a3ff81'>Y</font><font color='#626aff'>Z</font>: "..StringInput
|
|
end)
|
|
else
|
|
if game.Players.LocalPlayer.PlayerGui.hud.safezone.backpack:FindFirstChild("xyz") then
|
|
game.Players.LocalPlayer.PlayerGui.hud.safezone.backpack:FindFirstChild("xyz"):Destroy()
|
|
end
|
|
if BypassGpsLoop then
|
|
BypassGpsLoop:Disconnect()
|
|
BypassGpsLoop = nil
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- Bypass Sell All (Game Pass)
|
|
Misc_Player:addButton('Bypass Sell All (Game Pass)', function()
|
|
local sellAllButton = game.Players.LocalPlayer.PlayerGui.hud.safezone.backpack.inventory.Sell.sellall
|
|
if sellAllButton then
|
|
sellAllButton.Disabled = true
|
|
sellAllButton.MouseButton1Click:Connect(function()
|
|
if sellAllButton.Disabled then
|
|
ReplicatedStorage:WaitForChild("events"):WaitForChild("selleverything"):InvokeServer()
|
|
end
|
|
end)
|
|
end
|
|
end)
|
|
|
|
local Misc_Left = Tab.Misc:addSection()
|
|
local Misc_Player = Misc_Left:addMenu("Misc Player")
|
|
|
|
-- Fly Mode
|
|
local flyingEnabled = false
|
|
Misc_Player:addToggle('Fly Mode', false, function(state)
|
|
flyingEnabled = state
|
|
local player = game.Players.LocalPlayer
|
|
local character = player.Character or player.CharacterAdded:Wait()
|
|
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
|
|
|
|
if humanoidRootPart then
|
|
if flyingEnabled then
|
|
local flyLoop
|
|
flyLoop = game:GetService("RunService").RenderStepped:Connect(function()
|
|
humanoidRootPart.Velocity = Vector3.new(0, 50, 0) -- Membuat karakter naik ke atas
|
|
end)
|
|
character:SetAttribute("FlyLoop", flyLoop)
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Fly Mode Activated";
|
|
Text = "You are now flying!";
|
|
Duration = 5;
|
|
})
|
|
else
|
|
if character:GetAttribute("FlyLoop") then
|
|
character:GetAttribute("FlyLoop"):Disconnect()
|
|
character:SetAttribute("FlyLoop", nil)
|
|
end
|
|
humanoidRootPart.Velocity = Vector3.zero -- Menghentikan gerakan terbang
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Fly Mode Deactivated";
|
|
Text = "You are no longer flying.";
|
|
Duration = 5;
|
|
})
|
|
end
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Fly Mode Failed";
|
|
Text = "HumanoidRootPart not found!";
|
|
Duration = 5;
|
|
})
|
|
warn("HumanoidRootPart not found!")
|
|
end
|
|
end)
|
|
|
|
-- Speed Hack for Boat
|
|
local speedHackEnabled = false
|
|
Misc_Player:addToggle('Speed Hack for Boat', false, function(state)
|
|
speedHackEnabled = state
|
|
local player = game.Players.LocalPlayer
|
|
local boat = workspace:FindFirstChild("Boat") -- Ganti dengan nama objek kapal di game Anda
|
|
|
|
if boat and boat:IsA("Model") and boat.PrimaryPart then
|
|
if speedHackEnabled then
|
|
local bodyVelocity = Instance.new("BodyVelocity", boat.PrimaryPart)
|
|
bodyVelocity.MaxForce = Vector3.new(1e6, 1e6, 1e6) -- Membuat gaya maksimal
|
|
bodyVelocity.Velocity = boat.PrimaryPart.CFrame.LookVector * 260 -- Kecepatan kapal (sesuaikan angka 100)
|
|
game.Debris:AddItem(bodyVelocity, 5) -- Hapus efek setelah 5 detik
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Speed Hack Activated";
|
|
Text = "Your boat is now faster!";
|
|
Duration = 5;
|
|
})
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Speed Hack Deactivated";
|
|
Text = "Your boat speed is back to normal.";
|
|
Duration = 5;
|
|
})
|
|
end
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Speed Hack Failed";
|
|
Text = "Boat not found or invalid!";
|
|
Duration = 5;
|
|
})
|
|
warn("Boat not found or invalid!")
|
|
end
|
|
end)
|
|
|
|
-- Disable Animations
|
|
local disableAnimationsEnabled = false
|
|
Misc_Player:addToggle('Disable Animations', false, function(state)
|
|
disableAnimationsEnabled = state
|
|
local player = game.Players.LocalPlayer
|
|
local character = player.Character or player.CharacterAdded:Wait()
|
|
local humanoid = character:FindFirstChild("Humanoid")
|
|
|
|
if humanoid then
|
|
if disableAnimationsEnabled then
|
|
for _, anim in pairs(humanoid:GetPlayingAnimationTracks()) do
|
|
anim:Stop() -- Menonaktifkan semua animasi
|
|
end
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Disable Animations Activated";
|
|
Text = "Character animations are now disabled.";
|
|
Duration = 5;
|
|
})
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Disable Animations Deactivated";
|
|
Text = "Character animations are back to normal.";
|
|
Duration = 5;
|
|
})
|
|
end
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Disable Animations Failed";
|
|
Text = "Humanoid not found!";
|
|
Duration = 5;
|
|
})
|
|
warn("Humanoid not found!")
|
|
end
|
|
end)
|
|
|
|
-- Fungsi untuk menambah ikan Alligator ke inventaris
|
|
local function addAlligatorToInventory(player, alligatorCount)
|
|
local leaderstats = player:FindFirstChild("leaderstats")
|
|
if leaderstats then
|
|
local alligator = leaderstats:FindFirstChild("Alligator") -- Menggunakan nama Alligator
|
|
if not alligator then
|
|
-- Jika "Alligator" belum ada, buatkan objek untuk menampung jumlah ikan
|
|
alligator = Instance.new("IntValue")
|
|
alligator.Name = "Alligator"
|
|
alligator.Parent = leaderstats
|
|
end
|
|
-- Menambahkan ikan Alligator sesuai jumlah
|
|
alligator.Value = alligator.Value + alligatorCount -- Misalnya menambah 1000 ikan Alligator
|
|
print("Menambahkan " .. alligatorCount .. " ikan Alligator ke inventaris.")
|
|
else
|
|
warn("Leaderstats tidak ditemukan pada pemain!")
|
|
end
|
|
end
|
|
|
|
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
|
local sellFischEvent = ReplicatedStorage:WaitForChild("SellFischEvent")
|
|
|
|
-- Fungsi untuk menambah ikan Fisch ke inventaris pemain
|
|
local function addFischToInventory(player, fischCount)
|
|
local leaderstats = player:FindFirstChild("leaderstats")
|
|
if leaderstats then
|
|
local fisch = leaderstats:FindFirstChild("Fisch")
|
|
if not fisch then
|
|
fisch = Instance.new("IntValue")
|
|
fisch.Name = "Alligator"
|
|
fisch.Parent = leaderstats
|
|
end
|
|
fisch.Value = fisch.Value + fischCount
|
|
else
|
|
warn("Leaderstats tidak ditemukan pada pemain!")
|
|
end
|
|
end
|
|
|
|
Misc_Player:addButton('Unlimited Money', function()
|
|
local player = game.Players.LocalPlayer
|
|
|
|
addFischToInventory(player, 1000)
|
|
|
|
sellFischEvent:FireServer(1000)
|
|
end)
|
|
|
|
-- Fungsi untuk menjual ikan Alligator dan mendapatkan uang berdasarkan harga yang ditentukan oleh game
|
|
local function sellAlligatorForMoney(player, alligatorCount)
|
|
local leaderstats = player:FindFirstChild("leaderstats")
|
|
if leaderstats then
|
|
local money = leaderstats:FindFirstChild("C$")
|
|
local alligator = leaderstats:FindFirstChild("Alligator") -- Menggunakan nama Alligator
|
|
|
|
if money and alligator then
|
|
local alligatorPrice = game:GetService("ReplicatedStorage"):WaitForChild("alligatorPrice")
|
|
if alligatorPrice then
|
|
local pricePerAlligator = alligatorPrice.Value
|
|
local moneyGained = alligatorCount * pricePerAlligator
|
|
alligator.Value = alligator.Value - alligatorCount
|
|
money.Value = money.Value + moneyGained
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Alligator Sold";
|
|
Text = "You sold " .. alligatorCount .. " Alligator(s) and gained " .. moneyGained .. " C$!";
|
|
Duration = 5;
|
|
})
|
|
print("Menjual " .. alligatorCount .. " ikan Alligator dan mendapatkan " .. moneyGained .. " C$.")
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Price Not Found";
|
|
Text = "Unable to retrieve Alligator price!";
|
|
Duration = 5;
|
|
})
|
|
warn("Harga ikan Alligator tidak ditemukan!")
|
|
end
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Transaction Failed";
|
|
Text = "Unable to find Alligator or C$ in leaderstats!";
|
|
Duration = 5;
|
|
})
|
|
warn("Tidak dapat menemukan atribut 'Alligator' atau 'C$' dalam leaderstats!")
|
|
end
|
|
else
|
|
game:GetService("StarterGui"):SetCore("SendNotification", {
|
|
Title = "Transaction Failed";
|
|
Text = "Cannot find leaderstats!";
|
|
Duration = 5;
|
|
})
|
|
warn("Leaderstats tidak ditemukan pada pemain!")
|
|
end
|
|
end
|
|
|
|
Misc_Player:addButton('Activate Alligator Sell Exploit', function()
|
|
local player = game.Players.LocalPlayer
|
|
|
|
addAlligatorToInventory(player, 1000)
|
|
|
|
sellAlligatorForMoney(player, 1000)
|
|
end)
|