Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Can anyone help with this locking script?

Also anyway to clean it up

glockdown = script.Parent.Parent.Parent.GlobalLockdown
dlockdown = script.Parent.Parent.Parent.DoorLockdown

script.Parent.ClickDetector.MouseClick:connect(function (pwc)
	print ("Check Click One")
        if dlockdown.Value == false and
	    pwc.Name == workspace.ShipCrew.Captain.Value or 
	    pwc.Name == workspace.ShipCrew.FirstOfficer.Value or 
	    pwc.Name == workspace.ShipCrew.SecondOfficer.Value or 
	    pwc.Name == workspace.ShipCrew.EngineeringChief.Value or 
	    pwc.Name == workspace.ShipCrew.EngineeringJuniorOne.Value or 
	    pwc.Name == workspace.ShipCrew.EngineeringJuniorTwo.Value or 
	    pwc.Name == workspace.ShipCrew.TacticalChief.Value or 
	    pwc.Name == workspace.ShipCrew.TacticalJuniorOne.Value or
	    pwc.Name == workspace.ShipCrew.TacticalJuniorTwo.Value or
	    pwc.Name == workspace.ShipCrew.MedicalChief.Value or
		pwc.Name == workspace.ShipCrew.MedicalJuniorOne.Value or
		pwc.Name == workspace.ShipCrew.MedicalJuniorTwo.Value or 
	    pwc.Name == workspace.ShipCrew.ScienceChief.Value or
		pwc.Name == workspace.ShipCrew.ScienceJuniorOne.Value or
		pwc.Name == workspace.ShipCrew.ScienceJuniorTwo.Value or
	    pwc.Name == workspace.ShipCrew.OperationsChief.Value or
		pwc.Name == workspace.ShipCrew.OperationsJuniorOne.Value or
		pwc.Name == workspace.ShipCrew.OperationsJuniorTwo.Value 
	    then 
	    print("Check One")
         dlockdown.Value = true
         script.Parent.Lock:Play()
end
end)

    script.Parent.ClickDetector.MouseClick:connect(function (pwc)
	print ("Check Click Two")
        if dlockdown.Value == true and
	    pwc.Name == workspace.ShipCrew.Captain.Value or 
	    pwc.Name == workspace.ShipCrew.FirstOfficer.Value or 
	    pwc.Name == workspace.ShipCrew.SecondOfficer.Value or 
	    pwc.Name == workspace.ShipCrew.EngineeringChief.Value or 
	    pwc.Name == workspace.ShipCrew.EngineeringJuniorOne.Value or 
	    pwc.Name == workspace.ShipCrew.EngineeringJuniorTwo.Value or 
	    pwc.Name == workspace.ShipCrew.TacticalChief.Value or 
	    pwc.Name == workspace.ShipCrew.TacticalJuniorOne.Value or
	    pwc.Name == workspace.ShipCrew.TacticalJuniorTwo.Value or
	    pwc.Name == workspace.ShipCrew.MedicalChief.Value or
		pwc.Name == workspace.ShipCrew.MedicalJuniorOne.Value or
		pwc.Name == workspace.ShipCrew.MedicalJuniorTwo.Value or 
	    pwc.Name == workspace.ShipCrew.ScienceChief.Value or
		pwc.Name == workspace.ShipCrew.ScienceJuniorOne.Value or
		pwc.Name == workspace.ShipCrew.ScienceJuniorTwo.Value or
	    pwc.Name == workspace.ShipCrew.OperationsChief.Value or
		pwc.Name == workspace.ShipCrew.OperationsJuniorOne.Value or
		pwc.Name == workspace.ShipCrew.OperationsJuniorTwo.Value  
	     then 
	print("Check Two")
	     dlockdown.Value = false
	     glockdown.Value = false
		 script.Parent.Unlock:Play()
     end
end)


1 comment

0

It locks, but wont unlock

1 answer

Since we've already discussed the problems on Skype, here's the fixed script:

glockdown = script.Parent.Parent.Parent.GlobalLockdown
dlockdown = script.Parent.Parent.Parent.DoorLockdown

--List the ranks that can use the door here, follow the format shown.
local ranks = {
"Captain",
"FirstOfficer",
"SecondOfficer",
"EngineeringChief",
"EngineeringJuniorOne",
"EngineeringJuniorTwo",
"TacticalChief",
"TacticalJuniorOne",
"TacticalJuniorTwo",
"MedicalChief",
"MedicalJuniorOne",
"MedicalJuniorTwo",
"ScienceChief"
"ScienceJuniorOne",
"ScienceJuniorTwo",
"OperationsChief",
"OperationsJuniorOne",
"OperationsJuniorTwo"
}
--End rank list

script.Parent.ClickDetector.MouseClick:connect(function (pwc)
	print (pwc.Name.." clicked")
	if dlockdown.Value == false then
		print("Door is not locked.")
		for i,v in ipairs(ranks) do
			if pwc.Name == workspace.ShipCrew[v].Value then
				print(v.Value.." "..pwc.Name.." passed check. Locking door.")
				dlockdown.Value = true
				script.Parent.Lock:Play()
			else
				print(pwc.Name.." did not pass check.")
			end
		end
	elseif dlockdown.Value == true then
		print("Door is locked.")
		for i,v in ipairs(ranks) do
			if pwc.Name == workspace.ShipCrew[v].Value then
				print(v.Value.." "..pwc.Name.." passed check. Unlocking door.")
				dlockdown.Value = false
				script.Parent.Lock:Play()
			end
		end
	end
end)

The reason it was throwing the "Unknown Global" was because I forgot to make the ranks strings, so ROBLOX was looking for the variables "Captain", "FirstOfficer", etc. That's fixed now.

This discussion is preserved as it was. New answers, comments, and votes are closed.