local Rayfield = loadstring(game:HttpGet('https://[Log in to view URL]'))()




Rayfield:Notify({
   Title = "Notification",
   Content = "Required hats are listed in the discord server. made by if0undy0u",
   Duration = 6.5,
   Image = 4483362458,
   Actions = { -- Notification Buttons
      Ignore = {
         Name = "Okay!",
         Callback = function()
         print("The user tapped Okay!")
      end
   },
},
})


local Window = Rayfield:CreateWindow({
   Name = "ZenOHub Demo",
   LoadingTitle = "Suite",
   LoadingSubtitle = "Ui by MrNobody",
   ConfigurationSaving = {
      Enabled = true,
      FolderName = nil, -- Create a custom folder for your hub/game
      FileName = "Big Hub"
   },
   Discord = {
      Enabled = nil,
      Invite = "mZnyNUgZF6", -- The Discord invite code, do not include discord.gg/. E.g. discord.gg/ABCD would be ABCD
      RememberJoins = false -- Set this to false to make them join the discord every time they load it up
   },
   KeySystem = false, -- Set this to true to use our key system
   KeySettings = {
      Title = "Untitled",
      Subtitle = "Key System",
      Note = "No method of obtaining the key is provided",
      FileName = "Key", -- It is recommended to use something unique as other scripts using Rayfield may overwrite your key file
      SaveKey = true, -- The user's key will be saved, but if you change the key, they will be unable to use your script
      GrabKeyFromSite = false, -- If this is true, set Key below to the RAW site you would like Rayfield to get the key from
      Key = {"Hello"} -- List of keys that will be accepted by the system, can be RAW file links (pastebin, github etc) or simple strings ("hello","key22")
   }
})


local Tab = Window:CreateTab("FE Scripts", 4483362458) -- Title, Image

local Section = Tab:CreateSection("Please make sure you are using the required hats and are R6")



local Button = Tab:CreateButton({
   Name = "Blind Reaper",
   Callback = function()
    loadstring(game:HttpGet('https://[Log in to view URL]'))()
   end,
})


local Button = Tab:CreateButton({
   Name = "Bomber",
   Callback = function()
        loadstring(game:HttpGet('https://[Log in to view URL]'))()
   end,
})


local Button = Tab:CreateButton({
   Name = "Sword",
   Callback = function()
    loadstring(game:HttpGet('https://[Log in to view URL]'))()
   end,
})


local Button = Tab:CreateButton({
   Name = "Star Glitcher",
   Callback = function()
    loadstring(game:HttpGet('https://[Log in to view URL]'))()
   end,
})


