@melodze

Почему в 1 месте спавниться 2 блока?

function countOre()
	_G.OreSpawned = 0
	for i, s in pairs(OreSpawnTable) do
		if s:FindFirstChild('Wood') or s:FindFirstChild('Stone') then
			_G.OreSpawned += 1
		end
	end
	print(_G.OreSpawned)
	return _G.OreSpawned
end

В этой функции мы считаем сколько всего заспавнилось блоков

function OresSpawner()
	while true do
		
		local AmountOres = countOre()
		
		if AmountOres < maxOres then
			local RandomOre = Ores[math.random(1, #Ores)]
			local OreClone = RandomOre:Clone()

			local RandomSpawn
			
			repeat
				RandomSpawn = OreSpawnTable[math.random(1, #OreSpawnTable)]
			until not RandomSpawn:FindFirstChild('Stone') or not RandomSpawn:FindFirstChild('Wood')

			OreClone.Parent = RandomSpawn
			OreClone.CFrame = RandomSpawn.CFrame + Vector3.new(0,3,0)
		end
		
		wait(2)
	end
end


Это бесконечный цикл на спавн блоков. Где идёт проверка if AmountOres < maxOres then (Если количество заспавленых блоков < Максимального количества, то цикл не будет ничего спавнить)

Проблема заключается в том что 2 блока могут заспавниться в 1 месте
650d6a57d222c224843711.jpeg

НО если поменять в коде то что спавнить нужно только Stone, получиться вот такой код:
function countOre()
	_G.OreSpawned = 0
	for i, s in pairs(OreSpawnTable) do
		if s:FindFirstChild('Wood') or s:FindFirstChild('Stone') then
			_G.OreSpawned += 1
		end
	end
	print(_G.OreSpawned)
	return _G.OreSpawned
end

function OresSpawner()
	while true do
		
		local AmountOres = countOre()
		
		if AmountOres < maxOres then
			local RandomOre = Ores[1]
			local OreClone = RandomOre:Clone()

			local RandomSpawn
			
			repeat
				RandomSpawn = OreSpawnTable[math.random(1, #OreSpawnTable)]
			until not RandomSpawn:FindFirstChild('Stone')

			OreClone.Parent = RandomSpawn
			OreClone.CFrame = RandomSpawn.CFrame + Vector3.new(0,3,0)
		end
		
		wait(2)
	end
end


То в итоге всё хорошо работает
650d6ad641585185017354.jpeg
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы