Script
Key Required

Script

Memory KillA1adam25A1adam25 49 views 94 executesUpdated Jul 29, 2026
Unrated
00
Lua Script•132 lines (3081 chars)
-- 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
end

Features & Information

The blue esp is the sheild the Red esp is the gun and yellow is the bullet

Community Comments (0)

No comments yet for this script.

More Scripts for Memory Kill