-
What do you want to achieve?
I would like to make a region3 player debounce. A region detection that will not run if a player has been detected twice. (They must leave the region and re-enter in order to sell their in-game items again) -
What is the issue?
The script below checks for a player in the region, if it finds one, it sells all the critters the player has collected. It works fine, but the problem is, a player can sit in the region and spam “selling” which plays the sell sound effect a lot (constantly). -
What solutions have you tried so far?
I have tried to add a “last player” variable, but it failed to provide any type of improvement from the original script.
Provided Script:
local sellPad = script.Parent
local regionPart = sellPad:WaitForChild("Region")
function getRegionFromPart(part)
return Region3.new(part.Position - (part.Size/2), part.Position + (part.Size/2))
end
local sellRegion = getRegionFromPart(regionPart)
while wait() do
local partsInRegion = workspace:FindPartsInRegion3(sellRegion)
for i, v in pairs(partsInRegion) do
local player = game.Players:GetPlayerFromCharacter(v.Parent)
if player then
--sell their critters
script.Sell:Play()
local critters = player.playerDataFolder.CrittersCollected
local critterWorth = player.playerDataFolder.CritterWorth
local totalCritters = player.playerDataFolder.TotalCritters
local cash = player.playerDataFolder.Cash
if critterWorth and critters and cash and totalCritters then
cash.Value += critters.Value * critterWorth.Value -- give them cash
totalCritters.Value += critters.Value -- increase the total critters
critters.Value = 0 -- reset the critters value
end
end
end
end