(SOLVED)Randomizer error

Hello!

Im trying to make an attack for my game, which is similar to LIMBO keys(basically its a bunch of parts shuffled around and you need to track which one it is) for my remake of it, im using points scattered through the area and when a part is going to be shuffled, its going to roll a random number, find the part named that number, checks for a object called “Occupied,” if Occupied isnt found it will clone a BoolValue called “Occupied,” tween to that part. If it does find it, it re-rolls and tries again. The issue im having is that its not checking if “Occupied” is found. Its just tweening to that part. Thank you for your assistance

--sorry this code is horrible with unused functions and stuff, ill remove them
local SpearAttack = {}
local TS = game:GetService("TweenService")
print("e")
local walls = game.Workspace.Wall
function SpearAttack.Attack(plr,turnNumber,pushforce, numberOfSpears)
	local selected = 0
	local Position = 0
	local plrHasSelected = 1
	local amountOfTurns = 15
	local guessingTime = game.ReplicatedStorage.GuessTime
	local rightAnswer = math.random(1,4)
	game.ReplicatedStorage.LimboKey.Value = rightAnswer
	local function roll()
		selected = math.random(1,4)
		if not workspace.LIMBO[tostring(selected)]:FindFirstChild("Occupied") then
		selected = math.random(1,4)
		end
	end
	local function movePart(v)
		selected = math.random(1,4)
		print("newvalue"..selected)
		if not workspace.LIMBO[tostring(selected)]:FindFirstChild("Occupied") then
			roll()
			return
		end
		TS:Create(v, TweenInfo.new(0.3), {Position = workspace.LIMBO:FindFirstChild(selected).Position}):Play()
	end
	
	local keys = game.ReplicatedStorage.Attacks.Keys
	for _,v in keys:GetDescendants() do
		if v:IsA("BasePart") then
			local hb = Instance.new("Part")
			wait(0.05)
			local v2 = v:Clone()
			
			roll()
			if not workspace.LIMBO:FindFirstChild(selected):FindFirstChild("Occupied") then
			local e = game.ReplicatedStorage.Attacks.Occupied:Clone()
			e.Parent = workspace.LIMBO[tostring(selected)]
			v2.Parent = workspace.KeysAvaliable
			
			
			v2.Position = workspace.LIMBO:FindFirstChild(selected).Position
			
			else
				roll()
				local e = game.ReplicatedStorage.Attacks.Occupied:Clone()
				e.Parent = workspace.LIMBO[tostring(selected)]
				local v2 = v:Clone()
				v2.Parent = workspace.KeysAvaliable
				v2.Position = workspace.LIMBO:FindFirstChild(selected).Position
				
			end
			end
	end
	wait(0.7)
	TS:Create(game.Workspace.KeysAvaliable[tostring(rightAnswer)], TweenInfo.new(0.3), {Color = Color3.new(0.333333, 0.666667, 0.498039)}):Play()
	wait(0.3)
	TS:Create(game.Workspace.KeysAvaliable[tostring(rightAnswer)], TweenInfo.new(0.3), {Color = Color3.new(1, 1, 1)}):Play()
for i = 1, amountOfTurns do
	print("roll")
	wait(0.31)
	for _,v in workspace.LIMBO:GetDescendants() do
		if v:IsA("BoolValue") or v.Name == "Occupied" then
			v:Destroy()
		end
	end
		for _,v in workspace.KeysAvaliable:GetDescendants() do
				if not workspace.LIMBO[tostring(selected)]:FindFirstChild("Occupied") then
				roll()
				TS:Create(v, TweenInfo.new(0.3), {Position = workspace.LIMBO:FindFirstChild(selected).Position}):Play()
				elseif workspace.LIMBO[tostring(selected)]:FindFirstChild("Occupied") == true then
				print("found")
				movePart(v)
				
			end
		end
end
wait(5)
guessingTime.Value = true 
for _,v in pairs(workspace.KeysAvaliable:GetDescendants()) do
	
	wait(2)
	plrHasSelected += 1
	game.ReplicatedStorage.SelectedKey.Value = plrHasSelected
		TS:Create(game.Workspace.KeysAvaliable[tostring(plrHasSelected)], TweenInfo.new(0.3), {Color = Color3.new(0.333333, 0.666667, 1)}):Play()
		TS:Create(game.Workspace.KeysAvaliable[tostring(plrHasSelected - 1)], TweenInfo.new(0.3), {Color = Color3.new(1, 1, 1)}):Play()
end

game.UserInputService.InputBegan:Connect(function(keycode)
	print("RightShift-Inputed")
	if keycode.KeyCode == Enum.KeyCode.RightShift then
		if guessingTime == true then
			print("Guessing time")
		if plrHasSelected == rightAnswer then
			print("You guessed right!")
		else
			game.Players.LocalPlayer.Value.CurrentHealth.Value -= 10
		end
		for _,v in pairs(workspace.KeysAvaliable:GetDescendants()) do
			v:Destroy()
		end
		end
	end
end)
end

return SpearAttack

1 Like

Here’s the problem. The thing is an instance and not the value within the instance. So what you’re looking for is workspace.LIMBO[tostring(selected)]:FindFirstChild("Occupied").Value.

1 Like

I tried that, didnt work either. I also tried looking for both the instance and the value but still didnt work

1 Like

Ah, never mind. So it turns out you were trying to check for the BoolValue that is randomly inserted and deleted by another script? I don’t fully understand this system but it appears UserInputService is being used, which should be for LocalScript.

Some code is just straight-up redundant, part of the local roll() function:

When do you actually need to check if it is there or not?

1 Like

yeah, the UIS got removed and is now part of a local script, and the roll redundancy is just my horrible attempt trying to fix it skipping the Occupied check. I check it before it moves and after the roll

1 Like

i solved this by adding a repeat until loop but ty to all that helped!

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.