I have a text button that collects the Players money, but for some reason, 'SOMETIMES' it doesn't work, I've only had the issue once on PC, but on a Samsung Galaxy S7, it doesn't work at all, on a S8 it works fine and had a few iPhone users that it doesn't work for, haven't had any feedback from other devices, but seems a few people are having this issue in my game. how can I get both OnScreen and Model Buttons to work for all devices? why is it so inconsistent between different devices?

This is the current code im using for said Button

local player = game.Players.LocalPlayer or game.Players.PlayerAdded:Wait()

local Settings = require(workspace.Settings)

local button = script.Parent:WaitForChild("Collect", 500)

local collect = script.Parent:WaitForChild("Money", 500)

local mainCollect = script.Parent.Parent.Parent.Parent.Parent.Parent:WaitForChild("CurrencyToCollect", 500)

local Stealing = Settings.StealSettings

  

--Change Value on Screen

collect.Text = "$"..mainCollect.Value

mainCollect.Changed:connect(function() collect.Text = "$"..mainCollect.Value end)

  

--Click to Collect

button.MouseButton1Click:connect(function()

if script.Parent.Parent.Parent.Parent.Parent.Parent.Owner.Value == player then

local Stats = game.ServerStorage.PlayerMoney:FindFirstChild(player.Name)

if Stats ~= nil then

--Add CollectSFX Here

Stats.Value = Stats.Value + mainCollect.Value

mainCollect.Value = 0

end

elseif Stealing.Stealing then -- if player isn't owner and stealing is on

if CanSteal == true then

CanSteal = false

delay(Stealing.PlayerProtection, function()

CanSteal = true

end)

local Stats = game.ServerStorage.PlayerMoney:FindFirstChild(player.Name)

if Stats ~= nil then

local Difference = math.floor(mainCollect.Value * Stealing.StealPrecent)

--Add CollectSFX Here

Stats.Value = Stats.Value + Difference

mainCollect.Value = mainCollect.Value - Difference

end

end

end

end)