Code: Select all
function WaitUntil(msWorldSave, msTimeout: Integer; predicate: function():Boolean): Boolean;
var t, step: Integer;
begin
if CheckLag(msWorldSave) then
begin
t := 0;
step := msTimeout / 10;
Result := predicate();
while (t < msTimeout) and (not Result) do
begin
Result := predicate();
t := t + step;
Wait(step);
end;
end;
end;
Code: Select all
WaitUntil(60 * 1000, 2000, @Dead);
21:46:02:692 [Dragon World - ***]: Compiler: [Error] (_TEST.sc at 11:30): Unknown identifier 'Dead'
21:46:02:694 [Dragon World - ***]: Compiling failed
Если написать "свой Dead", все работает:
Code: Select all
function CharIsDead: Boolean;
begin
Result := Dead;
end;
begin
WaitUntil(60 * 1000, 2000, @CharIsDead);
end.