So basically you want to make it so if the player hasn't moved for a specific amount of time it plays a dialog?
Make two variables:
PlayerLastX
PlayerLastY
Make a common event that runs a parallel process that records the player X and Y location to PlayerLastX and PlayerLastY respectively.
Then wait one frame and then check the current X and Y of the player against what PlayerLastX and PlayerLastY says. If this is true, make a third Variable called Timer and have it add 1 to this variable every time this situation is true. (Basically it counts how many seconds the player has not moved.) When it is not true, set the variable to 0. (AKA reset the timer).
Then just make an event either in map (If you only want it to register in this specific location) or another common event running in a parallel process (If you want it to happen anywhere in the game) that checks the Timer and once it reaches a certain number, it plays the dialog you want. So it would be something like "If: [Timer]>= 6000" (this will be frames since the timer updates every frame) "Then: Play Dialog" then reset the timer to 0.
I haven't actually tested this, but I believe in theory it should work out just fine.
You could probably do it cleaner in scripting, but if you just want to do it through events I BELIEVE this should work.
If it doesn't update the timer properly, try setting the wait time between update checking to something like 10 frames to give the player time to actually move to a new position before resetting for another check.