Looks like the ProximityPrompt event is triggering for both the original player and the player who picks it up. Maybe something like this will help that …
small adjustments
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Remotes = ReplicatedStorage:FindFirstChild("Remotes")
function proximityTriggered(playerWhoTriggered, money, part)
if playerWhoTriggered ~= part.Creator then
playerWhoTriggered.leaderstats.Gold.Value += money
part:Destroy()
end
end
function drop(amountOfMoney, player)
player.leaderstats.Gold.Value -= amountOfMoney
local part = Instance.new("Part", workspace)
part.Material = Enum.Material.Neon
part.BrickColor = BrickColor.new("New Yeller")
part.Size = Vector3.new(1,1,1)
part.Position = player.Character.HumanoidRootPart.Position + Vector3.new(0, 5, 0)
part.Creator = player
local numberVal = Instance.new("NumberValue", part)
numberVal.Value = amountOfMoney
local ProximityPrompt = Instance.new("ProximityPrompt", part)
ProximityPrompt.ActionText = "Get"
ProximityPrompt.ObjectText = amountOfMoney
ProximityPrompt.Triggered:Connect(function(player)
proximityTriggered(player, amountOfMoney, part)
end)
end
function send(amount, playerWhoSend, playerWhoGets)
local playerWhoGetsAsPlayer = game.Players:FindFirstChild(playerWhoGets)
playerWhoGetsAsPlayer.leaderstats.Gold.Value += amount
playerWhoSend.leaderstats.Gold.Value -= amount
end
Remotes.Currency.OnServerEvent:Connect(function(plr, amountOfMoney, CurrencyType, plrWritten)
if plrWritten then
print("PlrWritten")
else
print("no plr written")
end
if CurrencyType == "Drop" then
drop(amountOfMoney, plr)
elseif CurrencyType == "Send" then
send(amountOfMoney, plr, plrWritten)
end
end)