ESP and AutoLock
Key Required

ESP and AutoLock

(ANNIVERSARY) Outcome Memories v0.2MediorceExploiterMediorceExploiter 1.7K views 111 executesUpdated Mar 8, 2026
Unrated
00
Lua Script•289 lines (6962 chars)
-- Admin Debug (CLIENTSIDED)
-- walkspeed changer removed
-- AutoVote: when GameProperties.State == "SEC" fire vote once (toggle V).
-- ESP: Highlight all players, dominant bodypart color.
-- Anti-duplicate + Unload key (M)

print("SCRIPT ROOT (client)")

local function MAIN()
	-- Services
	local Players = game:GetService("Players")
	local RunService = game:GetService("RunService")
	local UserInputService = game:GetService("UserInputService")
	local ReplicatedStorage = game:GetService("ReplicatedStorage")
	local Workspace = game:GetService("Workspace")

	local LocalPlayer = Players.LocalPlayer
	if not LocalPlayer then
		warn("No LocalPlayer, exiting.")
		return
	end

	-- =========================
	-- Admin allowlist
	-- =========================
	local ALLOWED_USERIDS = {
		8740501, -- your id
	}

	local function isAllowed(uid)
		for _, id in ipairs(ALLOWED_USERIDS) do
			if uid == id then return true end
		end
		return false
	end

	if not isAllowed(LocalPlayer.UserId) then
		warn("Not allowed, exiting.")
		return
	end
	print("Allowed ✅")

	-- =========================
	-- Anti-duplicate: unload old copies
	-- =========================
	local SCRIPT_TAG = "ADMIN_CLIENT_WS_AUTOVOTE_ESP_V4"
	do
		local old = LocalPlayer:FindFirstChild(SCRIPT_TAG)
		if old and old:IsA("BindableEvent") then
			pcall(function() old:Fire() end)
			pcall(function() old:Destroy() end)
		end

		local control = Instance.new("BindableEvent")
		control.Name = SCRIPT_TAG
		control.Parent = LocalPlayer
	end
	local ControlEvent = LocalPlayer:FindFirstChild(SCRIPT_TAG)

	-- =========================
	-- Maid (cleanup)
	-- =========================
	local Maid = {}
	Maid.__index = Maid
	function Maid.new()
		return setmetatable({ tasks = {} }, Maid)
	end
	function Maid:Give(t)
		self.tasks[#self.tasks + 1] = t
		return t
	end
	function Maid:Clean()
		for i = #self.tasks, 1, -1 do
			local t = self.tasks[i]
			self.tasks[i] = nil
			local tt = typeof(t)
			if tt == "RBXScriptConnection" then
				pcall(function() t:Disconnect() end)
			elseif tt == "Instance" then
				pcall(function() t:Destroy() end)
			elseif tt == "function" then
				pcall(t)
			end
		end
	end

	local maid = Maid.new()
	local running = true
	local function Alive() return running == true end

	-- =========================
	-- Config / Keys
	-- =========================
	local UNLOAD_KEY = Enum.KeyCode.M
	local AUTOVOTE_TOGGLE_KEY = Enum.KeyCode.V

	-- WalkSpeed behavior
	local BASE_WS = 45
	local STEP_ADD = 3
	local MAX_STACK_WS = 55
	local BUFF_SECONDS = 3

	local BIG_HIT_THRESHOLD = 10
	local BIG_HIT_WS = 59

	-- AutoVote
	local SelectedMorph = "Silver"
	local autoVoteEnabled = true
	local votedThisSEC = false

	-- ESP
	local ESP_TAG = "ADMIN_DEBUG_ESP_HL"

	-- =========================
	-- Helpers
	-- =========================
	local function getHumanoid()
		local char = LocalPlayer.Character
		if not char then return nil end
		return char:FindFirstChildOfClass("Humanoid")
	end

	local function fireVote(morphName)
		local remotes = ReplicatedStorage:WaitForChild("Remotes", 10)
		if not remotes then return end
		local voted = remotes:WaitForChild("Voted", 10)
		if not voted then return end
		voted:FireServer(morphName)
	end

	local function findStateValue()
		local gp = Workspace:FindFirstChild("GameProperties")
		if gp then
			local s = gp:FindFirstChild("State")
			if s and s:IsA("ValueBase") then return s end
		end
		for _, d in ipairs(Workspace:GetDescendants()) do
			if d.Name == "GameProperties" then
				local s = d:FindFirstChild("State")
				if s and s:IsA("ValueBase") then return s end
			end
		end
		return nil
	end

	-- =========================
	-- AutoVote (SEC)
	-- =========================
	local stateObj = findStateValue()
	if stateObj then
		local function tryVote()
			if not Alive() or not autoVoteEnabled then return end
			local v = tostring(stateObj.Value)
			if v == "SEC" then
				if not votedThisSEC then
					votedThisSEC = true
					fireVote(SelectedMorph)
				end
			else
				votedThisSEC = false
			end
		end

		maid:Give(stateObj.Changed:Connect(tryVote))
		maid:Give(RunService.Heartbeat:Connect(tryVote))
	else
		warn("AutoVote: GameProperties.State not found (skipping).")
	end

	-- =========================
	-- ESP (dominant bodypart color)
	-- =========================
	local function dominantColor(character)
		local counts = {}
		for _, inst in ipairs(character:GetDescendants()) do
			if inst:IsA("BasePart") then
				local c = inst.Color
				local key = string.format("%d,%d,%d",
					math.floor(c.R * 255 + 0.5),
					math.floor(c.G * 255 + 0.5),
					math.floor(c.B * 255 + 0.5)
				)
				local entry = counts[key]
				if entry then
					entry.count = entry.count + 1
				else
					counts[key] = { count = 1, color = c }
				end
			end
		end

		local best = nil
		for _, entry in pairs(counts) do
			if (not best) or (entry.count > best.count) then
				best = entry
			end
		end
		return best and best.color or Color3.new(1, 1, 1)
	end

	local function applyESPToCharacter(char)
		task.wait(0.15)
		if not Alive() then return end
		if not char or not char.Parent then return end

		local hl = char:FindFirstChild(ESP_TAG)
		if not hl then
			hl = Instance.new("Highlight")
			hl.Name = ESP_TAG
			hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
			hl.FillTransparency = 0.6
			hl.OutlineTransparency = 0
			hl.Parent = char
		end

		hl.Adornee = char
		local dom = dominantColor(char)
		hl.FillColor = dom
		hl.OutlineColor = dom
	end

	local function applyESP(plr)
		local function onChar(char)
			applyESPToCharacter(char)
		end
		if plr.Character then onChar(plr.Character) end
		maid:Give(plr.CharacterAdded:Connect(onChar))
	end

	for _, p in ipairs(Players:GetPlayers()) do
		applyESP(p)
	end
	maid:Give(Players.PlayerAdded:Connect(applyESP))

	local function removeAllESP()
		for _, p in ipairs(Players:GetPlayers()) do
			local c = p.Character
			if c then
				local hl = c:FindFirstChild(ESP_TAG)
				if hl then pcall(function() hl:Destroy() end) end
			end
		end
	end

	-- =========================
	-- Unload (M)
	-- =========================
	local function Unload()
		if not Alive() then return end
		running = false

		-- remove ESP
		removeAllESP()

		-- cleanup
		maid:Clean()

		-- remove control event
		if ControlEvent then
			pcall(function() ControlEvent:Destroy() end)
		end

		print("Unloaded ✅")
	end

	-- allow next run to unload this one
	if ControlEvent then
		maid:Give(ControlEvent.Event:Connect(Unload))
	end

	-- Keybinds
	maid:Give(UserInputService.InputBegan:Connect(function(input, gpe)
		if gpe or not Alive() then return end

		if input.KeyCode == AUTOVOTE_TOGGLE_KEY then
			autoVoteEnabled = not autoVoteEnabled
			print("AutoVote:", autoVoteEnabled and "ON" or "OFF")
		elseif input.KeyCode == UNLOAD_KEY then
			Unload()
		end
	end))

	print("Fully Loaded ✅")
end

local ok, err = xpcall(MAIN, debug.traceback)
if not ok then
	warn("SCRIPT CRASHED:\n" .. tostring(err))
end

Features & Information

ESP Survivors & Executioners Auto-Lock a specific survivor Scrapped the trashy walkspeed system, it was an attempt to make it look normal and not suspicious at all. Unload on M Made by ChatGPT-5.
#ESP

Community Comments (1)

chamba757chamba757Jul 14, 2026

El script parece bastante bueno,aunque estaría bien que le añadas y corrigas más cosas,si usarás IA te recomiendo mucho usar Claude,de ser posible, puedes explicarme más como funciona el script?

More Scripts for (ANNIVERSARY) Outcome Memories v0.2