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 Colors | Description |
|---|---|
| Red | Mafia |
| Blue | Detective |
| Pink | Doctor |
| Green | Sheriff |
| Extra | Displays 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.