Page 1 of 1

Как вызвать правильно контекстное меню и нажать на кнопку..

Posted: 07.01.2010 7:50
by UOMO
Шард ДРВ.. Пытаюсь написать улетание по хелпу к кресту когда чар-гост.

Как вызвать меню и нажать на кнопку Help?

Posted: 07.01.2010 9:17
by Vizit0r
что-то мне кажется, что меню в твоем понимании, и меню на самом деле - две большие разницы.

скрин в студию вместе с комментариями - как вызывается, что нажать и т.д. а то телепаты в отпуске.

Posted: 07.01.2010 12:37
by Vano
Для этого специально есть:
procedure HelpRequest; // Хелп через папердол
После чего 2 обычных гампа.

Posted: 07.01.2010 12:48
by Vizit0r
а, ну вам там виднее :)

Posted: 07.01.2010 14:45
by WladL
Вот sample для ДРВ , прыжок в "синие" города через папердол:

Code: Select all

function GetCurrentRegion:Integer;
begin
  Result := -1;
  CheckSave;
  UOSAY('.where');
  if not WaitJournalLine(Now,'I am in|Britain|Northern Territory|WasteLands|Minoc|Desert|Trinsic|Yew',75000) then exit;
  {
  Получаем текущее местоположение чара в виде цифры от 0 до .. , 
  в зависимости от позиции региона в параметре функции WaitJournalLine.
   
    Britain = 1
    WasteLands = 3
    Minoc = 4
    ....
  }
  Result:=FoundedParamID;
end;

procedure RecallFromPaperdol(town:Integer);
var
ATown,CurRegion,StartRegion:Integer;
begin 
SetWarMode(false);
StartRegion:=GetCurrentRegion;

WaitConnection(3000);
UseObject(self);
wait(1000);
checksave;
HelpRequest;//Нажать  "Help"
wait(1000);
checksave;
waitgump('3');//Нажать "Help i am stuck"
wait(1000);
checksave;
waitgump(IntToStr(town));//Нажать на кнопку города 

//привязка к GetCurrentRegion
Case Town of
	1:ATown:=1;//Brit
	2:ATown:=4;//Minoc
	3:ATown:=6;//Trinsic
	4:ATown:=7;//Yew
end; 

//ждем пока не прыгнет (нельзя прыгать в тот-же регион где стоял чар перед прыжком)
CurRegion := GetCurrentRegion;
while (CurRegion = StartRegion) do 
begin
	AddToSystemJournal('Waiting for teleport...')
	wait(5000);
            CurRegion := GetCurrentRegion; 
end;
if (CurRegion = ATown)  then AddToSystemJournal('Jump is OK...') else AddToSystemJournal('Ups...');
end;
Пример использования: Ресалка с креста, с прыжком через папердол в Minoc.

Code: Select all

procedure TryResurrect;
begin
 AddToSystemJournal('TryResurrect...');
 FindDistance:=10;
 RecallFromPaperdol(2);//to Minoc
 while findtype($0004,ground)=0 do wait(500);
  moveXY(getX(findItem),getY(findItem),false,1,false);
 repeat 
	useObject(findItem);
	wait(1000);
 until HP>0;
 AddToSystemJournal('I am alive...');
end;

Posted: 11.01.2010 11:24
by UOMO
Спасиб. *Hic*