local Button = Tab:CreateButton({
   Name = "Hat Aura (Uses any hats and is R15 and R6)",
   Callback = function()
   for i, v in pairs(game.Players.LocalPlayer.Character:GetChildren()) do
    if v:IsA("Accessory") then
        if v.Handle:FindFirstChildOfClass("Mesh") or v.Handle:FindFirstChildOfClass("SpecialMesh") then
            if v.Handle:FindFirstChildOfClass("SpecialMesh") then
                print("SpecialMesh")
            end
        end
    end
end

local LC = game.Players.LocalPlayer
local Name = LC.Name
local Char = LC.Character

local Humanoid = Char:FindFirstChildWhichIsA("Humanoid")
local Root = Humanoid.RootPart

local Accessories = Humanoid:GetAccessories()

local Target = Char
local TargetPos = Target.Humanoid.RootPart.Position

local Commands = {
	".Offset <number>",
	".Speed <number>",
	".Height <number>",
	".Power <number>",
	".Orbit <player> or Nearest / Farthest / Me / Random",
	".BlockHats",
	".Cmds"
}

local Offset = 10
local Rotation = 0
local Speed = 1
local Height = 2

local EditingPos = false

local Power = 50000
local Damping = 500

local Mode = 1

local NormalSpin = true

function findName(pname)
	for i, v in ipairs(game.Players:GetPlayers()) do
		if pname then
			if string.match(v.Name:lower(), pname:lower()) or string.match(v.Character.Humanoid.DisplayName:lower(), pname:lower()) then
				return v.Name
			end
		else
		end
	end
end

function findChar(pname)
	return game.Players:FindFirstChild(findName(pname)).Character
end

local hats = {}

if Target then
	-- Loop through each hat in the target player's character
	local character = Target
	for _, hat in ipairs(character:GetChildren()) do
		if hat:IsA("Accessory") then
			hats[#hats+1] = hat
		end
	end
end

local hatCount = #hats
if hatCount > 0 then
	local angle = math.pi * 2 / hatCount
	-- Loop through each hat again to add bodyposition and move hats
	for i, hat in ipairs(hats) do
		-- Add bodyposition to the handle and make it massless
		local handle = hat.Handle
		handle.AccessoryWeld:Remove()

		if handle then
			local bodyPosition = Instance.new("BodyPosition", handle)
			bodyPosition.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
			bodyPosition.P = Power
			bodyPosition.D = Damping

			local bodyGyro = Instance.new("BodyGyro", handle)
			bodyGyro.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
			bodyGyro.P = Power
			bodyGyro.D = Damping

			-- Calculate position based on angle and Offset
			local x = math.sin(Rotation + angle * (i-1)) * Offset
			local z = math.cos(Rotation + angle * (i-1)) * Offset

			-- Set position of bodyposition
			bodyPosition.Position = TargetPos + Vector3.new(x, Height, z)
		end
	end

	-- Rotate hats around target player
	local function myCoroutine()
		while wait(-9e999) do
			Rotation = Rotation + (Speed / 20)
			if Rotation >= math.pi * 2 then
				Rotation = 0
			end

			for i, hat in ipairs(hats) do
				local handle = hat.Handle
				local x = math.sin(Rotation + angle * (i-1)) * Offset
				local z = math.cos(Rotation + angle * (i-1)) * Offset

				handle.BodyPosition.P = Power
				handle.Velocity = Vector3.new(0, 5, 0)
				handle.Massless = true
				handle.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0, 0, 0)

				handle.BodyGyro.CFrame = CFrame.lookAt(handle.Position + Vector3.new(0, handle.Position.Y, 0), Root.Position)

				if NormalSpin == true then
					handle.BodyPosition.Position = TargetPos + Vector3.new(x + Target.Humanoid.MoveDirection.X, Height, z + Target.Humanoid.MoveDirection.Z)
				end

				if EditingPos == false then
					TargetPos = Target.Humanoid.RootPart.Position
				end
			end
		end
	end

	local myWrappedCoroutine = coroutine.wrap(myCoroutine)

	myWrappedCoroutine()
end

function Mode2()
	if Mode == 2 then
		local Angle = math.pi * 2 / #hats -- number of hats in the circle

		function Loop()
			if Mode == 2 then
				-- Get the orientation of the root part
				local RootOrientation = Target.Humanoid.RootPart.CFrame - Target.Humanoid.RootPart.Position
				local RootRotation = RootOrientation

				for i, Hat in ipairs(hats) do
					local HatRotation = RootRotation.Y + Angle * (i - 1) + Speed * tick()
					local x = math.sin(HatRotation) * Offset
					local z = math.cos(HatRotation) * Offset

					local HatPos = TargetPos + RootOrientation * Vector3.new(x, z, -Height)
					Hat.Handle.BodyPosition.Position = HatPos
				end

				wait()
				Loop()
			end
		end

		Loop()

		for i, Hat in ipairs(hats) do
			local Handle = Hat.Handle

			Hat.Handle.BodyPosition.Position = TargetPos
		end
	end
end


function Mode3()
	if Mode == 3 then
		for i = 1, #Accessories do
			Accessories[i].Handle.BodyPosition.Position = TargetPos + Vector3.new(0, Height, 0)
			wait(.1)
		end
		wait()
		Mode3()
	end
end

function Mode4 ()
	if Mode == 4 then
		if not LC:GetMouse().Target then else
			TargetPos = LC:GetMouse().Hit.Position
		end
		wait(-9e999)
		Mode4()
	end
end

function Mode5 ()
	local spiralPitch = 0
	local spiralAngle = 0

	function Loop ()
		if Mode == 5 then
			spiralAngle = spiralAngle + Speed / 300
			if spiralAngle >= math.pi * 10 then
				spiralAngle = 0
			end

			for i, hat in ipairs(hats) do
				local handle = hat.Handle
				if handle then
					local x = math.sin(spiralAngle + i*spiralPitch) * (i*Offset / 8)
					local y = i*(Height / 3)
					local z = math.cos(spiralAngle + i*spiralPitch) * (i*Offset / 8)
					handle.BodyPosition.Position = TargetPos - Vector3.new(0, 2, 0) + Vector3.new(x, y, z)
				end
			end
		end
		spiralPitch += Speed / 70
		wait(-9e999)
		Loop()
	end

	Loop()
end

function Mode6 ()
	local stack1 = {}
	local stack2 = {}

	for i = 1, #Accessories do
		if i <= #Accessories / 2 then
			stack1[#stack1 + 1] = Accessories[i]
		else
			stack2[#stack2 + 1] = Accessories[i]
		end
	end

	function Loop()
		if Mode == 6 then
			local angle = tick() * Speed
			local x = math.sin(angle)* Offset
			local z = math.cos(angle)* Offset

			for i, v in ipairs(stack1) do
				v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, i+Height,-z)
			end

			for i, v in ipairs(stack2) do
				v.Handle.BodyPosition.Position = TargetPos + Vector3.new(-x, i+Height,z)
			end
			wait()
			Loop()
		end
	end

	Loop()
end

function Mode7()
	local stack1 = {}
	local stack2 = {}
	local stack3 = {}

	for i = 1, #Accessories do
		if i < #Accessories / 3 then
			stack1[#stack1 + 1] = Accessories[i]
		elseif i < #Accessories / 3 * 2 or i == #Accessories then
			stack2[#stack2 + 1] = Accessories[i]
		else
			stack3[#stack3 + 1] = Accessories[i]
		end
	end


	function Loop()
		if Mode == 7 then
			local angle = tick() * Speed
			local x = math.sin(angle)* Offset
			local z = math.cos(angle)* Offset

			for i, v in ipairs(stack1) do
				v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, i+Height, -z)
			end

			for i, v in ipairs(stack2) do
				v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, i+Height, z)
			end

			for i, v in ipairs(stack3) do
				v.Handle.BodyPosition.Position = TargetPos + Vector3.new(-x, i+Height, -z)
			end
			wait()
			Loop()
		end
	end

	Loop()
end

function Mode8()
	if Mode == 8 then
		local forward = workspace.CurrentCamera.CFrame.LookVector
		local right = workspace.CurrentCamera.CFrame.RightVector
		local up = workspace.CurrentCamera.CFrame.UpVector
		local angle = math.pi * 2 / #hats * tick()

		for i, hat in ipairs(hats) do
			local handle = hat.Handle
			local x = right * (math.sin(angle * (i-1)) * Offset)
			local y = up * (math.cos(angle * (i-1)) * Offset)
			local z = forward * (Height+10)
			local pos = workspace.CurrentCamera.CFrame.LookVector + z + x + y
			local look = (workspace.CurrentCamera.CFrame.LookVector - pos).unit

			handle.BodyPosition.Position = pos + TargetPos + Vector3.new(0, 2, 0)
		end

		wait()
		Mode8()
	end
end

function Mode9 ()
	local Left = {}
	local Right = {}

	for i, v in pairs(Accessories) do
		if (#Left < #Accessories / 2) then
			Left[#Left + 1] = v
		else
			Right[#Right + 1] = v
		end
	end


	function Loop ()
		if Mode == 9 then
			for i, v in ipairs(Left) do
				local angle = tick() * Speed
				local x = math.sin(angle + i) * Offset
				local z = math.cos(angle + i) * Offset


				v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, Height, z)
			end

			for i, v in ipairs(Right) do
				local angle = tick() * Speed
				local x = math.sin(angle + i) * Offset
				local z = math.cos(angle + i) * Offset


				v.Handle.BodyPosition.Position = TargetPos + Vector3.new(z, Height, x)
			end
			wait()
			Loop()
		end
	end

	Loop()
end

function Mode10 ()
	local Left = {}
	local Right = {}

	for i, v in pairs(Accessories) do
		if (#Left < #Accessories / 2) then
			Left[#Left + 1] = v
		else
			Right[#Right + 1] = v
		end
	end


	function Loop ()
		if Mode == 10 then
			for i, v in ipairs(Left) do
				local angle = tick() * Speed
				local x = math.sin(angle + i) * Offset
				local z = math.cos(angle + i) * Offset

				v.Handle.BodyPosition.Position = TargetPos + Vector3.new(z, x + Height, -x)
			end

			for i, v in ipairs(Right) do
				local angle = tick() * Speed
				local x = math.sin(angle + i) * Offset
				local z = math.cos(angle + i) * Offset

				v.Handle.BodyPosition.Position = TargetPos + Vector3.new(-x, x + Height, -z)
			end
			wait()
			Loop()
		end
	end

	Loop()
end

function Mode11 ()
	if Mode == 11 then
		for i, v in pairs(Accessories) do
			local angle = tick() * Speed
			local x = math.sin(angle) * Offset
			local z = math.cos(angle) * Offset

			v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, Height, z)
		end
		wait()
		Mode11()
	end
end

function Mode12 ()
	local Circle1 = {}
	local Circle2 = {}
	for i, v in pairs(Accessories) do
		if (#Circle1 < #Accessories / 2) then
			Circle1[#Circle1 + 1] = v
		else
			Circle2[#Circle2 + 1] = v
		end
	end

	function Loop ()
		if Mode == 12 then
			for i = 1, #Circle1 do
				local angle = tick() * Speed
				local x = math.sin(angle + (i * 5)) * Offset
				local z = math.cos(angle + (i * 5)) * Offset
				local offset = CFrame.Angles(0, math.rad(Target.Humanoid.RootPart.Orientation.Y), 0) * Vector3.new(x, Height, z)
				Circle1[i].Handle.BodyPosition.Position = TargetPos + offset
			end

			for i = 1, #Circle2 do
				local angle = tick() * Speed
				local x = math.sin(angle + (i * 5)) * Offset
				local z = -math.cos(angle + (i * 5)) * Offset
				local offset = CFrame.Angles(0, math.rad(-Target.Humanoid.RootPart.Orientation.Y), 0) * Vector3.new(x, Height + 2, z)
				Circle2[i].Handle.BodyPosition.Position = TargetPos + offset
			end
			wait()
			Loop()
		end
	end

	Loop()
end

function Mode13 ()
	local Circle1 = {}
	local Circle2 = {}
	for i, v in pairs(Accessories) do
		if (#Circle1 < #Accessories / 2) then
			Circle1[#Circle1 + 1] = v
		else
			Circle2[#Circle2 + 1] = v
		end
	end

	function Loop ()
		if Mode == 13 then
			for i = 1, #Circle1 do
				local angle = tick() * Speed
				local x = math.sin(angle + (i * 5)) * Offset
				local z = math.cos(angle + (i * 5)) * Offset
				local offset = CFrame.Angles(0, math.rad(Target.Humanoid.RootPart.Orientation.Y), 0) * Vector3.new(x + Offset * 2, Height, z)
				Circle1[i].Handle.BodyPosition.Position = TargetPos + offset
			end

			for i = 1, #Circle2 do
				local angle = tick() * Speed
				local x = math.sin(angle + (i * 5)) * Offset
				local z = math.cos(angle + (i * 5)) * Offset
				local offset = CFrame.Angles(0, math.rad(Target.Humanoid.RootPart.Orientation.Y), 0) * Vector3.new(x - Offset * 2, Height, z)
				Circle2[i].Handle.BodyPosition.Position = TargetPos + offset
			end
			wait()
			Loop()
		end
	end

	Loop()
end

function Mode14 ()
	local Circle1 = {}
	local Circle2 = {}
	for i, v in pairs(Accessories) do
		if (#Circle1 < #Accessories / 2) then
			Circle1[#Circle1 + 1] = v
		else
			Circle2[#Circle2 + 1] = v
		end
	end

	function Loop ()
		if Mode == 14 then
			for i = 1, #Circle1 do
				local angle = tick() * Speed
				local x = math.sin(angle + (i * 5)) * Offset
				local z = math.cos(angle + (i * 5)) * Offset
				local offset = CFrame.Angles(0, math.rad(Target.Humanoid.RootPart.Orientation.Y), 0) * Vector3.new(x + Offset * 2, Height, z)
				Circle1[i].Handle.BodyPosition.Position = TargetPos + offset
			end

			for i = 1, #Circle2 do
				local angle = tick() * Speed
				local x = math.sin(angle + (i * 5)) * Offset
				local z = math.cos(angle + (i * 5)) * Offset
				local offset = CFrame.Angles(0, math.rad(-Target.Humanoid.RootPart.Orientation.Y), 0) * Vector3.new(x - Offset * 2, Height, z)
				Circle2[i].Handle.BodyPosition.Position = TargetPos + offset
			end
			wait()
			Loop()
		end
	end

	Loop()
end

function Mode15()
	Height = -1
	function Loop ()
		if Mode == 15 then
			for i = 1, #Accessories do
				local offset = CFrame.Angles(0, math.rad(Target.Humanoid.RootPart.Orientation.Y), 0) * Vector3.new(0, Height, -i * Offset / 5)
				Accessories[i].Handle.BodyPosition.Position = TargetPos + offset
			end

			wait()
			Loop()
		end
	end

	Loop()
	wait()
end

function Mode16()
	local function Loop()
		if Mode == 16 then
			for i, v in pairs(Accessories) do
				local x = math.cos(math.random(1, 255) + (i + 1)) * Offset
				local z = math.sin(math.random(1, 255) + (i + 1)) * Offset

				local m = math.random(1, 13)
				if m == 1 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, Height, z)
				elseif m == 2 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(z, Height, x)
				elseif m == 3 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(-x, Height, z)
				elseif m == 4 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, Height, -z)
				elseif m == 5 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, z, z)
				elseif m == 6 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, x, z)
				elseif m == 7 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(-x, x, z)
				elseif m == 8 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, -x, z)
				elseif m == 9 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, x, -z)
				elseif m == 10 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(-x, z, z)	
				elseif m == 11 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, -z, z)	
				elseif m == 12 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(x, z, -z)	
				elseif m == 13 then
					v.Handle.BodyPosition.Position = TargetPos + Vector3.new(z, z, z)		
				end
			end
		end
		wait()
		Loop()
	end

	Loop()
end

function Mode17()
	if Mode == 17 then

	end
end

local connect = LC.Chatted:Connect(function(chat)
	local Split = chat:lower():split(" ")

	local C1 = Split[1]
	local C2 = Split[2]

	if C1 == ".mode" then
		Mode = tonumber(C2)
		if C2 == "1" then
			EditingPos = false
			NormalSpin = true
		elseif C2 == "2" then
			EditingPos = false
			NormalSpin = false
			Mode2()		
		elseif C2 == "3" then
			EditingPos = false
			NormalSpin = false
			Mode3()
		elseif C2 == "4" then
			EditingPos = true
			NormalSpin = true
			Mode4()
		elseif C2 == "5" then
			EditingPos = false
			NormalSpin = false
			Mode5()
		elseif C2 == "6" then
			EditingPos = false
			NormalSpin = false
			Mode6()
		elseif C2 == "7" then
			EditingPos = false
			NormalSpin = false
			Mode7()
		elseif C2 == "8" then
			EditingPos = false
			NormalSpin = false
			Mode8()
		elseif C2 == "9" then
			EditingPos = false
			NormalSpin = false
			Mode9()
		elseif C2 == "10" then
			EditingPos = false
			NormalSpin = false
			Mode10()
		elseif C2 == "11" then
			EditingPos = false
			NormalSpin = false
			Mode11()
		elseif C2 == "12" then
			EditingPos = false
			NormalSpin = false
			Mode12()
		elseif C2 == "13" then
			EditingPos = false
			NormalSpin = false
			Mode13()
		elseif C2 == "14" then
			EditingPos = false
			NormalSpin = false
			Mode14()
		elseif C2 == "15" then
			EditingPos = false
			NormalSpin = false
			Mode15()
		elseif C2 == "16" then
			EditingPos = false
			NormalSpin = false
			Mode16()
		elseif C2 == "17" then
			EditingPos = false
			NormalSpin = true
			Mode17()
		end

	elseif C1 == ".offset" then
		Offset = tonumber(C2)
	elseif C1 == ".speed" then
		Speed = tonumber(C2)
	elseif C1 == ".height" then
		Height = tonumber(C2)
	elseif C1 == ".power" then
		Power = tonumber(C2)
	elseif C1 == ".orbit" then
		if C2 == "me" then
			Target = Char
		elseif C2 == "random" then
			local randomPlayer = game.Players:GetPlayers()[math.random(1, #game.Players:GetPlayers())]
			Target = randomPlayer.Character	
		elseif C2 == "nearest" then
			local minDistance = math.huge
			for _, player in pairs(game.Players:GetPlayers()) do
				if player.Character and player.Character ~= Char then
					local distance = (player.Character.HumanoidRootPart.Position - Char.HumanoidRootPart.Position).magnitude
					if distance < minDistance then
						minDistance = distance
						Target = player.Character
					end
				end
			end
		elseif C2 == "farthest" then
			local maxDistance = -math.huge
			for _, player in pairs(game.Players:GetPlayers()) do
				if player.Character and player.Character ~= Char then
					local distance = (player.Character.HumanoidRootPart.Position - Char.HumanoidRootPart.Position).magnitude
					if distance > maxDistance then
						maxDistance = distance
						Target = player.Character
					end
				end
			end
		else
			Target = findChar(C2)
		end
	elseif C1 == ".blockhats" then
		for i, v in pairs(Accessories) do
			if v.Handle:FindFirstChild("Mesh") then
				v.Handle:FindFirstChild("Mesh"):Remove()
			else
				v.Handle:FindFirstChild("SpecialMesh"):Remove()
			end
		end
	elseif C1 == ".cmds" then
		for i = 1, #Commands do
			print(Commands[i])
			wait()
		end
	end
end)

Humanoid.Died:Connect(function()
	connect:Disconnect()
end)

Root.CFrame += Vector3.new(0, 10, 0)
Root.Anchored = true
for i,v in next, game:GetService("Players").LocalPlayer.Character:GetDescendants() do if v:IsA("BasePart") and v.Name ~= "HumanoidRootPart" then game:GetService("RunService").Heartbeat:connect(function() v.Velocity = Vector3.new(-30, 0, 0) v.Massless = true end) end  end
wait(1)
Root.Anchored = false
   end,
})

local Button = Tab:CreateButton({
   Name = "Gun Man",
   Callback = function()
    loadstring(game:HttpGet('https://[Log in to view URL]'))()
   end,
})

local Button = Tab:CreateButton({
   Name = "The Cube",
   Callback = function()
    loadstring(game:HttpGet('https://[Log in to view URL]'))()

   end,
})

local Button = Tab:CreateButton({
   Name = "Ravanger Hands",
   Callback = function()
    loadstring(game:HttpGet('https://[Log in to view URL]'))()
   end,
})

local Button = Tab:CreateButton({
   Name = "Void Boss",
   Callback = function()
        loadstring(game:HttpGet("https://[Log in to view URL]"))()
   end,
})

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: