-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] local TextChatService = game:GetService("TextChatService") local Players = game:GetService("Players") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer local TARGET_SWORD_ID = "14775039887" local function sendChatMessage(message: string) if TextChatService.ChatVersion == Enum.ChatVersion.TextChatService then local generalChannel = TextChatService.TextChannels:FindFirstChild("RBXGeneral") if generalChannel then generalChannel:SendAsync(message) end else local replicatedStorage = game:GetService("ReplicatedStorage") local defaultChatEvents = replicatedStorage:FindFirstChild("DefaultChatSystemChatEvents") if defaultChatEvents then local sayMessageRequest = defaultChatEvents:FindFirstChild("SayMessageRequest") if sayMessageRequest then sayMessageRequest:FireServer(message, "All") end end end end local SWORD_SCALE = 1.4 local EQUIPPED_OFFSET = { X = 0.0, Y = -1.1, Z = -1.6, RX = -90, RY = -90, RZ = 0 } local UNEQUIPPED_OFFSET = { X = -1.0, Y = -1.2, Z = 0.0, RX = -15, RY = 90, RZ = 135 } local screenGui = Instance.new("ScreenGui") screenGui.Name = "FELinkedSwordGUI" screenGui.ResetOnSpawn = false screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame" mainFrame.Size = UDim2.new(0, 250, 0, 150) mainFrame.Position = UDim2.new(0.5, -125, 0.4, -75) mainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 18) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Draggable = true mainFrame.ClipsDescendants = false mainFrame.Parent = screenGui local mainCorner = Instance.new("UICorner") mainCorner.CornerRadius = UDim.new(0, 10) mainCorner.Parent = mainFrame local mainStroke = Instance.new("UIStroke") mainStroke.Color = Color3.fromRGB(45, 45, 55) mainStroke.Thickness = 1.5 mainStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border mainStroke.Parent = mainFrame local titleLabel = Instance.new("TextLabel") titleLabel.Name = "Title" titleLabel.Size = UDim2.new(0.75, 0, 0, 22) titleLabel.Position = UDim2.new(0.05, 0, 0, 6) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "FE Linked Sword" titleLabel.TextColor3 = Color3.fromRGB(240, 240, 245) titleLabel.TextSize = 14 titleLabel.Font = Enum.Font.GothamBold titleLabel.TextXAlignment = Enum.TextXAlignment.Left titleLabel.Parent = mainFrame local creditsLabel = Instance.new("TextLabel") creditsLabel.Name = "Credits" creditsLabel.Size = UDim2.new(0.75, 0, 0, 14) creditsLabel.Position = UDim2.new(0.05, 0, 0, 26) creditsLabel.BackgroundTransparency = 1 creditsLabel.Text = "made by Nova!" creditsLabel.TextColor3 = Color3.fromRGB(140, 140, 160) creditsLabel.TextSize = 11 creditsLabel.Font = Enum.Font.GothamMedium creditsLabel.TextXAlignment = Enum.TextXAlignment.Left creditsLabel.Parent = mainFrame local minBtn = Instance.new("TextButton") minBtn.Name = "MinimizeButton" minBtn.Size = UDim2.new(0, 24, 0, 24) minBtn.Position = UDim2.new(1, -32, 0, 10) minBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 38) minBtn.Text = "-" minBtn.TextColor3 = Color3.fromRGB(200, 200, 210) minBtn.TextSize = 16 minBtn.Font = Enum.Font.GothamBold minBtn.Parent = mainFrame local minCorner = Instance.new("UICorner") minCorner.CornerRadius = UDim.new(1, 0) minCorner.Parent = minBtn local minStroke = Instance.new("UIStroke") minStroke.Color = Color3.fromRGB(60, 60, 75) minStroke.Thickness = 1 minStroke.Parent = minBtn local contentContainer = Instance.new("Frame") contentContainer.Name = "ContentContainer" contentContainer.Size = UDim2.new(1, -24, 0, 90) contentContainer.Position = UDim2.new(0, 12, 0, 48) contentContainer.BackgroundTransparency = 1 contentContainer.Parent = mainFrame local giveHatBtn = Instance.new("TextButton") giveHatBtn.Name = "GiveHatButton" giveHatBtn.Size = UDim2.new(1, 0, 0, 38) giveHatBtn.Position = UDim2.new(0, 0, 0, 0) giveHatBtn.BackgroundColor3 = Color3.fromRGB(35, 95, 210) giveHatBtn.Text = "Give Hat" giveHatBtn.TextColor3 = Color3.fromRGB(255, 255, 255) giveHatBtn.TextSize = 13 giveHatBtn.Font = Enum.Font.GothamMedium giveHatBtn.Parent = contentContainer local giveCorner = Instance.new("UICorner") giveCorner.CornerRadius = UDim.new(0, 6) giveCorner.Parent = giveHatBtn local reanimateBtn = Instance.new("TextButton") reanimateBtn.Name = "ReanimateButton" reanimateBtn.Size = UDim2.new(1, 0, 0, 38) reanimateBtn.Position = UDim2.new(0, 0, 0, 48) reanimateBtn.BackgroundColor3 = Color3.fromRGB(30, 160, 90) reanimateBtn.Text = "Reanimate Hat" reanimateBtn.TextColor3 = Color3.fromRGB(255, 255, 255) reanimateBtn.TextSize = 13 reanimateBtn.Font = Enum.Font.GothamMedium reanimateBtn.Parent = contentContainer local reanimCorner = Instance.new("UICorner") reanimCorner.CornerRadius = UDim.new(0, 6) reanimCorner.Parent = reanimateBtn local isMinimized = false minBtn.MouseButton1Click:Connect(function() isMinimized = not isMinimized contentContainer.Visible = not isMinimized if isMinimized then mainFrame.Size = UDim2.new(0, 250, 0, 44) minBtn.Text = "+" else mainFrame.Size = UDim2.new(0, 250, 0, 150) minBtn.Text = "-" end end) giveHatBtn.MouseButton1Click:Connect(function() task.spawn(function() sendChatMessage("-gh " .. TARGET_SWORD_ID) task.wait(1.2) sendChatMessage("-sh") task.wait(1.2) sendChatMessage("-net") end) end) reanimateBtn.MouseButton1Click:Connect(function() local character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local humanoid = character:FindFirstChildOfClass("Humanoid") local torso = character:FindFirstChild("Torso") or character:FindFirstChild("UpperTorso") local rightArm = character:FindFirstChild("Right Arm") or character:FindFirstChild("RightHand") if not character or not humanoid or not torso or not rightArm then return end local swordAccessory = nil for _, child in ipairs(character:GetChildren()) do if child:IsA("Accessory") then local handle = child:FindFirstChild("Handle") if handle then local isWaistAttachment = handle:FindFirstChild("WaistCenterAttachment") or handle:FindFirstChild("WaistBackAttachment") or handle:FindFirstChild("WaistAttachment") or handle:FindFirstChild("WaistFrontAttachment") if isWaistAttachment or child.AccessoryType == Enum.AccessoryType.Waist then swordAccessory = child break end end end end if not swordAccessory then for _, child in ipairs(character:GetChildren()) do if child:IsA("Accessory") then local handle = child:FindFirstChild("Handle") if handle then local mesh = handle:FindFirstChildOfClass("SpecialMesh") if mesh and (string.find(mesh.MeshId, TARGET_SWORD_ID) or string.find(mesh.TextureId, TARGET_SWORD_ID)) then swordAccessory = child break end end end end end if not swordAccessory then for _, child in ipairs(character:GetChildren()) do if child:IsA("Accessory") and (string.find(child.Name:lower(), "sword") or string.find(child.Name:lower(), "linked")) then swordAccessory = child break end end end if not swordAccessory or not swordAccessory:FindFirstChild("Handle") then return end local accessoryHandle = swordAccessory.Handle pcall(function() if setsimulationradius then setsimulationradius(math.huge) elseif sethiddenproperty then sethiddenproperty(LocalPlayer, "SimulationRadius", 2147483647) end end) for _, v in ipairs(accessoryHandle:GetChildren()) do if v:IsA("Weld") or v:IsA("WeldConstraint") or v:IsA("Attachment") or v:IsA("Motor6D") then v:Destroy() end end for _, v in ipairs(character:GetDescendants()) do if (v:IsA("Weld") or v:IsA("WeldConstraint")) and (v.Part0 == accessoryHandle or v.Part1 == accessoryHandle) then v:Destroy() end end task.wait(0.1) accessoryHandle.CanCollide = false accessoryHandle.Massless = true local backpack = LocalPlayer:WaitForChild("Backpack") local existingTool = backpack:FindFirstChild("Linked Sword") or character:FindFirstChild("Linked Sword") if existingTool then existingTool:Destroy() end local tool = Instance.new("Tool") tool.Name = "Linked Sword" tool.RequiresHandle = false tool.Parent = backpack local slashSound = Instance.new("Sound") slashSound.SoundId = "rbxassetid://12222200" slashSound.Volume = 0.6 slashSound.Parent = tool local holdAnim = Instance.new("Animation") holdAnim.AnimationId = "rbxassetid://182393478" local holdTrack = humanoid:LoadAnimation(holdAnim) local slashAnim = Instance.new("Animation") slashAnim.AnimationId = "rbxassetid://129967390" local slashTrack = humanoid:LoadAnimation(slashAnim) local isSwinging = false local currentPitchAngle = 0 local currentYOffset = 0 local currentZOffset = 0 tool.Equipped:Connect(function() holdTrack:Play() end) tool.Unequipped:Connect(function() holdTrack:Stop() slashTrack:Stop() end) tool.Activated:Connect(function() if isSwinging then return end isSwinging = true slashSound:Play() slashTrack:Play(0.1, 1, 1.0) local maxPitch = math.rad(-65) local maxY = 0.8 local maxZ = 0.3 local slashDuration = 0.32 local startTime = os.clock() while (os.clock() - startTime) < slashDuration do local alpha = (os.clock() - startTime) / slashDuration currentPitchAngle = alpha * maxPitch currentYOffset = alpha * maxY currentZOffset = alpha * maxZ task.wait() end currentPitchAngle = maxPitch currentYOffset = maxY currentZOffset = maxZ local returnDuration = 0.22 local returnStart = os.clock() while (os.clock() - returnStart) < returnDuration do local alpha = (os.clock() - returnStart) / returnDuration currentPitchAngle = (1 - alpha) * maxPitch currentYOffset = (1 - alpha) * maxY currentZOffset = (1 - alpha) * maxZ task.wait() end currentPitchAngle = 0 currentYOffset = 0 currentZOffset = 0 isSwinging = false end) local mesh = accessoryHandle:FindFirstChildOfClass("SpecialMesh") local originalScale = mesh and mesh.Scale or Vector3.new(1, 1, 1) local function getEquippedCFrame() return CFrame.new(EQUIPPED_OFFSET.X, EQUIPPED_OFFSET.Y, EQUIPPED_OFFSET.Z) * CFrame.Angles( math.rad(EQUIPPED_OFFSET.RX), math.rad(EQUIPPED_OFFSET.RY), math.rad(EQUIPPED_OFFSET.RZ) ) end local function getUnequippedCFrame() return CFrame.new(UNEQUIPPED_OFFSET.X, UNEQUIPPED_OFFSET.Y, UNEQUIPPED_OFFSET.Z) * CFrame.Angles( math.rad(UNEQUIPPED_OFFSET.RX), math.rad(UNEQUIPPED_OFFSET.RY), math.rad(UNEQUIPPED_OFFSET.RZ) ) end local connection connection = RunService.RenderStepped:Connect(function() if not character or not character.Parent or not accessoryHandle or not accessoryHandle.Parent then if holdTrack then holdTrack:Stop() end if slashTrack then slashTrack:Stop() end connection:Disconnect() return end if mesh then mesh.Scale = originalScale * SWORD_SCALE end accessoryHandle.AssemblyLinearVelocity = Vector3.new(0, 25.1, 0) accessoryHandle.AssemblyAngularVelocity = Vector3.zero if tool.Parent == character then local swingTransform = CFrame.new(0, currentYOffset, currentZOffset) * CFrame.Angles(currentPitchAngle, 0, 0) accessoryHandle.CFrame = rightArm.CFrame * swingTransform * getEquippedCFrame() else accessoryHandle.CFrame = torso.CFrame * getUnequippedCFrame() end end) end)