local uiName = "tradelinkv1_Official"
local old = game:GetService("CoreGui"):FindFirstChild(uiName) or game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild(uiName)
if old then old:Destroy() end
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local lp = Players.LocalPlayer
local char = lp.Character or lp.CharacterAdded:Wait()
local hum = char:WaitForChild("Humanoid")
local hrp = char:WaitForChild("HumanoidRootPart")
local savedData = {}
local ghostFolder = workspace:FindFirstChild("MirrorFolder_v33") or Instance.new("Folder", workspace)
ghostFolder.Name = "MirrorFolder_v33"
local currentLayer, sortedLayers = 1, {}
local isFast, isLagging = false, false
local jetpackTemplate = ReplicatedStorage:WaitForChild("Jetpack")
local upPressed, downPressed = false, false
local maxFlySpeed = 25
local verticalVel = 0
local easing = 0.1
local jetpackActive = false
local bv
local scriptEnabled = false
local jetpackClone, jetpackScript, partsModel, idleTrack
local fireParts = {}
local animator = hum:FindFirstChildWhichIsA("Animator") or Instance.new("Animator", hum)
local startHeight = 10
local stopHeight = 4
local rayParams = RaycastParams.new()
rayParams.FilterType = Enum.RaycastFilterType.Blacklist
rayParams.FilterDescendantsInstances = {char}
local sg = Instance.new("ScreenGui", game:GetService("CoreGui"))
sg.Name = uiName
local Main = Instance.new("Frame", sg)
Main.Size = UDim2.new(0, 180, 0, 470) -- Increased height for Discord button
Main.Position = UDim2.new(0.05, 0, 0.2, 0)
Main.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
Main.Active, Main.Draggable = true, true
local Title = Instance.new("TextLabel", Main)
Title.Size = UDim2.new(1, 0, 0, 30)
Title.Text = "made by tradelinkv1"
Title.TextColor3 = Color3.new(1, 1, 1)
Title.BackgroundTransparency = 1
Title.Font = Enum.Font.SourceSansBold
Title.TextSize = 14
local function createBtn(text, y, color)
local b = Instance.new("TextButton", Main)
b.Size = UDim2.new(0.9, 0, 0, 30)
b.Position = UDim2.new(0.05, 0, 0, y + 30)
b.Text, b.BackgroundColor3 = text, color
b.TextColor3, b.Font, b.TextSize = Color3.new(1, 1, 1), Enum.Font.SourceSansBold, 12
return b
end
local scanBtn = createBtn("1. SCAN BUILD", 10, Color3.fromRGB(0, 120, 0))
local uncopyBtn = createBtn("UNCOPY (RESET)", 45, Color3.fromRGB(80, 80, 0))
local showBtn = createBtn("2. SHOW ALL (PASTE)", 85, Color3.fromRGB(0, 100, 200))
local unpasteBtn = createBtn("UNPASTE (CLEAR)", 120, Color3.fromRGB(150, 50, 0))
local upBtn = createBtn("LAYER (+)", 160, Color3.fromRGB(60, 60, 60))
local downBtn = createBtn("LAYER (-)", 195, Color3.fromRGB(60, 60, 60))
local jetBtn = createBtn("JETPACK: OFF", 235, Color3.fromRGB(0, 150, 150))
local speedBtn = createBtn("SPEED: 16", 270, Color3.fromRGB(150, 150, 0))
local lagBtn = createBtn("LAG SERVER: OFF", 305, Color3.fromRGB(180, 0, 0))
local dcBtn = createBtn("JOIN DISCORD", 345, Color3.fromRGB(88, 101, 242)) -- Discord Blurple
local killBtn = createBtn("UNLOAD SCRIPT", 405, Color3.fromRGB(100, 0, 0))
local ShoutOut = Instance.new("TextLabel", sg)
ShoutOut.Size = UDim2.new(0, 250, 0, 40)
ShoutOut.Position = UDim2.new(0.5, -125, 0.85, 0)
ShoutOut.Visible = false
ShoutOut.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
ShoutOut.TextColor3 = Color3.fromRGB(0, 255, 150)
ShoutOut.Font = Enum.Font.Code
ShoutOut.Text = "Jetpack made by brotabrr"
ShoutOut.BorderSizePixel = 0
local function notify(txt)
ShoutOut.Text = txt
ShoutOut.Visible = true
task.wait(5)
ShoutOut.Visible = false
end
dcBtn.MouseButton1Click:Connect(function()
setclipboard("https://discord.gg/rUp5BRBTHD")
task.spawn(function() notify("Link copied to clipboard!") end)
end)
local function spawnJetpack()
jetpackClone = jetpackTemplate:Clone()
jetpackClone.Parent = workspace
jetpackScript = jetpackClone:FindFirstChildWhichIsA("Script")
partsModel = jetpackScript:FindFirstChild("Jetpack")
for _, part in ipairs(partsModel:GetDescendants()) do
if part:IsA("BasePart") then part.Transparency, part.CanCollide, part.Anchored = 0, false, false end
end
partsModel.PrimaryPart = partsModel.PrimaryPart or partsModel:FindFirstChildWhichIsA("BasePart")
partsModel:SetPrimaryPartCFrame(hrp.CFrame * CFrame.new(0, 0.2, 0.7))
local weld = Instance.new("WeldConstraint")
weld.Part0, weld.Part1, weld.Parent = hrp, partsModel.PrimaryPart, partsModel.PrimaryPart
local idleAnim = hum.RigType == Enum.HumanoidRigType.R6 and jetpackScript:FindFirstChild("Idle") or jetpackScript:FindFirstChild("IdleR15")
if idleAnim then idleTrack = animator:LoadAnimation(idleAnim) end
fireParts = {}
for _, fp in ipairs(jetpackScript:GetDescendants()) do if fp.Name == "FirePart" then table.insert(fireParts, fp) end end
end
local function toggleFire(state)
for _, fp in ipairs(fireParts) do
for _, child in ipairs(fp:GetDescendants()) do if child:IsA("ParticleEmitter") or child:IsA("Light") then child.Enabled = state end end
end
end
local function toggleJetpack()
scriptEnabled = not scriptEnabled
jetBtn.Text = scriptEnabled and "JETPACK: ON" or "JETPACK: OFF"
if not scriptEnabled then
if idleTrack then idleTrack:Stop() end
if jetpackClone then jetpackClone:Destroy() end
if bv then bv:Destroy() end
jetpackClone, bv, idleTrack, verticalVel = nil, nil, nil, 0
else
task.spawn(function() notify("Jetpack made by brotabrr") end)
spawnJetpack()
end
end
jetBtn.MouseButton1Click:Connect(toggleJetpack)
scanBtn.MouseButton1Click:Connect(function()
local p = nil
for _, v in pairs(workspace:GetDescendants()) do
if v:IsA("BasePart") and (v.Name == "Plot" or v.Size.X > 40) and (v.Position - hrp.Position).Magnitude < 100 then p = v; break end
end
if not p then scanBtn.Text = "NO PLOT FOUND"; return end
savedData, sortedLayers = {}, {}
local layers = {}
for _, v in pairs(workspace:GetDescendants()) do
if v:IsA("BasePart") and not v:IsDescendantOf(ghostFolder) then
local isPlayerPart = false
for _, player in pairs(Players:GetPlayers()) do if player.Character and v:IsDescendantOf(player.Character) then isPlayerPart = true; break end end
if not isPlayerPart then
local rel = p.CFrame:PointToObjectSpace(v.Position)
if math.abs(rel.X) < (p.Size.X/2) and math.abs(rel.Z) 40) and (v.Position - hrp.Position).Magnitude startHeight and not groundRay then jetpackActive = true
elseif distToGround <= stopHeight or groundRay then jetpackActive = false end
if jetpackActive then
if not bv then bv = Instance.new("BodyVelocity", hrp) bv.MaxForce, bv.P = Vector3.new(0, math.huge, 0), 1250 end
if idleTrack and not idleTrack.IsPlaying then idleTrack:Play() end
toggleFire(true)
local targetVel = upPressed and maxFlySpeed or (downPressed and -maxFlySpeed or 0)
verticalVel = verticalVel + (targetVel - verticalVel) * easing
bv.Velocity = Vector3.new(0, verticalVel, 0)
else
if bv then bv:Destroy() bv = nil end
if idleTrack and idleTrack.IsPlaying then idleTrack:Stop() end
toggleFire(false)
verticalVel = 0
end
end)
UserInputService.InputBegan:Connect(function(i, processed)
if processed then return end
if i.KeyCode == Enum.KeyCode.E then upPressed = true end
if i.KeyCode == Enum.KeyCode.Q then downPressed = true end
if i.KeyCode == Enum.KeyCode.T then toggleJetpack() end
end)
UserInputService.InputEnded:Connect(function(i)
if i.KeyCode == Enum.KeyCode.E then upPressed = false end
if i.KeyCode == Enum.KeyCode.Q then downPressed = false end
end)
lagBtn.MouseButton1Click:Connect(function()
isLagging = not isLagging
lagBtn.Text = isLagging and "LAGGING..." or "LAG SERVER: OFF"
task.spawn(function()
while isLagging do
for i = 1, 300 do
local part = Instance.new("Part", workspace)
part.Size, part.Position = Vector3.new(0.1,0.1,0.1), hrp.Position + Vector3.new(0,20,0)
game:GetService("Debris"):AddItem(part, 0.1)
end
task.wait(0.05)
end
end)
end)
speedBtn.MouseButton1Click:Connect(function()
isFast = not isFast
hum.WalkSpeed = isFast and 100 or 16
speedBtn.Text = isFast and "SPEED: 100" or "SPEED: 16"
end)
showBtn.MouseButton1Click:Connect(function() draw(true) end)
upBtn.MouseButton1Click:Connect(function() if currentLayer 1 then currentLayer = currentLayer-1 draw(false) end end)
unpasteBtn.MouseButton1Click:Connect(function() ghostFolder:ClearAllChildren() end)
uncopyBtn.MouseButton1Click:Connect(function() savedData = {} scanBtn.Text = "1. SCAN BUILD" end)
killBtn.MouseButton1Click:Connect(function()
scriptEnabled, isLagging = false, false
if jetpackClone then jetpackClone:Destroy() end
if bv then bv:Destroy() end
hum.WalkSpeed = 16; sg:Destroy(); ghostFolder:Destroy()
end)