
KeylessUniversal

local HttpService = game:GetService("HttpService")
local Players = game:GetService("Players")
local StarterGui = game:GetService("StarterGui")
local UserInputService = game:GetService("UserInputService")
local MarketplaceService = game:GetService("MarketplaceService")
local TeleportService = game:GetService("TeleportService")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local TUNNEL_URL = "https://perth-tan-july-stand.trycloudflare.com/remote"
local AUTH_KEY = "TuoB6PfnWN"
local clientId = HttpService:GenerateGUID(false)
local isAnon = false
local showGame = true
local lastMessageTime = 0
local isTyping = false
local lastTypeTime = 0
local isRunning = true
local receivedMessageIds = {}
local gameName = "Unknown Game"
pcall(function()
local info = MarketplaceService:GetProductInfo(game.PlaceId)
if info and info.Name then
gameName = info.Name
end
end)
local reqFunc = (syn and syn.request) or (http and http.request) or http_request or (fluxus and fluxus.request) or request
if not reqFunc then
StarterGui:SetCore("SendNotification", {
Title = "CONNECTION ERROR",
Text = "HTTP Request function not supported by executor.",
Duration = 5
})
return
end
local function sendRemote(eventType, payloadData)
if not isRunning then return nil end
local body = HttpService:JSONEncode({
type = eventType,
data = payloadData
})
local response = nil
local success = pcall(function()
response = reqFunc({
Url = TUNNEL_URL,
Method = "POST",
Headers = {
["Content-Type"] = "application/json",
["auth-token"] = AUTH_KEY
},
Body = body
})
end)
if success and response and response.StatusCode == 200 then
local jsonSuccess, decoded = pcall(function()
return HttpService:JSONDecode(response.Body)
end)
if jsonSuccess and decoded and decoded.events then
return decoded.events
end
end
return nil
end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "EzBridgeChatGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = PlayerGui
local loadingOverlay = Instance.new("Frame")
loadingOverlay.Size = UDim2.new(1, 0, 1, 0)
loadingOverlay.BackgroundColor3 = Color3.fromRGB(128, 128, 128)
loadingOverlay.BackgroundTransparency = 0.5
loadingOverlay.Parent = screenGui
local loadingText = Instance.new("TextLabel")
loadingText.Size = UDim2.new(0, 300, 0, 50)
loadingText.Position = UDim2.new(0.5, -150, 0.5, -25)
loadingText.BackgroundTransparency = 1
loadingText.Text = "connecting to EzBridge..."
loadingText.TextColor3 = Color3.fromRGB(255, 255, 255)
loadingText.TextSize = 22
loadingText.Font = Enum.Font.SourceSansBold
loadingText.Parent = loadingOverlay
local initialConnectSuccess = false
for i = 1, 3 do
local evts = sendRemote("heartbeat", {
senderId = clientId,
displayName = LocalPlayer.DisplayName,
isAnon = isAnon,
showGame = showGame,
gameName = gameName,
placeId = game.PlaceId,
jobId = game.JobId
})
if evts then
initialConnectSuccess = true
break
end
task.wait(1)
end
loadingOverlay:Destroy()
if not initialConnectSuccess then
pcall(function()
StarterGui:SetCore("SendNotification", {
Title = "CONNECTION ERROR",
Text = "Failed to connect to EzBridge, the server may be offline at this moment.",
Duration = 5
})
end)
screenGui:Destroy()
return
end
local toggleButton = Instance.new("ImageButton")
toggleButton.Size = UDim2.new(0, 45, 0, 45)
toggleButton.Position = UDim2.new(0, 20, 0.5, -22)
toggleButton.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
toggleButton.BorderSizePixel = 0
toggleButton.Parent = screenGui
local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 8)
btnCorner.Parent = toggleButton
local rainbowUIStroke = Instance.new("UIStroke")
rainbowUIStroke.Thickness = 3
rainbowUIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
rainbowUIStroke.Parent = toggleButton
local btnIcon = Instance.new("TextLabel")
btnIcon.Size = UDim2.new(1, 0, 1, 0)
btnIcon.BackgroundTransparency = 1
btnIcon.Text = "💬"
btnIcon.TextSize = 22
btnIcon.Parent = toggleButton
local dragging = false
local dragInput, dragStart, startPos
toggleButton.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = toggleButton.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
toggleButton.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)
UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
toggleButton.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 420, 0, 300)
mainFrame.Position = UDim2.new(0.5, -210, 0.5, -150)
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
mainFrame.BorderSizePixel = 0
mainFrame.Visible = false
mainFrame.Parent = screenGui
local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 10)
mainCorner.Parent = mainFrame
local titleHeader = Instance.new("Frame")
titleHeader.Size = UDim2.new(1, -50, 0, 40)
titleHeader.BackgroundTransparency = 1
titleHeader.Parent = mainFrame
local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -10, 1, 0)
titleLabel.Position = UDim2.new(0, 10, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "EzBridge global chat | 0 Online | 0 typing"
titleLabel.TextColor3 = Color3.fromRGB(230, 230, 230)
titleLabel.TextSize = 14
titleLabel.Font = Enum.Font.SourceSansBold
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Parent = titleHeader
local sidebar = Instance.new("Frame")
sidebar.Size = UDim2.new(0, 50, 1, 0)
sidebar.Position = UDim2.new(1, -50, 0, 0)
sidebar.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
sidebar.BorderSizePixel = 0
sidebar.Parent = mainFrame
local sideCorner = Instance.new("UICorner")
sideCorner.CornerRadius = UDim.new(0, 10)
sideCorner.Parent = sidebar
local chatTabBtn = Instance.new("TextButton")
chatTabBtn.Size = UDim2.new(0, 35, 0, 35)
chatTabBtn.Position = UDim2.new(0.5, -17, 0, 10)
chatTabBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 45)
chatTabBtn.Text = "💬"
chatTabBtn.TextSize = 18
chatTabBtn.Parent = sidebar
local chatTabCorner = Instance.new("UICorner")
chatTabCorner.CornerRadius = UDim.new(0, 6)
chatTabCorner.Parent = chatTabBtn
local settingsTabBtn = Instance.new("TextButton")
settingsTabBtn.Size = UDim2.new(0, 35, 0, 35)
settingsTabBtn.Position = UDim2.new(0.5, -17, 0, 50)
settingsTabBtn.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
settingsTabBtn.Text = "⚙️"
settingsTabBtn.TextSize = 18
settingsTabBtn.Parent = sidebar
local settingsTabCorner = Instance.new("UICorner")
settingsTabCorner.CornerRadius = UDim.new(0, 6)
settingsTabCorner.Parent = settingsTabBtn
local chatContainer = Instance.new("Frame")
chatContainer.Size = UDim2.new(1, -55, 1, -45)
chatContainer.Position = UDim2.new(0, 5, 0, 40)
chatContainer.BackgroundTransparency = 1
chatContainer.Parent = mainFrame
local scrollFeed = Instance.new("ScrollingFrame")
scrollFeed.Size = UDim2.new(1, 0, 1, -40)
scrollFeed.BackgroundTransparency = 1
scrollFeed.BorderSizePixel = 0
scrollFeed.CanvasSize = UDim2.new(0, 0, 0, 0)
scrollFeed.ScrollBarThickness = 4
scrollFeed.Parent = chatContainer
local feedLayout = Instance.new("UIListLayout")
feedLayout.SortOrder = Enum.SortOrder.LayoutOrder
feedLayout.Padding = UDim.new(0, 6)
feedLayout.Parent = scrollFeed
feedLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
scrollFeed.CanvasSize = UDim2.new(0, 0, 0, feedLayout.AbsoluteContentSize.Y + 10)
scrollFeed.CanvasPosition = Vector2.new(0, feedLayout.AbsoluteContentSize.Y)
end)
local inputContainer = Instance.new("Frame")
inputContainer.Size = UDim2.new(1, 0, 0, 32)
inputContainer.Position = UDim2.new(0, 0, 1, -35)
inputContainer.BackgroundColor3 = Color3.fromRGB(30, 30, 38)
inputContainer.Parent = chatContainer
local inputCorner = Instance.new("UICorner")
inputCorner.CornerRadius = UDim.new(0, 6)
inputCorner.Parent = inputContainer
local chatBox = Instance.new("TextBox")
chatBox.Size = UDim2.new(1, -50, 1, 0)
chatBox.Position = UDim2.new(0, 8, 0, 0)
chatBox.BackgroundTransparency = 1
chatBox.PlaceholderText = "Type a message... (Max 200 chars)"
chatBox.Text = ""
chatBox.TextColor3 = Color3.fromRGB(255, 255, 255)
chatBox.TextSize = 13
chatBox.Font = Enum.Font.SourceSans
chatBox.TextXAlignment = Enum.TextXAlignment.Left
chatBox.ClearTextOnFocus = false
chatBox.Parent = inputContainer
local sendBtn = Instance.new("TextButton")
sendBtn.Size = UDim2.new(0, 35, 1, 0)
sendBtn.Position = UDim2.new(1, -38, 0, 0)
sendBtn.BackgroundTransparency = 1
sendBtn.Text = "➔"
sendBtn.TextColor3 = Color3.fromRGB(0, 170, 255)
sendBtn.TextSize = 16
sendBtn.Parent = inputContainer
local settingsContainer = Instance.new("Frame")
settingsContainer.Size = UDim2.new(1, -55, 1, -45)
settingsContainer.Position = UDim2.new(0, 5, 0, 40)
settingsContainer.BackgroundTransparency = 1
settingsContainer.Visible = false
settingsContainer.Parent = mainFrame
local settingsLayout = Instance.new("UIListLayout")
settingsLayout.SortOrder = Enum.SortOrder.LayoutOrder
settingsLayout.Padding = UDim.new(0, 8)
settingsLayout.Parent = settingsContainer
local function createSettingToggle(label, defaultState, callback)
local frame = Instance.new("Frame")
frame.Size = UDim2.new(1, -10, 0, 35)
frame.BackgroundColor3 = Color3.fromRGB(28, 28, 35)
frame.Parent = settingsContainer
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6)
corner.Parent = frame
local txt = Instance.new("TextLabel")
txt.Size = UDim2.new(0.7, 0, 1, 0)
txt.Position = UDim2.new(0, 10, 0, 0)
txt.BackgroundTransparency = 1
txt.Text = label
txt.TextColor3 = Color3.fromRGB(220, 220, 220)
txt.TextSize = 13
txt.Font = Enum.Font.SourceSans
txt.TextXAlignment = Enum.TextXAlignment.Left
txt.Parent = frame
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0, 60, 0, 25)
btn.Position = UDim2.new(1, -70, 0.5, -12)
btn.BackgroundColor3 = defaultState and Color3.fromRGB(40, 160, 80) or Color3.fromRGB(160, 40, 40)
btn.Text = defaultState and "ON" or "OFF"
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.TextSize = 12
btn.Font = Enum.Font.SourceSansBold
btn.Parent = frame
local btnC = Instance.new("UICorner")
btnC.CornerRadius = UDim.new(0, 4)
btnC.Parent = btn
local currentState = defaultState
btn.MouseButton1Click:Connect(function()
currentState = not currentState
btn.Text = currentState and "ON" or "OFF"
btn.BackgroundColor3 = currentState and Color3.fromRGB(40, 160, 80) or Color3.fromRGB(160, 40, 40)
callback(currentState)
end)
end
local function createSettingButton(label, color, callback)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -10, 0, 35)
btn.BackgroundColor3 = color
btn.Text = label
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.TextSize = 13
btn.Font = Enum.Font.SourceSansBold
btn.Parent = settingsContainer
local btnC = Instance.new("UICorner")
btnC.CornerRadius = UDim.new(0, 6)
btnC.Parent = btn
btn.MouseButton1Click:Connect(callback)
end
createSettingToggle("Anonymous mode:", false, function(val)
isAnon = val
end)
createSettingToggle("Show what game am i playing:", true, function(val)
showGame = val
end)
createSettingButton("re-execute script", Color3.fromRGB(45, 85, 145), function()
isRunning = false
screenGui:Destroy()
task.defer(function()
loadstring(game:HttpGet(TUNNEL_URL))()
end)
end)
createSettingButton("kill script", Color3.fromRGB(145, 45, 45), function()
isRunning = false
screenGui:Destroy()
end)
chatTabBtn.MouseButton1Click:Connect(function()
chatContainer.Visible = true
settingsContainer.Visible = false
chatTabBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 45)
settingsTabBtn.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
end)
settingsTabBtn.MouseButton1Click:Connect(function()
chatContainer.Visible = false
settingsContainer.Visible = true
chatTabBtn.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
settingsTabBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 45)
end)
toggleButton.MouseButton1Click:Connect(function()
mainFrame.Visible = not mainFrame.Visible
end)
local function appendMessage(msg)
if not msg or not msg.id or receivedMessageIds[msg.id] then return end
receivedMessageIds[msg.id] = true
local msgFrame = Instance.new("Frame")
msgFrame.Size = UDim2.new(1, -10, 0, 0)
msgFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 35)
msgFrame.AutomaticSize = Enum.AutomaticSize.Y
msgFrame.Parent = scrollFeed
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6)
corner.Parent = msgFrame
local layout = Instance.new("UIListLayout")
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0, 2)
layout.Parent = msgFrame
local pad = Instance.new("UIPadding")
pad.PaddingLeft = UDim.new(0, 6)
pad.PaddingRight = UDim.new(0, 6)
pad.PaddingTop = UDim.new(0, 4)
pad.PaddingBottom = UDim.new(0, 4)
pad.Parent = msgFrame
if msg.showGame and msg.gameName and msg.gameName ~= "" then
local gameBanner = Instance.new("Frame")
gameBanner.Size = UDim2.new(1, 0, 0, 18)
gameBanner.BackgroundTransparency = 1
gameBanner.LayoutOrder = 1
gameBanner.Parent = msgFrame
local gameTxt = Instance.new("TextLabel")
gameTxt.Size = UDim2.new(0.7, 0, 1, 0)
gameTxt.BackgroundTransparency = 1
gameTxt.Text = "🎮 " .. msg.gameName
gameTxt.TextColor3 = Color3.fromRGB(150, 200, 255)
gameTxt.TextSize = 10
gameTxt.Font = Enum.Font.SourceSans
gameTxt.TextXAlignment = Enum.TextXAlignment.Left
gameTxt.Parent = gameBanner
if msg.placeId and msg.jobId and msg.jobId ~= "" then
local joinBtn = Instance.new("TextButton")
joinBtn.Size = UDim2.new(0, 60, 1, 0)
joinBtn.Position = UDim2.new(1, -60, 0, 0)
joinBtn.BackgroundColor3 = Color3.fromRGB(0, 140, 70)
joinBtn.Text = "JOIN GAME"
joinBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
joinBtn.TextSize = 9
joinBtn.Font = Enum.Font.SourceSansBold
joinBtn.Parent = gameBanner
local jCorner = Instance.new("UICorner")
jCorner.CornerRadius = UDim.new(0, 4)
jCorner.Parent = joinBtn
joinBtn.MouseButton1Click:Connect(function()
TeleportService:TeleportToPlaceInstance(msg.placeId, msg.jobId, LocalPlayer)
end)
end
end
local nameTxt = Instance.new("TextLabel")
nameTxt.Size = UDim2.new(1, 0, 0, 14)
nameTxt.BackgroundTransparency = 1
nameTxt.Text = msg.senderName
nameTxt.TextColor3 = Color3.fromRGB(255, 180, 0)
nameTxt.TextSize = 11
nameTxt.Font = Enum.Font.SourceSansBold
nameTxt.TextXAlignment = Enum.TextXAlignment.Left
nameTxt.LayoutOrder = 2
nameTxt.Parent = msgFrame
local contentTxt = Instance.new("TextLabel")
contentTxt.Size = UDim2.new(1, 0, 0, 0)
contentTxt.AutomaticSize = Enum.AutomaticSize.Y
contentTxt.BackgroundTransparency = 1
contentTxt.Text = msg.text
contentTxt.TextColor3 = Color3.fromRGB(230, 230, 230)
contentTxt.TextSize = 12
contentTxt.Font = Enum.Font.SourceSans
contentTxt.TextXAlignment = Enum.TextXAlignment.Left
contentTxt.TextWrapped = true
contentTxt.LayoutOrder = 3
contentTxt.Parent = msgFrame
end
local function handleEvents(events)
if not events then return end
for _, evt in ipairs(events) do
if evt.type == "stats_update" then
titleLabel.Text = string.format("EzBridge global chat | %d Online | %d typing", evt.data.online or 0, evt.data.typing or 0)
elseif evt.type == "new_message" then
appendMessage(evt.data)
elseif evt.type == "history_chunk" then
if evt.data.targetId == clientId and evt.data.messages then
for _, msg in ipairs(evt.data.messages) do
appendMessage(msg)
end
end
end
end
end
local function sendMessage()
local text = chatBox.Text
if #text < 1 or #text > 200 then return end
if os.time() - lastMessageTime < 1 then return end
lastMessageTime = os.time()
chatBox.Text = ""
local responseEvents = sendRemote("send_message", {
senderId = clientId,
senderName = LocalPlayer.DisplayName,
text = text,
isAnon = isAnon,
showGame = showGame,
gameName = gameName,
placeId = game.PlaceId,
jobId = game.JobId
})
handleEvents(responseEvents)
end
sendBtn.MouseButton1Click:Connect(sendMessage)
chatBox.FocusLost:Connect(function(enterPressed)
if enterPressed then
sendMessage()
end
end)
chatBox:GetPropertyChangedSignal("Text"):Connect(function()
lastTypeTime = os.time()
if not isTyping then
isTyping = true
sendRemote("typing_status", { senderId = clientId, isTyping = true })
end
end)
task.spawn(function()
while isRunning do
if isTyping and (os.time() - lastTypeTime >= 3) then
isTyping = false
sendRemote("typing_status", { senderId = clientId, isTyping = false })
end
task.wait(0.5)
end
end)
local historyEvents = sendRemote("request_history", { senderId = clientId })
handleEvents(historyEvents)
task.spawn(function()
local hue = 0
while isRunning do
hue = (hue + 0.005) % 1
rainbowUIStroke.Color = Color3.fromHSV(hue, 0.8, 1)
task.wait(0.03)
end
end)
task.spawn(function()
while isRunning do
local events = sendRemote("heartbeat", {
senderId = clientId,
displayName = LocalPlayer.DisplayName,
isAnon = isAnon,
showGame = showGame,
gameName = gameName,
placeId = game.PlaceId,
jobId = game.JobId,
isTyping = isTyping
})
handleEvents(events)
task.wait(1)
end
end)No comments yet for this script.



