
Keyless

-- Card ESP: GUN = Red, SHIELD = Blue, BULLET = Yellow
-- Tracks shuffled card types via Item attribute + server reveal events
-- Place in StarterPlayerScripts
local Workspace = game:GetService("Workspace")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local cardsFolder = Workspace:FindFirstChild("MatchOff_Arena")
and Workspace.MatchOff_Arena:FindFirstChild("Cards")
if not cardsFolder then
warn("[CardESP] Could not find Workspace.MatchOff_Arena.Cards")
return
end
local remotes = ReplicatedStorage:FindFirstChild("MemoryKill")
and ReplicatedStorage.MemoryKill:FindFirstChild("Remotes")
-- Stores the actual card type after shuffle/reveal
local cardTypes = {}
local colors = {
GUN = Color3.fromRGB(255, 0, 0), -- Red
SHIELD = Color3.fromRGB(0, 120, 255), -- Blue
BULLET = Color3.fromRGB(255, 255, 0) -- Yellow
}
local function getCardType(card)
return cardTypes[card.Name] or card:GetAttribute("Item")
end
local function updateESP(card)
if not card:IsA("BasePart") then return end
local cardType = getCardType(card)
local oldESP = card:FindFirstChild("CardESP")
-- Remove old highlight if type changed
if oldESP then
oldESP:Destroy()
end
-- Add new highlight if it is a tracked type
if colors[cardType] then
local highlight = Instance.new("Highlight")
highlight.Name = "CardESP"
highlight.FillColor = colors[cardType]
highlight.OutlineColor = colors[cardType]
highlight.FillTransparency = 0.5
highlight.OutlineTransparency = 0
highlight.Adornee = card
highlight.Parent = card
end
end
local function trackCard(card)
if not card:IsA("BasePart") then return end
cardTypes[card.Name] = card:GetAttribute("Item")
updateESP(card)
card:GetAttributeChangedSignal("Item"):Connect(function()
cardTypes[card.Name] = card:GetAttribute("Item")
updateESP(card)
end)
end
-- Existing cards
for _, card in cardsFolder:GetChildren() do
trackCard(card)
end
-- New cards
cardsFolder.ChildAdded:Connect(function(card)
task.wait()
trackCard(card)
end)
if remotes then
-- Single card reveal
local cardRevealed = remotes:FindFirstChild("CardRevealed")
if cardRevealed then
cardRevealed.OnClientEvent:Connect(function(cardIndex, itemType)
local card = cardsFolder:FindFirstChild("Card_" .. cardIndex)
if card then
cardTypes[card.Name] = itemType
updateESP(card)
end
end)
end
-- Reveal all cards
local revealAll = remotes:FindFirstChild("RevealAllForClient")
if revealAll then
revealAll.OnClientEvent:Connect(function(cardData)
if type(cardData) == "table" then
for _, info in ipairs(cardData) do
local card = cardsFolder:FindFirstChild("Card_" .. info.index)
if card then
cardTypes[card.Name] = info.item
updateESP(card)
end
end
end
end)
end
-- Reset board
local boardReset = remotes:FindFirstChild("BoardReset")
if boardReset then
boardReset.OnClientEvent:Connect(function()
for _, card in cardsFolder:GetChildren() do
cardTypes[card.Name] = card:GetAttribute("Item")
updateESP(card)
end
end)
end
endNo comments yet for this script.
