local UI = loadstring(game:HttpGet("https://raw.githubusercontent.com/RealBatu20/AI-Scripts-2025/refs/heads/main/crimsonui.lua"))() local function missing(t, f, fallback) if type(f) == t then return f end return fallback end cloneref = missing("function", cloneref, function(...) return ... end) local Services = setmetatable({}, { __index = function(_, name) return cloneref(game:GetService(name)) end }) local Players = Services.Players local RunService = Services.RunService local UserInputService = Services.UserInputService local TweenService = Services.TweenService local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local function isR6() return humanoid.RigType == Enum.HumanoidRigType.R6 end local function checkRemotes() local replicatedStorage = Services.ReplicatedStorage local success, result = pcall(function() return replicatedStorage:WaitForChild("BloxbizRemotes", 5) end) if not success then return false end local bloxbizRemotes = result if not bloxbizRemotes then return false end local catalogRemote = bloxbizRemotes:FindFirstChild("CatalogOnApplyOutfit") local catalogToHumanoid = bloxbizRemotes:FindFirstChild("CatalogOnApplyToRealHumanoid") return catalogRemote ~= nil and catalogToHumanoid ~= nil end local hasRemotes = checkRemotes() if isR6() then local errorGui = Instance.new("ScreenGui") errorGui.Name = "ErrorGui" errorGui.ResetOnSpawn = false errorGui.Parent = Services.CoreGui local errorFrame = Instance.new("Frame") errorFrame.Size = UDim2.new(0, 400, 0, 100) errorFrame.Position = UDim2.new(0.5, -200, 0.5, -50) errorFrame.BackgroundColor3 = Color3.fromRGB(40, 0, 0) errorFrame.BorderSizePixel = 3 errorFrame.BorderColor3 = Color3.fromRGB(255, 0, 0) errorFrame.Parent = errorGui Instance.new("UICorner", errorFrame).CornerRadius = UDim.new(0, 10) local errorText = Instance.new("TextLabel") errorText.Size = UDim2.new(1, -20, 1, -20) errorText.Position = UDim2.new(0, 10, 0, 10) errorText.BackgroundTransparency = 1 errorText.Text = "SORRY, THIS SCRIPT WORKS ONLY WITH R15 AVATARS" errorText.TextColor3 = Color3.fromRGB(255, 50, 50) errorText.Font = Enum.Font.GothamBold errorText.TextSize = 16 errorText.TextWrapped = true errorText.Parent = errorFrame delay(10, function() errorGui:Destroy() end) return end if not hasRemotes then local errorGui = Instance.new("ScreenGui") errorGui.Name = "ErrorGui" errorGui.ResetOnSpawn = false errorGui.Parent = Services.CoreGui local errorFrame = Instance.new("Frame") errorFrame.Size = UDim2.new(0, 400, 0, 120) errorFrame.Position = UDim2.new(0.5, -200, 0.1, 0) errorFrame.BackgroundColor3 = Color3.fromRGB(40, 0, 0) errorFrame.BorderSizePixel = 3 errorFrame.BorderColor3 = Color3.fromRGB(255, 0, 0) errorFrame.Parent = errorGui Instance.new("UICorner", errorFrame).CornerRadius = UDim.new(0, 10) local errorText = Instance.new("TextLabel") errorText.Size = UDim2.new(1, -20, 1, -20) errorText.Position = UDim2.new(0, 10, 0, 10) errorText.BackgroundTransparency = 1 errorText.Text = "SORRY THIS GAME NOT HAVING BLOXBIZ AVATAR CATALOG, PLS BUY PRO BUILDER BUNDLE FOR FE SKYBOX" errorText.TextColor3 = Color3.fromRGB(255, 50, 50) errorText.Font = Enum.Font.GothamBold errorText.TextSize = 16 errorText.TextWrapped = true errorText.TextScaled = false errorText.Parent = errorFrame delay(10, function() errorGui:Destroy() end) end if hasRemotes then local args = { { SwimAnimation = 0, DepthScale = 1, RightLegColor = Color3.new(0.1725490242242813, 0.3960784375667572, 0.11372549086809158), MoodAnimation = 14618207727, Face = 0, JumpAnimation = 0, HeadColor = Color3.new(1, 0.6470588445663452, 0.6000000238418579), BodyTypeScale = 0, ClimbAnimation = 0, LeftArmColor = Color3.new(0.9725490212440491, 0.9725490212440491, 0.9725490212440491), LeftLegColor = Color3.new(0.1725490242242813, 0.3960784375667572, 0.11372549086809158), Pants = 0, RightArmColor = Color3.new(0.9725490212440491, 0.9725490212440491, 0.9725490212440491), WidthScale = 1, LeftArm = 134162178631486, IdleAnimation = 0, RightArm = 112132665744785, GraphicTShirt = 0, Head = 112098331348331, Shirt = 0, Torso = 100839513065432, RunAnimation = 0, WalkAnimation = 0, FallAnimation = 0, TorsoColor = Color3.new(1, 1, 1), Accessories = {}, RightLeg = 134568824619589, HeadScale = 1, HeightScale = 1, ProportionScale = 0, LeftLeg = 119032106683081 } } local success, err = pcall(function() game:GetService("ReplicatedStorage"):WaitForChild("BloxbizRemotes"):WaitForChild("CatalogOnApplyOutfit"):FireServer(unpack(args)) end) if not success then warn("Failed to apply outfit: " .. tostring(err)) end end player.CharacterAdded:Connect(function(newCharacter) character = newCharacter humanoid = character:WaitForChild("Humanoid") if isR6() then return end end) local Settings = { ["Fade In"] = 0.1, ["Fade Out"] = 0.1, ["Weight"] = 1, ["Speed"] = 1, ["Allow Invisible"] = true, ["Time Position"] = 0.99 } local CurrentTrack local FIXED_EMOTE_ID = 93224413172183 local function LoadTrack() if CurrentTrack then CurrentTrack:Stop(0) end local animId local ok, result = pcall(function() return game:GetObjects("rbxassetid://" .. tostring(FIXED_EMOTE_ID)) end) if ok and result and #result > 0 then local anim = result[1] if anim:IsA("Animation") then animId = anim.AnimationId else animId = "rbxassetid://" .. tostring(FIXED_EMOTE_ID) end else animId = "rbxassetid://" .. tostring(FIXED_EMOTE_ID) end local newAnim = Instance.new("Animation") newAnim.AnimationId = animId local newTrack = humanoid:LoadAnimation(newAnim) newTrack.Priority = Enum.AnimationPriority.Action4 local weight = Settings["Weight"] if weight == 0 then weight = 0.001 end newTrack:Play(Settings["Fade In"], weight, Settings["Speed"]) CurrentTrack = newTrack CurrentTrack.TimePosition = math.clamp(Settings["Time Position"], 0, 1) * CurrentTrack.Length delay(1, function() if CurrentTrack and CurrentTrack == newTrack and CurrentTrack.IsPlaying then CurrentTrack:AdjustSpeed(0) end end) return newTrack end local function StopTrack() if CurrentTrack then CurrentTrack:Stop(Settings["Fade Out"]) CurrentTrack = nil end end local function ApplyCoolkidSkybox() if not hasRemotes then return end local success, err = pcall(function() local args = { { Property = "Shirt", AssetId = 12969823720 } } game:GetService("ReplicatedStorage"):WaitForChild("BloxbizRemotes"):WaitForChild("CatalogOnApplyToRealHumanoid"):FireServer(unpack(args)) end) if not success then warn("Failed to apply skybox: " .. tostring(err)) end end local function ApplyCustomSkybox(assetId) if not hasRemotes then return end local success, err = pcall(function() local args = { { Property = "Shirt", AssetId = assetId } } game:GetService("ReplicatedStorage"):WaitForChild("BloxbizRemotes"):WaitForChild("CatalogOnApplyToRealHumanoid"):FireServer(unpack(args)) end) if not success then warn("Failed to apply custom asset: " .. tostring(err)) end end local Window = UI:CreateWindow({ Title = "FE Skybox & Animation", Icon = "☁️", Size = Vector2.new(350, 450) }) local MainTab = Window:CreateTab("Main") MainTab:CreateLabel("Status: " .. (hasRemotes and "✅ Bloxbiz Ready" or "❌ No Bloxbiz")) MainTab:CreateLabel("Avatar: " .. (isR6() and "R6 (Unsupported)" or "R15 (Supported)")) MainTab:CreateButton({ Name = "▶ Play Emote", Callback = LoadTrack }) MainTab:CreateButton({ Name = "■ Stop Emote", Callback = StopTrack }) local SettingsTab = Window:CreateTab("Settings") SettingsTab:CreateSlider({ Name = "Time Position", Min = 0, Max = 1, Default = Settings["Time Position"], Callback = function(value) Settings["Time Position"] = value if CurrentTrack and CurrentTrack.IsPlaying and CurrentTrack.Length > 0 then CurrentTrack.TimePosition = math.clamp(value, 0, 1) * CurrentTrack.Length end end }) SettingsTab:CreateSlider({ Name = "Speed", Min = 0, Max = 5, Default = Settings["Speed"], Callback = function(value) Settings["Speed"] = value if CurrentTrack and CurrentTrack.IsPlaying then CurrentTrack:AdjustSpeed(value) end end }) SettingsTab:CreateSlider({ Name = "Weight", Min = 0, Max = 1, Default = Settings["Weight"], Callback = function(value) Settings["Weight"] = value if CurrentTrack and CurrentTrack.IsPlaying then local weight = value == 0 and 0.001 or value CurrentTrack:AdjustWeight(weight) end end }) SettingsTab:CreateSlider({ Name = "Fade In", Min = 0, Max = 2, Default = Settings["Fade In"], Callback = function(value) Settings["Fade In"] = value end }) SettingsTab:CreateSlider({ Name = "Fade Out", Min = 0, Max = 2, Default = Settings["Fade Out"], Callback = function(value) Settings["Fade Out"] = value end }) SettingsTab:CreateToggle({ Name = "Allow Invisible", Default = Settings["Allow Invisible"], Callback = function(state) Settings["Allow Invisible"] = state end }) local SkyboxTab = Window:CreateTab("Skybox") if hasRemotes then SkyboxTab:CreateLabel("Quick Apply:") SkyboxTab:CreateButton({ Name = "Apply Coolkid Skybox", Callback = ApplyCoolkidSkybox }) SkyboxTab:CreateLabel("Custom Asset:") local customAssetId = "" SkyboxTab:CreateInput({ Name = "Asset ID", Placeholder = "Enter Shirt Asset ID...", Callback = function(text) customAssetId = text end }) SkyboxTab:CreateButton({ Name = "Apply Custom Skybox", Callback = function() local assetId = tonumber(customAssetId) if assetId then ApplyCustomSkybox(assetId) else warn("Invalid Asset ID entered") end end }) else SkyboxTab:CreateLabel("❌ Bloxbiz remotes not found") SkyboxTab:CreateLabel("Buy Pro Builder Bundle to use") end local InfoTab = Window:CreateTab("Info") InfoTab:CreateLabel("FE Skybox Bypassed v2") InfoTab:CreateLabel("UI: Crimson UI Lib") InfoTab:CreateLabel("Requires: Bloxbiz + R15") InfoTab:CreateLabel("") InfoTab:CreateLabel("Discord: discord.gg/Tmyb9ySsCR")