Code: Select all
function WaitForGump(const WaitMs: Cardinal): Boolean;
begin
Result := CheckLag(WaitMs);
if Result then
GetGumpInfo(GumpIndex, GumpInfo);
end;
Или можно как то по другому отследить, что кнопка уже нажалась?
Code: Select all
function WaitForGump(const WaitMs: Cardinal): Boolean;
begin
Result := CheckLag(WaitMs);
if Result then
GetGumpInfo(GumpIndex, GumpInfo);
end;
Code: Select all
procedure CloseGamp;
var
g:integer;
begin
AddToSystemJournal('CloseGamp') ;
for g:=0 to GetGumpsCount-1 do
begin
if (GetGumpID(g) = $0326) then
begin
NumGumpButton(g,5);
wait(500);
NumGumpButton(g,0);
// AddToSystemJournal('ok') ;
end;
if (GetGumpID(g) = $FF3D ) or (GetGumpID(g) = $0320 ) then
begin
NumGumpButton(g,7);
NumGumpButton(g,5);
//AddToSystemJournal('Брать квест') ;
wait(500);
end
else
// AddToSystemJournal('не дали квест') ;
if (GetGumpID(g) = $E5DC) or (GetGumpID(g) = $FF93) then
begin
NumGumpButton(g,7);
NumGumpButton(g,5);
// AddToSystemJournal('Check') ;
end;
//else
// AddToSystemJournal('No Check') ;
end;
wait(500);
for g:=0 to GetGumpsCount-1 do
CloseSimpleGump(g);
end;
Serial и ID гампов часто одинаковые, можно конечно работать с гамп листом, но тогда точно получится изврат)))Vizit0r wrote:жуткий изврат.
почему не ждать гампа с опр. гампид? можно через ивент, можно просто проверяя регулярно состояние гамплиста.
Code: Select all
var
ComeGump : Boolean;
procedure OnIncomingGump(Serial, GumpID, X, Y: Cardinal);
begin
ComeGump := True;
end;
function WaitForGump(const TimeoutMs: Word): Boolean;
var
EndTime : tDateTime;
begin
ComeGump := False;
EndTime := Now + MsToDateTime(TimeoutMs);
SetEventProc(evIncomingGump, 'OnIncomingGump');
while not ComeGump and (Now <= EndTime) do Wait(100);
SetEventProc(evIncomingGump, '');
Result := ComeGump;
if Result then
GetGumpInfo(GumpIndex, GumpInfo);
end;
Никогда не использую Wait() для ожидания завершения чего либо...shinma wrote: wait()
это что такое и что делает? смутное подозрение, что давным-давно есть в стелсеVeL wrote:Нехватает инжектовского UO.LastGump('replyed')
Code: Select all
gumpscount = GetGumpsCount()
while gumpscount == GetGumpsCount():
...
open gump
...
CheckLag() или Wait(ping)