
KeylessUniversal

-- OiHub Optimize (corrigido) - LocalScript
-- Colocar em StarterPlayerScripts
local KEY = "OiHub_Key10"
local DiscordLink = "https://discord.gg/EYSvDJGc"
local Players = game:GetService("Players")
local StarterGui = game:GetService("StarterGui")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- BoolValues persistentes no player
local function ensureBool(name, default)
local v = player:FindFirstChild(name)
if not v then
v = Instance.new("BoolValue")
v.Name = name
v.Value = default and true or false
v.Parent = player
end
return v
end
local optimizedFlag = ensureBool("OiHubOptimized", false)
local closedFlag = ensureBool("OiHubClosed", false)
-- Se o usuário já fechou o GUI anteriormente com X, não recria
if closedFlag.Value then
return
end
-- util
local function notify(txt, dur)
pcall(function()
StarterGui:SetCore("SendNotification", {Title="OiHub", Text = tostring(txt), Duration = dur or 3})
end)
end
-- Helpers para attributes (string/number/bool)
local function setAttr(inst, key, val)
if inst and inst.SetAttribute then
pcall(function() inst:SetAttribute(key, val) end)
end
end
local function getAttr(inst, key)
if inst and inst.GetAttribute then
local ok, v = pcall(function() return inst:GetAttribute(key) end)
if ok then return v end
end
return nil
end
-- Aplica otimização: muda materiais para Plastic e desliga VFX (salvando originais em attributes)
local function applyOptimization()
for _, obj in ipairs(workspace:GetDescendants()) do
-- BasePart: salva material e muda para Plastic
if obj:IsA("BasePart") then
if not getAttr(obj, "OiHub_origMaterial") then
setAttr(obj, "OiHub_origMaterial", tostring(obj.Material))
end
-- não muda transparency nem remove objetos, só altera material
pcall(function() obj.Material = Enum.Material.Plastic end)
end
-- ParticleEmitter
if obj:IsA("ParticleEmitter") then
if getAttr(obj, "OiHub_origEnabled") == nil then
setAttr(obj, "OiHub_origEnabled", obj.Enabled and true or false)
-- Rate é NumberRange: guardamos min e max
local r = obj.Rate
local minv, maxv = 0, 0
if r then
pcall(function() minv = r.Min; maxv = r.Max end)
end
setAttr(obj, "OiHub_origRateMin", minv)
setAttr(obj, "OiHub_origRateMax", maxv)
end
pcall(function() obj.Enabled = false; obj.Rate = NumberRange.new(0) end)
end
-- Trail
if obj:IsA("Trail") then
if getAttr(obj, "OiHub_origEnabled") == nil then
setAttr(obj, "OiHub_origEnabled", obj.Enabled and true or false)
end
pcall(function() obj.Enabled = false end)
end
-- Beam
if obj:IsA("Beam") then
if getAttr(obj, "OiHub_origEnabled") == nil then
setAttr(obj, "OiHub_origEnabled", obj.Enabled and true or false)
end
pcall(function() obj.Enabled = false end)
end
-- Smoke / Fire
if obj:IsA("Smoke") or obj:IsA("Fire") then
if getAttr(obj, "OiHub_origEnabled") == nil then
setAttr(obj, "OiHub_origEnabled", obj.Enabled and true or false)
end
pcall(function() obj.Enabled = false end)
end
-- Light types: PointLight, SpotLight, SurfaceLight -> desligar mas salvar
if obj:IsA("PointLight") or obj:IsA("SpotLight") or obj:IsA("SurfaceLight") then
if getAttr(obj, "OiHub_origEnabled") == nil then
setAttr(obj, "OiHub_origEnabled", obj.Enabled and true or false)
setAttr(obj, "OiHub_origBrightness", obj.Brightness or 0)
setAttr(obj, "OiHub_origRange", obj.Range or 0)
end
pcall(function() obj.Enabled = false; obj.Brightness = 0; obj.Range = 0 end)
end
-- Sound: abaixa volume mas NÃO remove (salva)
if obj:IsA("Sound") then
if getAttr(obj, "OiHub_origVolume") == nil then
setAttr(obj, "OiHub_origVolume", obj.Volume or 1)
setAttr(obj, "OiHub_origPlaying", obj.IsPlaying and true or false)
end
pcall(function() obj.Volume = 0; obj:Stop() end)
end
end
-- marca flag persistente
optimizedFlag.Value = true
notify("Otimização aplicada (materiais → Plastic e VFX desativados).", 3)
end
-- Restaura lendo os attributes salvos
local function restoreOptimization()
for _, obj in ipairs(workspace:GetDescendants()) do
-- BasePart material
if obj:IsA("BasePart") then
local matName = getAttr(obj, "OiHub_origMaterial")
if matName then
local ok, enumMat = pcall(function() return Enum.Material[matName] end)
if ok and enumMat then
pcall(function() obj.Material = enumMat end)
else
-- fallback: set to SmoothPlastic
pcall(function() obj.Material = Enum.Material.SmoothPlastic end)
end
-- remove attribute
pcall(function() obj:SetAttribute("OiHub_origMaterial", nil) end)
end
end
-- ParticleEmitter restore
if obj:IsA("ParticleEmitter") then
local origEnabled = getAttr(obj, "OiHub_origEnabled")
local minv = getAttr(obj, "OiHub_origRateMin")
local maxv = getAttr(obj, "OiHub_origRateMax")
if origEnabled ~= nil then
pcall(function()
obj.Enabled = origEnabled
if minv and maxv then obj.Rate = NumberRange.new(minv, maxv) end
end)
pcall(function() obj:SetAttribute("OiHub_origEnabled", nil); obj:SetAttribute("OiHub_origRateMin", nil); obj:SetAttribute("OiHub_origRateMax", nil) end)
end
end
-- Trail / Beam / Smoke / Fire restore
if obj:IsA("Trail") or obj:IsA("Beam") or obj:IsA("Smoke") or obj:IsA("Fire") then
local origEnabled = getAttr(obj, "OiHub_origEnabled")
if origEnabled ~= nil then
pcall(function() obj.Enabled = origEnabled end)
pcall(function() obj:SetAttribute("OiHub_origEnabled", nil) end)
end
end
-- Lights
if obj:IsA("PointLight") or obj:IsA("SpotLight") or obj:IsA("SurfaceLight") then
local origE = getAttr(obj, "OiHub_origEnabled")
local origB = getAttr(obj, "OiHub_origBrightness")
local origR = getAttr(obj, "OiHub_origRange")
if origE ~= nil then
pcall(function() obj.Enabled = origE; if origB then obj.Brightness = origB end; if origR then obj.Range = origR end end)
pcall(function() obj:SetAttribute("OiHub_origEnabled", nil); obj:SetAttribute("OiHub_origBrightness", nil); obj:SetAttribute("OiHub_origRange", nil) end)
end
end
-- Sounds
if obj:IsA("Sound") then
local ov = getAttr(obj, "OiHub_origVolume")
local op = getAttr(obj, "OiHub_origPlaying")
if ov ~= nil then
pcall(function() obj.Volume = ov; if op then obj:Play() end end)
pcall(function() obj:SetAttribute("OiHub_origVolume", nil); obj:SetAttribute("OiHub_origPlaying", nil) end)
end
end
end
optimizedFlag.Value = false
notify("Visual restaurado.", 3)
end
-- GUI: (reaproveita se já existir)
local guiName = "OiHubOptimizeGUI"
local gui = playerGui:FindFirstChild(guiName)
if gui and gui:IsA("ScreenGui") then
-- reuse
else
gui = Instance.new("ScreenGui")
gui.Name = guiName
gui.ResetOnSpawn = false
gui.Parent = playerGui
end
-- Limpa antigas instâncias internas se existirem (evita duplicações)
local function safeFind(name)
local o = gui:FindFirstChild(name)
if o then o:Destroy() end
end
safeFind("KeyFrame"); safeFind("MainFrame"); safeFind("RestoreBtn")
-- Key frame
local keyFrame = Instance.new("Frame", gui)
keyFrame.Name = "KeyFrame"
keyFrame.Size = UDim2.new(0, 320, 0, 160)
keyFrame.Position = UDim2.new(0.5, -160, 0.5, -80)
keyFrame.BackgroundColor3 = Color3.fromRGB(24,24,28)
Instance.new("UICorner", keyFrame).CornerRadius = UDim.new(0,8)
local kTitle = Instance.new("TextLabel", keyFrame)
kTitle.Size = UDim2.new(1, -24, 0, 28)
kTitle.Position = UDim2.new(0, 12, 0, 8)
kTitle.BackgroundTransparency = 1
kTitle.Text = "OiHub - Insira a Key"
kTitle.TextColor3 = Color3.fromRGB(230,230,230)
kTitle.Font = Enum.Font.GothamBold
kTitle.TextSize = 18
local keyBox = Instance.new("TextBox", keyFrame)
keyBox.Size = UDim2.new(0.9, 0, 0, 36)
keyBox.Position = UDim2.new(0.05, 0, 0, 44)
keyBox.PlaceholderText = "Digite a Key..."
keyBox.Text = ""
keyBox.BackgroundColor3 = Color3.fromRGB(33,33,36)
keyBox.TextColor3 = Color3.fromRGB(240,240,240)
Instance.new("UICorner", keyBox).CornerRadius = UDim.new(0,6)
local confirmBtn = Instance.new("TextButton", keyFrame)
confirmBtn.Size = UDim2.new(0.45, 0, 0, 36)
confirmBtn.Position = UDim2.new(0.05, 0, 0, 92)
confirmBtn.Text = "Confirmar"
confirmBtn.BackgroundColor3 = Color3.fromRGB(64,160,255)
confirmBtn.TextColor3 = Color3.fromRGB(255,255,255)
Instance.new("UICorner", confirmBtn).CornerRadius = UDim.new(0,6)
local getKeyBtn = Instance.new("TextButton", keyFrame)
getKeyBtn.Size = UDim2.new(0.45, 0, 0, 36)
getKeyBtn.Position = UDim2.new(0.5, 0, 0, 92)
getKeyBtn.Text = "Get Key"
getKeyBtn.BackgroundColor3 = Color3.fromRGB(80,80,80)
getKeyBtn.TextColor3 = Color3.fromRGB(255,255,255)
Instance.new("UICorner", getKeyBtn).CornerRadius = UDim.new(0,6)
-- Main: botão otimizar único + minimizar + fechar
local mainFrame = Instance.new("Frame", gui)
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 320, 0, 120)
mainFrame.Position = UDim2.new(0.5, -160, 0.5, -60)
mainFrame.BackgroundColor3 = Color3.fromRGB(29,29,32)
mainFrame.Visible = false
Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0,8)
local closeBtn = Instance.new("TextButton", mainFrame)
closeBtn.Size = UDim2.new(0, 28, 0, 28)
closeBtn.Position = UDim2.new(1, -34, 0, 6)
closeBtn.Text = "X"
closeBtn.BackgroundColor3 = Color3.fromRGB(180,60,60)
local miniBtn = Instance.new("TextButton", mainFrame)
miniBtn.Size = UDim2.new(0, 28, 0, 28)
miniBtn.Position = UDim2.new(1, -70, 0, 6)
miniBtn.Text = "-"
miniBtn.BackgroundColor3 = Color3.fromRGB(100,100,100)
local optimizeBtn = Instance.new("TextButton", mainFrame)
optimizeBtn.Size = UDim2.new(0.9, 0, 0, 60)
optimizeBtn.Position = UDim2.new(0.05, 0, 0.25, 0)
optimizeBtn.Text = "Otimizar (materiais → Plastic + VFX off)"
optimizeBtn.TextWrapped = true
optimizeBtn.BackgroundColor3 = Color3.fromRGB(64,160,255)
Instance.new("UICorner", optimizeBtn).CornerRadius = UDim.new(0,6)
-- Restore small button (aparece quando minimize)
local restoreBtn = Instance.new("TextButton", gui)
restoreBtn.Name = "RestoreBtn"
restoreBtn.Size = UDim2.new(0, 110, 0, 36)
restoreBtn.Position = UDim2.new(0.05, 0, 0.9, 0)
restoreBtn.Text = "Abrir OiHub"
restoreBtn.Visible = false
restoreBtn.BackgroundColor3 = Color3.fromRGB(64,160,255)
Instance.new("UICorner", restoreBtn).CornerRadius = UDim.new(0,6)
-- Button behaviors
confirmBtn.MouseButton1Click:Connect(function()
if keyBox.Text == KEY then
keyFrame.Visible = false
mainFrame.Visible = true
restoreBtn.Visible = false
notify("Key aceita!", 2)
else
notify("Key inválida!", 2)
end
end)
getKeyBtn.MouseButton1Click:Connect(function()
pcall(function() setclipboard(DiscordLink) end)
notify("Link copiado!", 2)
end)
optimizeBtn.MouseButton1Click:Connect(function()
if not optimizedFlag.Value then
applyOptimization()
optimizeBtn.Text = "Restaurar visual"
else
restoreOptimization()
optimizeBtn.Text = "Otimizar (materiais → Plastic + VFX off)"
end
end)
-- Minimizar
miniBtn.MouseButton1Click:Connect(function()
mainFrame.Visible = false
restoreBtn.Visible = true
end)
restoreBtn.MouseButton1Click:Connect(function()
mainFrame.Visible = true
restoreBtn.Visible = false
end)
-- Fechar (X) destrói GUI e marca closedFlag
closeBtn.MouseButton1Click:Connect(function()
-- se otimizado, preservamos o estado otimizadoFlag, mas removemos GUI
gui:Destroy()
closedFlag.Value = true
notify("OiHub fechado. Para abrir novamente reinicie o script.", 3)
end)
-- reaplica otimização automaticamente após respawn se flag persistente estiver true
player.CharacterAdded:Connect(function()
task.wait(0.2)
if optimizedFlag.Value then
-- reaplicar: se attributes já existem, applyOptimization só assegura os estados atuais (não sobrescreve atributos)
applyOptimization()
end
end)
-- Se já estava otimizado antes de abrir o script, aplica imediatamente
if optimizedFlag.Value then
-- esconde key e mostra main
keyFrame.Visible = false
mainFrame.Visible = true
optimizeBtn.Text = "Restaurar visual"
-- reaplica alterações (safe)
task.defer(function() applyOptimization() end)
else
-- se não otimizado, show key frame (ou main se quiser)
keyFrame.Visible = true
mainFrame.Visible = false
end
notify("OiHub pronto. Insira a key para habilitar o botão de otimização.", 4)No comments yet for this script.



