game.Players.LocalPlayer.Backpack:WaitForChild("Hamburger",99)
game.Workspace.Npc.NPC.TriggerBlock.Text.Value =("Wow thanks")
game.Workspace.Npc.NPC.TriggerBlock.Text.Text.Value = ("Here have 100 candies! :D")
game.Workspace.Npc.NPC.TriggerBlock.Text.Text.Text.Value =("Bye! :)")
script.Parent.Visible = true
script.Parent.Text =("Bring back the cane to the old man for your reward")
wait(5)
script.Parent.Visible = false
(The Text.Value is a npc's text.. wich works)

3 comments
With FilteringEnabled, if you change the value through a local script (which it appears you are doing), it should only change for that player.
Is your text displayed by the NPC in the form of a billboard gui?
If so, you could parent the billboard GUI to the player's GUI and set it's adornee to the NPC's "TriggerBlock" (as it appears on your thread).