local RunService = game:GetService("RunService") local RS = game:GetService("ReplicatedStorage") local LP = game.Players.LocalPlayer pcall(function() local root = gethui and gethui() or game:GetService("CoreGui") if root:FindFirstChild("Seraph") then root.Seraph:Destroy() end local pg = LP:FindFirstChildOfClass("PlayerGui") if pg and pg:FindFirstChild("Seraph") then pg.Seraph:Destroy() end end) local Seraph = loadstring(game:HttpGet("https://raw.githubusercontent.com/53845052/roblox-uis/refs/heads/main/SeraphLib.lua"))() Seraph:SetWindowKeybind(Enum.KeyCode.Insert) local Gun = require(RS.Modules.Client.Controllers.GunController) local oldSkin = Gun._ApplySkinToInstance local oldAll = Gun._ApplySkinEverywhere local on, atts, arms = false, true, false local mat = Enum.Material.ForceField local col = Color3.fromRGB(255, 186, 48) local transp, refl = 0, 0 local tex, cmap = "", "" local lastVm, conn local saved = setmetatable({}, { __mode = "k" }) local presets = { hologram = { Enum.Material.ForceField, Color3.fromRGB(255, 186, 48), 0, 0 }, neon = { Enum.Material.Neon, Color3.fromRGB(0, 255, 190), 0, 0 }, chrome = { Enum.Material.Metal, Color3.fromRGB(235, 238, 245), 0, 1 }, gold = { Enum.Material.Metal, Color3.fromRGB(255, 198, 55), 0, 0.75 }, glass = { Enum.Material.Glass, Color3.fromRGB(180, 220, 255), 0.4, 0.3 }, wood = { Enum.Material.Wood, Color3.fromRGB(117, 84, 49), 0, 0 }, obsidian = { Enum.Material.SmoothPlastic, Color3.fromRGB(14, 14, 18), 0, 0.45 }, } local looks = { ForceField = { c = Color3.fromRGB(255, 186, 48) }, Neon = { c = Color3.fromRGB(0, 255, 200) }, Glass = { c = Color3.fromRGB(175, 215, 235), t = 0.42, r = 0.35 }, Ice = { c = Color3.fromRGB(195, 235, 255), t = 0.22, r = 0.3 }, Metal = { c = Color3.fromRGB(195, 200, 210), r = 0.7 }, CorrodedMetal = { c = Color3.fromRGB(130, 85, 45), r = 0.12 }, DiamondPlate = { c = Color3.fromRGB(175, 180, 190), r = 0.4 }, Foil = { c = Color3.fromRGB(230, 230, 240), r = 0.55 }, SmoothPlastic = { c = Color3.fromRGB(25, 25, 30), r = 0.2 }, Marble = { c = Color3.fromRGB(235, 230, 225), r = 0.2 }, Granite = { c = Color3.fromRGB(110, 108, 105) }, Wood = { c = Color3.fromRGB(117, 84, 49) }, Fabric = { c = Color3.fromRGB(55, 55, 70) }, Leather = { c = Color3.fromRGB(85, 55, 35) }, } local matNames = { "ForceField", "Neon", "Glass", "Ice", "Metal", "CorrodedMetal", "DiamondPlate", "Foil", "SmoothPlastic", "Marble", "Granite", "Wood", "Fabric", "Leather" } local presetNames = { "hologram", "neon", "chrome", "gold", "glass", "wood", "obsidian" } local function run(fn) task.defer(function() if setthreadidentity then pcall(setthreadidentity, 8) elseif setidentity then pcall(setidentity, 8) end fn() end) end local function getvm() local vm = Gun._fakeIKModel if typeof(vm) == "Instance" and vm:IsA("Model") then return vm end local w, cam = Gun.Weapon, workspace.CurrentCamera if w and cam then local m = cam:FindFirstChild(w.Name) if m and m:IsA("Model") then return m end end end local function isArm(part) local n = part.Name local l = string.lower(n) return n:find("SK_") or l:find("sleeve") or l:find("glove") or l:find("watch") end local function bad(part) if part.Transparency >= 1 then return true end local n = part.Name if n == "GunAttacher" or n == "RootPart" or n == "ArmsRootPart" or n == "PointFrontSight" then return true end local l = string.lower(n) if l:find("ring") or l:find("lens") or l:find("glass") or l:find("reticle") or l:find("bullet") or l:find("muzzlefire") then return true end if not arms and isArm(part) then return true end if not atts then local p = part.Parent while p and p ~= workspace.CurrentCamera do if p.Name == "AllAttachments" or p.Name == "atts" then return true end p = p.Parent end end return false end local function snap(part) if saved[part] then return end local bag = { Material = part.Material, Color = part.Color, Transparency = part.Transparency, Reflectance = part.Reflectance, CastShadow = part.CastShadow, sa = {}, hide = {}, } pcall(function() bag.MaterialVariant = part.MaterialVariant end) if part:IsA("MeshPart") then pcall(function() bag.TextureID = part.TextureID end) end for _, c in part:GetChildren() do if c:IsA("SurfaceAppearance") then table.insert(bag.sa, c:Clone()) elseif c:IsA("Decal") or c:IsA("Texture") then table.insert(bag.hide, { c, c.Transparency }) end end saved[part] = bag end local function revert(part) local bag = saved[part] if not bag then return false end for _, c in part:GetChildren() do if c:IsA("SurfaceAppearance") or c.Name == "_csa" then c:Destroy() end end part.Material = bag.Material part.Color = bag.Color part.Transparency = bag.Transparency part.Reflectance = bag.Reflectance part.CastShadow = bag.CastShadow pcall(function() part.MaterialVariant = bag.MaterialVariant or "" end) if part:IsA("MeshPart") and bag.TextureID ~= nil then pcall(function() part.TextureID = bag.TextureID end) end for _, sa in bag.sa do sa:Clone().Parent = part end for _, pair in bag.hide do local obj, t = pair[1], pair[2] if obj and obj.Parent then obj.Transparency = t end end saved[part] = nil return true end local function tplSrc(vm) local folder = RS:FindFirstChild("Assets") folder = folder and folder:FindFirstChild("Viewmodels") local tpl = folder and folder:FindFirstChild(vm.Name) if not tpl then return end local src = {} for _, d in tpl:GetDescendants() do if d:IsA("BasePart") then src[d.Name] = d end end return src end local function restorePart(part, src) if revert(part) then return end local s = src and src[part.Name] if not s then return end part.Material = s.Material part.Color = s.Color part.Transparency = s.Transparency part.Reflectance = s.Reflectance part.CastShadow = s.CastShadow pcall(function() part.MaterialVariant = s.MaterialVariant end) if part:IsA("MeshPart") and s:IsA("MeshPart") then pcall(function() part.TextureID = s.TextureID end) end for _, c in part:GetChildren() do if c:IsA("SurfaceAppearance") or c.Name == "_csa" then c:Destroy() end end for _, c in s:GetChildren() do if c:IsA("SurfaceAppearance") then c:Clone().Parent = part elseif c:IsA("Decal") or c:IsA("Texture") then local live = part:FindFirstChild(c.Name) if live and (live:IsA("Decal") or live:IsA("Texture")) then live.Transparency = c.Transparency end end end end local function paint(part) if bad(part) then return end snap(part) for _, c in part:GetChildren() do if c:IsA("SurfaceAppearance") or c.Name == "_csa" then c:Destroy() elseif c:IsA("Decal") or c:IsA("Texture") then c.Transparency = 1 end end pcall(function() part.MaterialVariant = "" end) if part:IsA("MeshPart") then pcall(function() part.TextureID = tex end) end part.Material = mat part.Color = col part.Transparency = transp part.Reflectance = refl part.CastShadow = false if cmap ~= "" then local sa = Instance.new("SurfaceAppearance") sa.Name = "_csa" sa.ColorMap = cmap sa.Parent = part end end local function apply() local vm = on and getvm() if vm then for _, d in vm:GetDescendants() do if d:IsA("BasePart") then if bad(d) then if saved[d] then restorePart(d, nil) end else paint(d) end elseif d:IsA("SurfaceAppearance") and d.Name ~= "_csa" then local p = d.Parent if p and p:IsA("BasePart") and not bad(p) then d:Destroy() end end end if conn then conn:Disconnect() end conn = vm.DescendantAdded:Connect(function(i) if on then task.defer(function() if i:IsA("BasePart") and i.Parent then paint(i) elseif i:IsA("SurfaceAppearance") and i.Name ~= "_csa" and i.Parent then local p = i.Parent if p:IsA("BasePart") and not bad(p) then i:Destroy() paint(p) end end end) end end) end end local function clear() if conn then conn:Disconnect() conn = nil end lastVm = nil local vm = getvm() if vm then local src = tplSrc(vm) for _, d in vm:GetDescendants() do if d:IsA("BasePart") then restorePart(d, src) elseif d.Name == "_csa" then d:Destroy() end end end table.clear(saved) pcall(oldAll, Gun) end Gun._ApplySkinToInstance = function(self, inst, ...) if on and typeof(inst) == "Instance" then if inst:IsA("BasePart") then paint(inst) return elseif inst:IsA("Model") or inst:IsA("Folder") then for _, d in inst:GetDescendants() do if d:IsA("BasePart") then paint(d) end end return end end return oldSkin(self, inst, ...) end Gun._ApplySkinEverywhere = function(self, ...) if on then apply() else return oldAll(self, ...) end end if Gun.WeaponChanged then Gun.WeaponChanged:Connect(function() task.defer(apply) end) end RunService.PreRender:Connect(function() if on then local vm = getvm() if vm and vm ~= lastVm then lastVm = vm apply() end end end) local win = Seraph:Window("TTK") pcall(function() local g = game:GetService("CoreGui"):FindFirstChild("Seraph") if g then g.Parent = (gethui and gethui()) or LP:FindFirstChildOfClass("PlayerGui") or g.Parent end end) local tab = win:AddTab({ "rbxassetid://10734919510" }) local cat = tab:AddCategory("Visuals") local sub = cat:AddSubCategory("Weapon Chams") local main = sub:AddSection("Main") main:Toggle({ Title = "Enabled", Flag = "on", Callback = function(v) on = v run(function() if v then apply() else clear() end end) end, }) main:Toggle({ Title = "Attachments", Flag = "atts", Default = true, Callback = function(v) atts = v if on then run(apply) end end, }) main:Toggle({ Title = "Arms", Flag = "arms", Callback = function(v) arms = v if on then run(apply) end end, }) local look = sub:AddSection("Look") look:Dropdown({ Title = "Preset", Flag = "preset", Options = presetNames, Default = "hologram", Callback = function(name) local p = presets[name] if p then mat, col, transp, refl = p[1], p[2], p[3], p[4] tex, cmap = "", "" if Seraph.Flags.col then Seraph.Flags.col:SetValue(col) end if Seraph.Flags.transp then Seraph.Flags.transp:SetValue(transp) end if Seraph.Flags.refl then Seraph.Flags.refl:SetValue(refl) end if on then run(apply) end end end, }) look:Dropdown({ Title = "Material", Flag = "mat", Options = matNames, Default = "ForceField", Callback = function(name) local L = looks[name] mat = Enum.Material[name] or Enum.Material.ForceField if L then col = L.c transp = L.t or 0 refl = L.r or 0 else col = Color3.new(1, 1, 1) transp, refl = 0, 0 end tex, cmap = "", "" if Seraph.Flags.col then Seraph.Flags.col:SetValue(col) end if Seraph.Flags.transp then Seraph.Flags.transp:SetValue(transp) end if Seraph.Flags.refl then Seraph.Flags.refl:SetValue(refl) end if on then run(apply) end end, }) look:Label({ Title = "Color" }):Colorpicker({ Flag = "col", Default = col, Callback = function(c) col = c if on then run(apply) end end, }) look:Slider({ Title = "Transparency", Flag = "transp", Min = 0, Max = 0.9, Decimal = 2, Default = 0, Callback = function(v) transp = v if on then run(apply) end end, }) look:Slider({ Title = "Reflectance", Flag = "refl", Min = 0, Max = 1, Decimal = 2, Default = 0, Callback = function(v) refl = v if on then run(apply) end end, }) local texs = sub:AddSection("Textures") texs:Textbox({ Title = "Texture ID", Flag = "tex", Placeholder = "rbxassetid://", Callback = function(t) tex = t or "" if tex ~= "" then cmap = "" mat = Enum.Material.SmoothPlastic transp = 0 end if on then run(apply) end end, }) texs:Textbox({ Title = "ColorMap", Flag = "cmap", Placeholder = "rbxassetid://", Callback = function(t) cmap = t or "" if cmap ~= "" then tex = "" mat = Enum.Material.SmoothPlastic transp = 0 end if on then run(apply) end end, }) texs:Button({ Title = "Refresh", Callback = function() if on then run(apply) end end, })