-- This script has been moved to a more comfortable place for it :D
-- RawPlayer - Raw Link Music Player | by luauruler26 - Indonesia Scripter 🇮🇩
-- NGETEH ASU!
local versi = "3.4"
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local script_dibuat_oleh = "luauruler26"
local SoundService = game:GetService("SoundService")
local RunService = game:GetService("RunService")
local HttpService = game:GetService("HttpService")
local backpackGui = game:GetService("CoreGui"):WaitForChild("RobloxGui"):FindFirstChild("Backpack")
local visualizerSpesialAktif = false
local backpackOriginalPos = UDim2.new(0, 0, 0, 0)
local camera = workspace.CurrentCamera
local suaraYangDidock = {}
local sedang_dibisukan = false
local player = game.Players.LocalPlayer
local PlayerGui = player:WaitForChild("PlayerGui")
local guiNonaktif = {}
local guiStateBackup = {}
local suaraYangDibisukan = {}
local koneksiBisu = nil
local bass_diaktifkan = false
local sedang_mendownload = false
local sedang_dalam_masa_transisi = false
local volume_saat_ini = 1
local daftarOwner = {
["fian_gaming953"] = true,
["isbsjdhksb"] = true,
["ineuabdoavsocbskwkeu"] = true,
["sD7nsInw1Knl61M7m"] = true,
["ysuskntl1"] = true,
["akun00"] = true,
["fian_00"] = true
}
task.spawn(
function()
setfpscap(90)
task.wait()
end
)
local TweenService = game:GetService("TweenService")
local Players = game:GetService("Players")
local notifGui = game.CoreGui:FindFirstChild("RawNotifGUI") or Instance.new("ScreenGui")
notifGui.Name = "RawNotifGUI"
notifGui.ResetOnSpawn = false
notifGui.IgnoreGuiInset = true
notifGui.DisplayOrder = 999999999999999999
local parentUI = (gethui and gethui()) or game:GetService("CoreGui")
notifGui.Parent = parentUI
local function tween(obj, props, time, style, dir)
local info = TweenInfo.new(time, Enum.EasingStyle[style or "Quad"], Enum.EasingDirection[dir or "Out"])
local t = TweenService:Create(obj, info, props)
t:Play()
return t
end
local function animasikanBackpack(offset)
if backpackGui then
TweenService:Create(
backpackGui,
TweenInfo.new(0.3, Enum.EasingStyle.Quad),
{
Position = UDim2.new(0, 0, 0, offset)
}
):Play()
end
end
function TampilkanNotifikasi(text, duration)
duration = duration or 2
local label = Instance.new("TextLabel")
label.Text = text
label.Size = UDim2.new(0, 0, 0, 40)
label.Position = UDim2.new(0.5, 0, 1, 50)
label.AnchorPoint = Vector2.new(0.5, 1)
label.BackgroundTransparency = 1
label.TextColor3 = Color3.new(1, 1, 1)
label.TextStrokeTransparency = 0.5
label.TextSize = 18
label.Font = Enum.Font.GothamBold
label.TextWrapped = true
label.ZIndex = 20
label.Parent = notifGui
local bg = Instance.new("Frame")
bg.BackgroundColor3 = Color3.new(0, 0, 0)
bg.BackgroundTransparency = 0.4
bg.Size = UDim2.new(1, 20, 1, 0)
bg.Position = UDim2.new(0, -10, 0, 0)
bg.ZIndex = 19
bg.Parent = label
Instance.new("UICorner", bg).CornerRadius = UDim.new(0, 16)
local stroke = Instance.new("UIStroke")
stroke.Thickness = 1.3
stroke.Color = Color3.fromRGB(110, 110, 110)
stroke.Transparency = 0.1
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
stroke.Parent = bg
local gradientBg = Instance.new("UIGradient")
gradientBg.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(110, 110, 110)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(220, 220, 220)),
}
gradientBg.Rotation = 0
gradientBg.Parent = stroke
task.spawn(
function()
while true do
gradientBg.Rotation = (gradientBg.Rotation + 10) % 360
task.wait(0.05)
end
end
)
label.Size = UDim2.new(0, 300, 0, 40)
tween(label, {Position = UDim2.new(0.5, 0, 0.85, 0)}, 0.5, "Back", "Out")
task.delay(
duration,
function()
tween(label, {Position = UDim2.new(0.5, 0, 1.2, 0)}, 0.4, "Quad", "In")
task.wait(0.5)
label:Destroy()
end
)
end
local gui = Instance.new("ScreenGui")
gui.Name = "RawPlayerUI"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.DisplayOrder = 999999999999999
local parentUI = (gethui and gethui()) or game:GetService("CoreGui")
gui.Parent = parentUI
local blur = Instance.new("BlurEffect", game.Lighting)
blur.Name = "RawBlur"
blur.Size = 0
blur.Enabled = false
local apakah_sedang_diputar = false
local isLooping = false
local suara_saat_ini = nil
local function animasikan(obj, goal, dur)
return TweenService:Create(obj, TweenInfo.new(dur, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), goal):Play()
end
local floatingBtn = Instance.new("TextButton", gui)
floatingBtn.Size = UDim2.new(0, 44, 0, 44)
floatingBtn.Position = UDim2.new(0, 175, 0.5, -200)
floatingBtn.Text = "🎵"
floatingBtn.BackgroundColor3 = Color3.fromRGB(18, 18, 21)
floatingBtn.TextColor3 = Color3.fromRGB(90, 90, 90)
floatingBtn.Font = Enum.Font.GothamBold
floatingBtn.TextSize = 22
floatingBtn.Visible = true
floatingBtn.BackgroundTransparency = 0.08
floatingBtn.Draggable = true
floatingBtn.AutoButtonColor = true
Instance.new("UICorner", floatingBtn).CornerRadius = UDim.new(1, 0)
local creditLabel = Instance.new("TextButton", gui)
creditLabel.Size = UDim2.new(0, 200, 0, 16)
creditLabel.Position = UDim2.new(1, -210, 1, -20)
creditLabel.AnchorPoint = Vector2.new(0, 0)
creditLabel.BackgroundTransparency = 1
creditLabel.Text = "by ".. script_dibuat_oleh .." - Version ".. versi
creditLabel.TextColor3 = Color3.new(1, 1, 1)
creditLabel.TextTransparency = 1
creditLabel.Visible = false
creditLabel.Font = Enum.Font.Gotham
creditLabel.TextSize = 12
creditLabel.TextXAlignment = Enum.TextXAlignment.Right
local songTitleLabel = Instance.new("TextLabel", gui)
songTitleLabel.Size = UDim2.new(0, 360, 0, 24)
songTitleLabel.Position = UDim2.new(0.5, -180, 0, -30)
songTitleLabel.BackgroundTransparency = 1
songTitleLabel.TextColor3 = Color3.new(1, 1, 1)
songTitleLabel.Font = Enum.Font.Gotham
songTitleLabel.TextSize = 14
songTitleLabel.TextTransparency = 1
songTitleLabel.TextXAlignment = Enum.TextXAlignment.Center
songTitleLabel.Text = ""
local welcomeLabel = Instance.new("TextLabel", gui)
welcomeLabel.Size = UDim2.new(0, 250, 0, 30)
welcomeLabel.Position = UDim2.new(0.5, -125, 0, -60)
welcomeLabel.BackgroundTransparency = 1
welcomeLabel.TextColor3 = Color3.new(1, 1, 1)
welcomeLabel.Font = Enum.Font.GothamBold
welcomeLabel.TextSize = 18
welcomeLabel.TextTransparency = 1
welcomeLabel.TextXAlignment = Enum.TextXAlignment.Center
local volumeSlider = Instance.new("Frame", gui)
volumeSlider.Position = UDim2.new(0.5, -100, 0.5, -100 - 30)
volumeSlider.Size = UDim2.new(0, 200, 0, 24)
volumeSlider.Transparency = 1
volumeSlider.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
volumeSlider.BackgroundTransparency = 0.25
volumeSlider.Visible = false
volumeSlider.BackgroundTransparency = 1
Instance.new("UICorner", volumeSlider).CornerRadius = UDim.new(0, 16)
local strokeSlider = Instance.new("UIStroke")
strokeSlider.Thickness = 1.3
strokeSlider.Color = Color3.fromRGB(110, 110, 110)
strokeSlider.Transparency = 1
strokeSlider.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
strokeSlider.Parent = volumeSlider
local gradientSlider = Instance.new("UIGradient")
gradientSlider.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(110, 110, 110)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(220, 220, 220)),
}
gradientSlider.Rotation = 0
gradientSlider.Parent = strokeSlider
local sliderBar = Instance.new("Frame", volumeSlider)
sliderBar.Size = UDim2.new(1, -20, 0, 4)
sliderBar.Position = UDim2.new(0, 10, 0.5, -2)
sliderBar.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
sliderBar.BackgroundTransparency = 0
sliderBar.Active = true
sliderBar.Selectable = false
sliderBar.BackgroundTransparency = 1
Instance.new("UICorner", sliderBar)
local thumb = Instance.new("TextButton", volumeSlider)
thumb.Size = UDim2.new(0, 16, 0, 16)
thumb.Position = UDim2.new(1, -18, 0.5, -8)
thumb.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
thumb.Text = "100%"
thumb.TextSize = 10
thumb.TextScaled = true
thumb.TextColor3 = Color3.new(1, 1, 1)
thumb.Font = Enum.Font.GothamBold
thumb.BackgroundTransparency = 0
thumb.Visible = true
thumb.BackgroundTransparency = 1
thumb.TextTransparency = 1
Instance.new("UICorner", thumb)
local frame = Instance.new("Frame", gui)
frame.Size = UDim2.new(0, 300, 0, 200)
frame.Position = UDim2.new(0.5, -150, 0.5, -100)
frame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
frame.BackgroundTransparency = 1
frame.Visible = false
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 20)
local bassBtn = Instance.new("TextButton", frame)
bassBtn.Size = UDim2.new(0, 100, 0, 30)
bassBtn.Position = UDim2.new(1, -110, 1, -40)
bassBtn.BackgroundTransparency = 1
bassBtn.Text = "Bass"
bassBtn.TextColor3 = Color3.new(1, 1, 1)
bassBtn.Font = Enum.Font.GothamBold
bassBtn.TextSize = 18
bassBtn.TextTransparency = 1
local muteBtn = Instance.new("TextButton", frame)
muteBtn.Size = UDim2.new(0, 100, 0, 30)
muteBtn.Position = UDim2.new(0, 10, 1, -40)
muteBtn.BackgroundTransparency = 1
muteBtn.Text = "🔇 Mute"
muteBtn.TextTransparency = 1
muteBtn.TextColor3 = Color3.new(1, 1, 1)
muteBtn.Font = Enum.Font.GothamBold
muteBtn.TextSize = 18
local progressLabel = Instance.new("TextLabel", frame)
progressLabel.Size = UDim2.new(1, 0, 0, 20)
progressLabel.Position = UDim2.new(0, 0, 0, 135)
progressLabel.Text = "00:00 / 00:00"
progressLabel.BackgroundTransparency = 1
progressLabel.TextTransparency = 1
progressLabel.TextColor3 = Color3.new(1, 1, 1)
progressLabel.Font = Enum.Font.Gotham
progressLabel.TextSize = 14
progressLabel.TextXAlignment = Enum.TextXAlignment.Center
local strokeFrame = Instance.new("UIStroke")
strokeFrame.Thickness = 1.3
strokeFrame.Color = Color3.fromRGB(110, 110, 110)
strokeFrame.Transparency = 1
strokeFrame.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
strokeFrame.Parent = frame
local gradient = Instance.new("UIGradient")
gradient.Rotation = 0
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(110,110,110)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(220,220,220)),
}
gradient.Parent = strokeFrame
local title = Instance.new("TextLabel", frame)
title.Text = "RawPlayer - Raw Link Music Player"
title.Size = UDim2.new(1, 0, 0, 30)
title.Position = UDim2.new(0, 0, 0, 10)
title.BackgroundTransparency = 1
title.TextTransparency = 1
title.TextColor3 = Color3.new(1, 1, 1)
title.Font = Enum.Font.GothamBold
title.TextSize = 16
local inputBox = Instance.new("TextBox", frame)
inputBox.PlaceholderText = "Paste raw .mp3 URL here"
inputBox.Size = UDim2.new(1, -40, 0, 30)
inputBox.Position = UDim2.new(0.5, -130, 0, 50)
inputBox.BackgroundTransparency = 1
inputBox.TextTransparency = 1
inputBox.PlaceholderColor3 = Color3.fromRGB(200, 200, 200)
inputBox.TextColor3 = Color3.new(1, 1, 1)
inputBox.Font = Enum.Font.Gotham
inputBox.ClearTextOnFocus = false
inputBox.TextSize = 14
inputBox.Text = ""
inputBox.TextScaled = true
local playPauseBtn = Instance.new("TextButton", frame)
playPauseBtn.Size = UDim2.new(0.5, -25, 0, 30)
playPauseBtn.Position = UDim2.new(0, 20, 0, 100)
playPauseBtn.BackgroundTransparency = 1
playPauseBtn.Text = "▶ Play"
playPauseBtn.TextTransparency = 1
playPauseBtn.TextColor3 = Color3.new(1, 1, 1)
playPauseBtn.Font = Enum.Font.GothamBold
playPauseBtn.TextSize = 20
local loopBtn = Instance.new("TextButton", frame)
loopBtn.Size = UDim2.new(0.5, -25, 0, 30)
loopBtn.Position = UDim2.new(0.5, 5, 0, 100)
loopBtn.BackgroundTransparency = 1
loopBtn.Text = "🔁 Looped"
loopBtn.TextTransparency = 1
loopBtn.TextColor3 = Color3.new(1, 1, 1)
loopBtn.Font = Enum.Font.GothamBold
loopBtn.TextSize = 20
local closeBtn = Instance.new("TextButton", frame)
closeBtn.Size = UDim2.new(0, 100, 0, 30)
closeBtn.Position = UDim2.new(0.5, -50, 1, -40)
closeBtn.BackgroundTransparency = 1
closeBtn.Text = "Close"
closeBtn.TextTransparency = 1
closeBtn.TextColor3 = Color3.new(1, 1, 1)
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 20
local blurGui = Instance.new("ScreenGui")
blurGui.Name = "RawPlayerBlurUI"
blurGui.ResetOnSpawn = false
blurGui.IgnoreGuiInset = true
blurGui.DisplayOrder = 999999999
local parentUI = (gethui and gethui()) or game:GetService("CoreGui")
blurGui.Parent = parentUI
local blurLayer = Instance.new("Frame")
blurLayer.Size = UDim2.new(1, 0, 1, 0)
blurLayer.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
blurLayer.BackgroundTransparency = 0.7
blurLayer.Visible = false
blurLayer.ZIndex = 9
blurLayer.Parent = blurGui
frame.MouseEnter:Connect(function()
cursorHovering = true
end)
frame.MouseLeave:Connect(function()
cursorHovering = false
end)
local rotasi = 0
local kecepatanRotasi = 10
local cursorHovering = false
RunService.RenderStepped:Connect(function()
if suara_saat_ini and suara_saat_ini.Playing then
kecepatanRotasi = 10 + math.clamp(suara_saat_ini.PlaybackLoudness / 300, 0, 1) * 90
else
if cursorHovering then
kecepatanRotasi = 100
else
kecepatanRotasi = 10
end
end
rotasi = (rotasi + kecepatanRotasi * RunService.RenderStepped:Wait()) % 360
gradient.Rotation = rotasi
end)
task.spawn(function()
while true do
gradientSlider.Rotation = (gradientSlider.Rotation + 10) % 360
task.wait(0.05)
end
end)
local function urldecode(str)
return str:gsub("%%(%x%x)", function(hex)
local byte = tonumber(hex, 16)
if byte then
return string.char(byte)
else
return "%" .. hex
end
end)
end
local function enableFloatingDrag(button)
local dragging = false
local dragStartPos
local startBtnPos
local velocity = Vector2.zero
local lastPos = Vector2.zero
local lastTime = 0
local damping = 0.88
local renderConn
local function updateMomentum(dt)
if not dragging then
if velocity.Magnitude > 0.5 then
local pos = button.Position
pos = UDim2.new(pos.X.Scale, pos.X.Offset + velocity.X * dt, pos.Y.Scale, pos.Y.Offset + velocity.Y * dt)
button.Position = pos
velocity *= math.pow(damping, dt * 60)
else
velocity = Vector2.zero
if renderConn then renderConn:Disconnect() end
end
end
end
button.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStartPos = input.Position
startBtnPos = button.Position
lastPos = input.Position
lastTime = tick()
if renderConn then renderConn:Disconnect() end
renderConn = RunService.RenderStepped:Connect(updateMomentum)
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
local deltaTime = tick() - lastTime
if deltaTime > 0 then
velocity = (input.Position - lastPos) / deltaTime
end
end
end)
end
end)
button.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStartPos
local newPosition = UDim2.new(startBtnPos.X.Scale, startBtnPos.X.Offset + delta.X, startBtnPos.Y.Scale, startBtnPos.Y.Offset + delta.Y)
button.Position = newPosition
lastPos = input.Position
lastTime = tick()
end
end)
end
local function formatSongTitle(raw)
local noExt = raw:gsub("%.mp3$", "") -- hapus .mp3
local decoded = urldecode(noExt)
local full = "Now Playing: " .. decoded
if #full > 55 then
full = full:sub(1, 55) .. "..."
end
return full
end
local cacheFolder = "music_cache"
if not isfolder(cacheFolder) then
makefolder(cacheFolder)
end
local function extractFileName(url)
return url:match(".+/([^/?#]+)$") or ("file_" .. HttpService:GenerateGUID(false) .. ".mp3")
end
function PlayMusicFromURL(url)
if typeof(url) ~= "string" or not url:match("^https?://") then
TampilkanNotifikasi("Invalid URL.", 4)
return nil
end
local fileName = extractFileName(url)
local filePath = cacheFolder .. "/" .. fileName
if not isfile(filePath) then
TampilkanNotifikasi("Downloading...", 4)
playPauseBtn.Text = "⏳ Please wait..."
local ok, data =
pcall(
function()
return game:HttpGet(url)
end
)
if not ok then
TampilkanNotifikasi("Download failed.", 4)
return nil
end
writefile(filePath, data)
TampilkanNotifikasi("✅ Download completed", 4)
else
TampilkanNotifikasi("📁 File already exists", 4)
end
local songName = extractFileName(url)
songTitleLabel.Text = formatSongTitle(songName)
songTitleLabel.Position = UDim2.new(0.5, -180, 0, -30)
songTitleLabel.TextTransparency = 1
animasikan(songTitleLabel, {TextTransparency = 0}, 0.4)
animasikan(songTitleLabel, {Position = UDim2.new(0.5, -180, 0, 40)}, 0.4)
local sound = Instance.new("Sound")
sound.Name = "RawSound"
sound.SoundId = getcustomasset(filePath)
sound.Volume = volume_saat_ini
sound.Looped = false
sound.Parent = game.SoundService
sound:Play()
return sound
end
local function updatePlayText()
playPauseBtn.Text = apakah_sedang_diputar and "|| Pause" or "▶ Play"
end
local function updateLoopColor()
loopBtn.TextColor3 = isLooping and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(255, 255, 255)
end
local function MuteOtherSounds(exceptSound)
suaraYangDibisukan = {}
sedang_dibisukan = true
for _, s in ipairs(game:GetDescendants()) do
if s:IsA("Sound") and s ~= exceptSound and s.Volume > 0 then
suaraYangDibisukan[s] = s.Volume
TweenService:Create(s, TweenInfo.new(0.3), {Volume = 0}):Play()
end
end
if koneksiBisu then
koneksiBisu:Disconnect()
end
koneksiBisu =
game.DescendantAdded:Connect(
function(obj)
if obj:IsA("Sound") and obj ~= exceptSound then
task.wait()
if sedang_dibisukan then
suaraYangDibisukan[obj] = obj.Volume
obj.Volume = 0
end
end
end
)
end
local function nonaktifkanSemuaGui()
guiStateBackup = {}
for _, gui in ipairs(Players.LocalPlayer:WaitForChild("PlayerGui"):GetChildren()) do
if gui:IsA("ScreenGui") and gui.Name ~= "RawPlayerUI" and gui.Name ~= "RawNotifGUI" and gui.Name ~= "Backpack" then
guiStateBackup[gui] = gui.Enabled
gui.Enabled = false
end
end
end
local function pulihkanSemuaGui()
for gui, originalState in pairs(guiStateBackup) do
if gui and gui:IsDescendantOf(Players.LocalPlayer:FindFirstChild("PlayerGui")) then
gui.Enabled = originalState
end
end
guiStateBackup = {}
end
local function UnmuteOtherSounds()
sedang_dibisukan = false
if koneksiBisu then
koneksiBisu:Disconnect()
koneksiBisu = nil
end
for sound, originalVolume in pairs(suaraYangDibisukan) do
if sound and sound:IsDescendantOf(game) then
TweenService:Create(sound, TweenInfo.new(0.3), {Volume = originalVolume}):Play()
end
end
suaraYangDibisukan = {}
end
local function updateVolumeUI(x)
local relX = math.clamp(x - sliderBar.AbsolutePosition.X, 0, sliderBar.AbsoluteSize.X)
local percent = relX / sliderBar.AbsoluteSize.X
volume_saat_ini = math.clamp(percent, 0, 1)
thumb.Position = UDim2.new(0, relX + 2 - thumb.Size.X.Offset / 2, 0.5, -8)
thumb.Text = math.floor(volume_saat_ini * 100 + 0.5) .. "%"
if suara_saat_ini then
suara_saat_ini.Volume = volume_saat_ini
end
end
game:GetService("UserInputService").InputEnded:Connect(
function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
end
end
)
game:GetService("RunService").RenderStepped:Connect(
function()
if dragging then
updateVolumeUI(game:GetService("UserInputService"):GetMouseLocation().X)
end
end
)
game:GetService("UserInputService").InputEnded:Connect(
function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
end
end
)
game:GetService("RunService").RenderStepped:Connect(
function()
if dragging then
local mouseX = game:GetService("UserInputService"):GetMouseLocation().X
updateVolumeUI(mouseX)
end
end
)
local dragging = false
sliderBar.InputBegan:Connect(
function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
updateVolumeUI(input.Position.X)
end
end
)
sliderBar.InputChanged:Connect(
function(input)
if
dragging and
(input.UserInputType == Enum.UserInputType.MouseMovement or
input.UserInputType == Enum.UserInputType.Touch)
then
updateVolumeUI(input.Position.X)
end
end
)
game:GetService("UserInputService").InputEnded:Connect(
function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end
)
local function fadeInVolumeSlider()
volumeSlider.Visible = true
animasikan(volumeSlider, {BackgroundTransparency = 0.25}, 0.3)
animasikan(sliderBar, {BackgroundTransparency = 0}, 0.3)
animasikan(thumb, {BackgroundTransparency = 0, TextTransparency = 0}, 0.3)
animasikan(strokeSlider, {Transparency = 0.1}, 0.3)
end
local function fadeOutVolumeSlider()
animasikan(volumeSlider, {BackgroundTransparency = 1}, 0.3)
animasikan(sliderBar, {BackgroundTransparency = 1}, 0.3)
animasikan(thumb, {BackgroundTransparency = 1, TextTransparency = 1}, 0.3)
animasikan(strokeSlider, {Transparency = 1}, 0.3)
task.delay(
0.3,
function()
volumeSlider.Visible = false
end
)
end
local function aturFov()
animasikan(camera, {FieldOfView = 100}, 0.2)
task.wait(0.3)
animasikan(camera, {FieldOfView = 40}, 0.4)
end
local function aturUlangFov()
animasikan(camera, {FieldOfView = 70}, 0.4)
end
local playerName = game.Players.LocalPlayer.Name
if daftarOwner[playerName] then
welcomeLabel.Text = "Ahoy! Captain " .. playerName
elseif not getgenv().RawPlayerWelcomed then
welcomeLabel.Text = "Welcome! " .. playerName
getgenv().RawPlayerWelcomed = true
else
welcomeLabel.Text = "Welcome back! " .. playerName
end
local function tampilkan_UI()
if sedang_dalam_masa_transisi then
return
end
sedang_dalam_masa_transisi = true
frame.Visible = true
blur.Enabled = true
animasikan(blur, {Size = 24}, 0.5)
aturFov()
animasikan(frame, {BackgroundTransparency = 0.25}, 0.4)
animasikan(title, {TextTransparency = 0}, 0.4)
animasikan(inputBox, {TextTransparency = 0}, 0.4)
animasikan(playPauseBtn, {TextTransparency = 0}, 0.4)
animasikan(loopBtn, {TextTransparency = 0}, 0.4)
animasikan(closeBtn, {TextTransparency = 0}, 0.4)
animasikan(strokeFrame, {Transparency = 0}, 0.3)
animasikan(progressLabel, {TextTransparency = 0}, 0.4)
animasikan(muteBtn, {TextTransparency = 0}, 0.4)
animasikan(bassBtn, {TextTransparency = 0}, 0.4)
animasikan(creditLabel, {TextTransparency = 0.5}, 0.4)
animasikan(songTitleLabel, {TextTransparency = 0}, 0.4)
animasikan(songTitleLabel, {Position = UDim2.new(0.5, -180, 0, 40)}, 0.4)
animasikan(floatingBtn, {Transparency = 1}, 0.5)
blurLayer.Visible = true
animasikan(blurLayer, {BackgroundTransparency = 0.7}, 0.3)
animasikanBackpack(90)
nonaktifkanSemuaGui()
fadeInVolumeSlider()
welcomeLabel.Position = UDim2.new(0.5, -125, 0, -60)
welcomeLabel.TextTransparency = 1
animasikan(welcomeLabel, {TextTransparency = 0}, 0.4)
animasikan(welcomeLabel, {Position = UDim2.new(0.5, -125, 0, 10)}, 0.4)
creditLabel.Visible = true
task.delay(
0.5,
function()
sedang_dalam_masa_transisi = false
end
)
end
local function sembunyikan_UI()
if sedang_dalam_masa_transisi then
return
end
sedang_dalam_masa_transisi = true
animasikan(blur, {Size = 0}, 0.4)
aturUlangFov()
animasikan(frame, {BackgroundTransparency = 1}, 0.3)
animasikan(title, {TextTransparency = 1}, 0.3)
animasikan(inputBox, {TextTransparency = 1}, 0.3)
animasikan(playPauseBtn, {TextTransparency = 1}, 0.3)
animasikan(loopBtn, {TextTransparency = 1}, 0.3)
animasikan(closeBtn, {TextTransparency = 1}, 0.3)
animasikan(strokeFrame, {Transparency = 1}, 0.3)
animasikan(progressLabel, {TextTransparency = 1}, 0.3)
animasikan(muteBtn, {TextTransparency = 1}, 0.3)
animasikan(bassBtn, {TextTransparency = 1}, 0.3)
animasikan(creditLabel, {TextTransparency = 1}, 0.3)
animasikan(songTitleLabel, {TextTransparency = 1}, 0.3)
animasikan(songTitleLabel, {Position = UDim2.new(0.5, -180, 0, -30)}, 0.3)
animasikan(floatingBtn, {Transparency = 0}, 0.4)
animasikan(floatingBtn, {BackgroundTransparency = 0.08}, 0.4)
animasikan(welcomeLabel, {TextTransparency = 1}, 0.3)
animasikan(welcomeLabel, {Position = UDim2.new(0.5, -125, 0, -60)}, 0.3)
animasikanBackpack(0)
pulihkanSemuaGui()
fadeOutVolumeSlider()
task.delay(
0.4,
function()
blur.Enabled = false
frame.Visible = false
sedang_dalam_masa_transisi = false
creditLabel.Visible = false
end
)
animasikan(blurLayer, {BackgroundTransparency = 1}, 0.3)
task.delay(
0.3,
function()
blurLayer.Visible = false
end
)
end
bassBtn.MouseButton1Click:Connect(
function()
bass_diaktifkan = not bass_diaktifkan
bassBtn.TextColor3 = bass_diaktifkan and Color3.fromRGB(0, 255, 100) or Color3.new(1, 1, 1)
if suara_saat_ini then
for _, child in pairs(suara_saat_ini:GetChildren()) do
if child:IsA("EqualizerSoundEffect") then
child:Destroy()
end
end
if bass_diaktifkan then
local bassFX = Instance.new("EqualizerSoundEffect")
bassFX.Name = "RawBass"
bassFX.LowGain = 10
bassFX.MidGain = 0
bassFX.HighGain = 0
bassFX.Parent = suara_saat_ini
end
end
end
)
local function formatTime(sec)
local m = math.floor(sec / 60)
local s = math.floor(sec % 60)
return string.format("%02d:%02d", m, s)
end
local updateConnection = nil
local function startUpdatingProgress()
if updateConnection then
updateConnection:Disconnect()
end
tween(progressLabel, {TextTransparency = 0}, 0.4)
updateConnection =
RunService.RenderStepped:Connect(
function()
if visualizerSpesialAktif and suara_saat_ini and suara_saat_ini.Playing and backpackGui then
local strength = math.abs(math.sin(tick() * 15)) * 6
local targetPos = backpackOriginalPos + UDim2.new(0, 0, 0, -strength)
backpackGui.Position = targetPos
end
if suara_saat_ini and suara_saat_ini:IsDescendantOf(SoundService) then
local pos = suara_saat_ini.TimePosition
local len = suara_saat_ini.TimeLength
progressLabel.Text = formatTime(pos) .. " / " .. formatTime(len)
end
end
)
end
local function stopUpdatingProgress()
if updateConnection then
updateConnection:Disconnect()
end
updateConnection = nil
tween(progressLabel, {TextTransparency = 1}, 0.3)
end
floatingBtn.MouseButton1Click:Connect(
function()
if sedang_dalam_masa_transisi then
return
end
floatingBtn.Visible = false
tampilkan_UI()
end
)
floatingBtn.MouseEnter:Connect(
function()
animasikan(floatingBtn, {BackgroundColor3 = Color3.fromRGB(54, 54, 63)}, 0.3)
end
)
floatingBtn.MouseLeave:Connect(
function()
animasikan(floatingBtn, {BackgroundColor3 = Color3.fromRGB(18, 18, 21)}, 0.3)
end
)
closeBtn.MouseButton1Click:Connect(
function()
if sedang_dalam_masa_transisi then
return
end
sembunyikan_UI()
floatingBtn.Visible = true
end
)
local lastPlayedURL = ""
playPauseBtn.MouseButton1Click:Connect(
function()
local url = inputBox.Text:match("^%s*(.-)%s*$")
if url == "" or not url:match("^https?://") then
TampilkanNotifikasi("Please enter something in the TextBox!", 3)
return
end
if suara_saat_ini and url ~= lastPlayedURL then
suara_saat_ini:Stop()
suara_saat_ini:Destroy()
suara_saat_ini = nil
apakah_sedang_diputar = false
end
lastPlayedURL = url
if not suara_saat_ini then
suara_saat_ini = PlayMusicFromURL(url)
startUpdatingProgress()
if suara_saat_ini then
suara_saat_ini.Looped = isLooping
apakah_sedang_diputar = true
end
else
if apakah_sedang_diputar then
suara_saat_ini:Pause()
apakah_sedang_diputar = false
stopUpdatingProgress()
animasikan(songTitleLabel, {TextTransparency = 1}, 0.3)
animasikan(songTitleLabel, {Position = UDim2.new(0.5, -180, 0, -30)}, 0.3)
animasikanBackpack(90)
else
suara_saat_ini:Play()
apakah_sedang_diputar = true
startUpdatingProgress()
end
end
suara_saat_ini.Ended:Connect(
function()
suara_saat_ini = nil
apakah_sedang_diputar = false
updatePlayText()
stopUpdatingProgress()
animasikanBackpack(0)
if suara_saat_ini then
suara_saat_ini:Stop()
suara_saat_ini:Destroy()
suara_saat_ini = nil
end
animasikan(songTitleLabel, {TextTransparency = 1}, 0.3)
animasikan(songTitleLabel, {Position = UDim2.new(0.5, -180, 0, -30)}, 0.3)
end
)
updatePlayText()
end
)
loopBtn.MouseButton1Click:Connect(
function()
isLooping = not isLooping
if suara_saat_ini then
suara_saat_ini.Looped = isLooping
end
updateLoopColor()
end
)
muteBtn.MouseButton1Click:Connect(
function()
if sedang_dibisukan then
UnmuteOtherSounds()
sedang_dibisukan = false
muteBtn.Text = "🔇 Mute"
muteBtn.TextColor3 = Color3.new(1, 1, 1)
else
MuteOtherSounds(suara_saat_ini)
sedang_dibisukan = true
muteBtn.Text = "🔊 UnMute"
muteBtn.TextColor3 = Color3.new(0, 1, 0)
end
end
)
creditLabel.MouseButton1Click:Connect(
function()
visualizerSpesialAktif = not visualizerSpesialAktif
TampilkanNotifikasi(visualizerSpesialAktif and "SPECIAL | 🎒 Backpack visualizer ON!" or "SPECIAL | ❌ Visualizer off.", 3)
task.wait(3)
TampilkanNotifikasi("❤️ Thank you for your concern for us!", 4)
if not visualizerSpesialAktif and backpackGui then
animasikanBackpack(90)
end
end
)
if backpackGui then
backpackOriginalPos = backpackGui.Position
end
updatePlayText()
updateLoopColor()
enableFloatingDrag(floatingBtn)
-- End of the script | Thanks for using this script!