I’m trying to create a drag race system, I have the starting parts set up, but for the Finish Line part that gives players money for competing.
I can’t figure out how to create Debounce(for each racer I assume) so that each player only gets the designated amount of money for competing.
I’ve tried adding Debounce in multiple ways and locations, but either the first player gets all the money and maxes out the IntConstrainedValue (seen below) or it just doesn’t work at all.
local VictoryPart = script.Parent -- // Part we are going to touch
local PlayersFinished = VictoryPart.Parent.Values.PlayersFinished -- // IntConstrainedValue determining how many players are finished, 2 is max number
local LeftSpotPlayer = VictoryPart.Parent.Values.LeftSpotPlayer -- // (String) Player in the Left Spot
local RightSpotPlayer = VictoryPart.Parent.Values.RightSpotPlayer -- // (String) Player in the Right Spot
local LeftFinishRaceEvent = VictoryPart.Parent.Events.FinishRaceLeftSpot -- // Bindable Event that cleans up the starting part for the race (Left Spot)
local RightFinishRaceEvent = VictoryPart.Parent.Events.FinishRaceRightSpot -- // Bindable Event that cleans up the starting part for the race (Right Spot)
VictoryPart.Touched:Connect(function(Object)
if Object:FindFirstAncestorWhichIsA("Model") and Object:FindFirstAncestorWhichIsA("Model"):FindFirstChild("Humanoid") then -- // Don't worry about spaghetti code, checking to find Player
local Character = Object:FindFirstAncestorWhichIsA("Model")
local Player = game.Players:GetPlayerFromCharacter(Character) -- // Getting the Player for use blow
if Player.Name == LeftSpotPlayer.Value or RightSpotPlayer.Value then -- // Checking to see if the known Player is the same as the two Racers
local PlayerMoney = Player:WaitForChild("leaderstats").Money -- // Get player money
PlayersFinished.Value = PlayersFinished.Value + 1 -- // Change the PlayersFinished Value by adding 1
if PlayersFinished.Value == 1 then -- // If the value is 1, get the winning player and give them 2500
PlayerMoney.Value = PlayerMoney.Value + 2500
elseif PlayersFinished.Value == 2 then -- // If the value is 2, get the losing player and give them 500 instead
PlayerMoney.Value = PlayerMoney.Value + 500
end
if Player.Name == LeftSpotPlayer.Value then -- // Check for LeftSpotPlayer so we can clean up their original starting place
LeftFinishRaceEvent:Fire(Player)
elseif Player.Name == RightSpotPlayer.Value then -- // Check for RightSpotPlayer so we can clean up their original starting place
RightFinishRaceEvent:Fire(Player)
end
end
end
end)
Here is a picture of the Explorer for better visualization:
Thanks for whatever help I’m offered, I added comments so people knew what everything was.