-- this script has been generated by Gemini (3.1-pro), have fun! --[[ FE drop tools | by TerminatorDev Executor: Delta Optimized Bypass: Recursive Remote Discovery + Legacy Chat Fallback --]] -- 1. SERVICES local RunService = game:GetService("RunService") local Players = game:GetService("Players") local StarterGui = game:GetService("StarterGui") local ReplicatedStorage = game:GetService("ReplicatedStorage") local ChatService = game:GetService("Chat") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") -- 2. PLAYER VARIABLES local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local rootPart = character:WaitForChild("HumanoidRootPart") local backpack = player:WaitForChild("Backpack") -- 3. STATE & CONFIG local droppedTools = {} local inHitboxStatus = {} local playerRanks = {} -- Stores: "special", "admin", or nil local stealingEnabled = false local frameCounter = 0 local frameUpdate = 1 local VOID_LEVEL = -100 local allowChatLogs = true -- 4. THE BYPASS CHAT SENDER local function characterChat(msg) if not allowChatLogs then return end task.spawn(function() local tcs = game:GetService("TextChatService") if tcs.ChatVersion == Enum.ChatVersion.TextChatService then local channel = tcs:FindFirstChild("RBXGeneral", true) or tcs:FindFirstChild("TextChannels", true):FindFirstChild("RBXGeneral") if channel then channel:SendAsync(msg) return end end local sayMsg = ReplicatedStorage:FindFirstChild("SayMessageRequest", true) if sayMsg and sayMsg:IsA("RemoteEvent") then sayMsg:FireServer(msg, "All") return end if character and character:FindFirstChild("Head") then ChatService:Chat(character.Head, msg, Enum.ChatPrivacySetting.All) end end) end -- 5. NOTIFICATION HELPER local function notify(title, desc) pcall(function() StarterGui:SetCore("SendNotification", {Title = title, Text = desc, Duration = 5}) end) end -- 6. RECALL HELPER local function recall(tool) local data = droppedTools[tool] if data and data.Part then data.Part:Destroy() end droppedTools[tool] = nil inHitboxStatus[tool] = nil tool.Grip = CFrame.new(0, 0, 0) task.spawn(function() tool.Parent = backpack task.wait() if character:IsDescendantOf(workspace) then tool.Parent = character end end) end -- 7. COMMAND HANDLER (Universal for Ranks) local function handleCommand(speaker, msg) local lowMsg = msg:lower() local args = lowMsg:split(" ") local rank = (speaker == player) and "special" or playerRanks[speaker] -- "None" rank check if not rank and lowMsg ~= "q" then return end -- /ineedhelp (All ranked) if lowMsg == "/ineedhelp" then characterChat("Chat commands: /stealtoolsfromme false/true, /equip {user}, /drop {user/all}, /frameupd {n}.") -- /rank (Special only) elseif args[1] == "/rank" and #args == 3 and rank == "special" then local targetName = args[2] local newRank = args[3] local targetPlayer = nil for _, p in ipairs(Players:GetPlayers()) do if p.Name:lower():find(targetName) or p.DisplayName:lower():find(targetName) then targetPlayer = p break end end if targetPlayer and targetPlayer ~= player then if newRank == "admin" then playerRanks[targetPlayer] = "admin" characterChat(targetPlayer.DisplayName .. "'s rank has been set to ADMINšŸ‘‘.") elseif newRank == "special" then playerRanks[targetPlayer] = "special" characterChat("INCREDIBLE! " .. targetPlayer.DisplayName .. " is so lucky, that it's rank has been set to SPECIAL⭐, congrats!") elseif newRank == "none" then playerRanks[targetPlayer] = nil characterChat(targetPlayer.DisplayName .. "'s rank has been set to NONE.") end end -- /frameupd (Admin/Special) elseif args[1] == "/frameupd" and #args == 2 then local num = tonumber(args[2]) if num then frameUpdate = math.max(1, math.floor(num)) end -- /stealtoolsfromme (Admin/Special) elseif args[1] == "/stealtoolsfromme" and #args == 2 then if args[2] == "true" then stealingEnabled = true elseif args[2] == "false" then stealingEnabled = false for t, d in pairs(droppedTools) do if d.Stealer then recall(t) end end end -- /equip (Admin/Special) elseif args[1] == "/equip" and #args == 2 then local targetName = args[2] local tool = character:FindFirstChildWhichIsA("Tool") if tool and targetName then for _, p in ipairs(Players:GetPlayers()) do if p ~= player and (p.Name:lower():find(targetName) or p.DisplayName:lower():find(targetName)) then local hitbox = Instance.new("Part") hitbox.Size = tool.Handle.Size; hitbox.Transparency = 1; hitbox.CanCollide = true hitbox.CFrame = rootPart.CFrame * CFrame.new(0, 0, -4) hitbox.Parent = workspace droppedTools[tool] = {Part = hitbox, Stealer = nil, DropTime = tick()} inHitboxStatus[tool] = true task.spawn(function() local limit = tick() + 10 while droppedTools[tool] and droppedTools[tool].Stealer == nil and tick() < limit do local tChar = p.Character local tRoot = tChar and tChar:FindFirstChild("HumanoidRootPart") if tRoot then hitbox.CFrame = tRoot.CFrame if (hitbox.Position - tRoot.Position).Magnitude < 3.5 then droppedTools[tool].Stealer = p droppedTools[tool].DropTime = tick() + 999999 break end end task.wait() end end) break end end end -- /drop (Admin/Special) elseif args[1] == "/drop" and #args == 2 then local target = args[2] for tool, data in pairs(droppedTools) do if target == "all" or (data.Stealer and (data.Stealer.Name:lower():find(target) or data.Stealer.DisplayName:lower():find(target))) then recall(tool) end end end end -- 8. GLOBAL LISTENERS local function setupPlayer(p) p.Chatted:Connect(function(msg) handleCommand(p, msg) -- Global Q Listener if msg:lower() == "q" then for tool, data in pairs(droppedTools) do if data.Stealer == p then local sChar = p.Character local sRoot = sChar and sChar:FindFirstChild("HumanoidRootPart") if sRoot then data.Stealer = nil; data.DropTime = tick() inHitboxStatus[tool] = true; data.Part.CFrame = sRoot.CFrame * CFrame.new(0, 0, -5) data.Part.CanCollide = true end end end end end) end -- 9. MAIN RUN LOGIC STAGED AFTER QUESTION local function runMainScript() for _, p in ipairs(Players:GetPlayers()) do setupPlayer(p) end Players.PlayerAdded:Connect(setupPlayer) -- Startup Messages (Only fires if allowChatLogs is true) if allowChatLogs then characterChat("FE drop tools | by TerminatorDev") task.delay(2, function() characterChat("FOR PLAYERS! say Q on the chat to drop a fake tool.") end) notify("read me!", "if you need help accessing commands, type /ineedhelp on the chat.") end -- Drop GUI Base Setup local screenGui = Instance.new("ScreenGui", player.PlayerGui) screenGui.ResetOnSpawn = false local dropBtn = Instance.new("TextButton", screenGui) dropBtn.Size = UDim2.new(0, 100, 0, 40) dropBtn.Position = UDim2.new(0.5, -50, 0.6, 0) dropBtn.Text = "Drop item" dropBtn.Draggable = true; dropBtn.Active = true dropBtn.MouseButton1Click:Connect(function() pcall(function() local tool = character:FindFirstChildWhichIsA("Tool") if tool and not droppedTools[tool] then local hitbox = Instance.new("Part") hitbox.Size = tool.Handle.Size; hitbox.Transparency = 1; hitbox.CanCollide = true hitbox.CFrame = rootPart.CFrame * CFrame.new(0, 0, -4) hitbox.Parent = workspace droppedTools[tool] = {Part = hitbox, Stealer = nil, DropTime = tick()} inHitboxStatus[tool] = true end end) end) -- FLOATING ICON AND UI CREATION pcall(function() local uiContainer = Instance.new("ScreenGui", player.PlayerGui) uiContainer.Name = "FDT_UI_Container" uiContainer.ResetOnSpawn = false uiContainer.DisplayOrder = 9999 -- Floating Icon Box local iconFrame = Instance.new("Frame", uiContainer) iconFrame.Size = UDim2.new(0, 50, 0, 50) iconFrame.Position = UDim2.new(0.05, 0, 0.2, 0) iconFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 50) iconFrame.Active = true local iconCorner = Instance.new("UICorner", iconFrame) iconCorner.CornerRadius = UDim.new(0, 8) local iconGradient = Instance.new("UIGradient", iconFrame) iconGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)), ColorSequenceKeypoint.new(0.2, Color3.fromRGB(255, 255, 0)), ColorSequenceKeypoint.new(0.4, Color3.fromRGB(0, 255, 0)), ColorSequenceKeypoint.new(0.6, Color3.fromRGB(0, 255, 255)), ColorSequenceKeypoint.new(0.8, Color3.fromRGB(0, 0, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 255)) }) local iconInner = Instance.new("Frame", iconFrame) iconInner.Size = UDim2.new(1, -4, 1, -4) iconInner.Position = UDim2.new(0, 2, 0, 2) iconInner.BackgroundColor3 = Color3.fromRGB(60, 60, 60) local innerCorner = Instance.new("UICorner", iconInner) innerCorner.CornerRadius = UDim.new(0, 6) local iconBtn = Instance.new("TextButton", iconInner) iconBtn.Size = UDim2.new(1, 0, 1, 0) iconBtn.BackgroundTransparency = 1 iconBtn.Text = "FDT" iconBtn.TextColor3 = Color3.fromRGB(240, 240, 240) iconBtn.Font = Enum.Font.SourceSansBold iconBtn.TextSize = 18 -- Draggable functionality for Touch & Mouse local dragging, dragInput, dragStart, startPos iconFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = iconFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) iconFrame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then local delta = input.Position - dragStart iconFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) -- Command Panel Frame local mainFrame = Instance.new("Frame", uiContainer) mainFrame.Size = UDim2.new(0, 340, 0, 360) mainFrame.Position = UDim2.new(0.5, -170, 0.5, -180) mainFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35) mainFrame.Visible = false mainFrame.Active = true local mainCorner = Instance.new("UICorner", mainFrame) mainCorner.CornerRadius = UDim.new(0, 10) -- Draggable Panel local panelDragging, panelDragInput, panelDragStart, panelStartPos mainFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then panelDragging = true panelDragStart = input.Position panelStartPos = mainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then panelDragging = false end end) end end) mainFrame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then panelDragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == panelDragInput and panelDragging then local delta = input.Position - panelDragStart mainFrame.Position = UDim2.new(panelStartPos.X.Scale, panelStartPos.X.Offset + delta.X, panelStartPos.Y.Scale, panelStartPos.Y.Offset + delta.Y) end end) -- Header Title local titleLabel = Instance.new("TextLabel", mainFrame) titleLabel.Size = UDim2.new(1, -40, 0, 35) titleLabel.Position = UDim2.new(0, 10, 0, 0) titleLabel.Text = "FE Drop Tools Control Panel" titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255) titleLabel.Font = Enum.Font.SourceSansBold titleLabel.TextSize = 16 titleLabel.TextXAlignment = Enum.TextXAlignment.Left titleLabel.BackgroundTransparency = 1 -- Close Panel Button local closeBtn = Instance.new("TextButton", mainFrame) closeBtn.Size = UDim2.new(0, 30, 0, 30) closeBtn.Position = UDim2.new(1, -35, 0, 2) closeBtn.Text = "X" closeBtn.TextColor3 = Color3.fromRGB(240, 70, 70) closeBtn.Font = Enum.Font.SourceSansBold closeBtn.TextSize = 18 closeBtn.BackgroundTransparency = 1 closeBtn.MouseButton1Click:Connect(function() mainFrame.Visible = false end) iconBtn.MouseButton1Click:Connect(function() mainFrame.Visible = not mainFrame.Visible end) -- Content Scrolling Canvas local scrollCanvas = Instance.new("ScrollingFrame", mainFrame) scrollCanvas.Size = UDim2.new(1, -20, 1, -45) scrollCanvas.Position = UDim2.new(0, 10, 0, 40) scrollCanvas.BackgroundTransparency = 1 scrollCanvas.CanvasSize = UDim2.new(0, 0, 0, 480) scrollCanvas.ScrollBarThickness = 5 local layout = Instance.new("UIListLayout", scrollCanvas) layout.Padding = UDim.new(0, 12) layout.SortOrder = Enum.SortOrder.LayoutOrder -- Construction UI Items Helper local function addRowLayout(title, desc, canvas) local row = Instance.new("Frame", canvas) row.Size = UDim2.new(1, -5, 0, 85) row.BackgroundColor3 = Color3.fromRGB(45, 45, 45) local rowCorner = Instance.new("UICorner", row) rowCorner.CornerRadius = UDim.new(0, 6) local label = Instance.new("TextLabel", row) label.Size = UDim2.new(1, -10, 0, 20) label.Position = UDim2.new(0, 8, 0, 4) label.Text = title label.TextColor3 = Color3.fromRGB(255, 255, 255) label.Font = Enum.Font.SourceSansBold label.TextSize = 14 label.TextXAlignment = Enum.TextXAlignment.Left label.BackgroundTransparency = 1 local summary = Instance.new("TextLabel", row) summary.Size = UDim2.new(1, -10, 0, 28) summary.Position = UDim2.new(0, 8, 0, 22) summary.Text = desc summary.TextColor3 = Color3.fromRGB(180, 180, 180) summary.Font = Enum.Font.SourceSans summary.TextSize = 12 summary.TextWrapped = true summary.TextXAlignment = Enum.TextXAlignment.Left summary.TextYAlignment = Enum.TextYAlignment.Top summary.BackgroundTransparency = 1 return row end -- COMMAND 1: /drop local dropRow = addRowLayout("/drop | [username] [ALL PLAYERS]", "• immediately pick up tools from players.", scrollCanvas) local dropBox = Instance.new("TextBox", dropRow) dropBox.Size = UDim2.new(0.5, -10, 0, 24) dropBox.Position = UDim2.new(0, 8, 1, -30) dropBox.PlaceholderText = "Username target" dropBox.Text = "" dropBox.BackgroundColor3 = Color3.fromRGB(30, 30, 30) dropBox.TextColor3 = Color3.new(1, 1, 1) dropBox.TextSize = 12 Instance.new("UICorner", dropBox).CornerRadius = UDim.new(0, 4) local dropEnter = Instance.new("TextButton", dropRow) dropEnter.Size = UDim2.new(0.2, -5, 0, 24) dropEnter.Position = UDim2.new(0.5, 2, 1, -30) dropEnter.Text = "Enter" dropEnter.BackgroundColor3 = Color3.fromRGB(60, 60, 60) dropEnter.TextColor3 = Color3.new(1, 1, 1) dropEnter.TextSize = 12 Instance.new("UICorner", dropEnter).CornerRadius = UDim.new(0, 4) dropEnter.MouseButton1Click:Connect(function() if dropBox.Text ~= "" then handleCommand(player, "/drop " .. dropBox.Text) end end) local dropAllBtn = Instance.new("TextButton", dropRow) dropAllBtn.Size = UDim2.new(0.25, -5, 0, 24) dropAllBtn.Position = UDim2.new(0.7, 2, 1, -30) dropAllBtn.Text = "All" dropAllBtn.BackgroundColor3 = Color3.fromRGB(0, 110, 180) dropAllBtn.TextColor3 = Color3.new(1, 1, 1) dropAllBtn.TextSize = 12 Instance.new("UICorner", dropAllBtn).CornerRadius = UDim.new(0, 4) dropAllBtn.MouseButton1Click:Connect(function() handleCommand(player, "/drop all") end) -- COMMAND 2: /equip local equipRow = addRowLayout("/equip | [username]", "• Teleports tool hitbox directly onto player to equip it to them.", scrollCanvas) local equipBox = Instance.new("TextBox", equipRow) equipBox.Size = UDim2.new(0.7, -10, 0, 24) equipBox.Position = UDim2.new(0, 8, 1, -30) equipBox.PlaceholderText = "Username target" equipBox.Text = "" equipBox.BackgroundColor3 = Color3.fromRGB(30, 30, 30) equipBox.TextColor3 = Color3.new(1, 1, 1) equipBox.TextSize = 12 Instance.new("UICorner", equipBox).CornerRadius = UDim.new(0, 4) local equipEnter = Instance.new("TextButton", equipRow) equipEnter.Size = UDim2.new(0.25, -5, 0, 24) equipEnter.Position = UDim2.new(0.7, 2, 1, -30) equipEnter.Text = "Enter" equipEnter.BackgroundColor3 = Color3.fromRGB(60, 60, 60) equipEnter.TextColor3 = Color3.new(1, 1, 1) equipEnter.TextSize = 12 Instance.new("UICorner", equipEnter).CornerRadius = UDim.new(0, 4) equipEnter.MouseButton1Click:Connect(function() if equipBox.Text ~= "" then handleCommand(player, "/equip " .. equipBox.Text) end end) -- COMMAND 3: /stealtoolsfromme local stealRow = addRowLayout("/stealtoolsfromme | [TOGGLE]", "• Allows other players to walk up and take your dropped tools.", scrollCanvas) local stealOn = Instance.new("TextButton", stealRow) stealOn.Size = UDim2.new(0.45, -5, 0, 24) stealOn.Position = UDim2.new(0, 8, 1, -30) stealOn.Text = "ON" stealOn.BackgroundColor3 = Color3.fromRGB(50, 130, 50) stealOn.TextColor3 = Color3.new(1, 1, 1) stealOn.TextSize = 12 Instance.new("UICorner", stealOn).CornerRadius = UDim.new(0, 4) stealOn.MouseButton1Click:Connect(function() handleCommand(player, "/stealtoolsfromme true") end) local stealOff = Instance.new("TextButton", stealRow) stealOff.Size = UDim2.new(0.45, -5, 0, 24) stealOff.Position = UDim2.new(0.45, 8, 1, -30) stealOff.Text = "OFF" stealOff.BackgroundColor3 = Color3.fromRGB(140, 50, 50) stealOff.TextColor3 = Color3.new(1, 1, 1) stealOff.TextSize = 12 Instance.new("UICorner", stealOff).CornerRadius = UDim.new(0, 4) stealOff.MouseButton1Click:Connect(function() handleCommand(player, "/stealtoolsfromme false") end) -- COMMAND 4: /frameupd local frameRow = addRowLayout("/frameupd | [value]", "• Updates execution throttle rates. Minimum value is 1.", scrollCanvas) local frameBox = Instance.new("TextBox", frameRow) frameBox.Size = UDim2.new(0.7, -10, 0, 24) frameBox.Position = UDim2.new(0, 8, 1, -30) frameBox.PlaceholderText = "Numerical rate (e.g. 1)" frameBox.Text = "" frameBox.BackgroundColor3 = Color3.fromRGB(30, 30, 30) frameBox.TextColor3 = Color3.new(1, 1, 1) frameBox.TextSize = 12 Instance.new("UICorner", frameBox).CornerRadius = UDim.new(0, 4) local frameEnter = Instance.new("TextButton", frameRow) frameEnter.Size = UDim2.new(0.25, -5, 0, 24) frameEnter.Position = UDim2.new(0.7, 2, 1, -30) frameEnter.Text = "Enter" frameEnter.BackgroundColor3 = Color3.fromRGB(60, 60, 60) frameEnter.TextColor3 = Color3.new(1, 1, 1) frameEnter.TextSize = 12 Instance.new("UICorner", frameEnter).CornerRadius = UDim.new(0, 4) frameEnter.MouseButton1Click:Connect(function() if frameBox.Text ~= "" then handleCommand(player, "/frameupd " .. frameBox.Text) end end) -- COMMAND 5: /rank local rankRow = addRowLayout("/rank | [username] [rank]", "• Grant special or admin script privileges to specified target.", scrollCanvas) local rankTargetBox = Instance.new("TextBox", rankRow) rankTargetBox.Size = UDim2.new(0.4, -6, 0, 24) rankTargetBox.Position = UDim2.new(0, 8, 1, -30) rankTargetBox.PlaceholderText = "User" rankTargetBox.Text = "" rankTargetBox.BackgroundColor3 = Color3.fromRGB(30, 30, 30) rankTargetBox.TextColor3 = Color3.new(1, 1, 1) rankTargetBox.TextSize = 11 Instance.new("UICorner", rankTargetBox).CornerRadius = UDim.new(0, 4) local rankTypeBox = Instance.new("TextBox", rankRow) rankTypeBox.Size = UDim2.new(0.3, -6, 0, 24) rankTypeBox.Position = UDim2.new(0.4, 6, 1, -30) rankTypeBox.PlaceholderText = "admin/none" rankTypeBox.Text = "" rankTypeBox.BackgroundColor3 = Color3.fromRGB(30, 30, 30) rankTypeBox.TextColor3 = Color3.new(1, 1, 1) rankTypeBox.TextSize = 11 Instance.new("UICorner", rankTypeBox).CornerRadius = UDim.new(0, 4) local rankEnter = Instance.new("TextButton", rankRow) rankEnter.Size = UDim2.new(0.25, -4, 0, 24) rankEnter.Position = UDim2.new(0.7, 4, 1, -30) rankEnter.Text = "Enter" rankEnter.BackgroundColor3 = Color3.fromRGB(60, 60, 60) rankEnter.TextColor3 = Color3.new(1, 1, 1) rankEnter.TextSize = 12 Instance.new("UICorner", rankEnter).CornerRadius = UDim.new(0, 4) rankEnter.MouseButton1Click:Connect(function() if rankTargetBox.Text ~= "" and rankTypeBox.Text ~= "" then handleCommand(player, "/rank " .. rankTargetBox.Text .. " " .. rankTypeBox.Text) end end) -- Dynamic Rainbow Shift Logic loop task.spawn(function() local r = 0 while task.wait(0.03) do r = r + 0.01 if r > 1 then r = 0 end iconGradient.Rotation = r * 360 end end) end) -- 10. MAIN PROCESS LOOP RunService.RenderStepped:Connect(function(dt) local isLagPaused = (tick() % 51) >= 50 local activeCount = 0 for _ in pairs(droppedTools) do activeCount = activeCount + 1 end if activeCount == 0 then return end frameCounter = (frameCounter + 1) % (frameUpdate + activeCount) -- Process Dropped/Equipped Tools for tool, info in pairs(droppedTools) do pcall(function() local hitbox = info.Part local stealer = info.Stealer if hitbox.Position.Y < VOID_LEVEL then recall(tool) return end -- Drop on Death if stealer and stealer.Character then local hum = stealer.Character:FindFirstChildOfClass("Humanoid") if not hum or hum.Health <= 0 then info.Stealer = nil; info.DropTime = tick(); inHitboxStatus[tool] = true; hitbox.CanCollide = true stealer = nil end end local ownerDist = (rootPart.Position - hitbox.Position).Magnitude if inHitboxStatus[tool] and ownerDist > 5 then task.delay(0.1, function() inHitboxStatus[tool] = false end) end if stealingEnabled and not stealer and (tick() - info.DropTime) > 1 then for _, p in ipairs(Players:GetPlayers()) do if p ~= player and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then local hum = p.Character:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 and (p.Character.HumanoidRootPart.Position - hitbox.Position).Magnitude < 3.5 then info.Stealer = p; break end end end end if not stealer and not inHitboxStatus[tool] and (tick() - info.DropTime) > 1 then if ownerDist < 3.5 then recall(tool); return end end local hand = character:FindFirstChild("RightHand") or character:FindFirstChild("Right Arm") local attach = hand and (hand:FindFirstChild("RightGripAttachment") or hand) if attach then local targetPos = hitbox.Position if stealer and stealer.Character then local sHand = stealer.Character:FindFirstChild("RightHand") or stealer.Character:FindFirstChild("Right Arm") if sHand then local offset = sHand.CFrame * CFrame.new(0, 0, -1) targetPos = offset.Position; hitbox.CFrame = offset end end local tRel = rootPart.CFrame:PointToObjectSpace(targetPos) local hRel = rootPart.CFrame:PointToObjectSpace(attach.WorldPosition) -- STABILITY CALCULATION local _, yOrientation, _ = rootPart.CFrame:ToOrientation() local counterRotation = CFrame.Angles(0, yOrientation, 0) local lookOrientation = CFrame.new(Vector3.zero, hitbox.CFrame.LookVector * Vector3.new(1, 0, 1)) tool.Grip = counterRotation * lookOrientation * CFrame.new((tRel - hRel) * -1) end if not isLagPaused then if frameCounter == 0 then tool.Parent = backpack; tool.Parent = character elseif tool.Parent ~= character then tool.Parent = character end end end) end end) -- RE-INIT player.CharacterAdded:Connect(function(newChar) for tool, info in pairs(droppedTools) do if info.Part then info.Part:Destroy() end end table.clear(droppedTools); table.clear(inHitboxStatus) character = newChar; rootPart = character:WaitForChild("HumanoidRootPart"); backpack = player:WaitForChild("Backpack") end) end -- 11. INITIAL QUESTION UI PROMPT pcall(function() local promptGui = Instance.new("ScreenGui", player.PlayerGui) promptGui.Name = "FDT_Prompt_Container" promptGui.ResetOnSpawn = false promptGui.DisplayOrder = 10000 local promptFrame = Instance.new("Frame", promptGui) promptFrame.Size = UDim2.new(0, 300, 0, 140) promptFrame.Position = UDim2.new(0.5, -150, 0.4, -70) promptFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) promptFrame.Active = true Instance.new("UICorner", promptFrame).CornerRadius = UDim.new(0, 8) local questionLabel = Instance.new("TextLabel", promptFrame) questionLabel.Size = UDim2.new(1, -20, 0, 50) questionLabel.Position = UDim2.new(0, 10, 0, 10) questionLabel.Text = "Would you like chat logs?" questionLabel.TextColor3 = Color3.new(1, 1, 1) questionLabel.Font = Enum.Font.SourceSansBold questionLabel.TextSize = 18 questionLabel.BackgroundTransparency = 1 -- Yes Button local yesBtn = Instance.new("TextButton", promptFrame) yesBtn.Size = UDim2.new(0.45, -5, 0, 40) yesBtn.Position = UDim2.new(0, 10, 1, -55) yesBtn.Text = "yesserski" yesBtn.BackgroundColor3 = Color3.fromRGB(50, 120, 50) yesBtn.TextColor3 = Color3.new(1, 1, 1) yesBtn.Font = Enum.Font.SourceSansBold yesBtn.TextSize = 14 Instance.new("UICorner", yesBtn).CornerRadius = UDim.new(0, 4) -- No Button local noBtn = Instance.new("TextButton", promptFrame) noBtn.Size = UDim2.new(0.45, -5, 0, 40) noBtn.Position = UDim2.new(0.55, -5, 1, -55) noBtn.Text = "no bradar pak u" noBtn.BackgroundColor3 = Color3.fromRGB(140, 50, 50) noBtn.TextColor3 = Color3.new(1, 1, 1) noBtn.Font = Enum.Font.SourceSansBold noBtn.TextSize = 14 Instance.new("UICorner", noBtn).CornerRadius = UDim.new(0, 4) yesBtn.MouseButton1Click:Connect(function() allowChatLogs = true promptGui:Destroy() runMainScript() end) noBtn.MouseButton1Click:Connect(function() allowChatLogs = false promptGui:Destroy() runMainScript() end) end)