Register Analytics

Type the password you were given.

Give a place ID and the bot joins your game for up to 3 minutes, then leaves.

Place

Checking the bot…

None yet.

End a run early from your game

Add this as a Script in ServerScriptService and call reportComplete() when the bot is done. It covers only the bot's screen in one colour; the bot sees it and leaves straight away. Without it, the bot stays the full time.

-- Ends the VPS's run: covers the VPS player's screen in one solid colour. rbxjoin.py looks at the Roblox window on the
-- VPS once a second; when the middle of it is this colour twice in a row, it closes the game. Server Script.
-- No HttpService, no prints, no kick (none of them reach the VPS).
local Players = game:GetService("Players")

-- The VPS account's UserId, so only its screen is covered; 0 covers everyone's.
local VPS_USER_ID = 0
-- Must match COMPLETE_COLOUR in rbxjoin.py.
local COMPLETE_COLOUR = Color3.fromRGB(255, 0, 255)

local function cover(player: Player)
	local gui = Instance.new("ScreenGui")
	gui.Name = "RunComplete"
	gui.IgnoreGuiInset = true
	gui.ScreenInsets = Enum.ScreenInsets.None
	gui.DisplayOrder = 2147483647 -- above every game UI
	gui.ResetOnSpawn = false -- a respawn mustn't take it away

	local frame = Instance.new("Frame")
	frame.Size = UDim2.fromScale(1, 1)
	frame.BackgroundColor3 = COMPLETE_COLOUR
	frame.BorderSizePixel = 0
	frame.Parent = gui

	gui.Parent = player:WaitForChild("PlayerGui")
end

local function reportComplete()
	for _, player in Players:GetPlayers() do
		if VPS_USER_ID == 0 or player.UserId == VPS_USER_ID then
			task.spawn(cover, player)
		end
	end
end

-- Call reportComplete() when the run is done, e.g.:
-- reportComplete()

The bot's Roblox UserId isn't known yet: set VPS_USER_ID to it before using this in a live game, or every player's screen gets covered.