Simba Code:
Function GetChooseOptions(TextType: string): Array of TOptions;
var
B,BB: TBox;
TPA, TPA1, TPA2: TPointArray;
aTPA, tempatpa: T2DPointArray;
I, L, target, bmp,w,h, cts: Integer;
Colors: TIntegerArray;
begin
target := GetImageTarget;
GetClientDimensions(B.X2, B.Y2);
B := IntToBox(0, 0, B.X2-1, B.Y2-1);
cts := GetColorToleranceSpeed;
ColorToleranceSpeed(1);
FindColorsTolerance(TPA1, 1842204, B.X1, B.Y1, B.X2, B.Y2, 0);
FindColorsTolerance(TPA2, 2302755, B.X1, B.Y1, B.X2, B.Y2, 0);
TPA := CombineTPA(TPA1, TPA2);
If Length(TPA) < 10 Then
Exit;
B := IntToBox(0, 0, 0, 0);
aTPA := SplitTPA(TPA, 10);
SortATPASize(aTPA, True);
B := GetTPABounds(aTPA[0]);
//Object Blue, Player White, Item Orange, Action Tan, NPC Yellow, Level Green
Colors := [14342147, 14079443, 3832268, 9677229, 840143{, 710915}];
SetLength(aTPA, Length(Colors));
for i := 0 to High(Colors) do
FindColorsTolerance(aTPA[i], Colors[i], B.X1, B.Y1, B.X2, B.Y2, 70);
TPA := MergeATPA(aTPA);
FindColorsTolerance(TPA1, 986117, B.X1, B.Y1, B.X2, B.Y2, 24);//shadow
bmp := CreateBitmap(B.X2-B.X1+2, B.Y2-B.Y1+2);
OffsetTPA(TPA, Point(-B.X1, -B.Y1));
OffsetTPA(TPA1, Point(-B.X1, -B.Y1));
FastDrawClear(bmp, 0);
DrawTPABitmap(bmp, TPA, clRed);
DrawTPABitmap(bmp, TPA1, clPurple);
ocr_FilterUpTextByCharacteristics(GetMufasaBitmap(bmp));
GetbitmapSize(bmp,w,h);
SetTargetBitmap(bmp); // new target for findcolorstolerance.
findcolorstolerance(TPA, clRed, 0, 0, w-1,h-1, 0);
ATPA := SplitTPAEx(TPA, 15, 2);
L := High(ATPA);
SortATPAFromFirstPointY(ATPA, Point(w/2,0));
SetArrayLength(Result, Length(ATPA));
for i := 0 to high(ATPA) do
begin
TPA := ATPA[i];
tempatpa := SplitTPAEx(TPA, 1, 10); // Split one into characters
SortATPAFromFirstPointX(tempatpa, Point(0, 0));
Result[i].Str := GetTextATPA(tempatpa, 4, 'UpCharsEx');
BB := GetTPABounds(ATPA[i]);
Result[i].Bounds := IntToBox(BB.X1+B.X1, BB.Y1+B.Y1, BB.X2+B.X1, BB.Y2+B.Y1);
setlength(tempatpa,0);
setlength(TPA,0);
end;
ColorToleranceSpeed(cts);
SetImageTarget(target);
FreeBitmap(bmp);
end;
Simba Code:
function GetSkillInfo(Skill: Variant; Amount : Boolean): Integer;
var
TP: TPoint;
Box : TBox;
TPA : TPointArray;
Cts : Integer;
begin
Result := -1;
GameTab(tab_Stats);
TP := SkillToCoords(Skill);
if (not(Amount)) then
TP := Point(TP.x + 15,TP.y + 12);
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(0);
if not FindColors(TPA, 36095, TP.x - 2, TP.y - 2, TP.x + 15, TP.y + 15) then
begin
ColorToleranceSpeed(CTS);
exit;
end;
Box := GetTPABounds(TPA);
Result := StrToIntDef(GetNumbers(GetTextAtEx(Box.x1 - 2, Box.y1 -1, 100,
StatChars, False, True, 0, 3, 36095, 3, True, tr_Digits)), -1);
ColorToleranceSpeed(CTS);
end;