
KeylessUniversal

-- BOT DISGUISE SYSTEM (FULL ONE SCRIPT)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
------------------------------------------------
-- CHARACTER REFRESH HANDLING
------------------------------------------------
local char, humanoid, root
local function bindCharacter(c)
char = c
humanoid = char:WaitForChild("Humanoid")
root = char:WaitForChild("HumanoidRootPart")
end
bindCharacter(player.Character or player.CharacterAdded:Wait())
player.CharacterAdded:Connect(bindCharacter)
------------------------------------------------
-- GUI
------------------------------------------------
local gui = Instance.new("ScreenGui")
gui.Name = "BotDisguiseGui"
gui.Parent = player:WaitForChild("PlayerGui")
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 260, 0, 240)
frame.Position = UDim2.new(0.05, 0, 0.3, 0)
frame.BackgroundColor3 = Color3.fromRGB(0,0,0)
frame.Active = true
frame.Draggable = true
frame.Parent = gui
local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(255,0,0)
stroke.Thickness = 2
stroke.Parent = frame
local box = Instance.new("TextBox")
box.Size = UDim2.new(0, 220, 0, 40)
box.Position = UDim2.new(0, 20, 0, 15)
box.PlaceholderText = "Pathfind / Common / Sentient Entity"
box.TextColor3 = Color3.fromRGB(255,255,255)
box.BackgroundColor3 = Color3.fromRGB(0,0,0)
box.BorderColor3 = Color3.fromRGB(255,0,0)
box.Parent = frame
local setBtn = Instance.new("TextButton")
setBtn.Size = UDim2.new(0, 220, 0, 40)
setBtn.Position = UDim2.new(0, 20, 0, 70)
setBtn.Text = "Change NPC Type"
setBtn.TextColor3 = Color3.fromRGB(255,255,255)
setBtn.BackgroundColor3 = Color3.fromRGB(0,0,0)
setBtn.BorderColor3 = Color3.fromRGB(255,0,0)
setBtn.Parent = frame
local controlBtn = Instance.new("TextButton")
controlBtn.Size = UDim2.new(0, 220, 0, 40)
controlBtn.Position = UDim2.new(0, 20, 0, 120)
controlBtn.Text = "Let him Control"
controlBtn.TextColor3 = Color3.fromRGB(255,255,255)
controlBtn.BackgroundColor3 = Color3.fromRGB(0,0,0)
controlBtn.BorderColor3 = Color3.fromRGB(255,0,0)
controlBtn.Parent = frame
local disguiseBtn = Instance.new("TextButton")
disguiseBtn.Size = UDim2.new(0, 220, 0, 40)
disguiseBtn.Position = UDim2.new(0, 20, 0, 170)
disguiseBtn.Text = "Disguise as NPC"
disguiseBtn.TextColor3 = Color3.fromRGB(255,255,255)
disguiseBtn.BackgroundColor3 = Color3.fromRGB(0,0,0)
disguiseBtn.BorderColor3 = Color3.fromRGB(255,0,0)
disguiseBtn.Parent = frame
------------------------------------------------
-- STATE
------------------------------------------------
local mode = ""
local active = false
local disguised = false
local lastAttacker = nil
------------------------------------------------
-- DISGUISE FUNCTION
------------------------------------------------
local function disguiseAsNPC()
if not char then return end
disguised = not disguised
-- reset appearance if toggled off
if not disguised then
print("Disguise removed")
return
end
-- remove accessories
for _, v in ipairs(char:GetChildren()) do
if v:IsA("Accessory") then
v:Destroy()
end
end
-- simple NPC coloring
local bodyColors = char:FindFirstChildOfClass("BodyColors")
if bodyColors then
local c = Color3.fromRGB(163, 162, 165)
bodyColors.HeadColor3 = c
bodyColors.LeftArmColor3 = c
bodyColors.RightArmColor3 = c
bodyColors.LeftLegColor3 = c
bodyColors.RightLegColor3 = c
bodyColors.TorsoColor3 = c
end
-- default NPC face
local head = char:FindFirstChild("Head")
if head then
local face = head:FindFirstChild("face")
if face then
face.Texture = "rbxasset://textures/face.png"
end
end
print("Disguised as NPC")
end
------------------------------------------------
-- ATTACK DETECTION (simple)
------------------------------------------------
local function trackDamage()
if not humanoid then return end
local lastHealth = humanoid.Health
humanoid.HealthChanged:Connect(function(h)
if h < lastHealth then
-- find nearest “attacker”
local closest, dist = nil, math.huge
for _, plr in pairs(Players:GetPlayers()) do
if plr ~= player and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
local d = (plr.Character.HumanoidRootPart.Position - root.Position).Magnitude
if d < dist and d < 60 then
dist = d
closest = plr.Character
end
end
end
lastAttacker = closest
end
lastHealth = h
end)
end
------------------------------------------------
-- HELPERS
------------------------------------------------
local function getTarget()
return workspace:FindFirstChild("TargetDummy")
end
local function isBeingWatched()
for _, plr in pairs(Players:GetPlayers()) do
if plr ~= player then
local c = plr.Character
if c and c:FindFirstChild("Head") and root then
local head = c.Head
local dir = (root.Position - head.Position).Unit
local look = head.CFrame.LookVector
if look:Dot(dir) > 0.75 then
return true
end
end
end
end
return false
end
local function flee(attacker)
if not attacker or not attacker:FindFirstChild("HumanoidRootPart") then return end
local dir = (root.Position - attacker.HumanoidRootPart.Position).Unit
humanoid.WalkSpeed = 24
humanoid:MoveTo(root.Position + dir * 60)
end
------------------------------------------------
-- UI BUTTONS
------------------------------------------------
setBtn.MouseButton1Click:Connect(function()
mode = box.Text
end)
controlBtn.MouseButton1Click:Connect(function()
active = not active
if active then
trackDamage()
end
end)
disguiseBtn.MouseButton1Click:Connect(disguiseAsNPC)
------------------------------------------------
-- MAIN LOOP
------------------------------------------------
RunService.RenderStepped:Connect(function()
if not active then return end
if not humanoid or not root then return end
-- PRIORITY: FLEE IF ATTACKED
if lastAttacker and lastAttacker.Parent then
flee(lastAttacker)
return
end
if mode == "Pathfind" then
local target = getTarget()
if target then
humanoid:MoveTo(target.Position)
end
elseif mode == "Common" then
if math.random(1,40) == 1 then
local offset = Vector3.new(math.random(-20,20),0,math.random(-20,20))
humanoid:MoveTo(root.Position + offset)
end
elseif mode == "Sentient Entity" then
if isBeingWatched() then
humanoid.WalkSpeed = 0
else
humanoid.WalkSpeed = 16
end
end
end)No comments yet for this script.



