there are multiple ways to accomplish the thing you want, but i am going to go with the easy way:
if you already have a placeholder dialogue gui in the player's playergui, you can fire a remote to only that client with the specific strings and other data you may need.
03 | local remote = workspace.remote |
04 | remote.OnClientEvent:Connect( function (strings,...) |
11 | local remote = workspace.remote |
12 | local someplatform = workspace.Part |
13 | someplatform.Touched:Connect( function (p) |
14 | local plr = game:GetService( "Players" ):GetPlayerFromCharacter(p.Parent) |
15 | remote:FireClient(plr, { "hi" , "what" } ,somethingidk) |
20 | local plr = game:GetService( "Players" ).LocalPlayer |
21 | someplatform.Touched:Connect( function (p) |
keep in mind exploiters can use a basic function to fire all touch interests so i would use something like region3 but .touched still works well