I am tring to make a mail system using proximity prompts. When the prompt runs it firs a client event and this is the script inside of StarterPlayerScripts. The problem I am having is that before the player uses the second prompt to deliver the mail the script gives them money. Anyone know my problem?
local event = game.ReplicatedStorage.MailEvent
local delivedevent = game.ReplicatedStorage.Mail_Delivered_Event
function mailer()
local number = math.random(1,3)
print(number)
local mail = game.Workspace.Mail_Parts.Mail_Spots[number]
game.Workspace.Mail_Parts.MainPart.ProximityPrompt.Enabled = false
mail.ProximityPrompt.Enabled = true
while true do
if mail.ProximityPrompt.Triggered then
local player = game.Players.LocalPlayer
mail.ProximityPrompt.Enabled = false
game.Workspace.Mail_Parts.MainPart.ProximityPrompt.Enabled = true
wait(1)
print("triggered")
player.Stats.Credits.Value = player.Stats.Credits.Value + 25
end
end
end
event.OnClientEvent:Connect(mailer)
Rather than using a while loop, you should be using Event based triggers, something along the lines of:
local function mailPromptTriggered()
mail.ProximityPrompt.Enabled = false
game.Workspace.Mail_Parts.MainPart.ProximityPrompt.Enabled = true
end
local function mainpartPromptTriggered()
player.Stats.Credits.Value = player.Stats.Credits.Value + 25
game.Workspace.Mail_Parts.MainPart.ProximityPrompt.Enabled = false
mail.ProximityPrompt.Enabled = true
end
mail.PromptTriggered:Connect(mailPromptTriggered)
game.Workspace.Mail_Parts.MainPart.PromptTriggered:Connect(mainpartPromptTriggered)
local player = game.Players.LocalPlayer
local event = game.ReplicatedStorage.MailEvent
local delivedevent = game.ReplicatedStorage.Mail_Delivered_Event
function mailer()
local number = math.random(1,3)
print(number)
local mail = game.Workspace.Mail_Parts.Mail_Spots[number]
game.Workspace.Mail_Parts.MainPart.ProximityPrompt.Enabled = false
mail.ProximityPrompt.Enabled = true
mail.ProximityPrompt.Triggered:Connect(function()
mail.ProximityPrompt.Enabled = false
game.Workspace.Mail_Parts.MainPart.ProximityPrompt.Enabled = true
wait(1)
print("triggered")
player.Stats.Credits.Value = player.Stats.Credits.Value + 25
end)
end
event.OnClientEvent:Connect(mailer)