QuaRobloxBotClient
Key RequiredUniversal

QuaRobloxBotClient

Universal ScriptNoob3ButUkrNoob3ButUkr 57 views 672 executesUpdated Jul 25, 2026
Unrated
00
Lua Script•271 lines (7915 chars)
--[[
    QuaRobloxBotClient v1.1
    UI: Rayfield
--]]

local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local HttpService = game:GetService("HttpService")
local TextChatService = game:GetService("TextChatService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local activeWS = nil
local isConnected = false
local targetURL = "ht" .. "tps://127." .. "0.0.1:8000/"

-- something?
local function parseWebSocketURL(rawUrl)
    local url = tostring(rawUrl):gsub("%s+", "")
    url = url:gsub("^https?://", "ws://")
    if not url:match("^ws://") and not url:match("^wss://") then
        url = "ws://" .. url
    end
    if url:sub(-1) == "/" then
        url = url:sub(1, -2)
    end
    return url
end

-- window!?
local Window = Rayfield:CreateWindow({
   Name = "Qua Roblox Bot Client",
   LoadingTitle = "Qua Roblox Bot Client",
   LoadingSubtitle = "by PyNoob CaSP Software AKA t3m7kidd",
   ConfigurationSaving = { Enabled = false },
   KeySystem = false,
   RayfieldFolder = "QuaEngineData"
})

local ConnectionTab = Window:CreateTab("Connection", 4483362458)
local ControlsTab = Window:CreateTab("Movement", 4483345998)

local StatusParagraph = ConnectionTab:CreateParagraph({
    Title = "Server Status",
    Content = "🔴 Disconnected"
})

-- CHATINGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
local chatHooked = false
local function setupChatHook()
    if chatHooked then return end
    chatHooked = true

    local function sendChatToServer(speaker, message)
        if activeWS and isConnected then
            pcall(function()
                activeWS:Send(HttpService:JSONEncode({
                    event = "newChatMessage",
                    user = tostring(speaker),
                    text = tostring(message)
                }))
            end)
        end
    end

    if TextChatService and TextChatService.ChatVersion == Enum.ChatVersion.TextChatService then
        TextChatService.MessageReceived:Connect(function(msg)
            if msg.TextSource then
                sendChatToServer(msg.TextSource.Name, msg.Text)
            end
        end)
    else
        local chatEvents = ReplicatedStorage:FindFirstChild("DefaultChatSystemChatEvents")
        if chatEvents and chatEvents:FindFirstChild("OnMessageDoneFiltering") then
            chatEvents.OnMessageDoneFiltering.OnClientEvent:Connect(function(data)
                sendChatToServer(data.FromSpeaker, data.Message)
            end)
        end
    end
end

-- connection
local function connectToServer()
    if activeWS then
        pcall(function() activeWS:Close() end)
        activeWS = nil
    end

    local wsUrl = parseWebSocketURL(targetURL)

    Rayfield:Notify({
        Title = "Connecting...",
        Content = "Target: " .. wsUrl,
        Duration = 2
    })

    local success, ws = pcall(function()
        return WebSocket.connect(wsUrl)
    end)

    if success and ws then
        activeWS = ws
        isConnected = true
        getgenv().QuaConnected = true

        StatusParagraph:Set({
            Title = "Server Status",
            Content = "🟢 Connected (" .. wsUrl .. ")"
        })

        Rayfield:Notify({
            Title = "Connected!",
            Content = "Qua Engine Ready",
            Duration = 3
        })

        setupChatHook()

        ws.OnMessage:Connect(function(raw_data)
            local ok, data = pcall(function()
                return HttpService:JSONDecode(raw_data)
            end)

            if not ok or type(data) ~= "table" then return end

            local character = LocalPlayer.Character
            local hrp = character and character:FindFirstChild("HumanoidRootPart")
            local humanoid = character and character:FindFirstChildOfClass("Humanoid")

            if data.action == "jump" and humanoid then
                for i = 1, (data.count or 1) do
                    humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
                    task.wait(0.2)
                end

            elseif data.action == "move" and hrp then
                local studs = data.studs or 10
                local dir = data.dir
                local lookVector = hrp.CFrame.LookVector
                local rightVector = hrp.CFrame.RightVector

                if dir == "forward" then hrp.CFrame = hrp.CFrame + (lookVector * studs)
                elseif dir == "backward" then hrp.CFrame = hrp.CFrame - (lookVector * studs)
                elseif dir == "right" then hrp.CFrame = hrp.CFrame + (rightVector * studs)
                elseif dir == "left" then hrp.CFrame = hrp.CFrame - (rightVector * studs)
                end

            elseif data.action == "print" then
                Rayfield:Notify({
                    Title = "Qua Output",
                    Content = tostring(data.text),
                    Duration = 4
                })
            end
        end)

        ws.OnClose:Connect(function()
            isConnected = false
            activeWS = nil
            getgenv().QuaConnected = false
            StatusParagraph:Set({
                Title = "Server Status",
                Content = "🔴 Connection Lost"
            })
        end)
    else
        isConnected = false
        getgenv().QuaConnected = false
        StatusParagraph:Set({
            Title = "Server Status",
            Content = "❌ Failed to connect"
        })
        Rayfield:Notify({
            Title = "Error",
            Content = "Could not connect to " .. wsUrl,
            Duration = 4
        })
    end
end

-- connection
ConnectionTab:CreateInput({
   Name = "Server Address",
   PlaceholderText = "https://127.0.0.1:8000/",
   RemoveTextOnFocusLost = false,
   Callback = function(Text)
      targetURL = Text
   end,
})

ConnectionTab:CreateButton({
   Name = "Connect",
   Callback = function()
      connectToServer()
   end,
})

ConnectionTab:CreateButton({
   Name = "Disconnect",
   Callback = function()
      if activeWS then
          activeWS:Close()
          activeWS = nil
          isConnected = false
          getgenv().QuaConnected = false
          StatusParagraph:Set({Title = "Server Status", Content = "🔴 Disconnected"})
      end
   end,
})

-- movement
ControlsTab:CreateSlider({
   Name = "WalkSpeed Override",
   Range = {16, 300},
   Increment = 1,
   Suffix = " studs/s",
   CurrentValue = 16,
   Callback = function(Value)
      local char = LocalPlayer.Character
      local hum = char and char:FindFirstChildOfClass("Humanoid")
      if hum then hum.WalkSpeed = Value end
   end,
})

ControlsTab:CreateSlider({
   Name = "JumpPower Override",
   Range = {50, 600},
   Increment = 5,
   Suffix = " power",
   CurrentValue = 50,
   Callback = function(Value)
      local char = LocalPlayer.Character
      local hum = char and char:FindFirstChildOfClass("Humanoid")
      if hum then
          hum.UseJumpPower = true
          hum.JumpPower = Value
      end
   end,
})

ControlsTab:CreateButton({
   Name = "Reset Speed & Jump",
   Callback = function()
      local char = LocalPlayer.Character
      local hum = char and char:FindFirstChildOfClass("Humanoid")
      if hum then
          hum.WalkSpeed = 16
          hum.JumpPower = 50
      end
      Rayfield:Notify({ Title = "Reset", Content = "Default Movement Restored", Duration = 2 })
   end,
})

ControlsTab:CreateButton({
   Name = "Force Jump",
   Callback = function()
      local char = LocalPlayer.Character
      local hum = char and char:FindFirstChildOfClass("Humanoid")
      if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end
   end,
})

ControlsTab:CreateButton({
   Name = "Reset Character",
   Callback = function()
      local char = LocalPlayer.Character
      local hum = char and char:FindFirstChildOfClass("Humanoid")
      if hum then hum.Health = 0 end
   end,
})

Features & Information

Polls local server, your Qua script will do requests to this script via HTTP requests.
#client#bot#server#service#QuaRobloxBotClient

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts