Campo minado visual by chat gpt
Key RequiredUniversal

Campo minado visual by chat gpt

Universal ScriptCavalo_4443Cavalo_4443 718 views 403 executesUpdated Jan 26, 2026
Unrated
00
Lua Script•172 lines (4339 chars)
-- SERVIÇOS
local Players = game:GetService("Players")
local player = Players.LocalPlayer

-- CONFIG
local CELL_SIZE = 6
local CELL_HEIGHT = 0.15
local MINE_CHANCE = 0.18

-- ESTADO
local pointA, pointB
local fieldFolder = Instance.new("Folder", workspace)
fieldFolder.Name = "CampoMinado_" .. player.Name

-- GUI
local gui = Instance.new("ScreenGui", player.PlayerGui)
gui.Name = "CampoMinadoGUI"

-- BOTÃO TOGGLE (DIREITA)
local toggleBtn = Instance.new("TextButton", gui)
toggleBtn.Size = UDim2.fromScale(0.05,0.08)
toggleBtn.Position = UDim2.fromScale(0.93,0.45)
toggleBtn.Text = "☰"
toggleBtn.ZIndex = 2

-- PAINEL (ABRE PARA ESQUERDA)
local panel = Instance.new("Frame", gui)
panel.Size = UDim2.fromScale(0.2,0.35)
panel.Position = UDim2.fromScale(0.72,0.35)
panel.Visible = true
panel.ZIndex = 1

local function makeBtn(txt, y)
	local b = Instance.new("TextButton", panel)
	b.Size = UDim2.fromScale(1,0.25)
	b.Position = UDim2.fromScale(0,y)
	b.Text = txt
	return b
end

local btnA = makeBtn("Marcar A",0)
local btnB = makeBtn("Marcar B",0.25)
local btnStart = makeBtn("Iniciar",0.5)
local btnClose = makeBtn("Fechar",0.75)

toggleBtn.MouseButton1Click:Connect(function()
	panel.Visible = not panel.Visible
end)
btnClose.MouseButton1Click:Connect(function()
	panel.Visible = false
end)

-- FUNÇÕES VISUAIS
local function addBorders(cell)
	local t = 0.18
	local h = 0.02
	local s = cell.Size

	local borders = {
		{Vector3.new(s.X, t, t), Vector3.new(0, h, s.Z/2)},
		{Vector3.new(s.X, t, t), Vector3.new(0, h, -s.Z/2)},
		{Vector3.new(t, t, s.Z), Vector3.new(s.X/2, h, 0)},
		{Vector3.new(t, t, s.Z), Vector3.new(-s.X/2, h, 0)},
	}

	for _,data in ipairs(borders) do
		local b = Instance.new("Part")
		b.Size = data[1]
		b.Position = cell.Position + data[2]
		b.Anchored = true
		b.Color = Color3.fromRGB(0,0,0)
		b.Material = Enum.Material.SmoothPlastic
		b.CastShadow = false
		b.Parent = cell
	end
end

local function showNumber(cell)
	if cell:GetAttribute("Revealed") then return end
	cell:SetAttribute("Revealed", true)

	local n = cell:GetAttribute("Number")
	if n == 0 then return end

	local gui = Instance.new("BillboardGui", cell)
	gui.Size = UDim2.fromScale(2,2)
	gui.StudsOffset = Vector3.new(0,0.4,0)
	gui.AlwaysOnTop = true

	local txt = Instance.new("TextLabel", gui)
	txt.Size = UDim2.fromScale(1,1)
	txt.BackgroundTransparency = 1
	txt.TextScaled = true
	txt.Text = tostring(n)
	txt.TextColor3 = Color3.new(0,0,0)
	txt.Font = Enum.Font.SourceSansBold
end

-- MARCAÇÃO
btnA.MouseButton1Click:Connect(function()
	pointA = player.Character.HumanoidRootPart.Position
end)

btnB.MouseButton1Click:Connect(function()
	pointB = player.Character.HumanoidRootPart.Position
end)

-- CAMPO
btnStart.MouseButton1Click:Connect(function()
	if not pointA or not pointB then return end
	fieldFolder:ClearAllChildren()

	local baseY = player.Character.HumanoidRootPart.Position.Y - 2.8

	local minX = math.min(pointA.X, pointB.X)
	local maxX = math.max(pointA.X, pointB.X)
	local minZ = math.min(pointA.Z, pointB.Z)
	local maxZ = math.max(pointA.Z, pointB.Z)

	local grid = {}

	for x = minX, maxX, CELL_SIZE do
		for z = minZ, maxZ, CELL_SIZE do
			local cell = Instance.new("Part")
			cell.Size = Vector3.new(CELL_SIZE, CELL_HEIGHT, CELL_SIZE)
			cell.Position = Vector3.new(x, baseY + CELL_HEIGHT/2, z)
			cell.Anchored = true
			cell.Color = Color3.fromRGB(245,220,200)
			cell.Material = Enum.Material.SmoothPlastic
			cell.Transparency = 0.05
			cell.Parent = fieldFolder

			addBorders(cell)

			local isMine = math.random() < MINE_CHANCE
			cell:SetAttribute("Mine", isMine)
			cell:SetAttribute("Revealed", false)

			table.insert(grid, cell)
		end
	end

	for _,cell in pairs(grid) do
		if not cell:GetAttribute("Mine") then
			local count = 0
			for _,other in pairs(grid) do
				if other:GetAttribute("Mine") then
					if (cell.Position - other.Position).Magnitude <= CELL_SIZE*1.5 then
						count += 1
					end
				end
			end
			cell:SetAttribute("Number", count)
		end

		cell.Touched:Connect(function(hit)
			local char = player.Character
			if not char then return end
			if hit.Parent ~= char then return end

			local hum = char:FindFirstChild("Humanoid")
			if not hum then return end

			if cell:GetAttribute("Mine") then
				hum.Health = 0
				cell:Destroy()
			else
				showNumber(cell)
			end
		end)
	end
end)

Features & Information

Campo minado pra tirar tédio ou vc decide
#Campo minado#Minado#Campo

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts