
KeylessUniversal

-- 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)



also fe not just cilent sided adding a money changer and rank changer soon