script.Name = "TextureReplacer" local Players = game:GetService("Players") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local Players = game:GetService("Players") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local screenGui = Instance.new("ScreenGui") screenGui.Name = "TextureReplacerGui" screenGui.ResetOnSpawn = false screenGui.Parent = playerGui local frame = Instance.new("Frame") frame.Name = "Main" frame.Size = UDim2.new(0, 340, 0, 190) frame.Position = UDim2.new(0.5, -170, 0.5, -95) frame.BackgroundColor3 = Color3.fromRGB(30, 30, 36) frame.BorderSizePixel = 0 frame.Parent = screenGui Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10) local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -20, 0, 36) title.Position = UDim2.new(0, 10, 0, 6) title.BackgroundTransparency = 1 title.Text = "Texture Replacer by r3dDUDE and AI" title.TextColor3 = Color3.new(1, 1, 1) title.Font = Enum.Font.GothamBold title.TextSize = 20 title.Parent = frame local input = Instance.new("TextBox") input.Name = "IdInput" input.Size = UDim2.new(1, -20, 0, 40) input.Position = UDim2.new(0, 10, 0, 50) input.BackgroundColor3 = Color3.fromRGB(45, 45, 55) input.BorderSizePixel = 0 input.PlaceholderText = "Enter image ID" input.Text = "" input.TextColor3 = Color3.new(1, 1, 1) input.PlaceholderColor3 = Color3.fromRGB(150, 150, 160) input.Font = Enum.Font.Gotham input.TextSize = 16 input.ClearTextOnFocus = false input.Parent = frame Instance.new("UICorner", input).CornerRadius = UDim.new(0, 8) local status = Instance.new("TextLabel") status.Size = UDim2.new(1, -20, 0, 24) status.Position = UDim2.new(0, 10, 0, 98) status.BackgroundTransparency = 1 status.Text = "" status.TextColor3 = Color3.fromRGB(180, 180, 190) status.Font = Enum.Font.Gotham status.TextSize = 14 status.Parent = frame local function makeButton(text, pos, color) local b = Instance.new("TextButton") b.Size = UDim2.new(0.5, -15, 0, 40) b.Position = pos b.BackgroundColor3 = color b.BorderSizePixel = 0 b.Text = text b.TextColor3 = Color3.new(1, 1, 1) b.Font = Enum.Font.GothamBold b.TextSize = 16 b.AutoButtonColor = true b.Parent = frame Instance.new("UICorner", b).CornerRadius = UDim.new(0, 8) return b end local applyButton = makeButton("Apply", UDim2.new(0, 10, 0, 135), Color3.fromRGB(60, 140, 90)) local resetButton = makeButton("Reset", UDim2.new(0.5, 5, 0, 135), Color3.fromRGB(150, 60, 60)) local originalTextures = {} local createdOverlays = {} local function setStatus(msg, color) status.Text = msg status.TextColor3 = color or Color3.fromRGB(180, 180, 190) end local function parseId(text) return string.match(text, "%d+") end local function applyImage(id) local assetUrl = "rbxassetid://" .. id local count = 0 for _, obj in ipairs(workspace:GetDescendants()) do if obj:IsA("Texture") or obj:IsA("Decal") then local part = obj.Parent if part and part:IsA("BasePart") then if obj.Transparency > 0 then local overlay = Instance.new("Decal") overlay.Name = "ReplacerOverlay" overlay.Face = obj.Face overlay.Texture = assetUrl overlay.Transparency = 0 overlay.Color3 = Color3.new(1, 1, 1) overlay.Parent = part table.insert(createdOverlays, overlay) else table.insert(originalTextures, { obj = obj, texture = obj.Texture }) obj.Texture = assetUrl end count += 1 end end end return count end local function resetAll() for _, data in ipairs(originalTextures) do if data.obj and data.obj.Parent then data.obj.Texture = data.texture end end table.clear(originalTextures) for _, overlay in ipairs(createdOverlays) do if overlay then overlay:Destroy() end end table.clear(createdOverlays) end applyButton.MouseButton1Click:Connect(function() local id = parseId(input.Text) if not id then setStatus("Error: enter a valid ID", Color3.fromRGB(230, 90, 90)) return end local count = applyImage(id) setStatus("Objects replaced: " .. count, Color3.fromRGB(120, 220, 140)) end) resetButton.MouseButton1Click:Connect(function() resetAll() setStatus("Textures reset", Color3.fromRGB(180, 180, 190)) end)