Back to Scripts
ChatAi Open Source Code

ChatAi Open Source Code

ScriptBlox
Universal Free

Game: Universal Script šŸ“Œ

1,725,203 Views
19 Likes
2 Dislikes
LuaUX

LuaUX

offline

Features

Completely Keyless Free ChatAi you can Talk a New Update will come where you can talk Ai Grok. Claude. ChatGpt.

Tags

ChstAi Free Keyless Universal Op Universal Script

Script Code

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

Ratings & Reviews

No reviews yet. Be the first to review this script!

Comments (0)

Please login to comment

Login with Discord

Loading comments...