
Keyless

-- 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



Just gives me an error