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.
