-- Qemini AI for Studio Lite (InfinityX Edition) — AUTO-BUILD MODE -- Place in ServerScriptService as a Script (so it can build into workspace) local Players = game:GetService("Players") local RunService = game:GetService("RunService") -- ============ CONFIG ============ local COOLDOWN_TIME = 38 local cooldowns = {} -- per-player cooldown tracking -- ============ QEMINI BRAIN — REAL BUILDERS ============ -- Each builder ACTUALLY creates objects in workspace when run. local builders = {} builders["baseplate"] = function() local p = Instance.new("Part") p.Name = "Qemini_Baseplate" p.Size = Vector3.new(512, 20, 512) p.Position = Vector3.new(0, -10, 0) p.Anchored = true p.Material = Enum.Material.Grass p.Color = Color3.fromRGB(90, 160, 80) p.Parent = workspace return "Baseplate Map built." end builders["obby"] = function() local folder = Instance.new("Folder") folder.Name = "Qemini_Obby" folder.Parent = workspace for i = 1, 30 do local p = Instance.new("Part") p.Size = Vector3.new(8, 1, 8) p.Position = Vector3.new(math.random(-40,40), i*6, math.random(-40,40)) p.Anchored = true p.Material = Enum.Material.Neon p.Color = Color3.fromRGB(math.random(100,255), math.random(100,255), 255) p.Parent = folder end return "Obby built with 30 platforms." end builders["character"] = builders["npc"] = builders["dummy"] = function() local char = Instance.new("Model") char.Name = "Qemini_NPC" local function mk(n, s, c, pos) local p = Instance.new("Part") p.Name = n; p.Size = s; p.Color = c; p.Position = pos p.Anchored = true; p.Parent = char return p end local torso = mk("Torso", Vector3.new(2,2,1), Color3.fromRGB(0,120,255), Vector3.new(0,5,0)) mk("Head", Vector3.new(1.5,1.5,1.5), Color3.fromRGB(255,220,177), Vector3.new(0,7,0)) mk("LeftLeg", Vector3.new(1,2,1), Color3.fromRGB(50,50,50), Vector3.new(-0.5,3,0)) mk("RightLeg", Vector3.new(1,2,1), Color3.fromRGB(50,50,50), Vector3.new(0.5,3,0)) mk("LeftArm", Vector3.new(1,2,1), Color3.fromRGB(0,120,255), Vector3.new(-1.5,5,0)) mk("RightArm", Vector3.new(1,2,1), Color3.fromRGB(0,120,255), Vector3.new(1.5,5,0)) local hum = Instance.new("Humanoid") hum.Parent = char char.PrimaryPart = torso char.Parent = workspace return "NPC Character built." end builders["spinner"] = builders["spin"] = builders["effect"] = function() local p = Instance.new("Part") p.Shape = Enum.PartType.Ball p.Size = Vector3.new(4,4,4) p.Position = Vector3.new(0,8,0) p.Anchored = true p.Material = Enum.Material.Neon p.Color = Color3.fromRGB(180,80,255) p.Parent = workspace task.spawn(function() while p.Parent do p.CFrame = p.CFrame * CFrame.Angles(0, math.rad(3), 0) task.wait(0.03) end end) return "Spinner Effect active." end builders["killbrick"] = builders["kill"] = function() local kill = Instance.new("Part") kill.Name = "Qemini_KillBrick" kill.Size = Vector3.new(10,1,10) kill.Position = Vector3.new(0,1,0) kill.Anchored = true kill.Material = Enum.Material.Neon kill.Color = Color3.fromRGB(255,0,0) kill.Parent = workspace kill.Touched:Connect(function(hit) local hum = hit.Parent and hit.Parent:FindFirstChildOfClass("Humanoid") if hum then hum.Health = 0 end end) return "Kill Brick placed (touch = death)." end builders["terrain"] = builders["water"] = builders["hill"] = function() local region = Region3.new(Vector3.new(-60,-10,-60), Vector3.new(60,30,60)) workspace.Terrain:FillRegion(region, 4, Enum.Material.Water) workspace.Terrain:FillBall(Vector3.new(0,0,0), 40, Enum.Material.Grass) return "Terrain (water + grass hill) generated." end -- GUI BUILDER — makes a real ScreenGui with a working button builders["gui"] = builders["button"] = function(player) local gui = Instance.new("ScreenGui") gui.Name = "Qemini_GUI_" .. player.Name gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 300, 0, 200) frame.Position = UDim2.new(0.5, -150, 0.5, -100) frame.BackgroundColor3 = Color3.fromRGB(20, 20, 30) frame.BorderSizePixel = 0 frame.Parent = gui Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 12) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 220, 0, 60) btn.Position = UDim2.new(0.5, -110, 0.5, -30) btn.BackgroundColor3 = Color3.fromRGB(120, 80, 255) btn.Text = "QEMINI BUTTON" btn.TextColor3 = Color3.new(1,1,1) btn.Font = Enum.Font.GothamBold btn.TextSize = 20 btn.BorderSizePixel = 0 btn.Parent = frame Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 10) -- The button actually does something when clicked btn.MouseButton1Click:Connect(function() btn.Text = "CLICKED ✔" btn.BackgroundColor3 = Color3.fromRGB(80, 255, 120) -- Spawn a neon ball above the player local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") then local ball = Instance.new("Part") ball.Shape = Enum.PartType.Ball ball.Size = Vector3.new(3,3,3) ball.Position = char.HumanoidRootPart.Position + Vector3.new(0, 6, 0) ball.Material = Enum.Material.Neon ball.Color = Color3.fromRGB(255, 255, 0) ball.Parent = workspace task.wait(2) ball:Destroy() end task.wait(1) btn.Text = "QEMINI BUTTON" btn.BackgroundColor3 = Color3.fromRGB(120, 80, 255) end) return "GUI built with working button (click it!)." end -- ============ PROMPT ROUTER ============ local function generate(player, prompt) local p = string.lower(prompt) local order = { {"gui", "button"}, {"killbrick", "kill"}, {"character", "npc", "dummy"}, {"obby", "parkour"}, {"spinner", "spin", "effect"}, {"terrain", "water", "hill"}, {"baseplate", "map", "flat"} } for _, keys in ipairs(order) do for _, k in ipairs(keys) do if string.find(p, k) then return builders[keys[1]](player) end end end -- default return builders["baseplate"]() end -- ============ SERVER SETUP — create RemoteEvent ============ local remote = Instance.new("RemoteEvent") remote.Name = "QeminiRequest" remote.Parent = game.ReplicatedStorage remote.OnServerEvent:Connect(function(player, prompt) -- Cooldown check local now = tick() if cooldowns[player] and now - cooldowns[player] < COOLDOWN_TIME then local wait = math.ceil(COOLDOWN_TIME - (now - cooldowns[player])) remote:FireClient(player, "cooldown", "Wait " .. wait .. "s more.") return end cooldowns[player] = now local success, result = pcall(generate, player, prompt) if success then remote:FireClient(player, "success", result) else remote:FireClient(player, "error", "Build failed: " .. tostring(result)) end end) Players.PlayerRemoving:Connect(function(player) cooldowns[player] = nil end) -- ============ AUTO GUI ON JOIN ============ -- Give every player the Qemini panel automatically local function givePanel(player) local playerGui = player:WaitForChild("PlayerGui") local gui = Instance.new("ScreenGui") gui.Name = "QeminiAI_InfinityX" gui.ResetOnSpawn = false gui.Parent = playerGui local main = Instance.new("Frame") main.Size = UDim2.new(0, 520, 0, 380) main.Position = UDim2.new(0.5, -260, 0.5, -190) main.BackgroundColor3 = Color3.fromRGB(18, 18, 24) main.BorderSizePixel = 0 main.Active = true main.Draggable = true main.Parent = gui Instance.new("UICorner", main).CornerRadius = UDim.new(0, 14) local st = Instance.new("UIStroke", main) st.Color = Color3.fromRGB(120, 80, 255); st.Thickness = 2 local header = Instance.new("Frame") header.Size = UDim2.new(1, 0, 0, 46) header.BackgroundColor3 = Color3.fromRGB(30, 22, 55) header.BorderSizePixel = 0 header.Parent = main Instance.new("UICorner", header).CornerRadius = UDim.new(0, 14) local t = Instance.new("TextLabel") t.Size = UDim2.new(1, -20, 1, 0) t.Position = UDim2.new(0, 14, 0, 0) t.BackgroundTransparency = 1 t.Text = "✦ Qemini AI — InfinityX Builder ✦" t.TextColor3 = Color3.fromRGB(200, 170, 255) t.Font = Enum.Font.GothamBold t.TextSize = 18 t.TextXAlignment = Enum.TextXAlignment.Left t.Parent = header local out = Instance.new("ScrollingFrame") out.Size = UDim2.new(1, -24, 1, -170) out.Position = UDim2.new(0, 12, 0, 56) out.BackgroundColor3 = Color3.fromRGB(12, 12, 18) out.BorderSizePixel = 0 out.CanvasSize = UDim2.new(0,0,0,0) out.AutomaticCanvasSize = Enum.AutomaticSize.Y out.ScrollBarThickness = 6 out.Parent = main Instance.new("UICorner", out).CornerRadius = UDim.new(0, 8) local lay = Instance.new("UIListLayout", out) lay.Padding = UDim.new(0, 6); lay.SortOrder = Enum.SortOrder.LayoutOrder local pad = Instance.new("UIPadding", out) pad.PaddingTop = UDim.new(0,8); pad.PaddingBottom = UDim.new(0,8) pad.PaddingLeft = UDim.new(0,10); pad.PaddingRight = UDim.new(0,10) local function log(text, color) local lbl = Instance.new("TextLabel") lbl.Size = UDim2.new(1, -4, 0, 0) lbl.AutomaticSize = Enum.AutomaticSize.Y lbl.BackgroundTransparency = 1 lbl.Text = "› " .. text lbl.TextColor3 = color or Color3.fromRGB(220,220,230) lbl.Font = Enum.Font.Code lbl.TextSize = 14 lbl.TextWrapped = true lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.Parent = out task.wait(0.05) out.CanvasPosition = Vector2.new(0, out.AbsoluteCanvasSize.Y) end local inp = Instance.new("TextBox") inp.Size = UDim2.new(1, -130, 0, 44) inp.Position = UDim2.new(0, 12, 1, -60) inp.BackgroundColor3 = Color3.fromRGB(28,28,38) inp.BorderSizePixel = 0 inp.PlaceholderText = "Ask Qemini to build..." inp.Text = "" inp.TextColor3 = Color3.fromRGB(240,240,255) inp.PlaceholderColor3 = Color3.fromRGB(130,130,150) inp.Font = Enum.Font.Gotham inp.TextSize = 14 inp.TextXAlignment = Enum.TextXAlignment.Left inp.ClearTextOnFocus = false inp.Parent = main Instance.new("UICorner", inp).CornerRadius = UDim.new(0, 8) local ip = Instance.new("UIPadding", inp) ip.PaddingLeft = UDim.new(0,12); ip.PaddingRight = UDim.new(0,12) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 100, 0, 44) btn.Position = UDim2.new(1, -112, 1, -60) btn.BackgroundColor3 = Color3.fromRGB(120,80,255) btn.BorderSizePixel = 0 btn.Text = "SEND" btn.TextColor3 = Color3.new(1,1,1) btn.Font = Enum.Font.GothamBold btn.TextSize = 15 btn.AutoButtonColor = false btn.Parent = main Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) local cdBg = Instance.new("Frame") cdBg.Size = UDim2.new(1, -24, 0, 5) cdBg.Position = UDim2.new(0, 12, 1, -10) cdBg.BackgroundColor3 = Color3.fromRGB(40,40,55) cdBg.BorderSizePixel = 0 cdBg.Parent = main Instance.new("UICorner", cdBg).CornerRadius = UDim.new(0,3) local cdFill = Instance.new("Frame") cdFill.Size = UDim2.new(0,0,1,0) cdFill.BackgroundColor3 = Color3.fromRGB(120,80,255) cdFill.BorderSizePixel = 0 cdFill.Parent = cdBg Instance.new("UICorner", cdFill).CornerRadius = UDim.new(0,3) -- Client cooldown bar tracking local cooling = false local function startBar() cooling = true btn.Text = "WAIT..." btn.BackgroundColor3 = Color3.fromRGB(70,70,90) task.spawn(function() local elapsed = 0 while elapsed < COOLDOWN_TIME do elapsed += 0.1 cdFill.Size = UDim2.new(math.clamp(elapsed/COOLDOWN_TIME,0,1), 0, 1, 0) btn.Text = string.format("WAIT %ds", math.ceil(COOLDOWN_TIME - elapsed)) task.wait(0.1) end cooling = false btn.Text = "SEND" btn.BackgroundColor3 = Color3.fromRGB(120,80,255) cdFill.Size = UDim2.new(0,0,1,0) log("Limit collected. Ready again.", Color3.fromRGB(80,255,120)) end) end btn.MouseButton1Click:Connect(function() if cooling then return end local txt = inp.Text if txt == "" or #txt < 2 then log("Type something first.", Color3.fromRGB(255,200,100)) return end log("You: " .. txt, Color3.fromRGB(160,200,255)) inp.Text = "" remote:FireServer(txt) startBar() end) inp.FocusLost:Connect(function(enter) if enter then btn:Activate() end end) remote.OnClientEvent:Connect(function(kind, msg) if kind == "success" then log(msg, Color3.fromRGB(120,255,180)) elseif kind == "error" then log(msg, Color3.fromRGB(255,120,120)) elseif kind == "cooldown" then log(msg, Color3.fromRGB(255,200,100)) end end) log("Qemini AI online. Auto-build mode ACTIVE.", Color3.fromRGB(180,140,255)) log("Try: 'obby', 'character', 'kill brick', 'gui', 'spinner', 'terrain'.", Color3.fromRGB(200,200,220)) log("The GUI builder creates a real clickable button.", Color3.fromRGB(180,200,255)) end Players.PlayerAdded:Connect(givePanel) for _, plr in ipairs(Players:GetPlayers()) do task.spawn(givePanel, plr) end