-- Roblox LocalScript GUI: Armor protector (manual tool name + value), mobile draggable, respawn-safe local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local player = Players.LocalPlayer -- helper to get character + humanoid safely local function getCharHum() local char = player.Character or player.CharacterAdded:Wait() local hum = char:WaitForChild("Humanoid") return char, hum end -- find any tool in backpack that matches the name (user input) local function getArmorTool(name) if not name or name == "" then return nil end local backpack = player:WaitForChild("Backpack") local tool = backpack:FindFirstChild(name) if tool and tool:FindFirstChild("RemoteFunction") then return tool end return nil end -- GUI local gui = Instance.new("ScreenGui") gui.Name = "ArmorProtectGUI" gui.ResetOnSpawn = true gui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 260, 0, 200) frame.Position = UDim2.new(0.5, -130, 0.5, -100) frame.BackgroundColor3 = Color3.fromRGB(20,20,26) frame.BorderSizePixel = 0 frame.Parent = gui Instance.new("UICorner", frame).CornerRadius = UDim.new(0,12) local title = Instance.new("TextLabel") title.Size = UDim2.new(1,0,0,30) title.BackgroundTransparency = 1 title.Text = "Armor Protector" title.Font = Enum.Font.GothamBold title.TextSize = 16 title.TextColor3 = Color3.fromRGB(255,255,255) title.Parent = frame local status = Instance.new("TextLabel") status.Size = UDim2.new(1,-10,0,18) status.Position = UDim2.new(0,5,0,28) status.BackgroundTransparency = 1 status.Text = "Idle" status.Font = Enum.Font.Gotham status.TextSize = 12 status.TextColor3 = Color3.fromRGB(180,180,180) status.Parent = frame -- armor name input local nameBox = Instance.new("TextBox") nameBox.Size = UDim2.new(1,-20,0,28) nameBox.Position = UDim2.new(0,10,0,52) nameBox.PlaceholderText = "Armor Tool Name" nameBox.Text = "Omega Death Armour" nameBox.Font = Enum.Font.Gotham nameBox.TextSize = 14 nameBox.BackgroundColor3 = Color3.fromRGB(34,34,42) nameBox.TextColor3 = Color3.fromRGB(255,255,255) nameBox.BorderSizePixel = 0 nameBox.Parent = frame Instance.new("UICorner", nameBox).CornerRadius = UDim.new(0,8) -- value input (max 6,000,000) local valueBox = Instance.new("TextBox") valueBox.Size = UDim2.new(1,-20,0,28) valueBox.Position = UDim2.new(0,10,0,86) valueBox.PlaceholderText = "Protection Value (max 6000000)" valueBox.Text = "11375" valueBox.Font = Enum.Font.Gotham valueBox.TextSize = 14 valueBox.BackgroundColor3 = Color3.fromRGB(34,34,42) valueBox.TextColor3 = Color3.fromRGB(255,255,255) valueBox.BorderSizePixel = 0 valueBox.Parent = frame Instance.new("UICorner", valueBox).CornerRadius = UDim.new(0,8) local applyBtn = Instance.new("TextButton") applyBtn.Size = UDim2.new(1,-20,0,34) applyBtn.Position = UDim2.new(0,10,0,128) applyBtn.Text = "APPLY" applyBtn.Font = Enum.Font.GothamBold applyBtn.TextSize = 14 applyBtn.BackgroundColor3 = Color3.fromRGB(0,170,120) applyBtn.TextColor3 = Color3.new(1,1,1) applyBtn.BorderSizePixel = 0 applyBtn.Parent = frame Instance.new("UICorner", applyBtn).CornerRadius = UDim.new(0,8) -- draggable (mobile + pc) local dragging = false local dragInput, dragStart, startPos frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) frame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UIS.InputChanged:Connect(function(input) if dragging and input == dragInput then local delta = input.Position - dragStart frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) -- apply logic applyBtn.MouseButton1Click:Connect(function() local toolName = nameBox.Text local value = tonumber(valueBox.Text) or 0 if value > 6000000 then value = 6000000 end local tool = getArmorTool(toolName) if not tool then status.Text = "Tool not found" return end local remote = tool:FindFirstChild("RemoteFunction") if not remote then status.Text = "No RemoteFunction" return end local char, hum = getCharHum() local args = { [1] = "protect", [2] = {char, hum, value} } local success, err = pcall(function() remote:InvokeServer(unpack(args)) end) if success then status.Text = "Applied: " .. tostring(value) else status.Text = "Error" end end)