3 Ultimate Mafia Scripts – Role Exposer, ESP & Role Check

In the popular Mafia game, scripts can completely change how you play. Instead of guessing roles or struggling to identify who’s who, these Lua scripts make everything faster and clearer. From exposing roles in a GUI to highlighting players with ESP colors, each script has its own way of giving you the upper hand.

01. Role Exposer – GUI Role Display

This script creates a handy in-game GUI that shows every player’s role. It’s perfect for those who want a clean interface with scrollable lists and toggles to minimize or expand the view. With it, you can keep track of the Mafia, Detective, Sheriff, or any other role in real time.

What It Offers
Displays all player roles inside a custom GUI
Scrollable list with draggable frame
Auto updates when new players join or leave
Option to minimize and expand the interface
-- Role Exposer Script
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local UserInputService = game:GetService("UserInputService")

-- Create ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "RoleDisplayGui"
screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")

-- Main Frame (draggable container)
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 320, 0, 450)
mainFrame.Position = UDim2.new(0.05, 0, 0.2, 0)
mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = screenGui

-- Title bar
local titleBar = Instance.new("TextButton")
titleBar.Size = UDim2.new(1, 0, 0, 30)
titleBar.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
titleBar.Text = "Player Roles (Click to Minimize)"
titleBar.TextColor3 = Color3.fromRGB(255, 255, 255)
titleBar.Font = Enum.Font.SourceSansBold
titleBar.TextSize = 18
titleBar.Parent = mainFrame

-- ScrollingFrame
local scrollingFrame = Instance.new("ScrollingFrame")
scrollingFrame.Size = UDim2.new(1, -10, 1, -40)
scrollingFrame.Position = UDim2.new(0, 5, 0, 35)
scrollingFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
scrollingFrame.ScrollBarThickness = 8
scrollingFrame.BackgroundTransparency = 0.2
scrollingFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
scrollingFrame.Parent = mainFrame

-- Layout
local layout = Instance.new("UIListLayout")
layout.Parent = scrollingFrame
layout.Padding = UDim.new(0, 5)

-- Function to refresh list
local function refreshList()
    for _, child in ipairs(scrollingFrame:GetChildren()) do
        if child:IsA("TextLabel") then
            child:Destroy()
        end
    end
    
    for _, player in ipairs(Players:GetPlayers()) do
        local role = player:GetAttribute("Role") or "No Role"
        local label = Instance.new("TextLabel")
        label.Size = UDim2.new(1, -10, 0, 30)
        label.BackgroundTransparency = 0.3
        label.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
        label.TextColor3 = Color3.fromRGB(255, 255, 255)
        label.Font = Enum.Font.SourceSansBold
        label.TextSize = 18
        label.Text = player.DisplayName .. "'s Role: " .. role
        label.Parent = scrollingFrame
    end
    
    scrollingFrame.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y)
end

Players.PlayerAdded:Connect(refreshList)
Players.PlayerRemoving:Connect(refreshList)
for _, player in ipairs(Players:GetPlayers()) do
    player:GetAttributeChangedSignal("Role"):Connect(refreshList)
end

refreshList()

-- Minimize toggle
local minimized = false
titleBar.MouseButton1Click:Connect(function()
    minimized = not minimized
    if minimized then
        scrollingFrame.Visible = false
        mainFrame.Size = UDim2.new(0, 320, 0, 30)
        titleBar.Text = "Player Roles (Click to Expand)"
    else
        scrollingFrame.Visible = true
        mainFrame.Size = UDim2.new(0, 320, 0, 450)
        titleBar.Text = "Player Roles (Click to Minimize)"
    end
end)

02. Dark Hub – ESP Role Highlights

Dark Hub is a straightforward but powerful script that highlights roles using ESP. If your executor doesn’t fully support ESP, it also provides a role button with text info. It’s simple yet effective for players who prefer direct role visibility.

Key Functions
ESP system to visualize player roles
Button option to show role text
Lightweight and easy to run
Works even with limited executors
loadstring(game:HttpGet("https://pasteazy.pages.dev/raw/mafia.lua"))()

03. Role Check – Color-Coded Role System

This script is designed for quick role identification with color highlights. Mafia appear in red, Detectives in blue, Doctors in pink, and Sheriffs in green. It even lets you check a player’s role and instantly displays their name and image.

Role ColorsDescription
RedMafia
BlueDetective
PinkDoctor
GreenSheriff
ExtraDisplays player image and sends role info
loadstring(game:HttpGet("https://raw.githubusercontent.com/RedScripter102/Script/refs/heads/main/Mafia"))()

How to Use These Scripts

  • Install and open a reliable script executor.
  • Copy one of the Lua scripts above.
  • Paste it into your executor’s command box.
  • Attach to the game, then run the script.
  • Watch the roles appear instantly, either in GUI, ESP, or colored highlights depending on your chosen script.

Benefits of using these scripts

  • Role Exposer GUI makes it simple to keep track of everyone’s role in one organized window.
  • Dark Hub provides quick ESP highlights for identifying Mafia and others visually.
  • Role Check Script gives instant recognition with colors and even player images for easy decision-making.

Together, these scripts remove the guesswork from Mafia and give you a clear tactical advantage.

Leave a Comment