This is not specific enough. Changes in backpack and PlayerGui (NOT StarterGui, you should not be operating on items there) can mean anything.
If the function of the touch is unimportant (for example, making a Gui visible), then stop what you’re doing as your interpretation of how to do this presents unnecessary work for the server. Have the client register the touch instead. This way, they can handle both the touch and use the LocalPlayer variable.
Sample code (should be somewhere in StarterPlayerScripts ideally):
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local PartToTouch = somewhere -- obvious what needs to go here
PartToTouch.Touched:Connect(function (hit) -- is a BasePart, not a Player
local player = Players:GetPlayerFromCharacter(hit) -- don't need
if player and player == LocalPlayer then -- verify LocalPlayer did the touch
print(player.Name) -- player is the same as LocalPlayer if it reaches this
end
end)