loadstring([[ -- WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk! local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local TweenService = game:GetService("TweenService") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local currentSpies = {} local lastClue = "" local lastSpyWord = "" local function createLabel(character, text, textColor) local billboardGui = Instance.new("BillboardGui") billboardGui.Name = "StatusLabel" billboardGui.Adornee = character:FindFirstChild("Head") billboardGui.Size = UDim2.new(0, 100, 0, 50) billboardGui.StudsOffset = Vector3.new(0, 4, 0) billboardGui.AlwaysOnTop = true local textLabel = Instance.new("TextLabel") textLabel.Size = UDim2.new(1, 0, 1, 0) textLabel.BackgroundTransparency = 1 textLabel.Text = text textLabel.TextColor3 = textColor textLabel.TextScaled = true textLabel.Font = Enum.Font.SourceSansBold textLabel.Parent = billboardGui billboardGui.Parent = character end local function showNotifier(name) local notify = Instance.new("TextLabel") notify.Size = UDim2.new(0.6, 0, 0, 60) notify.Position = UDim2.new(0.2, 0, 0.05, 0) notify.BackgroundTransparency = 0.2 notify.BackgroundColor3 = Color3.fromRGB(60, 0, 0) notify.TextColor3 = Color3.new(1, 0, 0) notify.Text = name .. " is the SPY!" notify.Font = Enum.Font.GothamBold notify.TextScaled = true notify.TextStrokeTransparency = 0.3 notify.Parent = PlayerGui wait(4) TweenService:Create(notify, TweenInfo.new(1), { TextTransparency = 1, BackgroundTransparency = 1 }):Play() wait(1) notify:Destroy() end local spyGui = Instance.new("ScreenGui", PlayerGui) spyGui.Name = "SpyGui" spyGui.ResetOnSpawn = false local frame = Instance.new("Frame", spyGui) frame.Size = UDim2.new(0, 240, 0, 120) frame.Position = UDim2.new(0.75, 0, 0.2, 0) frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) frame.BorderSizePixel = 0 frame.Active = true frame.Draggable = true local title = Instance.new("TextLabel", frame) title.Size = UDim2.new(1, 0, 0, 30) title.Text = "Current Spies" title.BackgroundColor3 = Color3.fromRGB(45, 45, 45) title.TextColor3 = Color3.new(1, 1, 1) title.Font = Enum.Font.GothamBold title.TextSize = 16 local spyList = Instance.new("TextLabel", frame) spyList.Position = UDim2.new(0, 0, 0, 30) spyList.Size = UDim2.new(1, 0, 1, -60) spyList.BackgroundTransparency = 1 spyList.TextColor3 = Color3.fromRGB(255, 0, 0) spyList.Text = "Waiting..." spyList.TextWrapped = true spyList.TextYAlignment = Enum.TextYAlignment.Top spyList.Font = Enum.Font.Gotham spyList.TextSize = 14 local toggleBtn = Instance.new("TextButton", frame) toggleBtn.Size = UDim2.new(1, 0, 0, 30) toggleBtn.Position = UDim2.new(0, 0, 1, -30) toggleBtn.Text = "Minimize" toggleBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) toggleBtn.TextColor3 = Color3.new(1, 1, 1) toggleBtn.Font = Enum.Font.Gotham toggleBtn.TextSize = 14 local minimized = false toggleBtn.MouseButton1Click:Connect(function() minimized = not minimized if minimized then spyList.Visible = false toggleBtn.Text = "Maximize" else spyList.Visible = true toggleBtn.Text = "Minimize" end end) local function checkPlayerForStatus(player) local boolFolder = player:FindFirstChild("boolFolder") if not boolFolder then return end local isSpy = boolFolder:FindFirstChild("isSpy") if not isSpy or not isSpy:IsA("BoolValue") then return end if not player.Character or not player.Character:FindFirstChild("Head") then return end local existing = player.Character:FindFirstChild("StatusLabel") if existing then existing:Destroy() end local chosenMode = ReplicatedStorage:FindFirstChild("String") and ReplicatedStorage.String:FindFirstChild("ChosenMode") if not chosenMode then return end if isSpy.Value then local word = ReplicatedStorage.String:FindFirstChild("SpyWord") local label = word and word:IsA("StringValue") and word.Value or "Spy" createLabel(player.Character, label, Color3.new(1, 0, 0)) table.insert(currentSpies, player) else local clue = ReplicatedStorage.String:FindFirstChild("ClueWord") local label = clue and clue:IsA("StringValue") and clue.Value or "Innocent" createLabel(player.Character, label, Color3.new(0, 1, 0)) end end local function refreshSpies() currentSpies = {} for _, player in pairs(Players:GetPlayers()) do checkPlayerForStatus(player) end if #currentSpies > 0 then local names = {} for _, spy in ipairs(currentSpies) do table.insert(names, spy.DisplayName or spy.Name) showNotifier(spy.DisplayName or spy.Name) end spyList.Text = table.concat(names, "\\n") else spyList.Text = "Waiting..." end end local function detectRoundChange() local clue = ReplicatedStorage.String:FindFirstChild("ClueWord") local spy = ReplicatedStorage.String:FindFirstChild("SpyWord") local newClue = clue and clue.Value or "" local newSpy = spy and spy.Value or "" if newClue ~= lastClue or newSpy ~= lastSpyWord then lastClue = newClue lastSpyWord = newSpy refreshSpies() end end Players.PlayerAdded:Connect(function(player) player.CharacterAdded:Connect(function() wait(1) checkPlayerForStatus(player) end) end) while true do detectRoundChange() wait(2) end ]])()