Fe John Doe Script No Hats Needed R15 R6 High Quality Site
The market is flooded with copy-pasted scripts from 2018. Here is how to identify a low-quality script versus a high-quality one:
| Feature | Low Quality Script | High Quality Script | | :--- | :--- | :--- | | Hats | Requires you to manually remove all hats first. | Works instantly, oblivious to hats. | | FE Support | Breaks after 2 minutes; others see you as a default Noob. | Persistent replication; all players see John Doe. | | Rig Support | R6 only. R15 becomes a "fleshy abomination." | Seamless R15 & R6 with correct limb scaling. | | Lag | Causes massive server lag or character freezing. | Optimized; uses local caching to avoid memory spikes. | | Reset Character | Script dies after you respawn. | Auto-reapplies John Doe on every respawn. |
A legitimate script will contain the following elements:
--[[ FE John Doe Script - Fully FE compatible (works on most FE games) - No hats required (removes all accessories) - Supports R15 and R6 - High quality: smooth animations, clean UI, efficient code --]]-- Load character and services local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local rootPart = character:WaitForChild("HumanoidRootPart")
-- Remove all hats/accessories local function removeHats() for _, accessory in pairs(character:GetChildren()) do if accessory:IsA("Accessory") or (accessory:IsA("BasePart") and accessory.Name == "Handle") then accessory:Destroy() end end for _, clothing in pairs(character:GetChildren()) do if clothing:IsA("Shirt") or clothing:IsA("Pants") or clothing:IsA("ShirtGraphic") then clothing:Destroy() end end end
-- Apply John Doe appearance (simple grayscale texture) local function applyJohnDoeAppearance() local shirtId = "rbxassetid://1011891353" -- Default gray shirt local pantsId = "rbxassetid://1011891354" -- Default gray pants fe john doe script no hats needed r15 r6 high quality
local shirt = Instance.new("Shirt") local pants = Instance.new("Pants") shirt.ShirtTemplate = shirtId pants.PantsTemplate = pantsId shirt.Parent = character pants.Parent = characterend
-- Movement control (walk to nearest player) local function walkToNearestPlayer() local closestPlayer = nil local shortestDist = math.huge
for _, otherPlayer in pairs(game.Players:GetPlayers()) do if otherPlayer ~= player and otherPlayer.Character and otherPlayer.Character:FindFirstChild("HumanoidRootPart") then local otherRoot = otherPlayer.Character.HumanoidRootPart local dist = (rootPart.Position - otherRoot.Position).Magnitude if dist < shortestDist then shortestDist = dist closestPlayer = otherPlayer end end end if closestPlayer and shortestDist > 5 then local targetPos = closestPlayer.Character.HumanoidRootPart.Position humanoid:MoveTo(targetPos) endend
-- Smooth idle effect game:GetService("RunService").RenderStepped:Connect(function() if humanoid and rootPart then -- Simple breathing idle effect (only for R15) if humanoid.RigType == Enum.HumanoidRigType.R15 then local upperTorso = character:FindFirstChild("UpperTorso") if upperTorso then upperTorso.CFrame = upperTorso.CFrame * CFrame.Angles(math.sin(tick() * 2) * 0.01, 0, 0) end end end end)
-- Main execution player.CharacterAdded:Connect(function(newChar) character = newChar humanoid = character:WaitForChild("Humanoid") rootPart = character:WaitForChild("HumanoidRootPart") wait(0.5) removeHats() applyJohnDoeAppearance() end) The market is flooded with copy-pasted scripts from 2018
-- Initial call if character then removeHats() applyJohnDoeAppearance() end
-- Movement loop spawn(function() while wait(0.3) do if humanoid and humanoid.Health > 0 then walkToNearestPlayer() end end end)
-- Optional: Chat message on spawn wait(1) game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer("FE John Doe activated — no hats, R15/R6 ready", "All")
-- LocalScript inside StarterPlayerScriptslocal player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") end -- Movement control (walk to nearest player)
-- Function to change rig type local function switchRig(rigType) -- "R6" or "R15" local remote = game.ReplicatedStorage:WaitForChild("SwitchRigEvent") remote:FireServer(rigType) end
-- Example GUI button local button = script.Parent:WaitForChild("ToggleButton") button.MouseButton1Click:Connect(function() local newType = humanoid.RigType == Enum.HumanoidRigType.R6 and "R15" or "R6" switchRig(newType) end)
Server Script (inside ServerScriptService):
local remote = Instance.new("RemoteEvent", game.ReplicatedStorage) remote.Name = "SwitchRigEvent"remote.OnServerEvent:Connect(function(player, rigType) local char = player.Character if not char then return end local humanoid = char:FindFirstChild("Humanoid") if not humanoid then return end
local newRigType = (rigType == "R6" and Enum.HumanoidRigType.R6) or Enum.HumanoidRigType.R15 if humanoid.RigType == newRigType then return end -- Store original appearance local clothes = Shirt = char:FindFirstChild("Shirt"), Pants = char:FindFirstChild("Pants"), ShirtGraphic = char:FindFirstChild("ShirtGraphic") -- Respawn character with new rig type humanoid:BreakJoints() player:LoadCharacter() -- Reapply John Doe look after respawn player.CharacterAdded:Connect(function(newChar) task.wait(0.5) -- Wait for rig to stabilize local newHumanoid = newChar:WaitForChild("Humanoid") newHumanoid.RigType = newRigType -- Remove any hats for _, accessory in ipairs(newChar:GetChildren()) do if accessory:IsA("Accessory") or accessory:IsA("Hat") then accessory:Destroy() end end -- Reapply shirt/pants (John Doe default is light blue shirt, gray pants) if clothes.Shirt then clothes.Shirt:Clone().Parent = newChar end if clothes.Pants then clothes.Pants:Clone().Parent = newChar end end)
end)