
KeylessUniversal

-- i made it Open Source so you guys can Add it Skid it I dont Care cuz this will be Discontinued
local Api_Gemini67 = “"
local CollectionService = game:GetService("CollectionService")
local TweenService = game:GetService("TweenService")
local HttpService = game:GetService("HttpService")
local UserInputService = game:GetService("UserInputService")
local lp = game:GetService("Players").LocalPlayer
local G2L = {}
local Api_Groq = ""
local Api_GroqGpt = ""
local Icons = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/Footagesus/Icons/main/Main-v2.lua"))()
local WindUI = loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()
local New = WindUI.Creator.New
Icons.Init(New, "Icon")
local currentAI = "Gemini"
local function UpdateScrollingFrame()
local totalHeight = 0
for _, child in ipairs(G2L["ScrollingFrame_c"]:GetChildren()) do
if child:IsA("TextBox") or child:IsA("TextLabel") or child:IsA("Frame") then
totalHeight = totalHeight + child.Size.Y.Offset + 5
end
end
G2L["ScrollingFrame_c"].CanvasSize = UDim2.new(0, 0, 0, totalHeight)
local yOffset = 0
for _, child in ipairs(G2L["ScrollingFrame_c"]:GetChildren()) do
if child:IsA("TextBox") or child:IsA("TextLabel") or child:IsA("Frame") then
child.Position = UDim2.new(0, 5, 0, yOffset)
yOffset = yOffset + child.Size.Y.Offset + 5
end
end
G2L["ScrollingFrame_c"].CanvasPosition = Vector2.new(0, totalHeight)
end
local function CallGeminiAPI(userMessage)
local body = HttpService:JSONEncode({
contents = {{ parts = {{ text = userMessage }} }}
})
local success, response = pcall(function()
return request({
Url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent?key=" .. Api_Gemini67,
Method = "POST",
Headers = {
["Content-Type"] = "application/json"
},
Body = body
})
end)
if not success then
return "Error: Request failed - " .. tostring(response)
end
if not response or not response.Body then
return "Error: No response from server"
end
local decodeSuccess, data = pcall(function()
return HttpService:JSONDecode(response.Body)
end)
if not decodeSuccess then
return "Error: Invalid response format - " .. tostring(data)
end
if data and data.candidates and data.candidates[1] and
data.candidates[1].content and data.candidates[1].content.parts and
data.candidates[1].content.parts[1] and data.candidates[1].content.parts[1].text then
local aiText = data.candidates[1].content.parts[1].text
return aiText
end
if data and data.error then
return "API Error: " .. (data.error.message or "Unknown error")
end
return "Error: Unable to parse AI response. Check console for details."
end
local function CallClaudeAPI(userMessage, apiKey)
local body = HttpService:JSONEncode({
model = "claude-sonnet-4-5-20250929",
max_tokens = 1024,
messages = {{
role = "user",
content = userMessage
}}
})
local success, response = pcall(function()
return request({
Url = "https://api.anthropic.com/v1/messages",
Method = "POST",
Headers = {
["Content-Type"] = "application/json",
["x-api-key"] = apiKey,
["anthropic-version"] = "2023-06-01"
},
Body = body
})
end)
if not success then
return "Error: Request failed - " .. tostring(response)
end
if not response or not response.Body then
return "Error: No response from server"
end
local decodeSuccess, data = pcall(function()
return HttpService:JSONDecode(response.Body)
end)
if not decodeSuccess then
return "Error: Invalid response format"
end
if data and data.content and data.content[1] and data.content[1].text then
return data.content[1].text
end
if data and data.error then
return "Claude Error: " .. (data.error.message or "Unknown error")
end
return "Error: Unable to parse Claude response"
end
local function CallGroqLlamaAPI(userMessage)
local body = HttpService:JSONEncode({
model = "llama-3.1-8b-instant",
messages = {{
role = "user",
content = userMessage
}},
max_tokens = 1024,
temperature = 0.7
})
local success, response = pcall(function()
return request({
Url = "https://api.groq.com/openai/v1/chat/completions",
Method = "POST",
Headers = {
["Content-Type"] = "application/json",
["Authorization"] = "Bearer " .. Api_Groq
},
Body = body
})
end)
if not success then
return "Error: Request failed - " .. tostring(response)
end
if not response or not response.Body then
return "Error: No response from server"
end
local decodeSuccess, data = pcall(function()
return HttpService:JSONDecode(response.Body)
end)
if not decodeSuccess then
return "Error: Invalid response format"
end
if data and data.choices and data.choices[1] and data.choices[1].message and data.choices[1].message.content then
return data.choices[1].message.content
end
if data and data.error then
return "Groq Llama Error: " .. (data.error.message or "Unknown error")
end
return "Error: Unable to parse Groq Llama response"
end
local function CallGroqGptOssAPI(userMessage)
local body = HttpService:JSONEncode({
model = "openai/gpt-oss-120b",
messages = {{
role = "user",
content = userMessage
}},
max_tokens = 1024,
temperature = 0.7
})
local success, response = pcall(function()
return request({
Url = "https://api.groq.com/openai/v1/chat/completions",
Method = "POST",
Headers = {
["Content-Type"] = "application/json",
["Authorization"] = "Bearer " .. Api_GroqGpt
},
Body = body
})
end)
if not success then
return "Error: Request failed - " .. tostring(response)
end
if not response or not response.Body then
return "Error: No response from server"
end
local decodeSuccess, data = pcall(function()
return HttpService:JSONDecode(response.Body)
end)
if not decodeSuccess then
return "Error: Invalid response format"
end
if data and data.choices and data.choices[1] and data.choices[1].message and data.choices[1].message.content then
return data.choices[1].message.content
end
if data and data.error then
return "Groq GPT-OSS Error: " .. (data.error.message or "Unknown error")
end
return "Error: Unable to parse Groq GPT-OSS response"
end
local function CallChatGPTAPI(userMessage, apiKey)
local body = HttpService:JSONEncode({
model = "gpt-4o-mini",
messages = {{
role = "user",
content = userMessage
}},
max_tokens = 1024,
temperature = 0.7
})
local success, response = pcall(function()
return request({
Url = "https://api.openai.com/v1/chat/completions",
Method = "POST",
Headers = {
["Content-Type"] = "application/json",
["Authorization"] = "Bearer " .. apiKey
},
Body = body
})
end)
if not success then
return "Error: Request failed - " .. tostring(response)
end
if not response or not response.Body then
return "Error: No response from server"
end
local decodeSuccess, data = pcall(function()
return HttpService:JSONDecode(response.Body)
end)
if not decodeSuccess then
return "Error: Invalid response format"
end
if data and data.choices and data.choices[1] and data.choices[1].message and data.choices[1].message.content then
return data.choices[1].message.content
end
if data and data.error then
return "ChatGPT Error: " .. (data.error.message or "Unknown error")
end
return "Error: Unable to parse ChatGPT response"
end
local function CallAI(userMessage)
if currentAI == "Gemini" then
return CallGeminiAPI(userMessage)
elseif currentAI == "Claude" then
return CallClaudeAPI(userMessage, getgenv().ClaudeApi)
elseif currentAI == "(Groq) Llama" then
return CallGroqLlamaAPI(userMessage)
elseif currentAI == "(Groq) Gpt Oss" then
return CallGroqGptOssAPI(userMessage)
elseif currentAI == "Gpt-4" then
return CallChatGPTAPI(userMessage, getgenv().ChatGptApi)
else
return "Please select an AI model from the settings"
end
end
local function AddMessage(sender, message, isUser)
local messageLabel = Instance.new("TextLabel")
messageLabel.Size = UDim2.new(1, -10, 0, 0)
messageLabel.BackgroundTransparency = 1
messageLabel.TextColor3 = isUser and Color3.fromRGB(100, 200, 255) or Color3.fromRGB(255, 255, 255)
messageLabel.FontFace = Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal)
messageLabel.TextSize = 14
messageLabel.TextWrapped = true
messageLabel.TextXAlignment = Enum.TextXAlignment.Left
messageLabel.TextYAlignment = Enum.TextYAlignment.Top
messageLabel.Text = sender .. ": " .. message
messageLabel.Parent = G2L["ScrollingFrame_c"]
local textBounds = game:GetService("TextService"):GetTextSize(
messageLabel.Text,
messageLabel.TextSize,
Enum.Font.Code,
Vector2.new(messageLabel.AbsoluteSize.X, math.huge)
)
messageLabel.Size = UDim2.new(1, -10, 0, math.max(textBounds.Y + 10, 30))
UpdateScrollingFrame()
return messageLabel
end
local function CreateCodeBlock(code, language)
local codeFrame = Instance.new("Frame")
codeFrame.Size = UDim2.new(1, -10, 0, 0)
codeFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
codeFrame.BorderSizePixel = 0
codeFrame.Parent = G2L["ScrollingFrame_c"]
local codeCorner = Instance.new("UICorner", codeFrame)
codeCorner.CornerRadius = UDim.new(0, 6)
local codeBox = Instance.new("TextBox")
codeBox.Size = UDim2.new(1, -50, 1, -10)
codeBox.Position = UDim2.new(0, 5, 0, 5)
codeBox.BackgroundTransparency = 1
codeBox.TextColor3 = Color3.fromRGB(0, 255, 127)
codeBox.FontFace = Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal)
codeBox.TextSize = 12
codeBox.TextWrapped = true
codeBox.TextXAlignment = Enum.TextXAlignment.Left
codeBox.TextYAlignment = Enum.TextYAlignment.Top
codeBox.Text = code
codeBox.TextEditable = false
codeBox.ClearTextOnFocus = false
codeBox.MultiLine = true
codeBox.Parent = codeFrame
local copyButton = Instance.new("ImageButton")
copyButton.Size = UDim2.new(0, 20, 0, 20)
copyButton.Position = UDim2.new(1, -50, 0, 7)
copyButton.BackgroundTransparency = 1
copyButton.Parent = codeFrame
local copyIcon = Icons.Image({
Icon = "external-link",
Colors = {Color3.fromRGB(200, 200, 200)},
Size = UDim2.new(0, 18, 0, 18)
})
copyIcon.IconFrame.Parent = copyButton
copyButton.MouseButton1Click:Connect(function()
setclipboard(code)
copyIcon.IconFrame.ImageColor3 = Color3.fromRGB(0, 255, 127)
task.wait(1)
copyIcon.IconFrame.ImageColor3 = Color3.fromRGB(200, 200, 200)
end)
local executeButton = Instance.new("ImageButton")
executeButton.Size = UDim2.new(0, 20, 0, 20)
executeButton.Position = UDim2.new(1, -25, 0, 7)
executeButton.BackgroundTransparency = 1
executeButton.Parent = codeFrame
local executeIcon = Icons.Image({
Icon = "code",
Colors = {Color3.fromRGB(200, 200, 200)},
Size = UDim2.new(0, 18, 0, 18)
})
executeIcon.IconFrame.Parent = executeButton
executeButton.MouseButton1Click:Connect(function()
local success, err = pcall(function()
loadstring(code)()
end)
if not success then
print("Execute error:", err)
end
executeIcon.IconFrame.ImageColor3 = Color3.fromRGB(255, 140, 0)
task.wait(1)
executeIcon.IconFrame.ImageColor3 = Color3.fromRGB(200, 200, 200)
end)
local textBounds = game:GetService("TextService"):GetTextSize(
code,
12,
Enum.Font.Code,
Vector2.new(codeBox.AbsoluteSize.X, math.huge)
)
codeFrame.Size = UDim2.new(1, -10, 0, math.max(textBounds.Y + 20, 50))
UpdateScrollingFrame()
return codeFrame
end
local function ExtractCodeBlocks(message)
local parts = {}
local lastIndex = 1
for codeStart, language, code, codeEnd in message:gmatch("()```([%w]*)\n?(.-)\n?```()") do
if codeStart > lastIndex then
local textBefore = message:sub(lastIndex, codeStart - 1)
if textBefore:gsub("%s+", "") ~= "" then
table.insert(parts, {type = "text", content = textBefore})
end
end
table.insert(parts, {type = "code", content = code, language = language})
lastIndex = codeEnd
end
if lastIndex <= #message then
local textAfter = message:sub(lastIndex)
if textAfter:gsub("%s+", "") ~= "" then
table.insert(parts, {type = "text", content = textAfter})
end
end
if #parts == 0 then
table.insert(parts, {type = "text", content = message})
end
return parts
end
local function DisplayAIResponse(message)
local parts = ExtractCodeBlocks(message)
local senderAdded = false
for i, part in ipairs(parts) do
if part.type == "text" then
if not senderAdded then
AddMessage(currentAI, part.content, false)
senderAdded = true
else
AddMessage("", part.content, false)
end
elseif part.type == "code" then
CreateCodeBlock(part.content, part.language)
end
end
end
local function ShowLoadingMessage()
local loadingLabel = Instance.new("TextLabel")
loadingLabel.Name = "LoadingMessage"
loadingLabel.Size = UDim2.new(1, -10, 0, 30)
loadingLabel.BackgroundTransparency = 1
loadingLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
loadingLabel.FontFace = Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal)
loadingLabel.TextSize = 14
loadingLabel.TextXAlignment = Enum.TextXAlignment.Left
loadingLabel.TextYAlignment = Enum.TextYAlignment.Top
loadingLabel.Text = currentAI .. ": ..."
loadingLabel.Parent = G2L["ScrollingFrame_c"]
UpdateScrollingFrame()
local dots = 0
local animationRunning = true
task.spawn(function()
while animationRunning and loadingLabel.Parent do
dots = (dots % 3) + 1
loadingLabel.Text = currentAI .. ": " .. string.rep(".", dots)
task.wait(0.5)
end
end)
return loadingLabel, function()
animationRunning = false
end
end
G2L["ScreenGui_1"] = Instance.new("ScreenGui", game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui"))
G2L["ScreenGui_1"]["ZIndexBehavior"] = Enum.ZIndexBehavior.Sibling
G2L["ScreenGui_1"]["ResetOnSpawn"] = false
CollectionService:AddTag(G2L["ScreenGui_1"], [[main]])
G2L["Frame_2"] = Instance.new("Frame", G2L["ScreenGui_1"])
G2L["Frame_2"]["BorderSizePixel"] = 0
G2L["Frame_2"]["BackgroundColor3"] = Color3.fromRGB(0, 0, 0)
G2L["Frame_2"]["Size"] = UDim2.new(0, 490, 0, 294)
G2L["Frame_2"]["Position"] = UDim2.new(0, 140, 0, -18)
G2L["Frame_2"]["BackgroundTransparency"] = 0.5
G2L["TextButton_3"] = Instance.new("TextButton", G2L["Frame_2"])
G2L["TextButton_3"]["BorderSizePixel"] = 0
G2L["TextButton_3"]["TextSize"] = 14
G2L["TextButton_3"]["TextColor3"] = Color3.fromRGB(0, 0, 0)
G2L["TextButton_3"]["BackgroundColor3"] = Color3.fromRGB(255, 0, 0)
G2L["TextButton_3"]["FontFace"] = Font.new([[rbxasset://fonts/families/ComicNeueAngular.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal)
G2L["TextButton_3"]["BackgroundTransparency"] = 1
G2L["TextButton_3"]["Size"] = UDim2.new(0, 18, 0, 16)
G2L["TextButton_3"]["BorderColor3"] = Color3.fromRGB(255, 0, 0)
G2L["TextButton_3"]["Text"] = [[X]]
G2L["TextButton_3"]["Position"] = UDim2.new(0, 472, 0, 0)
G2L["TextLabel_4"] = Instance.new("TextLabel", G2L["Frame_2"])
G2L["TextLabel_4"]["BorderSizePixel"] = 0
G2L["TextLabel_4"]["TextSize"] = 24
G2L["TextLabel_4"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255)
G2L["TextLabel_4"]["FontFace"] = Font.new([[rbxasset://fonts/families/DenkOne.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal)
G2L["TextLabel_4"]["TextColor3"] = Color3.fromRGB(0, 0, 0)
G2L["TextLabel_4"]["BackgroundTransparency"] = 1
G2L["TextLabel_4"]["Size"] = UDim2.new(0, 148, 0, 22)
G2L["TextLabel_4"]["Text"] = [[ChatAi]]
G2L["TextLabel_4"]["Position"] = UDim2.new(0, 148, 0, -2)
G2L["UICorner_5"] = Instance.new("UICorner", G2L["Frame_2"])
G2L["TextLabel4_6"] = Instance.new("TextLabel", G2L["Frame_2"])
G2L["TextLabel4_6"]["BorderSizePixel"] = 0
G2L["TextLabel4_6"]["BackgroundColor3"] = Color3.fromRGB(255, 0, 0)
G2L["TextLabel4_6"]["Size"] = UDim2.new(0, 10, 0, 10)
G2L["TextLabel4_6"]["Text"] = [[]]
G2L["TextLabel4_6"]["Name"] = [[TextLabel4]]
G2L["TextLabel4_6"]["Position"] = UDim2.new(0, 34, 0, 2)
G2L["UICorner_7"] = Instance.new("UICorner", G2L["TextLabel4_6"])
G2L["TextLabel3_8"] = Instance.new("TextLabel", G2L["Frame_2"])
G2L["TextLabel3_8"]["BorderSizePixel"] = 0
G2L["TextLabel3_8"]["BackgroundColor3"] = Color3.fromRGB(255, 253, 15)
G2L["TextLabel3_8"]["Size"] = UDim2.new(0, 10, 0, 10)
G2L["TextLabel3_8"]["Text"] = [[]]
G2L["TextLabel3_8"]["Name"] = [[TextLabel3]]
G2L["TextLabel3_8"]["Position"] = UDim2.new(0, 18, 0, 2)
G2L["UICorner_9"] = Instance.new("UICorner", G2L["TextLabel3_8"])
G2L["TextLabel2_a"] = Instance.new("TextLabel", G2L["Frame_2"])
G2L["TextLabel2_a"]["BorderSizePixel"] = 0
G2L["TextLabel2_a"]["BackgroundColor3"] = Color3.fromRGB(42, 255, 0)
G2L["TextLabel2_a"]["Size"] = UDim2.new(0, 10, 0, 10)
G2L["TextLabel2_a"]["Text"] = [[]]
G2L["TextLabel2_a"]["Name"] = [[TextLabel2]]
G2L["TextLabel2_a"]["Position"] = UDim2.new(0, 4, 0, 2)
G2L["UICorner_b"] = Instance.new("UICorner", G2L["TextLabel2_a"])
G2L["ScrollingFrame_c"] = Instance.new("ScrollingFrame", G2L["Frame_2"])
G2L["ScrollingFrame_c"]["BorderSizePixel"] = 0
G2L["ScrollingFrame_c"]["CanvasPosition"] = Vector2.new(2.5, 208.69614)
G2L["ScrollingFrame_c"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255)
G2L["ScrollingFrame_c"]["Size"] = UDim2.new(0, 472, 0, 202)
G2L["ScrollingFrame_c"]["ScrollBarImageColor3"] = Color3.fromRGB(0, 0, 0)
G2L["ScrollingFrame_c"]["Position"] = UDim2.new(0, 14, 0, 28)
G2L["ScrollingFrame_c"]["ScrollBarThickness"] = 3
G2L["ScrollingFrame_c"]["BackgroundTransparency"] = 1
G2L["Frame2_d"] = Instance.new("Frame", G2L["Frame_2"])
G2L["Frame2_d"]["BorderSizePixel"] = 0
G2L["Frame2_d"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255)
G2L["Frame2_d"]["Size"] = UDim2.new(0, 482, 0, 50)
G2L["Frame2_d"]["Position"] = UDim2.new(0, 4, 0, 238)
G2L["Frame2_d"]["Name"] = [[Frame2]]
G2L["UICorner_e"] = Instance.new("UICorner", G2L["Frame2_d"])
G2L["TextBox_f"] = Instance.new("TextBox", G2L["Frame_2"])
G2L["TextBox_f"]["CursorPosition"] = -1
G2L["TextBox_f"]["LineHeight"] = 0
G2L["TextBox_f"]["PlaceholderColor3"] = Color3.fromRGB(136, 136, 136)
G2L["TextBox_f"]["BorderSizePixel"] = 2
G2L["TextBox_f"]["TextWrapped"] = true
G2L["TextBox_f"]["TextSize"] = 14
G2L["TextBox_f"]["TextColor3"] = Color3.fromRGB(32, 32, 32)
G2L["TextBox_f"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255)
G2L["TextBox_f"]["FontFace"] = Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal)
G2L["TextBox_f"]["MultiLine"] = true
G2L["TextBox_f"]["ClearTextOnFocus"] = false
G2L["TextBox_f"]["ClipsDescendants"] = true
G2L["TextBox_f"]["PlaceholderText"] = "Ask " .. currentAI .. " anything..."
G2L["TextBox_f"]["Size"] = UDim2.new(0, 448, 0, 44)
G2L["TextBox_f"]["Position"] = UDim2.new(0, 4, 0, 242)
G2L["TextBox_f"]["BorderColor3"] = Color3.fromRGB(20, 66, 210)
G2L["TextBox_f"]["Text"] = [[]]
G2L["TextBox_f"]["BackgroundTransparency"] = 0.1
G2L["UICorner_10"] = Instance.new("UICorner", G2L["TextBox_f"])
G2L["ImageButton_11"] = Instance.new("ImageButton", G2L["Frame_2"])
G2L["ImageButton_11"]["BorderSizePixel"] = 0
G2L["ImageButton_11"]["BackgroundTransparency"] = 1
G2L["ImageButton_11"]["BackgroundColor3"] = Color3.fromRGB(255, 0, 0)
G2L["ImageButton_11"]["Size"] = UDim2.new(0, 28, 0, 26)
G2L["ImageButton_11"]["Position"] = UDim2.new(0, 456, 0, 256)
G2L["UICorner_ImageButton"] = Instance.new("UICorner", G2L["ImageButton_11"])
G2L["UIDragDetector_12"] = Instance.new("UIDragDetector", G2L["Frame_2"])
G2L["UIDragDetector_12"]["DragUDim2"] = UDim2.new(0, -11, 0, -15)
G2L["ImageButton_Toggle"] = Instance.new("ImageButton", G2L["ScreenGui_1"])
G2L["ImageButton_Toggle"]["BorderSizePixel"] = 0
G2L["ImageButton_Toggle"]["BackgroundTransparency"] = 0.1
G2L["ImageButton_Toggle"]["BackgroundColor3"] = Color3.fromRGB(27, 27, 27)
G2L["ImageButton_Toggle"]["Size"] = UDim2.new(0, 44, 0, 42)
G2L["ImageButton_Toggle"]["Position"] = UDim2.new(0, 176, 0, -42)
G2L["ImageButton_Toggle"]["Visible"] = false
G2L["UICorner_Toggle"] = Instance.new("UICorner", G2L["ImageButton_Toggle"])
G2L["UICorner_Toggle"]["CornerRadius"] = UDim.new(0, 26)
G2L["SettingsFrame"] = Instance.new("Frame", G2L["ScreenGui_1"])
G2L["SettingsFrame"]["BorderSizePixel"] = 0
G2L["SettingsFrame"]["BackgroundColor3"] = Color3.fromRGB(9, 9, 9)
G2L["SettingsFrame"]["Size"] = UDim2.new(0, 424, 0, 262)
G2L["SettingsFrame"]["Position"] = UDim2.new(0, 167, 0, -13)
G2L["SettingsFrame"]["BackgroundTransparency"] = 0.3
G2L["SettingsFrame"]["Visible"] = false
G2L["SettingsFrame"]["ZIndex"] = 20
G2L["SettingsUICorner"] = Instance.new("UICorner", G2L["SettingsFrame"])
G2L["SettingsUICorner"]["CornerRadius"] = UDim.new(0, 14)
G2L["SettingsDragDetector"] = Instance.new("UIDragDetector", G2L["SettingsFrame"])
G2L["SettingsDot1"] = Instance.new("TextLabel", G2L["SettingsFrame"])
G2L["SettingsDot1"]["BorderSizePixel"] = 0
G2L["SettingsDot1"]["BackgroundColor3"] = Color3.fromRGB(148, 0, 255)
G2L["SettingsDot1"]["Size"] = UDim2.new(0, 10, 0, 10)
G2L["SettingsDot1"]["Text"] = ""
G2L["SettingsDot1"]["Position"] = UDim2.new(0, 6, 0, 3)
G2L["SettingsDot1"]["ZIndex"] = 21
Instance.new("UICorner", G2L["SettingsDot1"])
G2L["SettingsDot2"] = Instance.new("TextLabel", G2L["SettingsFrame"])
G2L["SettingsDot2"]["BorderSizePixel"] = 0
G2L["SettingsDot2"]["BackgroundColor3"] = Color3.fromRGB(255, 0, 0)
G2L["SettingsDot2"]["Size"] = UDim2.new(0, 10, 0, 10)
G2L["SettingsDot2"]["Text"] = ""
G2L["SettingsDot2"]["Position"] = UDim2.new(0, 20, 0, 3)
G2L["SettingsDot2"]["ZIndex"] = 21
Instance.new("UICorner", G2L["SettingsDot2"])
G2L["SettingsDot3"] = Instance.new("TextLabel", G2L["SettingsFrame"])
G2L["SettingsDot3"]["BorderSizePixel"] = 0
G2L["SettingsDot3"]["BackgroundColor3"] = Color3.fromRGB(0, 0, 0)
G2L["SettingsDot3"]["Size"] = UDim2.new(0, 10, 0, 10)
G2L["SettingsDot3"]["Text"] = ""
G2L["SettingsDot3"]["Position"] = UDim2.new(0, 35, 0, 3)
G2L["SettingsDot3"]["ZIndex"] = 21
Instance.new("UICorner", G2L["SettingsDot3"])
G2L["SettingsTitle"] = Instance.new("TextLabel", G2L["SettingsFrame"])
G2L["SettingsTitle"]["TextStrokeTransparency"] = 0
G2L["SettingsTitle"]["BorderSizePixel"] = 0
G2L["SettingsTitle"]["TextSize"] = 14
G2L["SettingsTitle"]["TextTransparency"] = 0.9
G2L["SettingsTitle"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255)
G2L["SettingsTitle"]["FontFace"] = Font.new([[rbxasset://fonts/families/Inconsolata.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal)
G2L["SettingsTitle"]["TextColor3"] = Color3.fromRGB(0, 0, 2)
G2L["SettingsTitle"]["BackgroundTransparency"] = 1
G2L["SettingsTitle"]["Size"] = UDim2.new(0, 294, 0, 34)
G2L["SettingsTitle"]["Text"] = "Script Syndicate"
G2L["SettingsTitle"]["Position"] = UDim2.new(0, 58, 0, -8)
G2L["SettingsTitle"]["ZIndex"] = 21
G2L["SettingsCloseButton"] = Instance.new("TextButton", G2L["SettingsFrame"])
G2L["SettingsCloseButton"]["BorderSizePixel"] = 0
G2L["SettingsCloseButton"]["TextColor3"] = Color3.fromRGB(255, 255, 255)
G2L["SettingsCloseButton"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255)
G2L["SettingsCloseButton"]["BackgroundTransparency"] = 1
G2L["SettingsCloseButton"]["Size"] = UDim2.new(0, 22, 0, 20)
G2L["SettingsCloseButton"]["Text"] = "X"
G2L["SettingsCloseButton"]["Position"] = UDim2.new(0, 402, 0, 2)
G2L["SettingsCloseButton"]["ZIndex"] = 21
G2L["AISelectionFrame"] = Instance.new("Frame", G2L["SettingsFrame"])
G2L["AISelectionFrame"]["BorderSizePixel"] = 0
G2L["AISelectionFrame"]["BackgroundColor3"] = Color3.fromRGB(0, 0, 0)
G2L["AISelectionFrame"]["Size"] = UDim2.new(0, 404, 0, 56)
G2L["AISelectionFrame"]["Position"] = UDim2.new(0, 12, 0, 28)
G2L["AISelectionFrame"]["BackgroundTransparency"] = 0.2
G2L["AISelectionFrame"]["ZIndex"] = 21
G2L["AISelectionCorner"] = Instance.new("UICorner", G2L["AISelectionFrame"])
G2L["AISelectionCorner"]["CornerRadius"] = UDim.new(0, 6)
G2L["TextButton_SelectAI"] = Instance.new("TextButton", G2L["AISelectionFrame"])
G2L["TextButton_SelectAI"]["BorderSizePixel"] = 0
G2L["TextButton_SelectAI"]["TextSize"] = 14
G2L["TextButton_SelectAI"]["TextColor3"] = Color3.fromRGB(79, 210, 255)
G2L["TextButton_SelectAI"]["BackgroundColor3"] = Color3.fromRGB(48, 48, 48)
G2L["TextButton_SelectAI"]["FontFace"] = Font.new([[rbxasset://fonts/families/ComicNeueAngular.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal)
G2L["TextButton_SelectAI"]["Size"] = UDim2.new(0, 376, 0, 26)
G2L["TextButton_SelectAI"]["Text"] = "Select AI"
G2L["TextButton_SelectAI"]["Position"] = UDim2.new(0, 12, 0, 16)
G2L["TextButton_SelectAI"]["ZIndex"] = 22
G2L["ButtonCorner_SelectAI"] = Instance.new("UICorner", G2L["TextButton_SelectAI"])
G2L["DropdownFrame"] = Instance.new("Frame", G2L["SettingsFrame"])
G2L["DropdownFrame"]["BorderSizePixel"] = 0
G2L["DropdownFrame"]["BackgroundColor3"] = Color3.fromRGB(45, 45, 45)
G2L["DropdownFrame"]["Size"] = UDim2.new(0, 376, 0, 0)
G2L["DropdownFrame"]["Position"] = UDim2.new(0, 26, 0, 84)
G2L["DropdownFrame"]["Visible"] = false
G2L["DropdownFrame"]["ClipsDescendants"] = true
G2L["DropdownFrame"]["ZIndex"] = 25
G2L["DropdownCorner"] = Instance.new("UICorner", G2L["DropdownFrame"])
G2L["DropdownCorner"]["CornerRadius"] = UDim.new(0, 5)
G2L["DropdownStroke"] = Instance.new("UIStroke", G2L["DropdownFrame"])
G2L["DropdownStroke"]["Color"] = Color3.fromRGB(80, 80, 80)
G2L["DropdownStroke"]["Thickness"] = 1
G2L["DropdownScroll"] = Instance.new("ScrollingFrame", G2L["DropdownFrame"])
G2L["DropdownScroll"]["BorderSizePixel"] = 0
G2L["DropdownScroll"]["BackgroundTransparency"] = 1
G2L["DropdownScroll"]["Size"] = UDim2.new(1, 0, 1, 0)
G2L["DropdownScroll"]["CanvasSize"] = UDim2.new(0, 0, 0, 0)
G2L["DropdownScroll"]["ScrollBarThickness"] = 4
G2L["DropdownScroll"]["ZIndex"] = 26
local settingsButton = Instance.new("ImageButton", G2L["Frame_2"])
settingsButton["BorderSizePixel"] = 0
settingsButton["BackgroundTransparency"] = 1
settingsButton["BackgroundColor3"] = Color3.fromRGB(50, 50, 50)
settingsButton["Size"] = UDim2.new(0, 22, 0, 22)
settingsButton["Position"] = UDim2.new(0, 445, 0, -3)
settingsButton["ZIndex"] = 10
settingsButton["Image"] = ""
settingsButton["ImageColor3"] = Color3.fromRGB(200, 200, 200)
local settingsCorner = Instance.new("UICorner", settingsButton)
settingsCorner["CornerRadius"] = UDim.new(0, 6)
local dropdownOptions = {"Claude", "Gpt-4", "Gemini", "(Groq) Llama", "(Groq) Gpt Oss"}
local function createDropdownOptions()
local totalHeight = 0
for index, option in ipairs(dropdownOptions) do
local optionButton = Instance.new("TextButton", G2L["DropdownScroll"])
optionButton["BorderSizePixel"] = 0
optionButton["BackgroundColor3"] = Color3.fromRGB(45, 45, 45)
optionButton["Size"] = UDim2.new(1, -8, 0, 28)
optionButton["Position"] = UDim2.new(0, 4, 0, (index - 1) * 28 + 4)
optionButton["Text"] = option
optionButton["TextSize"] = 12
optionButton["TextColor3"] = Color3.fromRGB(255, 255, 255)
optionButton["FontFace"] = Font.new([[rbxasset://fonts/families/ComicNeueAngular.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal)
optionButton["ZIndex"] = 27
local optionCorner = Instance.new("UICorner", optionButton)
optionCorner["CornerRadius"] = UDim.new(0, 3)
optionButton.MouseEnter:Connect(function()
optionButton["BackgroundColor3"] = Color3.fromRGB(70, 70, 70)
end)
optionButton.MouseLeave:Connect(function()
optionButton["BackgroundColor3"] = Color3.fromRGB(45, 45, 45)
end)
optionButton.MouseButton1Click:Connect(function()
currentAI = option
G2L["TextButton_SelectAI"]["Text"] = option
G2L["TextBox_f"]["PlaceholderText"] = "Ask " .. option .. " anything..."
G2L["DropdownFrame"]["Visible"] = false
AddMessage("System", "Switched to " .. option .. " AI model", false)
end)
totalHeight = totalHeight + 28
end
G2L["DropdownScroll"]["CanvasSize"] = UDim2.new(0, 0, 0, totalHeight + 8)
end
createDropdownOptions()
G2L["TextButton_SelectAI"].MouseButton1Click:Connect(function()
if G2L["DropdownFrame"]["Visible"] then
G2L["DropdownFrame"]["Visible"] = false
else
G2L["DropdownFrame"]["Visible"] = true
G2L["DropdownFrame"]["Size"] = UDim2.new(0, 376, 0, #dropdownOptions * 28 + 8)
end
end)
G2L["SettingsCloseButton"].MouseButton1Click:Connect(function()
local settingsDisappearInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.In)
local settingsDisappearTween = TweenService:Create(G2L["SettingsFrame"], settingsDisappearInfo, {BackgroundTransparency = 1})
settingsDisappearTween:Play()
settingsDisappearTween.Completed:Connect(function()
G2L["SettingsFrame"]["Visible"] = false
G2L["Frame_2"]["Visible"] = true
G2L["Frame_2"]["BackgroundTransparency"] = 1
local mainAppearInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local mainAppearTween = TweenService:Create(G2L["Frame_2"], mainAppearInfo, {BackgroundTransparency = 0.5})
mainAppearTween:Play()
end)
end)
settingsButton.MouseEnter:Connect(function()
local hoverInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local hoverTween = TweenService:Create(settingsButton, hoverInfo, {
BackgroundTransparency = 0.7,
BackgroundColor3 = Color3.fromRGB(100, 100, 100)
})
hoverTween:Play()
end)
settingsButton.MouseLeave:Connect(function()
local unhoverInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local unhoverTween = TweenService:Create(settingsButton, unhoverInfo, {
BackgroundTransparency = 1,
BackgroundColor3 = Color3.fromRGB(50, 50, 50)
})
unhoverTween:Play()
end)
settingsButton.MouseButton1Click:Connect(function()
if not G2L["SettingsFrame"]["Visible"] then
local mainDisappearInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.In)
local mainDisappearTween = TweenService:Create(G2L["Frame_2"], mainDisappearInfo, {BackgroundTransparency = 1})
mainDisappearTween:Play()
mainDisappearTween.Completed:Connect(function()
G2L["Frame_2"]["Visible"] = false
G2L["SettingsFrame"]["Visible"] = true
G2L["SettingsFrame"]["BackgroundTransparency"] = 1
local settingsAppearInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local settingsAppearTween = TweenService:Create(G2L["SettingsFrame"], settingsAppearInfo, {BackgroundTransparency = 0.3})
settingsAppearTween:Play()
end)
end
end)
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
if G2L["DropdownFrame"]["Visible"] then
local mouse = game:GetService("Players").LocalPlayer:GetMouse()
local ddFrame = G2L["DropdownFrame"]
local buttonSize = G2L["TextButton_SelectAI"].AbsoluteSize
local buttonPos = G2L["TextButton_SelectAI"].AbsolutePosition
local ddSize = ddFrame.AbsoluteSize
local ddPos = ddFrame.AbsolutePosition
local mouseX = mouse.X
local mouseY = mouse.Y
if not (mouseX >= buttonPos.X and mouseX <= buttonPos.X + buttonSize.X and
mouseY >= buttonPos.Y and mouseY <= buttonPos.Y + buttonSize.Y) and
not (mouseX >= ddPos.X and mouseX <= ddPos.X + ddSize.X and
mouseY >= ddPos.Y and mouseY <= ddPos.Y + ddSize.Y) then
G2L["DropdownFrame"]["Visible"] = false
end
end
end
end)
G2L["TextButton_3"].MouseEnter:Connect(function()
local hoverInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local hoverTween = TweenService:Create(G2L["TextButton_3"], hoverInfo, {
BackgroundTransparency = 0.4,
BackgroundColor3 = Color3.fromRGB(255, 255, 255)
})
hoverTween:Play()
end)
G2L["TextButton_3"].MouseLeave:Connect(function()
local unhoverInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local unhoverTween = TweenService:Create(G2L["TextButton_3"], unhoverInfo, {
BackgroundTransparency = 1,
BackgroundColor3 = Color3.fromRGB(255, 0, 0)
})
unhoverTween:Play()
end)
G2L["TextButton_3"].MouseButton1Click:Connect(function()
local disappearInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut)
local disappearTween = TweenService:Create(G2L["Frame_2"], disappearInfo, {
BackgroundTransparency = 1,
Position = UDim2.new(0.5, -245, 0.5, -147)
})
disappearTween:Play()
disappearTween.Completed:Connect(function()
G2L["Frame_2"].Visible = false
G2L["ImageButton_Toggle"].Visible = true
local appearInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local appearTween = TweenService:Create(G2L["ImageButton_Toggle"], appearInfo, {Position = UDim2.new(0, 176, 0, 10)})
appearTween:Play()
end)
end)
G2L["ImageButton_Toggle"].MouseButton1Click:Connect(function()
local hideInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.In)
local hideTween = TweenService:Create(G2L["ImageButton_Toggle"], hideInfo, {Position = UDim2.new(0, 176, 0, -42)})
hideTween:Play()
hideTween.Completed:Connect(function()
G2L["ImageButton_Toggle"].Visible = false
G2L["Frame_2"].Visible = true
G2L["Frame_2"].BackgroundTransparency = 1
G2L["Frame_2"].Position = UDim2.new(0.5, -245, 0.5, -147)
local appearInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local appearTween = TweenService:Create(G2L["Frame_2"], appearInfo, {
BackgroundTransparency = 0.5,
Position = UDim2.new(0, 140, 0, -18)
})
appearTween:Play()
end)
end)
G2L["ImageButton_11"].MouseEnter:Connect(function()
local hoverInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local hoverTween = TweenService:Create(G2L["ImageButton_11"], hoverInfo, {
BackgroundTransparency = 0.7,
BackgroundColor3 = Color3.fromRGB(255, 140, 0)
})
hoverTween:Play()
end)
G2L["ImageButton_11"].MouseLeave:Connect(function()
local unhoverInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local unhoverTween = TweenService:Create(G2L["ImageButton_11"], unhoverInfo, {
BackgroundTransparency = 1,
BackgroundColor3 = Color3.fromRGB(255, 0, 0)
})
unhoverTween:Play()
end)
local sendIcon = Icons.Image({
Icon = "circle-arrow-up",
Colors = {Color3.fromRGB(255, 140, 0)},
Size = UDim2.new(0, 22, 0, 22)
})
sendIcon.IconFrame.Parent = G2L["ImageButton_11"]
sendIcon.IconFrame.Position = UDim2.new(0.5, 0, 0.5, 0)
sendIcon.IconFrame.AnchorPoint = Vector2.new(0.5, 0.5)
local currentAIRequest = nil
local isAIResponding = false
local function UpdateSendIcon(iconName, color)
if sendIcon and sendIcon.IconFrame then
sendIcon.IconFrame:Destroy()
end
sendIcon = Icons.Image({
Icon = iconName,
Colors = {color},
Size = UDim2.new(0, 22, 0, 22)
})
sendIcon.IconFrame.Parent = G2L["ImageButton_11"]
sendIcon.IconFrame.Position = UDim2.new(0.5, 0, 0.5, 0)
sendIcon.IconFrame.AnchorPoint = Vector2.new(0.5, 0.5)
end
G2L["ImageButton_11"].MouseButton1Click:Connect(function()
if isAIResponding then
isAIResponding = false
if currentAIRequest then
task.cancel(currentAIRequest)
currentAIRequest = nil
end
UpdateSendIcon("circle-arrow-up", Color3.fromRGB(255, 140, 0))
for _, child in ipairs(G2L["ScrollingFrame_c"]:GetChildren()) do
if child.Name == "LoadingMessage" then
child:Destroy()
end
end
AddMessage("System", "...", false)
return
end
local userMessage = G2L["TextBox_f"].Text
if userMessage:gsub("%s+", "") == "" then return end
AddMessage("You", userMessage, true)
G2L["TextBox_f"].Text = ""
UpdateSendIcon("circle-stop", Color3.fromRGB(255, 0, 0))
isAIResponding = true
local loadingMessage, stopAnimation = ShowLoadingMessage()
currentAIRequest = task.spawn(function()
local aiResponse = CallAI(userMessage)
if isAIResponding then
stopAnimation()
if loadingMessage and loadingMessage.Parent then
loadingMessage:Destroy()
end
DisplayAIResponse(aiResponse)
end
isAIResponding = false
currentAIRequest = nil
UpdateSendIcon("circle-arrow-up", Color3.fromRGB(255, 140, 0))
end)
end)
G2L["TextBox_f"].FocusLost:Connect(function(enterPressed)
if enterPressed and not isAIResponding then
local userMessage = G2L["TextBox_f"].Text
if userMessage:gsub("%s+", "") == "" then return end
AddMessage("You", userMessage, true)
G2L["TextBox_f"].Text = ""
UpdateSendIcon("circle-stop", Color3.fromRGB(255, 0, 0))
isAIResponding = true
local loadingMessage, stopAnimation = ShowLoadingMessage()
currentAIRequest = task.spawn(function()
local aiResponse = CallAI(userMessage)
if isAIResponding then
stopAnimation()
if loadingMessage and loadingMessage.Parent then
loadingMessage:Destroy()
end
DisplayAIResponse(aiResponse)
end
isAIResponding = false
currentAIRequest = nil
UpdateSendIcon("circle-arrow-up", Color3.fromRGB(255, 140, 0))
end)
task.wait(0.1)
G2L["TextBox_f"]:CaptureFocus()
end
end)
local botIcon = Icons.Image({
Icon = "bot-message-square",
Colors = {Color3.fromRGB(255, 255, 255)},
Size = UDim2.new(0, 30, 0, 30)
})
botIcon.IconFrame.Parent = G2L["ImageButton_Toggle"]
botIcon.IconFrame.Position = UDim2.new(0.5, 0, 0.5, 0)
botIcon.IconFrame.AnchorPoint = Vector2.new(0.5, 0.5)
local SettingIcon = Icons.Image({
Icon = "settings",
Colors = {Color3.fromRGB(200, 200, 200)},
Size = UDim2.new(0, 18, 0, 18)
})
SettingIcon.IconFrame.Parent = settingsButton
SettingIcon.IconFrame.Position = UDim2.new(0.5, 0, 0.5, 0)
SettingIcon.IconFrame.AnchorPoint = Vector2.new(0.5, 0.5)
AddMessage("System", "[V2.8] Hello " .. lp.DisplayName .. "! I'm ChatAI Made by Script Syndicate! - https://discord.gg/DMB3CDrDa9\n\nChangeLogs:\n+ Improved CodeBox\n+ Added Execute Button on CodeBox\n+ Added 4 Ai Models\n\nAvailable Ai:\n• Gemini\n• Groq Gpt Oss\n• Groq Llama\n• Claude (Need Custom API - Paid)\n• ChatGPT 4o mini (Need Custom API - Paid)\nA new Ai will be added soon, stay tuned!", false)
CreateCodeBlock([[
game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 50
]], "lua")
AddMessage("VelocityX", "Execute it using the icon on the top!", false)
return G2L["ScreenGui_1"]



Nice script, can be used to create scripts
@Im_ken thanks Its Currently not Done yet its actually for Premium For my Server Early Access but I js Leak it to the ScriptBlox Lmao
@LuaUX Add copy feature 😃
@Im_ken it has in the Top of the CodeBox
unsupport xeno?
@hiperion yes Low Unc Doesnt support as Cuz Your Executor doesnt support Request
@LuaUX Approved by muye-hub team, Malware scanning team.
ok
x-goog-api-key is "AIzaSyA6mUCD1O_vwLa2lmf16QwQyrw5bgWUXz0" Lol
API will be patched by google btw
Dawg yall really broke the script? Get a life.
Guys don't use this it sucks the ai cant respond
This is nice :) vertex approved!
chatgpt made this for u aswell didnt it?
@iplaywarzone5 im not like you Making Scripts With Ai
you know what would be sick? if you would also make it so that very unexperienced people could just ask it for stuff and then it will also send the game's build layout and if the ai for example responds asking for a certain module script you would decompile and give it that.
broken script for xeno