
Universal Script – texture replacer
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)How to Execute Universal Script – texture replacer
Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.
Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.
Step 3: Join Experience: Launch Roblox and join Universal Script.
Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.
Created By
View Author ProfileFeatures & Information
Script Changelog (1)
Community Comments (0)
No comments yet for this script.
Frequently Asked Questions
How do I execute Universal Script – texture replacer in Roblox?
To run Universal Script – texture replacer, copy the Lua loadstring from the code viewer above, launch Roblox and join Universal Script, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.
Is Universal Script – texture replacer keyless or does it require an access key?
Universal Script – texture replacer requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.
Is Universal Script – texture replacer currently safe and working?
This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.


![Ez Hub [Open Source] [150+ games] - Verified script for Universal Script](https://media.kocakz.me/b74a9ac15370ba766b2fa9531f17c9dad2c0befb2b951693ae723e4c7d2c3fb6.webp)

![[KEYLESS] Moondiety Script | 20+ supported Games - Verified script for Universal Script](https://media.kocakz.me/6834c33a36c9fbe66afae4c6754c2b80386ce636b2f972464a95866f4b6a42eb.webp)

