Run it
Copy the script and paste it into your executor.
HttpService = :()
Players = :()
player = Players.LocalPlayer
player
()
playerGui = player:() player:()
BASE_URL =
HEARTBEAT_INTERVAL =
CONNECT_RETRY_INTERVAL =
requestFn = ( .request) ( .request)
requestFn
()
clientId = .. HttpService:()
connected =
running =
fullscreenReady =
destroyed =
()
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.IgnoreGuiInset =
gui.Parent = playerGui
frame = .()
frame.Name =
frame.Parent = gui
frame.Size = .(, , , )
frame.Position = .(, , , )
frame.BackgroundColor3 = .(, , )
frame.BorderSizePixel =
corner = .()
corner.CornerRadius = .(, )
corner.Parent = frame
title = .()
title.Name =
title.Parent = frame
title.BackgroundTransparency =
title.Position = .(, , , )
title.Size = .(, -, , )
title.Font = .Font.GothamBold
title.TextSize =
title.TextColor3 = .(, , )
title.TextXAlignment = .TextXAlignment.Left
title.Text =
status = .()
status.Name =
status.Parent = frame
status.BackgroundTransparency =
status.Position = .(, , , )
status.Size = .(, -, , )
status.Font = .Font.Gotham
status.TextSize =
status.TextWrapped =
status.TextXAlignment = .TextXAlignment.Left
status.TextYAlignment = .TextYAlignment.Top
status.TextColor3 = .(, , )
status.Text =
(name, text, x, color)
button = .()
button.Name = name
button.Parent = frame
button.Size = .(, , , )
button.Position = .(, x, , )
button.BackgroundColor3 = color
button.BorderSizePixel =
button.Text = text
button.Font = .Font.GothamBold
button.TextSize =
button.TextColor3 = .(, , )
bCorner = .()
bCorner.CornerRadius = .(, )
bCorner.Parent = button
button
startButton = (, , , .(, , ))
stopButton = (, , , .(, , ))
{
gui = gui,
status = status,
startButton = startButton,
stopButton = stopButton,
}
ui = ()
(text)
ui.status.Text = text
(button, enabled)
button.AutoButtonColor = enabled
button.Active = enabled
button.TextTransparency = enabled
button.BackgroundTransparency = enabled
()
canStart = connected fullscreenReady ( running)
canStop = connected running
(ui.startButton, canStart)
(ui.stopButton, canStop)
(response)
body = response response.Body
body body ==
ok, decoded = (()
HttpService:(body)
)
ok
decoded
(path, payload)
body =
payload
body = HttpService:(payload)
ok, response = (()
({
Url = BASE_URL .. path,
Method = ,
Headers = {
[] = ,
},
Body = body,
})
)
ok response
,
statusCode = (response.StatusCode response.Status )
statusCode < statusCode >=
, (response)
, (response)
()
destroyed
connected
()
ok, data = (, {
client_id = clientId,
})
ok
connected =
running =
fullscreenReady =
message =
data data.state data.state.status_message
message = (data.state.status_message)
data data.state (data.state.roblox_fullscreen_ready) ==
fullscreenReady = data.state.roblox_fullscreen_ready
(message)
()
.(CONNECT_RETRY_INTERVAL)
()
destroyed
connected
ok, data = (, {
client_id = clientId,
})
ok
connected =
running =
fullscreenReady =
()
()
data (data.running) ==
running = data.running
data (data.roblox_fullscreen_ready) ==
fullscreenReady = data.roblox_fullscreen_ready
statusMessage =
data data.status_message
statusMessage = (data.status_message)
(statusMessage)
()
.(HEARTBEAT_INTERVAL)
ui.startButton.MouseButton1Click:(()
connected
ok, data = (, {
source = ,
})
ok
running =
data data.state (data.state.roblox_fullscreen_ready) ==
fullscreenReady = data.state.roblox_fullscreen_ready
message =
data data.message
message = (data.message)
(message)
data data.state (data.state.roblox_fullscreen_ready) ==
fullscreenReady = data.state.roblox_fullscreen_ready
message =
data data.message
message = (data.message)
(message)
()
)
ui.stopButton.MouseButton1Click:(()
connected
ok, data = (, {
reason = ,
})
ok
running =
data data.state (data.state.roblox_fullscreen_ready) ==
fullscreenReady = data.state.roblox_fullscreen_ready
message =
data data.message
message = (data.message)
(message)
data data.state (data.state.roblox_fullscreen_ready) ==
fullscreenReady = data.state.roblox_fullscreen_ready
message =
data data.message
message = (data.message)
(message)
()
)
()
()
.(connectLoop)
.(heartbeatLoop)
ui.gui.Destroying:(()
destroyed =
connected
(()
(, {
client_id = clientId,
})
)
)
()
THIS IS ONLY THE INTERNAL TO THE GLOBLE SCRIPT. JOIN THE DISCORD FOR THE EXTERNAL PYTHON SCRIPT. This project uses a 2 part local bridge system. Internal (Roblox script) Runs inside Roblox and creates Start and Stop. Connects to the external Python service on http://127.0.0.1:5000. Waits for Python to connect (The External) Sends a hello + heartbeat so connection is always tracked. Sends Start/Stop commands to Python. If Python goes offline, it auto detects and waits for reconnect. External (Python script) Runs on your PC and hosts a localhost API bridge. Waits for Roblox client to connect (The script) Handles client connect/disconnect, heartbeat timeout, and run state. Performs the keyboard typing and guess logic from your computer. Only types while running and while Roblox is the active window (auto pauses if you alt tab). Console shows connection/status events (connected, started, stopped, paused/resumed etc) What does this do? The Internal connects to the External for ease to stop and start the external typing. The external scans the distance from each country guess with OCR and will decide what the next close country is. The external then types the guess in and continu
Stay safe
Never paste your .ROBLOSECURITY cookie anywhere, and use an alt account with scripts.