local ting = 0 --debouncer function onTouched(hit) if ting == 0 then --debounce check ting = 1 --activate debounce check = game.Workspace.Cake.Parent("Player Who Owns the Part").Value player = game.Parent.Parent:FindFirstChild("Humanoid") cakeowner = hit.check if cakeowner ~= nil then --If a cake is found, then if player == check then local stats = user:findFirstChild("leaderstats") --Find moneyholder if stats ~= nil then --If moneyholder exists then local cash = stats:findFirstChild("Cash") --Get money function touched(hit) if hit.Name == "Batter" then Cash.Value = Cash.Value + 5 elseif hit.Name == "Shaped Batter" then Cash.Value = Cash.Value + 10 elseif hit.Name == "Sugared Batter" then Cash.Value = Cash.Value + 20 elseif hit.Name == "Unflavoured Cake" then Cash.Value = Cash.Value + 25 elseif hit.Name == "Heated Cake" then Cash.Value = Cash.Value + 50 elseif hit.Name == "Cake" then Cash.Value = Cash.Value + 100 wait(5) --wait-time before button works again end end ting = 0 --remove debounce end end end end script.Parent.Touched:connect(onTouched)
I'm trying to make a script that gives you Cash when a part named Batter (or the others) touches the part that contains the script.
I need the script to read the Batters ObjectValue string, which has a players name in it.
If the players name equals the ObjectValue, then it should give that person Cash.
I think I understand what you want here, but my script may be incorrect even by myself. If you could please explain more specifically what you're trying to do that would be great.
local Workspace = game:GetService("Workspace") local Players = game:GetService("Players") local DebounceHit = false function OnTouched(Hit) local Character = (Hit.Parent:IsA("Model") and Hit.Parent) or Hit:FindFirstAncestorOfClass("Model") local Humanoid = Character:FindFirstChildOfClass("Humanoid") local Player = Players:GetPlayerFromCharacter(Character) or (Hit:IsA("BasePart") and Hit:GetNetworkOwner()) if DebounceHit == true then return end DebounceHit = true local LeaderboardStatistics = Player:FindFirstChild("leaderstats") local CashStatistic = LeaderboardStatistics:FindFirstChild("Cash") if Hit.Name == ("Batter") then CashStatistic.Value = CashStatistic.Value + 5 elseif Hit.name == ("Shaped Batter") then CashStatistic.Value = CashStatistic.Value + 10 elseif Hit.Name == ("Sugared Batter") then CashStatistic.Value = CashStatistic.Value + 20 elseif Hit.Name == ("Unflavoured Cake") then CashStatistic.Value = CashStatistic.Value + 25 elseif Hit.Name == ("Heated Cake") then CashStatistic.Value = CashStatistic.Value + 50 elseif Hit.Name == ("Cake") then CashStatistic.Value = CashStatistic.Value + 100 end end script.Parent.Touched:Connect(OnTouched)
Edited code + beautifier:
local ting = 0 function onTouched(hit) if ting == 0 then ting = 1 local cakeowner = hit.Parent local character = hit.Parent.Parent local player = character.Parent if cakeowner.Parent ~= character then if player then local stats = player:FindFirstChild("leaderstats") if stats ~= nil then local cash = stats:findFirstChild("Cash") if hit.Name == "Batter" then Cash.Value = Cash.Value + 5 elseif hit.Name == "Shaped Batter" then Cash.Value = Cash.Value + 10 elseif hit.Name == "Sugared Batter" then Cash.Value = Cash.Value + 20 elseif hit.Name == "Unflavoured Cake" then Cash.Value = Cash.Value + 25 elseif hit.Name == "Heated Cake" then Cash.Value = Cash.Value + 50 elseif hit.Name == "Cake" then Cash.Value = Cash.Value + 100 wait(5) end end ting = 0 end end end end script.Parent.Touched:connect(onTouched)
So what I am trying to do is get the Batter to give the owner money if the Batter touches the Moneygiver part.
Every piece of Batter has a string (ObjectValue) as a child.
The strings name is "Player Who Owns the Part".
Inside the strings value is the name of the person who created the Batter, using a button. (Ideally I'd want a script that changes the value to whoever touches the Batter..)
When the Batter touches the Moneygiver part, I want it to give money to the player with the same name thats inside of the Strings Value. (String.Value = plr)
EDIT:
local Workspace = game:GetService("Workspace") local Players = game:GetService("Players") local DebounceHit = false function OnTouched(Hit) local Character = (Hit.Parent:IsA("Part") and Hit.Parent) or Hit:FindFirstAncestorOfClass("Part") local Humanoid = Character:FindFirstChildOfClass("Humanoid") local Player = Players:GetPlayerFromCharacter(Character) or (Hit:IsA("BasePart") and Hit:GetNetworkOwner()) if DebounceHit == true then return end DebounceHit = true local LeaderboardStatistics = Player:FindFirstChild("leaderstats") local CashStatistic = LeaderboardStatistics:FindFirstChild("Cash") if Hit.Name == ("Batter") then CashStatistic.Value = CashStatistic.Value + 5 elseif Hit.name == ("Shaped Batter") then CashStatistic.Value = CashStatistic.Value + 10 elseif Hit.Name == ("Sugared Batter") then CashStatistic.Value = CashStatistic.Value + 20 elseif Hit.Name == ("Unflavoured Cake") then CashStatistic.Value = CashStatistic.Value + 25 elseif Hit.Name == ("Heated Cake") then CashStatistic.Value = CashStatistic.Value + 50 elseif Hit.Name == ("Cake") then CashStatistic.Value = CashStatistic.Value + 100 end wait(5) DebounceHit = false end script.Parent.Touched:Connect(OnTouched)
moonn_mii edited the original code, then I made some little changes.
I added wait(5) DebounceHit = false to the bottom so that after 5 seconds it lets you get money again.
Then for Hit.Parent:IsA("Model") I changed it to Hit.Parent:IsA("Part") As the Batter is stored inside of a part.
Thank you moonn_mii. :)