Действительно, такая проблема у многих. Когда я столкнулся с ней, стал искать решение на всевозможных форумах. Но поиск ничего не дал. Пришлось придумывать самому. Вот что получилось. 
 к new: 
 Код
new PicRadar[MAX_PLAYERS]; 
 new TimerUpdate[MAX_PLAYERS];
  
 создаём пикап в OnPlayerConnect: 
 Код
PicRadar[playerid] = CreatePickup(1239,23,212.4173,1822.8435,6.4141);
  
 в OnPlayerPickUpPickup: 
 Код
if(pickupid == PicRadar[playerid]) 
 { 
 ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Окно","Диалоговое окно","Ок","Отмена"); 
 TimerUpdate[playerid] = SetTimer("Update",200,1); 
 DestroyPickup(PicRadar[playerid]); 
 }
  
 в любое место: 
 Код
forward Update(playerid); 
 public Update(playerid) 
 { 
 if(!IsPlayerInRangeOfPoint(playerid,1.0,212.4173,1822.8435,6.4141)) 
 { 
 PicRadar[playerid] = CreatePickup(1239,23,212.4173,1822.8435,6.4141); 
 KillTimer(TimerUpdate[playerid]); 
 } 
 return 1; 
 }
  
 Когда встаём на пикап, открывается ДО, убивается пикап, запускается таймер каторый проверяет, отошел ли игрок от этого места. 
 Если отошёл на 1 метр, создаётся опять пикап и убивается таймер. 
 Может у кого есть другое решение, прошу отписаться здесь.