Function FindTextWrap(var cx, cy: Integer; txt, font: string; xs, ys, xe, ye: Integer): Boolean;
begin
Result := FindText(cx, cy, txt, font, xs, ys, xe, ye);
end;
Function R_FindChatButton: Boolean;
var
A, B: Integer;
Param1, Param2: TVariantArray;
begin
RawDTM := DTMFromString(Players[CurrentPlayer].Strings[3]);
Param1 := [RawDTM, A, B, 230, 395, 290, 455];
Param2 := [A, B, 'Raw' + Players[CurrentPlayer].Strings[1], 'StatChars', 230, 395, 290, 455];
Result := WaitFuncEx('FindDTMWrap', Param1, RandomRange(30, 70), 2000) or WaitFuncEx('FindTextWrap', Param2, RandomRange(30, 70), 2000);
FreeDTM(RawDTM);
if not Result then
if ValidInterface(905) then
Result := (GetChildComponentID(905,14,56) = Players[CurrentPlayer].Integers[5]) or (lowercase(GetChildComponentText(905,14,57)) = lowercase('Raw ' + Players[CurrentPlayer].Strings[1]));
end;
Function R_ClickChatButton: Boolean;
var
Timer: Integer;
begin
Result := False;
R_Flag;
MarkTime(Timer);
AntiRandoms;
if R_FindChatButton then
begin
MouseBox(230,395,290,455, 1);
DebugIt('Clicked The Chat In An Attempt To Cook.');
AntiRandoms;
Result := True;
end
else
DebugIt('Cannot Find RawDTM. Will Try Again.');
end;
What I use in my cooker.
Edit: It uses DGBY714's waitfuncex function which is here:
{*******************************************************************************
function WaitFuncEx(Func: string; var Args: TVariantArray; WaitPerLoop, MaxWait: integer): boolean;
By: Dgby714
Description: Calls Func with arguments Args every WaitPerLoop milliseconds
for a max of MaxWait milliseconds.
Func can return any basic types (boolean, string, integer).
boolean: Returns it.
string: Returns true if string equals 'true'.
integer: Returns true unless it equals 0.
*******************************************************************************}
function WaitFuncEx(Func: string; var Args: TVariantArray; WaitPerLoop, MaxWait: integer): boolean;
var
T: integer;
Temp: variant;
begin
T := GetSystemTime + MaxWait;
while (GetSystemTime < T) do
begin
Temp := CallProc(Func, Args);
if (not (VarType(Temp) = varString)) then
Temp := ToStr(Temp);
Result := StrToBoolDef(Temp, False);
if (Result) then
Exit;
Wait(WaitPerLoop);
end;
end;