Qemini AI
Key Required

Qemini AI

Studio Liteabsa64261absa64261 1K views 7.4K executesUpdated Sep 10, 2026
Unrated
00
Lua Script•378 lines (12525 chars)
-- 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

Features & Information

Auto build
#AI

Community Comments (1)

Just gives me an error

More Scripts for Studio Lite