Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

how to make this Colorizer and Materializer in a tycoon work only for a owner of the tycoon?

Asked by 3 years ago
Edited 3 years ago

So the Colorizer and Materializer have buttons to click and i wanna know how to set it to where the other players cant come in the tycoon and mess around with that if they are not the owner.

setting both scripts up to where it has a owner value and only the owner can mess with these buttons in the tycoon itself.

Script #1 for the Colorizer

01local DropColor = script.Parent.Parent.Parent.Values.DropColor.Value
02local Floor = script.Parent.Parent.Parent.MainItems.Floor
03local OwnerValue = script.Parent.Parent.Parent.Values.OwnerValue
04 
05for i,v in pairs(script.Parent.Buttons:GetChildren()) do
06    v.ClickDetector.MouseClick:connect(function()
07        DropColor = v.BrickColor
08        script.Parent.Showing.BrickColor = v.BrickColor
09        Floor.BrickColor = v.BrickColor
10    end)
11end

Script #2 for the Materializer

1for i,v in pairs(script.Parent.Buttons:GetChildren()) do
2    v.ClickDetector.MouseClick:connect(function()
3        script.Parent.Parent.Parent.Values.MaterialValue.Value = v.Material.Name
4        script.Parent.Showing.Material = v.Material.Name
5        script.Parent.Parent.Parent.MainItems.Floor.Material = v.Material.Name
6    end)
7end

2 answers

Log in to vote
0
Answered by 3 years ago
Edited by JesseSong 3 years ago

You can add an if statement that checks if the player who clicked is the owner.

01local DropColor = script.Parent.Parent.Parent.Values.DropColor.Value
02local Floor = script.Parent.Parent.Parent.MainItems.Floor
03local OwnerValue = script.Parent.Parent.Parent.Values.OwnerValue
04 
05for i,v in pairs(script.Parent.Buttons:GetChildren()) do
06    v.ClickDetector.MouseClick:Connect(function(player) -- parameter has the value of player who clicked it
07    if player.Name == OwnerValue.Value
08            DropColor = v.BrickColor
09        script.Parent.Showing.BrickColor = v.BrickColor
10            Floor.BrickColor = v.BrickColor
11    end
12    end)
13end
1for i,v in pairs(script.Parent.Buttons:GetChildren()) do
2    v.ClickDetector.MouseClick:Connect(function(player)
3    if player.Name == OwnerValue.Value then
4          script.Parent.Parent.Parent.Values.MaterialValue.Value = v.Material.Name
5         script.Parent.Showing.Material = v.Material.Name
6          script.Parent.Parent.Parent.MainItems.Floor.Material = v.Material.Name
7    end
8    end)
9end

Recommendation(s):

It's also better to use :Connect instead of :connect as that is deprecated/outdated.

0
Thank you so much and now i understand about the :Connect and :connect Chumbis20 6 — 3y
0
You're welcome! JesseSong 3916 — 3y
Ad
Log in to vote
0
Answered by 3 years ago
Edited 3 years ago

Okay so, to make the colorizer and materializer work when the owner of the tycoon clicks them would be by making a check/if statement to see if the player is the owner of the tycoon. Here's the fixed version:

I assume the ownervalue is the player's name that owns the tycoon.

01local DropColor = script.Parent.Parent.Parent.Values.DropColor.Value
02local Floor = script.Parent.Parent.Parent.MainItems.Floor
03local OwnerValue = script.Parent.Parent.Parent.Values.OwnerValue
04 
05for i,v in pairs(script.Parent.Buttons:GetChildren()) do
06    v.ClickDetector.MouseClick:connect(function(plr)
07       if plr.Name == OwnerValue then
08            DropColor = v.BrickColor
09            script.Parent.Showing.BrickColor = v.BrickColor
10            Floor.BrickColor = v.BrickColor
11       end
12    end)
13end

I would assume you have these scripts in the same directory or you have them in the same script.

01local OwnerValue = script.Parent.Parent.Parent.Values.OwnerValue
02for i,v in pairs(script.Parent.Buttons:GetChildren()) do
03    v.ClickDetector.MouseClick:connect(function(plr)
04       if plr.Name == OwnerValue then
05            script.Parent.Parent.Parent.Values.MaterialValue.Value = v.Material.Name
06            script.Parent.Showing.Material = v.Material.Name
07            script.Parent.Parent.Parent.MainItems.Floor.Material = v.Material.Name
08       end
09    end)
10end
0
"I assume the ownervalue is the player's name that owns the tycoon." = yes it is and also there is a issue with the first script on line 7, something with the "=" Chumbis20 6 — 3y
0
Oh yeah I didn't see that, you have to add another = in a if statement. Zeta_Dev 34 — 3y

Answer this question