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

What is wrong with this group only door script?

I am attempting to script a door that lets only ranks above 20 in that group through.

ID=2606952
Part=script.Parent

script.Parent.Touched:connect(onTouched)
function onTouched(hit)
    if Part.Parent:FindFirstChild("Humanoid") then
	local Player=game.Players:GetPlayerFromCharacter(Part.Parent)
	if Player:IsInGroup(ID) then 
		if Player:GroupRank(20) then
		script.Parent.CanCollide=false
		wait(0.1)
		script.Parent.CanCollide=true
	end
end
end
end

It won't let through the rank 20. Also for letting every rank above 20 through what do I do? Do I have to list every rank above 20? Or can I tell it to allow every rank value above 20?

My original is terrible, but with help from drew1017 and KoreanBBQ I got this -

ID=2606952
part=script.Parent
rank=player:GetRankInGroup(ID)

part.Touched:connect(function(hit)
    if hit.Parent:FindFirstChild("Humanoid") then
        player=game.Players.GetPlayerFromCharacter(hit.Parent)
        if rank > 19 then
        part.CanCollide=false
        wait(1)
        part.CanCollide=true
    end
end
end)

but neither of theirs or this one works. What am I doing wrong? e.e

2 answers

✓ Accepted answer

Erm, your arguments and all are kind of weird. Try this:

local ID=2606952
local part=script.Parent

part.Touched:connect(function(hit)
	if hit.Parent:FindFirstChild("Humanoid") then
		local plr=game.Players.GetPlayerFromCharacter(hit.Parent)
		if plr:RankInGroup(ID)>19 then
		part.CanCollide=false
		wait(0.1)
		part.CanCollide=true
	end
end)

Please upvote if it works ;)

3 comments

0

Thank you so much, but when I touched the Part nothing happened... e.e

0

Maybe change the CanCollide time to like 10 seconds and change the transparency to make it noticable.

0

I did change the wait time and made it change the transparency to 0.5 and back to 0, but nothing happens when I touch the brick. Is the script not firing, maybe? I know I am definitely in the group and far above rank 20.

2 things:

  1. GroupRank is not a method or property; In order to get what rank a player is you have to use GetRankInGroup(id of group) method on Player.

  2. You are using Part.Parent to find out what touched the Part, but this doesn't refer to the part that touched the door, it refers to script.Parent. If you need to refer to the part that touched the door, use hit (or whatever was put in the arguments of the Touched function, in this case hit).

Something like this:

ID=2606952
Part=script.Parent

script.Parent.Touched:connect(onTouched)
function onTouched(hit)
if hit.Parent:FindFirstChild("Humanoid") then
    local Player=game.Players:GetPlayerFromCharacter(hit.Parent)
    if Player:IsInGroup(ID) then 
        rank = Player:GetRankInGroup(ID)
        if rank >= 20 then
        script.Parent.CanCollide=false
        wait(0.1)
        script.Parent.CanCollide=true
    end
end
end
end

(P.S. you dont have to use spaces for indenting, just use tab to indent)

2 comments

0

Thanks so much, but I tried your script and when I touched the Part nothing happened.

0

Are you testing this in Studio while you're logged in?

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